lib/sidekiq_prometheus/metrics.rb in sidekiq_prometheus-1.8.2 vs lib/sidekiq_prometheus/metrics.rb in sidekiq_prometheus-1.8.3
- old
+ new
@@ -1,110 +1,110 @@
# frozen_string_literal: true
module SidekiqPrometheus::Metrics
module_function
- UNKNOWN = 'unknown'
+ UNKNOWN = "unknown"
VALID_TYPES = %i[counter gauge histogram summary].freeze
JOB_LABELS = %i[class queue].freeze
SIDEKIQ_GLOBAL_METRICS = [
- { name: :sidekiq_workers_size,
- type: :gauge,
- docstring: 'Total number of workers processing jobs', },
- { name: :sidekiq_processes_size,
- type: :gauge,
- docstring: 'Total number of running sidekiq processes', },
- { name: :sidekiq_dead_size,
- type: :gauge,
- docstring: 'Total Dead Size', },
- { name: :sidekiq_enqueued,
- type: :gauge,
- docstring: 'Total Size of all known queues',
- labels: %i[queue], },
- { name: :sidekiq_queue_latency,
- type: :summary,
- docstring: 'Latency (in seconds) of all queues',
- labels: %i[queue], },
- { name: :sidekiq_failed,
- type: :gauge,
- docstring: 'Number of job executions which raised an error', },
- { name: :sidekiq_processed,
- type: :gauge,
- docstring: 'Number of job executions completed (success or failure)', },
- { name: :sidekiq_retry_size,
- type: :gauge,
- docstring: 'Total Retries Size', },
- { name: :sidekiq_scheduled_size,
- type: :gauge,
- docstring: 'Total Scheduled Size', },
- { name: :sidekiq_redis_connected_clients,
- type: :gauge,
- docstring: 'Number of clients connected to Redis instance for Sidekiq', },
- { name: :sidekiq_redis_used_memory,
- type: :gauge,
- docstring: 'Used memory from Redis.info', },
- { name: :sidekiq_redis_used_memory_peak,
- type: :gauge,
- docstring: 'Used memory peak from Redis.info', },
- { name: :sidekiq_redis_keys,
- type: :gauge,
- docstring: 'Number of redis keys',
- labels: %i[database], },
- { name: :sidekiq_redis_expires,
- type: :gauge,
- docstring: 'Number of redis keys with expiry set',
- labels: %i[database], },
+ {name: :sidekiq_workers_size,
+ type: :gauge,
+ docstring: "Total number of workers processing jobs"},
+ {name: :sidekiq_processes_size,
+ type: :gauge,
+ docstring: "Total number of running sidekiq processes"},
+ {name: :sidekiq_dead_size,
+ type: :gauge,
+ docstring: "Total Dead Size"},
+ {name: :sidekiq_enqueued,
+ type: :gauge,
+ docstring: "Total Size of all known queues",
+ labels: %i[queue]},
+ {name: :sidekiq_queue_latency,
+ type: :summary,
+ docstring: "Latency (in seconds) of all queues",
+ labels: %i[queue]},
+ {name: :sidekiq_failed,
+ type: :gauge,
+ docstring: "Number of job executions which raised an error"},
+ {name: :sidekiq_processed,
+ type: :gauge,
+ docstring: "Number of job executions completed (success or failure)"},
+ {name: :sidekiq_retry_size,
+ type: :gauge,
+ docstring: "Total Retries Size"},
+ {name: :sidekiq_scheduled_size,
+ type: :gauge,
+ docstring: "Total Scheduled Size"},
+ {name: :sidekiq_redis_connected_clients,
+ type: :gauge,
+ docstring: "Number of clients connected to Redis instance for Sidekiq"},
+ {name: :sidekiq_redis_used_memory,
+ type: :gauge,
+ docstring: "Used memory from Redis.info"},
+ {name: :sidekiq_redis_used_memory_peak,
+ type: :gauge,
+ docstring: "Used memory peak from Redis.info"},
+ {name: :sidekiq_redis_keys,
+ type: :gauge,
+ docstring: "Number of redis keys",
+ labels: %i[database]},
+ {name: :sidekiq_redis_expires,
+ type: :gauge,
+ docstring: "Number of redis keys with expiry set",
+ labels: %i[database]}
].freeze
SIDEKIQ_JOB_METRICS = [
- { name: :sidekiq_job_count,
- type: :counter,
- docstring: 'Count of Sidekiq jobs',
- labels: JOB_LABELS, },
- { name: :sidekiq_job_duration,
- type: :histogram,
- docstring: 'Sidekiq job processing duration',
- labels: JOB_LABELS, },
- { name: :sidekiq_job_failed,
- type: :counter,
- docstring: 'Count of failed Sidekiq jobs',
- labels: JOB_LABELS + [:error_class], },
- { name: :sidekiq_job_success,
- type: :counter,
- docstring: 'Count of successful Sidekiq jobs',
- labels: JOB_LABELS, },
- { name: :sidekiq_job_over_limit,
- type: :counter,
- docstring: 'Count of over limit Sidekiq jobs',
- labels: JOB_LABELS, },
+ {name: :sidekiq_job_count,
+ type: :counter,
+ docstring: "Count of Sidekiq jobs",
+ labels: JOB_LABELS},
+ {name: :sidekiq_job_duration,
+ type: :histogram,
+ docstring: "Sidekiq job processing duration",
+ labels: JOB_LABELS},
+ {name: :sidekiq_job_failed,
+ type: :counter,
+ docstring: "Count of failed Sidekiq jobs",
+ labels: JOB_LABELS + [:error_class]},
+ {name: :sidekiq_job_success,
+ type: :counter,
+ docstring: "Count of successful Sidekiq jobs",
+ labels: JOB_LABELS},
+ {name: :sidekiq_job_over_limit,
+ type: :counter,
+ docstring: "Count of over limit Sidekiq jobs",
+ labels: JOB_LABELS}
].freeze
SIDEKIQ_GC_METRIC = {
- name: :sidekiq_job_allocated_objects,
- type: :histogram,
- docstring: 'Count of ruby objects allocated by a Sidekiq job',
- buckets: [10, 50, 100, 500, 1_000, 2_500, 5_000, 10_000, 50_000, 100_000, 500_000, 1_000_000, 5_000_000, 10_000_000, 25_000_000],
- labels: JOB_LABELS,
+ name: :sidekiq_job_allocated_objects,
+ type: :histogram,
+ docstring: "Count of ruby objects allocated by a Sidekiq job",
+ buckets: [10, 50, 100, 500, 1_000, 2_500, 5_000, 10_000, 50_000, 100_000, 500_000, 1_000_000, 5_000_000, 10_000_000, 25_000_000],
+ labels: JOB_LABELS
}.freeze
SIDEKIQ_WORKER_GC_METRICS = [
- { name: :sidekiq_allocated_objects,
- type: :counter,
- docstring: 'Count of ruby objects allocated by a Sidekiq worker', },
- { name: :sidekiq_heap_free_slots,
- type: :gauge,
- docstring: 'Sidekiq worker GC.stat[:heap_free_slots]', },
- { name: :sidekiq_heap_live_slots,
- type: :gauge,
- docstring: 'Sidekiq worker GC.stat[:heap_live_slots]', },
- { name: :sidekiq_major_gc_count,
- type: :counter,
- docstring: 'Sidekiq worker GC.stat[:major_gc_count]', },
- { name: :sidekiq_minor_gc_count,
- type: :counter,
- docstring: 'Sidekiq worker GC.stat[:minor_gc_count]', },
- { name: :sidekiq_rss,
- type: :gauge,
- docstring: 'Sidekiq process RSS', },
+ {name: :sidekiq_allocated_objects,
+ type: :counter,
+ docstring: "Count of ruby objects allocated by a Sidekiq worker"},
+ {name: :sidekiq_heap_free_slots,
+ type: :gauge,
+ docstring: "Sidekiq worker GC.stat[:heap_free_slots]"},
+ {name: :sidekiq_heap_live_slots,
+ type: :gauge,
+ docstring: "Sidekiq worker GC.stat[:heap_live_slots]"},
+ {name: :sidekiq_major_gc_count,
+ type: :counter,
+ docstring: "Sidekiq worker GC.stat[:major_gc_count]"},
+ {name: :sidekiq_minor_gc_count,
+ type: :counter,
+ docstring: "Sidekiq worker GC.stat[:minor_gc_count]"},
+ {name: :sidekiq_rss,
+ type: :gauge,
+ docstring: "Sidekiq process RSS"}
].freeze
def registry
SidekiqPrometheus.registry
end
@@ -129,19 +129,29 @@
metrics.each do |metric|
register(**metric)
end
end
+ def unregister_sidekiq_global_metrics
+ unregister_metrics SIDEKIQ_GLOBAL_METRICS
+ end
+
+ def unregister_metrics(metrics)
+ metrics.each do |metric|
+ unregister(name: metric[:name])
+ end
+ end
+
##
# Fetch a metric from the registry
# @param name [Symbol] name of metric to fetch
def [](name)
registry.get(name.to_sym)
end
class << self
- alias get []
+ alias_method :get, :[]
end
##
# Register a new metric
# @param types [Symbol] type of metric to register. Valid types: %w(counter gauge summary histogram)
@@ -158,12 +168,12 @@
all_preset_labels.merge!(SidekiqPrometheus.preset_labels) if SidekiqPrometheus.preset_labels
# Aggregate all labels
all_labels = labels | SidekiqPrometheus.custom_labels.fetch(name, []) | all_preset_labels.keys
- options = { docstring: docstring,
- labels: all_labels,
- preset_labels: all_preset_labels, }
+ options = {docstring: docstring,
+ labels: all_labels,
+ preset_labels: all_preset_labels}
options[:buckets] = buckets if buckets
registry.send(type, name.to_sym, **options)
end