resque-metrics 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.
- data/Gemfile.lock +12 -9
- data/VERSION +1 -1
- data/lib/resque/metrics.rb +37 -3
- data/resque-metrics.gemspec +2 -2
- data/test/test_resque-metrics.rb +6 -0
- metadata +13 -13
data/Gemfile.lock
CHANGED
@@ -4,20 +4,22 @@ GEM
|
|
4
4
|
archive-tar-minitar (0.5.2)
|
5
5
|
columnize (0.3.4)
|
6
6
|
git (1.2.5)
|
7
|
-
jeweler (1.6.
|
7
|
+
jeweler (1.6.4)
|
8
8
|
bundler (~> 1.0)
|
9
9
|
git (>= 1.2.5)
|
10
10
|
rake
|
11
11
|
linecache19 (0.5.12)
|
12
12
|
ruby_core_source (>= 0.1.4)
|
13
|
-
minitest (2.
|
13
|
+
minitest (2.8.0)
|
14
14
|
multi_json (1.0.3)
|
15
|
-
rack (1.3.
|
16
|
-
|
17
|
-
|
15
|
+
rack (1.3.5)
|
16
|
+
rack-protection (1.1.4)
|
17
|
+
rack
|
18
|
+
rake (0.9.2.2)
|
19
|
+
redis (2.2.2)
|
18
20
|
redis-namespace (1.0.3)
|
19
21
|
redis (< 3.0.0)
|
20
|
-
resque (1.19.0
|
22
|
+
resque (1.19.0)
|
21
23
|
multi_json (~> 1.0)
|
22
24
|
redis-namespace (~> 1.0.2)
|
23
25
|
sinatra (>= 0.9.2)
|
@@ -32,9 +34,10 @@ GEM
|
|
32
34
|
ruby-debug-base19 (>= 0.11.19)
|
33
35
|
ruby_core_source (0.1.5)
|
34
36
|
archive-tar-minitar (>= 0.5.2)
|
35
|
-
sinatra (1.
|
36
|
-
rack (~> 1.
|
37
|
-
|
37
|
+
sinatra (1.3.1)
|
38
|
+
rack (>= 1.3.4, ~> 1.3)
|
39
|
+
rack-protection (>= 1.1.2, ~> 1.1)
|
40
|
+
tilt (>= 1.3.3, ~> 1.3)
|
38
41
|
tilt (1.3.3)
|
39
42
|
vegas (0.1.8)
|
40
43
|
rack (>= 1.0.0)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.3
|
data/lib/resque/metrics.rb
CHANGED
@@ -82,12 +82,22 @@ module Resque
|
|
82
82
|
run_callback(:on_job_fork, job_class, queue, time)
|
83
83
|
end
|
84
84
|
|
85
|
-
def self.record_job_enqueue(job_class)
|
85
|
+
def self.record_job_enqueue(job_class, *args)
|
86
86
|
queue = Resque.queue_from_class(job_class)
|
87
87
|
increment_metric "enqueue_count"
|
88
88
|
increment_metric "enqueue_count:job:#{job_class}"
|
89
89
|
increment_metric "enqueue_count:queue:#{queue}"
|
90
|
-
|
90
|
+
|
91
|
+
size = Resque.encode(args).length
|
92
|
+
redis.multi do
|
93
|
+
increment_metric "payload_size", size
|
94
|
+
increment_metric "payload_size:queue:#{queue}", size
|
95
|
+
increment_metric "payload_size:job:#{job_class}", size
|
96
|
+
end
|
97
|
+
set_metric "avg_payload_size", total_payload_size / total_enqueue_count
|
98
|
+
set_metric "avg_payload_size:queue:#{queue}", total_payload_size_by_queue(queue) / total_enqueue_count_by_queue(queue)
|
99
|
+
set_metric "avg_payload_size:job:#{job_class}", total_payload_size_by_job(job_class) / total_enqueue_count_by_job(job_class)
|
100
|
+
run_callback(:on_job_enqueue, job_class, queue, size)
|
91
101
|
true
|
92
102
|
end
|
93
103
|
|
@@ -167,6 +177,30 @@ module Resque
|
|
167
177
|
get_metric "job_count:job:#{job}"
|
168
178
|
end
|
169
179
|
|
180
|
+
def self.total_payload_size
|
181
|
+
get_metric "payload_size"
|
182
|
+
end
|
183
|
+
|
184
|
+
def self.total_payload_size_by_queue(queue)
|
185
|
+
get_metric "payload_size:queue:#{queue}"
|
186
|
+
end
|
187
|
+
|
188
|
+
def self.total_payload_size_by_job(job)
|
189
|
+
get_metric "payload_size:job:#{job}"
|
190
|
+
end
|
191
|
+
|
192
|
+
def self.avg_payload_size
|
193
|
+
get_metric "avg_payload_size"
|
194
|
+
end
|
195
|
+
|
196
|
+
def self.avg_payload_size_by_queue(queue)
|
197
|
+
get_metric "avg_payload_size:queue:#{queue}"
|
198
|
+
end
|
199
|
+
|
200
|
+
def self.avg_payload_size_by_job(job)
|
201
|
+
get_metric "avg_payload_size:job:#{job}"
|
202
|
+
end
|
203
|
+
|
170
204
|
def self.avg_fork_time
|
171
205
|
get_metric "avg_fork_time"
|
172
206
|
end
|
@@ -206,7 +240,7 @@ module Resque
|
|
206
240
|
module Hooks
|
207
241
|
|
208
242
|
def after_enqueue_metrics(*args)
|
209
|
-
Resque::Metrics.record_job_enqueue(self)
|
243
|
+
Resque::Metrics.record_job_enqueue(self, *args)
|
210
244
|
end
|
211
245
|
|
212
246
|
def around_perform_metrics(*args)
|
data/resque-metrics.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "resque-metrics"
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Aaron Quint"]
|
12
|
-
s.date = "2011-
|
12
|
+
s.date = "2011-11-17"
|
13
13
|
s.description = "A simple Resque plugin that times and saves some simple metrics for Resque jobs back into redis. Based on this system\nyou could build some simple auto-scaling mechanism based on the speed and ETA of queues. Also includes a hook/callback\nmechanism for recording/sending the metrics to your favorite tool (AKA statsd/graphite).\n"
|
14
14
|
s.email = "aaron@quirkey.com"
|
15
15
|
s.extra_rdoc_files = [
|
data/test/test_resque-metrics.rb
CHANGED
@@ -41,6 +41,12 @@ class TestResqueMetrics < MiniTest::Unit::TestCase
|
|
41
41
|
assert Resque::Metrics.total_job_count_by_job(SomeJob) > 0
|
42
42
|
end
|
43
43
|
|
44
|
+
def test_should_record_payload_size
|
45
|
+
assert Resque::Metrics.total_payload_size > 0
|
46
|
+
assert Resque::Metrics.total_payload_size_by_queue(:jobs) > 0
|
47
|
+
assert Resque::Metrics.total_payload_size_by_job(SomeJob) > 0
|
48
|
+
end
|
49
|
+
|
44
50
|
def test_should_record_avg_job_time
|
45
51
|
assert Resque::Metrics.avg_job_time > 0
|
46
52
|
assert Resque::Metrics.avg_job_time_by_queue(:jobs) > 0
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resque-metrics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
12
|
+
date: 2011-11-17 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: resque
|
16
|
-
requirement: &
|
16
|
+
requirement: &70250343371240 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '1.19'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70250343371240
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: ruby-debug19
|
27
|
-
requirement: &
|
27
|
+
requirement: &70250343370740 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70250343370740
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: minitest
|
38
|
-
requirement: &
|
38
|
+
requirement: &70250343370180 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '2'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70250343370180
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
|
-
requirement: &
|
49
|
+
requirement: &70250343369600 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.0.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70250343369600
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: jeweler
|
60
|
-
requirement: &
|
60
|
+
requirement: &70250343368880 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: 1.6.2
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70250343368880
|
69
69
|
description: ! 'A simple Resque plugin that times and saves some simple metrics for
|
70
70
|
Resque jobs back into redis. Based on this system
|
71
71
|
|
@@ -110,7 +110,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
110
110
|
version: '0'
|
111
111
|
segments:
|
112
112
|
- 0
|
113
|
-
hash:
|
113
|
+
hash: -633739306956696608
|
114
114
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
115
|
none: false
|
116
116
|
requirements:
|