module GreekFire

Constants

VERSION

Attributes

configuration[RW]

Public Class Methods

configure() { |configuration| ... } click to toggle source
# File lib/greek_fire.rb, line 11
def configure
  self.configuration ||= Configuration.new
  yield(configuration) if block_given?
  register_sidekiq_metrics if configuration.sidekiq_metrics && Object.const_defined?("Sidekiq")
end

Private Class Methods

metric_already_registered?(metric_name) click to toggle source
# File lib/greek_fire.rb, line 34
def metric_already_registered?(metric_name)
  GreekFire::Metric.metrics.map(&:name).include? metric_name
end
register_sidekiq_metrics() click to toggle source
# File lib/greek_fire.rb, line 19
def register_sidekiq_metrics
  duplicate_metrics = []

  sidekiq_metrics.each do |metric|
    if metric_already_registered? metric[:name]
      duplicate_metrics << metric[:name]
    else
      GreekFire::Gauge.register metric[:name], description: metric[:description], labels: metric[:labels], &metric[:proc]
    end
  end

  raise DuplicateMetricError,
    "The following metrics have already been registered by default. Please remove them from your greek_fire.rb initializer: #{duplicate_metrics.join(", ")}" if duplicate_metrics.any?
end
sidekiq_metrics() click to toggle source
# File lib/greek_fire.rb, line 38
def sidekiq_metrics
  [
    {
      name: "sidekiq_process_count",
      description: "How many sidekiq processes are running",
      proc: Proc.new { |labels| Sidekiq::ProcessSet.new.size }
    },
    {
      name: "sidekiq_job_latency",
      description: "How long are jobs enqueued",
      labels: { :queue => Proc.new { Sidekiq::Queue.all.map(&:name) }},
      proc: Proc.new { |labels| Sidekiq::Queue.new(labels[:queue]).latency }
    },
    {
      name: "sidekiq_job_count",
      description: "How many jobs are enqueued",
      labels: { :queue => Proc.new { Sidekiq::Queue.all.map(&:name) }},
      proc: Proc.new { |labels| Sidekiq::Queue.new(labels[:queue]).size }
    }
  ]
end