class Honeykiq::PeriodicReporter
Attributes
libhoney[R]
Public Class Methods
new(libhoney: nil, honey_client: nil)
click to toggle source
# File lib/honeykiq/periodic_reporter.rb, line 5 def initialize(libhoney: nil, honey_client: nil) @libhoney = libhoney || honey_client || Honeycomb.libhoney end
Public Instance Methods
report(&extra)
click to toggle source
# File lib/honeykiq/periodic_reporter.rb, line 9 def report(&extra) send_instance_event(&extra) Sidekiq::ProcessSet.new.each { |process| send_process_event(process, &extra) } Sidekiq::Queue.all.each { |queue| send_queue_event(queue, &extra) } end
Private Instance Methods
fetch_redis_info()
click to toggle source
# File lib/honeykiq/periodic_reporter.rb, line 50 def fetch_redis_info Sidekiq.redis do |redis| redis.pipelined { redis.info :clients redis.info :memory }.reduce(&:merge) end end
instance_stats()
click to toggle source
# File lib/honeykiq/periodic_reporter.rb, line 28 def instance_stats stats = Sidekiq::Stats.new { 'instance.processes': stats.processes_size, 'instance.busy': stats.workers_size, 'instance.enqueued': stats.enqueued, 'instance.scheduled': stats.scheduled_size, 'instance.retries': stats.retry_size, 'instance.dead': stats.dead_size } end
redis_stats()
click to toggle source
# File lib/honeykiq/periodic_reporter.rb, line 41 def redis_stats redis_info = fetch_redis_info { 'redis.connections': redis_info["connected_clients"].to_i, 'redis.memory_used': redis_info["used_memory"].to_i } end
send_instance_event(&extra)
click to toggle source
# File lib/honeykiq/periodic_reporter.rb, line 19 def send_instance_event(&extra) libhoney.event.add( type: :instance, **instance_stats, **redis_stats, **(extra&.call(:instance) || {}) ).send end
send_process_event(process, &extra)
click to toggle source
# File lib/honeykiq/periodic_reporter.rb, line 59 def send_process_event(process, &extra) libhoney.event.add( type: :process, 'meta.dyno': process["hostname"], 'meta.process_id': process["pid"], 'process.concurrency': process["concurrency"], 'process.busy': process["busy"], **(extra&.call(:process, process) || {}) ).send end
send_queue_event(queue, &extra)
click to toggle source
# File lib/honeykiq/periodic_reporter.rb, line 70 def send_queue_event(queue, &extra) libhoney.event.add( type: :queue, 'queue.name': queue.name, 'queue.latency_sec': queue.latency.to_f, 'queue.size': queue.size, **(extra&.call(:queue, queue) || {}) ).send end