sidekiq-monitor-stats 0.0.2 → 0.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 +5 -5
- data/.travis.yml +2 -0
- data/README.md +10 -0
- data/gemfiles/sidekiq_4.gemfile.lock +2 -2
- data/gemfiles/sidekiq_5.gemfile.lock +2 -2
- data/lib/sidekiq/monitor/stats.rb +15 -0
- data/lib/sidekiq/monitor/web.rb +2 -1
- data/sidekiq-monitor-stats.gemspec +1 -1
- data/test/sidekiq-monitor-stats_test.rb +21 -0
- data/test/sidekiq-monitor-web_test.rb +16 -0
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: fec6d8d7005afd117c9e7a599624709eb16a8a17b182f4f0514812ea887bcb6b
|
4
|
+
data.tar.gz: cb55b235e81cd97919bdba20355896a18d15a758dfb17af513ec37842dae2f4c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1b17637e5e4a412bcde74d1de22eca11625ef30821180130d456d8a37ac2ccf18cb71b2a33557114a09a506cebf9b4bc060780519656bba73362473a55e7d01e
|
7
|
+
data.tar.gz: 1640fc7a3c88050a18b37bcbcf3b6f29098dfd320593f1a0c127f7965fa4ae4ea6d185a36a2f4118572490e8c1da06af8f428700f2b4bfa65e223f9b08a207f2
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -79,6 +79,16 @@ This is an example of the output you'll get:
|
|
79
79
|
"concurrency":5,
|
80
80
|
"busy":5
|
81
81
|
}
|
82
|
+
],
|
83
|
+
"jobs": [
|
84
|
+
{
|
85
|
+
"process": "foo:1234",
|
86
|
+
"thread": "1001",
|
87
|
+
"jid": "1234abc",
|
88
|
+
"queue": "default",
|
89
|
+
"job": "WebWorker",
|
90
|
+
"run_at": "2015-04-10T15:07:52+00:00"
|
91
|
+
}
|
82
92
|
]
|
83
93
|
}
|
84
94
|
```
|
@@ -28,6 +28,21 @@ module Sidekiq
|
|
28
28
|
}
|
29
29
|
end
|
30
30
|
end
|
31
|
+
|
32
|
+
def job_metrics
|
33
|
+
Sidekiq::Workers.new.map do |process, thread, msg|
|
34
|
+
job = Sidekiq::Job.new(msg['payload'])
|
35
|
+
|
36
|
+
{
|
37
|
+
process: process,
|
38
|
+
thread: thread,
|
39
|
+
jid: job.jid,
|
40
|
+
queue: msg['queue'],
|
41
|
+
job: job.display_class,
|
42
|
+
run_at: Time.at(msg['run_at'])
|
43
|
+
}
|
44
|
+
end
|
45
|
+
end
|
31
46
|
end
|
32
47
|
end
|
33
48
|
end
|
data/lib/sidekiq/monitor/web.rb
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "sidekiq-monitor-stats"
|
7
|
-
spec.version = "0.0.
|
7
|
+
spec.version = "0.0.3"
|
8
8
|
spec.authors = ["Albert Llop"]
|
9
9
|
spec.email = ["albert@getharvest.com"]
|
10
10
|
spec.summary = %q{Add an endpoint to your running application that is running Sidekiq that returns useful data in JSON format.}
|
@@ -8,6 +8,7 @@ class Sidekiq::Monitor::StatsTest < Minitest::Test
|
|
8
8
|
def test_returns_empty_data
|
9
9
|
assert_equal({}, stats.queue_metrics)
|
10
10
|
assert_equal([], stats.process_metrics)
|
11
|
+
assert_equal([], stats.job_metrics)
|
11
12
|
end
|
12
13
|
|
13
14
|
def test_with_some_data
|
@@ -30,6 +31,18 @@ class Sidekiq::Monitor::StatsTest < Minitest::Test
|
|
30
31
|
}
|
31
32
|
|
32
33
|
conn.hmset('foo:1234', 'info', Sidekiq.dump_json(process_stats), 'at', @started_at.to_f, 'busy', 4)
|
34
|
+
|
35
|
+
job_stats = {
|
36
|
+
queue: 'default',
|
37
|
+
payload: {
|
38
|
+
class: 'WebWorker',
|
39
|
+
args: [1,'abc'],
|
40
|
+
jid: '1234abc'
|
41
|
+
},
|
42
|
+
run_at: @started_at.to_f
|
43
|
+
}
|
44
|
+
|
45
|
+
conn.hmset('foo:1234:workers', 1001, Sidekiq.dump_json(job_stats))
|
33
46
|
end
|
34
47
|
|
35
48
|
assert_equal({ backlog: 1, latency: 0 }, stats.queue_metrics['default'])
|
@@ -43,6 +56,14 @@ class Sidekiq::Monitor::StatsTest < Minitest::Test
|
|
43
56
|
assert_equal 25, process[:concurrency]
|
44
57
|
assert_equal 4, process[:busy]
|
45
58
|
assert_in_delta @started_at, process[:started_at], 0.01
|
59
|
+
|
60
|
+
job = stats.job_metrics.first
|
61
|
+
assert_equal 'foo:1234', job[:process]
|
62
|
+
assert_equal '1001', job[:thread]
|
63
|
+
assert_equal '1234abc', job[:jid]
|
64
|
+
assert_equal 'default', job[:queue]
|
65
|
+
assert_equal 'WebWorker', job[:job]
|
66
|
+
assert_in_delta @started_at, job[:run_at], 0.01
|
46
67
|
end
|
47
68
|
|
48
69
|
private
|
@@ -16,6 +16,7 @@ class Sidekiq::Monitor::WebTest < Minitest::Test
|
|
16
16
|
body = Sidekiq.load_json(last_response.body)
|
17
17
|
assert_equal({}, body['queues'])
|
18
18
|
assert_equal([], body['processes'])
|
19
|
+
assert_equal([], body['jobs'])
|
19
20
|
end
|
20
21
|
|
21
22
|
def test_monitor_stats_with_some_data
|
@@ -27,6 +28,13 @@ class Sidekiq::Monitor::WebTest < Minitest::Test
|
|
27
28
|
'queues' => ['default', 'high'],
|
28
29
|
'concurrency'=> 25,
|
29
30
|
'busy' => 4
|
31
|
+
],
|
32
|
+
job_metrics: [
|
33
|
+
'process' => 'foo:1234',
|
34
|
+
'thread' => '1001',
|
35
|
+
'jid' => '1234abc',
|
36
|
+
'queue' => 'default',
|
37
|
+
'job' => 'WebWorker',
|
30
38
|
]
|
31
39
|
)
|
32
40
|
get '/monitor-stats'
|
@@ -44,6 +52,14 @@ class Sidekiq::Monitor::WebTest < Minitest::Test
|
|
44
52
|
assert_equal ['default','high'], process['queues']
|
45
53
|
assert_equal 25, process['concurrency']
|
46
54
|
assert_equal 4, process['busy']
|
55
|
+
|
56
|
+
assert_equal 1, body['jobs'].size
|
57
|
+
job = body['jobs'].first
|
58
|
+
assert_equal 'foo:1234', job['process']
|
59
|
+
assert_equal '1001', job['thread']
|
60
|
+
assert_equal '1234abc', job['jid']
|
61
|
+
assert_equal 'default', job['queue']
|
62
|
+
assert_equal 'WebWorker', job['job']
|
47
63
|
end
|
48
64
|
|
49
65
|
private
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-monitor-stats
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Albert Llop
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-12-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -165,8 +165,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
167
|
requirements: []
|
168
|
-
|
169
|
-
rubygems_version: 2.6.11
|
168
|
+
rubygems_version: 3.0.3
|
170
169
|
signing_key:
|
171
170
|
specification_version: 4
|
172
171
|
summary: Add an endpoint to your running application that is running Sidekiq that
|