Class: Sidekiq::Middleware::Server::InfluxDB
- Inherits:
-
Object
- Object
- Sidekiq::Middleware::Server::InfluxDB
- Defined in:
- lib/sidekiq/middleware/server/influxdb.rb
Constant Summary collapse
- MILLISECONDS_PER_SECOND =
1000.0
Instance Method Summary collapse
- #call(_worker, msg, _queue) ⇒ Object
-
#initialize(options = {}) ⇒ InfluxDB
constructor
A new instance of InfluxDB.
Constructor Details
#initialize(options = {}) ⇒ InfluxDB
Returns a new instance of InfluxDB.
10 11 12 13 14 15 16 17 18 19 |
# File 'lib/sidekiq/middleware/server/influxdb.rb', line 10 def initialize( = {}) @influxdb = .fetch(:influxdb_client) @series = .fetch(:series_name, 'sidekiq_jobs') @retention = .fetch(:retention_policy, nil) @start_events = .fetch(:start_events, true) @tags = .fetch(:tags, {}) @secret_agents = class_names(.fetch(:except, [])) @clock = .fetch(:clock, -> { Time.now.to_f }) @measurement_key = .fetch(:measurement_key, :values) end |
Instance Method Details
#call(_worker, msg, _queue) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/sidekiq/middleware/server/influxdb.rb', line 21 def call(_worker, msg, _queue) if @secret_agents.include?(job_class_name(msg)) yield return end started_at = @clock.call waited = started_at - created_at_in_seconds(msg) record(started_at, msg, { event: 'start' }, { waited: waited }) if @start_events error = nil begin yield = { event: 'finish' } rescue StandardError => e = { event: 'error', error: e.class.name } error = e end finished_at = @clock.call worked = finished_at - started_at record(finished_at, msg, , { waited: waited, worked: worked, total: waited + worked }) raise error if error end |