sidekiq-datadog-monitor 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5b176cbc444ad443cebef16a369d2e14782a875d83f9118448146fb6c18be0f3
4
- data.tar.gz: ebaaba9e002ece8575c8a753d8324ad48b4594e892b1863fcd473838fb8f413e
3
+ metadata.gz: dd2a166674a1910905fed2a8d7bfa629b22db4b806fd6f5eb863f2de58266699
4
+ data.tar.gz: 74748cd3954362be082a37ac3a82e87b4f1f23f60cadb289b6883b27543627a3
5
5
  SHA512:
6
- metadata.gz: 7f68121956dab1ca0346db4247e21979baf5338b6d097c9d0202b712c3fe93c9bcf5fa010803c0d2f77fd8ea9d966e3eb9dc86bbcebc830feb12f63b0743a5f2
7
- data.tar.gz: 37267daf3457dd9bea4acb41e86e69088221e38ab1cdd6cb65c36d2f1230cfaccdf3e872db70f1f4dee3a2b5a319be8a37add4e83b5847750944bc05fa1dfbe4
6
+ metadata.gz: 70297fb9b7019dd0467d6008c98e77c24442be0ad18791dbcc497b3ed8f9921a0a44c900c1cc0d9800723ade6c139142a89c0e7763fe4aae233c92d53c494571
7
+ data.tar.gz: 9223c4732bdf197e555d11f6a719d5ae2f8e3c452cab3e11ffeffeecaabea595871c737af828dbcce047327445fd952c544e83ccb28c9d3ebfebdbb70fc7655e
@@ -0,0 +1,36 @@
1
+ module Sidekiq
2
+ module Datadog
3
+ module Monitor
4
+ # Prior to Sidekiq 6.5.2 - there was no beat event that fired every couple seconds
5
+ # Following Module wraps original heartbeat method on Sidekiq::Launcher fires :beat lifecycle event
6
+ module HeartbeatPatch
7
+ def heartbeat
8
+ super
9
+ fire_beat
10
+ end
11
+
12
+ def fire_beat
13
+ return unless (listeners = Sidekiq.options[:lifecycle_events][:beat])
14
+
15
+ listeners.each { |block| block.call }
16
+ end
17
+
18
+ class << self
19
+ def apply_heartbeat_patch
20
+ require 'sidekiq/launcher'
21
+
22
+ Sidekiq::Launcher.prepend(Sidekiq::Datadog::Monitor::HeartbeatPatch)
23
+ Sidekiq[:lifecycle_events][:beat] ||= []
24
+ end
25
+
26
+ def needs_patching?
27
+ return false unless Sidekiq[:lifecycle_events] # No events exist, Sidekiq is too old
28
+ return false if Sidekiq[:lifecycle_events][:beat] # beat event exist - no need to patch
29
+
30
+ true
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -30,7 +30,7 @@ module Sidekiq
30
30
  end
31
31
 
32
32
  def post_process_stats(process)
33
- utilization = process['busy'] / process['concurrency'].to_f
33
+ utilization = (process['busy'] / process['concurrency'].to_f * 100).round(2)
34
34
  tags = tags_builder.build(process_id: process['identity'], process_tag: process['tag'])
35
35
 
36
36
  statsd.gauge('sidekiq.process.utilization', utilization, tags: tags)
@@ -1,7 +1,7 @@
1
1
  module Sidekiq
2
2
  module Datadog
3
3
  module Monitor
4
- VERSION = '1.0.2'.freeze
4
+ VERSION = '1.0.3'.freeze
5
5
  end
6
6
  end
7
7
  end
@@ -1,6 +1,8 @@
1
+ require 'sidekiq'
1
2
  require 'datadog/statsd'
2
3
  require 'sidekiq/datadog/monitor/metrics_sender'
3
4
  require 'sidekiq/datadog/monitor/tag_builder'
5
+ require 'sidekiq/datadog/monitor/heartbeat_patch'
4
6
 
5
7
  module Sidekiq
6
8
  module Datadog
@@ -49,11 +51,12 @@ module Sidekiq
49
51
 
50
52
  def add_sidekiq_listeners
51
53
  Sidekiq.configure_server do |config|
52
- metrics_event = config.options[:lifecycle_events][:beat] ? :beat : :heartbeat
54
+ patch_sidekiq_heartbeat
55
+
53
56
  config.on(:startup) do
54
57
  Sidekiq::Datadog::Monitor.initialize!
55
58
  end
56
- config.on(metrics_event) do
59
+ config.on(:beat) do
57
60
  Sidekiq::Datadog::Monitor.send_metrics
58
61
  end
59
62
  config.on(:shutdown) do
@@ -61,6 +64,12 @@ module Sidekiq
61
64
  end
62
65
  end
63
66
  end
67
+
68
+ def patch_sidekiq_heartbeat
69
+ return unless Sidekiq::Datadog::Monitor::HeartbeatPatch.needs_patching?
70
+
71
+ Sidekiq::Datadog::Monitor::HeartbeatPatch.apply_heartbeat_patch
72
+ end
64
73
  end
65
74
  end
66
75
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-datadog-monitor
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - aleksa_castle
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-02-15 00:00:00.000000000 Z
11
+ date: 2023-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: 2.2.1
103
+ version: '5'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: 2.2.1
110
+ version: '5'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: dogstatsd-ruby
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -134,6 +134,7 @@ files:
134
134
  - bin/console
135
135
  - bin/setup
136
136
  - lib/sidekiq/datadog/monitor.rb
137
+ - lib/sidekiq/datadog/monitor/heartbeat_patch.rb
137
138
  - lib/sidekiq/datadog/monitor/metrics_sender.rb
138
139
  - lib/sidekiq/datadog/monitor/tag_builder.rb
139
140
  - lib/sidekiq/datadog/monitor/version.rb