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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 73fd4b85bc69425e68f711dbb9a84137de8be68b
4
- data.tar.gz: 2fcb4138c6b257b52b3eefa777bd96944e753e5a
2
+ SHA256:
3
+ metadata.gz: fec6d8d7005afd117c9e7a599624709eb16a8a17b182f4f0514812ea887bcb6b
4
+ data.tar.gz: cb55b235e81cd97919bdba20355896a18d15a758dfb17af513ec37842dae2f4c
5
5
  SHA512:
6
- metadata.gz: eda4badd95add8277d122bf44681dc38283fa72ef91e9402aae8254878f8eeb2e55b766406931890f4b9e02f1ab89f1c9f907b44a5178c868f5533f4d142bcc4
7
- data.tar.gz: 558188e16c440559cb24a9ae9d35d8cc6ea917d33997803ef4f879defa3fece2499b8f157c193d379685a451d04c9cf19995230d354ed71472f90aff7b0bfeaf
6
+ metadata.gz: 1b17637e5e4a412bcde74d1de22eca11625ef30821180130d456d8a37ac2ccf18cb71b2a33557114a09a506cebf9b4bc060780519656bba73362473a55e7d01e
7
+ data.tar.gz: 1640fc7a3c88050a18b37bcbcf3b6f29098dfd320593f1a0c127f7965fa4ae4ea6d185a36a2f4118572490e8c1da06af8f428700f2b4bfa65e223f9b08a207f2
@@ -5,6 +5,8 @@ services:
5
5
  rvm:
6
6
  - 2.3.4
7
7
  - 2.4.1
8
+ - 2.5
9
+ - 2.6
8
10
  gemfile:
9
11
  - gemfiles/sidekiq_5.gemfile
10
12
  - gemfiles/sidekiq_4.gemfile
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
  ```
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- sidekiq-monitor-stats (0.0.1)
4
+ sidekiq-monitor-stats (0.0.3)
5
5
  sidekiq
6
6
 
7
7
  GEM
@@ -53,4 +53,4 @@ DEPENDENCIES
53
53
  sinatra
54
54
 
55
55
  BUNDLED WITH
56
- 1.14.6
56
+ 1.17.2
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- sidekiq-monitor-stats (0.0.1)
4
+ sidekiq-monitor-stats (0.0.3)
5
5
  sidekiq
6
6
 
7
7
  GEM
@@ -53,4 +53,4 @@ DEPENDENCIES
53
53
  sinatra
54
54
 
55
55
  BUNDLED WITH
56
- 1.14.6
56
+ 1.17.2
@@ -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
@@ -9,7 +9,8 @@ module Sidekiq
9
9
 
10
10
  data = {
11
11
  queues: monitor_stats.queue_metrics,
12
- processes: monitor_stats.process_metrics
12
+ processes: monitor_stats.process_metrics,
13
+ jobs: monitor_stats.job_metrics
13
14
  }
14
15
 
15
16
  if Sidekiq::VERSION >= "5.0.0"
@@ -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.2"
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.2
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: 2017-04-26 00:00:00.000000000 Z
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
- rubyforge_project:
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