sidekiq-datadog-monitor 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dd2a166674a1910905fed2a8d7bfa629b22db4b806fd6f5eb863f2de58266699
|
4
|
+
data.tar.gz: 74748cd3954362be082a37ac3a82e87b4f1f23f60cadb289b6883b27543627a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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,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
|
-
|
54
|
+
patch_sidekiq_heartbeat
|
55
|
+
|
53
56
|
config.on(:startup) do
|
54
57
|
Sidekiq::Datadog::Monitor.initialize!
|
55
58
|
end
|
56
|
-
config.on(
|
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.
|
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-
|
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:
|
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:
|
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
|