docbrown/lib/sidekiq/honeycomb_middleware.rb

26 lines
973 B
Ruby

module Sidekiq
class HoneycombMiddleware
# @param [Object] worker the worker instance
# @param [Hash] job the full job payload
# * @see https://github.com/mperham/sidekiq/wiki/Job-Format
# @param [String] queue the name of the queue the job was pulled from
def call(worker, job, queue)
Honeycomb.start_span(name: "sidekiq") do |span|
span.add_field("sidekiq.class", worker.class.name)
span.add_field("sidekiq.queue", queue)
span.add_field("sidekiq.jid", job["jid"])
span.add_field("sidekiq.args", job["args"])
span.add_field("sidekiq.retry", job["retry"])
span.add_field("sidekiq.retry_count", job["retry_count"])
begin
yield
span.add_field("sidekiq.result", "success")
rescue StandardError => e
span.add_field("sidekiq.result", "error")
span.add_field("sidekiq.error", e.message)
raise e
end
end
end
end
end