resque_statsd 0.1.0 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- resque_statsd (0.1.0)
4
+ resque_statsd (0.1.2)
5
5
  resque
6
6
  statsd
7
7
 
data/Readme.md CHANGED
@@ -2,5 +2,61 @@ Resque-Statsd
2
2
  ==============
3
3
 
4
4
 
5
- A resque plugin that adds worker statistics to statsd and is comprehensive.
5
+ A resque plugin that pushes worker statistics to statsd.
6
6
 
7
+
8
+ `gem install resque_statsd`
9
+
10
+ or
11
+
12
+ `gem 'resque_statsd'` in the Gemfile
13
+
14
+
15
+ add the following to your resque workers
16
+
17
+ `extend Resque::Plugins::Statsd`
18
+
19
+ By default this would send it to the statsd that has been configured.
20
+
21
+ This will by default do the following
22
+
23
+ * total_resque_failures
24
+ * total_resque_failures:<WorkerName>
25
+ * total_enqueues
26
+ * total_enqueues:<WorkerName>
27
+ * total_dequeues
28
+ * total_dequeues:<WorkerName>
29
+ * total_successful
30
+ * total_successful:<WorkerName>
31
+ * duration:<WorkerName>
32
+
33
+ Customizations.
34
+ ===============
35
+
36
+ By adding something like this
37
+
38
+ `@extra_stats_key = {:duration => [:hostname, :queuename]}`
39
+
40
+ This will also add the duration:<hostname> as a stat
41
+ This will also add the duration:<queue> as a stat
42
+
43
+ Following default tasks are available
44
+ * queuename - Name of the queue on which this task was picked up
45
+ * hostname - Name of the machine on which the task was executed
46
+ * classname - The default. Name of the worker that was executed.
47
+
48
+ More Customizations
49
+ =======
50
+
51
+ `@extra_stats_key = {:failure => Proc.new {|e, args| e.to_s}}`
52
+
53
+ This will add a stat key for
54
+
55
+ total_resque_failures:<Exception>
56
+
57
+ Following hooks are available
58
+ * failure
59
+ * duration
60
+ * enqueue
61
+ * dequeue
62
+ * fork
@@ -0,0 +1,4 @@
1
+ Resque.after_fork do |job|
2
+ statsd.increment("total_forks")
3
+ run_hooks(:dequeue, :total_dequeues)
4
+ end
@@ -1,9 +1,10 @@
1
+ require File.expand_path('../../hook', __FILE__)
1
2
  module Resque
2
3
  module Plugins
3
4
  module Statsd
4
5
  DEFAULT_TASKS = {
5
6
  :hostname => Proc.new{ @stat_hostname ||= `hostname`.strip},
6
- :classname => Proc.new {self.class},
7
+ :classname => Proc.new {self},
7
8
  :queuename => Proc.new {|args| @queue}
8
9
  }
9
10
  def statsd
@@ -23,29 +24,44 @@ module Resque
23
24
  statsd.timing("duration:#{self}", time_taken)
24
25
  statsd.increment("total_successful:#{self}")
25
26
  statsd.increment("total_successful")
26
- if extra_stats_key
27
- Array(extra_stats_key[:around_perform]).each { |item| statsd.timing("duration:#{DEFAULT_TASKS[item].call(args)}", time_taken)}
28
- end
27
+ run_hooks(:duration, :duration, args) {|key| statsd.timing(key, time_taken)}
29
28
  end
30
29
 
31
30
  def on_failure_stats(*args)
32
31
  statsd.increment("total_resque_failures")
33
32
  statsd.increment("total_resque_failures:#{self}")
33
+ run_hooks(:failure, :total_resque_failures, args){|key| statsd.increment(key)}
34
34
  end
35
35
 
36
36
  def after_enqueue_stats(*args)
37
- statsd.increment("total_enqueues")
38
- statsd.increment("total_enqueues:#{self}")
37
+ statsd.increment("total_resque_enqueues")
38
+ statsd.increment("total_resque_enqueues:#{self}")
39
+ run_hooks(:enqueue, :total_enqueues, args){|key| statsd.increment(key)}
39
40
  end
40
41
 
41
42
  def after_dequeue_stats(*args)
42
- statsd.increment("total_dequeues")
43
- statsd.increment("total_dequeues:#{self.class}")
43
+ statsd.increment("total__resque_dequeues")
44
+ statsd.increment("total__resque_dequeues:#{self}")
45
+ run_hooks(:dequeue, :total_dequeues, args) {|key| statsd.increment(key)}
44
46
  end
45
-
47
+
46
48
  def extra_stats_key
47
49
  @extra_stats_key ||= {}
48
50
  end
51
+
52
+ def run_hooks(type, key, args = nil)
53
+ Array(extra_stats_key[type]).each do |item|
54
+ begin
55
+ res = "#{key}:#{Resque::Plugins::Statsd::DEFAULT_TASKS[item].call(args)}"
56
+ puts "**********************************************"
57
+ puts res
58
+ puts "**********************************************"
59
+ rescue
60
+ puts "#{$!}" # Don't throw up if bad stuff happened, like the proc not being there.
61
+ end
62
+ yield(res) if res
63
+ end
64
+ end
49
65
  end
50
66
  end
51
67
  end
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module ResqueStatsd
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.2'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resque_statsd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-04 00:00:00.000000000 Z
12
+ date: 2013-02-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: statsd
@@ -104,6 +104,7 @@ files:
104
104
  - Gemfile.lock
105
105
  - Rakefile
106
106
  - Readme.md
107
+ - lib/resque/hook.rb
107
108
  - lib/resque/plugins/statsd.rb
108
109
  - lib/resque_statsd.rb
109
110
  - lib/version.rb
@@ -122,7 +123,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
122
123
  version: '0'
123
124
  segments:
124
125
  - 0
125
- hash: 1764238999188188537
126
+ hash: -293280983815071814
126
127
  required_rubygems_version: !ruby/object:Gem::Requirement
127
128
  none: false
128
129
  requirements:
@@ -131,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
132
  version: '0'
132
133
  segments:
133
134
  - 0
134
- hash: 1764238999188188537
135
+ hash: -293280983815071814
135
136
  requirements: []
136
137
  rubyforge_project: resque_statsd
137
138
  rubygems_version: 1.8.24