sidekiq-datadog-monitor 1.0.1 → 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: d7763840657d766af6dbb90d3f8dbd2b28403c90b67f40498c51b036a535f522
4
- data.tar.gz: da67f6165d1eb87a199628b1ab1f2cfacf28eb73caa2d4e00153f1c588490131
3
+ metadata.gz: dd2a166674a1910905fed2a8d7bfa629b22db4b806fd6f5eb863f2de58266699
4
+ data.tar.gz: 74748cd3954362be082a37ac3a82e87b4f1f23f60cadb289b6883b27543627a3
5
5
  SHA512:
6
- metadata.gz: 62da482416f5dbbe1746da762cbc8933f9b1edee7d651f6b95450e250122ce3f92ccd19d7b3fb4cf542765a1d403a945ad446d998baf6abd83730fae5869bc3f
7
- data.tar.gz: c86e5004787fd1588994482fb375b188c2c6409262c8d5e42783500b359f81162776378f3b016901ad1a16c70ff941562c8b739637e154554510d16e4b5b361a
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.1'.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
@@ -38,7 +40,6 @@ module Sidekiq
38
40
  statsd.close
39
41
  end
40
42
 
41
-
42
43
  private
43
44
 
44
45
  def reset!
@@ -50,10 +51,12 @@ module Sidekiq
50
51
 
51
52
  def add_sidekiq_listeners
52
53
  Sidekiq.configure_server do |config|
54
+ patch_sidekiq_heartbeat
55
+
53
56
  config.on(:startup) do
54
57
  Sidekiq::Datadog::Monitor.initialize!
55
58
  end
56
- config.on(:heartbeat) 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.1
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