sidekiq-statsd 0.1.4 → 0.1.5

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
  SHA1:
3
- metadata.gz: 3e33d3802f9cdc7d435e1e4338f7828f96534f4e
4
- data.tar.gz: b9db8a5236e5a708fd89af15fdd2c8308afe0214
3
+ metadata.gz: 0e70c72f2d9107ff88383d3e2f8a90fdddc8ec22
4
+ data.tar.gz: bf3d374265929d5955fcffd003b30f32182134da
5
5
  SHA512:
6
- metadata.gz: 362cd5bdb3f38aae086478fd7068f1cd525959f31dad78ab8eaed707f593055894575c284b1e24e7f2f6fa094d1b7928d35c9af3c86aee31646af79c2cd3de47
7
- data.tar.gz: da265304addf998d858dded40984207f6819a376d40a423217eb0e5e625e7dae324698e2b89c87ccba4895a76021256e5b136410491fd072a5da5cc12202ef88
6
+ metadata.gz: 4a07e5fd441caf1440f02926a7cef1972413ad11fb68a06574e5eca8530299a74f03acc068481fb63f28df63ebb27dc5736fc627fcac343c3d70fd9ce3732083
7
+ data.tar.gz: d8120db511be1257e6f6c7f7cce380806145d93b2f0af4729ff113df2f988dae4c7a04d6b26bfe3a6c121300b2c2346b9278d6157b991a808cee94c68fdf38a3
data/README.md CHANGED
@@ -45,6 +45,7 @@ end
45
45
  # @option options [String] :prefix ("worker") The prefix to segment the metric key (e.g. env.prefix.worker_name.success|failure).
46
46
  # @option options [String] :host ("localhost") The StatsD host.
47
47
  # @option options [String] :port ("8125") The StatsD port.
48
+ # @option options [String] :sidekiq_stats ("true") Send Sidekiq global stats e.g. total enqueued, processed and failed.
48
49
  ```
49
50
 
50
51
  If you have a [statsd instance](https://github.com/github/statsd-ruby) you can pass it through the `:statsd` option. If not you can pass the `:host` and `:port` to connect to statsd.
@@ -16,13 +16,16 @@ module Sidekiq::Statsd
16
16
  # @option options [String] :prefix ("worker") The prefix to segment the metric key (e.g. env.prefix.worker_name.success|failure).
17
17
  # @option options [String] :host ("localhost") The StatsD host.
18
18
  # @option options [String] :port ("8125") The StatsD port.
19
- def initialize options={}
20
- @options = { env: "production",
21
- prefix: "worker",
22
- host: "localhost",
23
- port: 8125 }.merge options
19
+ # @option options [String] :sidekiq_stats ("true") Send Sidekiq global stats e.g. total enqueued, processed and failed.
20
+ def initialize(options = {})
21
+ @options = { env: 'production',
22
+ prefix: 'worker',
23
+ host: 'localhost',
24
+ port: 8125,
25
+ sidekiq_stats: true }.merge options
26
+
24
27
  @statsd = options[:statsd] || ::Statsd.new(@options[:host], @options[:port])
25
- @sidekiq_stats = Sidekiq::Stats.new
28
+ @sidekiq_stats = Sidekiq::Stats.new if @options[:sidekiq_stats]
26
29
  end
27
30
 
28
31
  ##
@@ -34,22 +37,30 @@ module Sidekiq::Statsd
34
37
  def call worker, msg, queue
35
38
  @statsd.batch do |b|
36
39
  begin
37
- worker_name = worker.class.name.gsub("::", ".")
40
+ # colon causes invalid metric names
41
+ worker_name = worker.class.name.gsub('::', '.')
42
+
38
43
  b.time prefix(worker_name, 'processing_time') do
39
44
  yield
40
45
  end
46
+
41
47
  b.increment prefix(worker_name, 'success')
42
48
  rescue => e
43
49
  b.increment prefix(worker_name, 'failure')
44
50
  raise e
45
51
  ensure
46
- # Queue sizes
47
- b.gauge prefix('enqueued'), @sidekiq_stats.enqueued
48
- b.gauge prefix('retry_set_size'), @sidekiq_stats.retry_size
52
+ if @options[:sidekiq_stats]
53
+ # Queue sizes
54
+ b.gauge prefix('enqueued'), @sidekiq_stats.enqueued
55
+ if @sidekiq_stats.respond_to?(:retry_size)
56
+ # 2.6.0 doesn't have `retry_size`
57
+ b.gauge prefix('retry_set_size'), @sidekiq_stats.retry_size
58
+ end
49
59
 
50
- # All-time counts
51
- b.gauge prefix('processed'), @sidekiq_stats.processed
52
- b.gauge prefix('failed'), @sidekiq_stats.failed
60
+ # All-time counts
61
+ b.gauge prefix('processed'), @sidekiq_stats.processed
62
+ b.gauge prefix('failed'), @sidekiq_stats.failed
63
+ end
53
64
 
54
65
  # Queue metrics
55
66
  queue_name = msg['queue']
@@ -1,6 +1,6 @@
1
1
  module Sidekiq
2
2
  module Statsd
3
- VERSION = '0.1.4'
3
+ VERSION = '0.1.5'
4
4
  end
5
5
  end
6
6
 
@@ -49,6 +49,29 @@ describe Sidekiq::Statsd::ServerMiddleware do
49
49
  end
50
50
  end
51
51
 
52
+ context 'without global sidekiq stats' do
53
+ let(:sidekiq_stats) { double }
54
+
55
+ it "doesn't initialze a Sidekiq::Stats instance" do
56
+ # Sidekiq::Stats.new calls fetch_stats!, which makes redis calls
57
+ expect(described_class.new(sidekiq_stats: false).instance_variable_get(:@sidekiq_stats))
58
+ .to be_nil
59
+ end
60
+
61
+ it "doesn't gauge sidekiq stats" do
62
+ Sidekiq::Stats.stub(:new).and_return(sidekiq_stats)
63
+
64
+ expect(sidekiq_stats).not_to receive(:enqueued)
65
+ expect(sidekiq_stats).not_to receive(:retry_size)
66
+ expect(sidekiq_stats).not_to receive(:processed)
67
+ expect(sidekiq_stats).not_to receive(:failed)
68
+
69
+ described_class
70
+ .new(sidekiq_stats: false)
71
+ .call(worker, msg, queue, &clean_job)
72
+ end
73
+ end
74
+
52
75
  context "with successful execution" do
53
76
  let(:job) { clean_job }
54
77
 
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-statsd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pablo Cantero
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-13 00:00:00.000000000 Z
11
+ date: 2015-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sidekiq
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '2.6'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.6'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: statsd-ruby
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: 1.1.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: 1.1.0
55
55
  description: Sidekiq StatsD is a Sidekiq server middleware to send Sidekiq worker
@@ -60,10 +60,10 @@ executables: []
60
60
  extensions: []
61
61
  extra_rdoc_files: []
62
62
  files:
63
- - .gitignore
64
- - .pryrc
65
- - .travis.yml
66
- - .yardopts
63
+ - ".gitignore"
64
+ - ".pryrc"
65
+ - ".travis.yml"
66
+ - ".yardopts"
67
67
  - CHANGELOG.md
68
68
  - Gemfile
69
69
  - Guardfile
@@ -88,17 +88,17 @@ require_paths:
88
88
  - lib
89
89
  required_ruby_version: !ruby/object:Gem::Requirement
90
90
  requirements:
91
- - - '>='
91
+ - - ">="
92
92
  - !ruby/object:Gem::Version
93
93
  version: '0'
94
94
  required_rubygems_version: !ruby/object:Gem::Requirement
95
95
  requirements:
96
- - - '>='
96
+ - - ">="
97
97
  - !ruby/object:Gem::Version
98
98
  version: '0'
99
99
  requirements: []
100
100
  rubyforge_project:
101
- rubygems_version: 2.0.14
101
+ rubygems_version: 2.2.5
102
102
  signing_key:
103
103
  specification_version: 4
104
104
  summary: Sidekiq StatsD is a Sidekiq server middleware to send Sidekiq worker metrics