sidekiq-monitor-stats 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|