metricsd 0.2.3 → 0.2.4
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/.travis.yml +9 -0
- data/CHANGELOG.md +9 -0
- data/lib/metricsd/client.rb +9 -18
- data/lib/metricsd/version.rb +1 -1
- data/spec/client_spec.rb +23 -43
- metadata +5 -4
data/.travis.yml
ADDED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
## 0.2.4 (August 11, 2011)
|
2
|
+
|
3
|
+
Features:
|
4
|
+
|
5
|
+
- Time metrics should be recorded with ".time" suffix (was "\_time"), status metrics - with ".status" suffix (was "_count")
|
6
|
+
- Added Client#record methods (alias of record_value)
|
7
|
+
- Changed group separator to "." (was "$")
|
8
|
+
- Removed separator option (it was a temporary solution)
|
9
|
+
|
1
10
|
## 0.2.3 (July 27, 2011)
|
2
11
|
|
3
12
|
Features:
|
data/lib/metricsd/client.rb
CHANGED
@@ -44,8 +44,8 @@ module Metricsd
|
|
44
44
|
#
|
45
45
|
# # Group metrics using :group option.
|
46
46
|
# Metricsd::Client.record_success("reads", :source => @hbase_table, :group => 'hbase')
|
47
|
-
# # Group metrics using special syntax "group
|
48
|
-
# Metricsd::Client.record_success("hbase
|
47
|
+
# # Group metrics using special syntax "group.metric".
|
48
|
+
# Metricsd::Client.record_success("hbase.reads", :source => @hbase_table)
|
49
49
|
#
|
50
50
|
class Client
|
51
51
|
class << self
|
@@ -60,15 +60,13 @@ module Metricsd
|
|
60
60
|
# @param [Boolean] is_success indicating whether request was successful.
|
61
61
|
# @param [Float] time floating point number of seconds.
|
62
62
|
# @param [Hash] opts options.
|
63
|
-
# @option opts [String] :sep ("_") separator used to add suffixes +count+ and +time+.
|
64
63
|
# @option opts [String] :group metrics group.
|
65
64
|
# @option opts [String] :source metric source.
|
66
65
|
#
|
67
66
|
def record_hit(metric, is_success, time, opts = {})
|
68
|
-
sep = opts[:sep] || opts[:separator] || '_'
|
69
67
|
record_internal({
|
70
|
-
"#{metric}
|
71
|
-
"#{metric}
|
68
|
+
"#{metric}.status" => is_success ? 1 : -1,
|
69
|
+
"#{metric}.time" => (time * 1000).round
|
72
70
|
}, opts
|
73
71
|
)
|
74
72
|
end
|
@@ -80,13 +78,11 @@ module Metricsd
|
|
80
78
|
#
|
81
79
|
# @param [String] metric is the metric name (like app.docs.upload)
|
82
80
|
# @param [Hash] opts options.
|
83
|
-
# @option opts [String] :sep ("_") separator used to add suffixes +count+ and +time+.
|
84
81
|
# @option opts [String] :group metrics group.
|
85
82
|
# @option opts [String] :source metric source.
|
86
83
|
#
|
87
84
|
def record_success(metric, opts = {})
|
88
|
-
|
89
|
-
record_internal({"#{metric}#{sep}count" => 1}, opts)
|
85
|
+
record_internal({"#{metric}.status" => 1}, opts)
|
90
86
|
end
|
91
87
|
|
92
88
|
# Record failed boolean event.
|
@@ -96,13 +92,11 @@ module Metricsd
|
|
96
92
|
#
|
97
93
|
# @param [String] metric is the metric name (like app.docs.upload)
|
98
94
|
# @param [Hash] opts options.
|
99
|
-
# @option opts [String] :sep ("_") separator used to add suffixes +count+ and +time+.
|
100
95
|
# @option opts [String] :group metrics group.
|
101
96
|
# @option opts [String] :source metric source.
|
102
97
|
#
|
103
98
|
def record_failure(metric, opts = {})
|
104
|
-
|
105
|
-
record_internal({"#{metric}#{sep}count" => -1}, opts)
|
99
|
+
record_internal({"#{metric}.status" => -1}, opts)
|
106
100
|
end
|
107
101
|
|
108
102
|
# Record timing info. Time should be a floating point
|
@@ -114,18 +108,16 @@ module Metricsd
|
|
114
108
|
# @param [String] metric is the metric name (like app.docs.upload)
|
115
109
|
# @param [Float] time floating point number of seconds.
|
116
110
|
# @param [Hash] opts options.
|
117
|
-
# @option opts [String] :sep ("_") separator used to add suffixes +count+ and +time+.
|
118
111
|
# @option opts [String] :group metrics group.
|
119
112
|
# @option opts [String] :source metric source.
|
120
113
|
#
|
121
114
|
def record_time(metric, time = nil, opts = {}, &block)
|
122
115
|
opts, time = time, nil if Hash === time
|
123
|
-
sep = opts[:sep] || opts[:separator] || '_'
|
124
116
|
if time.nil?
|
125
117
|
raise ArgumentError, "You should pass a block if time is not given" unless block_given?
|
126
118
|
time = Benchmark.measure(&block).real
|
127
119
|
end
|
128
|
-
record_internal({"#{metric}
|
120
|
+
record_internal({"#{metric}.time" => (time * 1000).round}, opts)
|
129
121
|
end
|
130
122
|
|
131
123
|
# Record an integer value.
|
@@ -136,13 +128,13 @@ module Metricsd
|
|
136
128
|
# @param [String] metric is the metric name (like app.docs.upload)
|
137
129
|
# @param [Integer] value metric value.
|
138
130
|
# @param [Hash] opts options.
|
139
|
-
# @option opts [String] :sep ("_") separator used to add suffixes +count+ and +time+.
|
140
131
|
# @option opts [String] :group metrics group.
|
141
132
|
# @option opts [String] :source metric source.
|
142
133
|
#
|
143
134
|
def record_value(metric, value, opts = {})
|
144
135
|
record_internal({metric => value.round}, opts)
|
145
136
|
end
|
137
|
+
alias :record :record_value
|
146
138
|
|
147
139
|
# Record multiple integer values.
|
148
140
|
#
|
@@ -151,7 +143,6 @@ module Metricsd
|
|
151
143
|
#
|
152
144
|
# @param [Hash] metrics a +Hash+ that maps metrics names to their values.
|
153
145
|
# @param [Hash] opts options.
|
154
|
-
# @option opts [String] :sep ("_") separator used to add suffixes +count+ and +time+.
|
155
146
|
# @option opts [String] :group metrics group.
|
156
147
|
# @option opts [String] :source metric source.
|
157
148
|
#
|
@@ -225,7 +216,7 @@ module Metricsd
|
|
225
216
|
# protocol.
|
226
217
|
def pack(key, value, opts)
|
227
218
|
group = opts[:group] || Metricsd.default_group || ''
|
228
|
-
key = "#{group}
|
219
|
+
key = "#{group}.#{key}" unless group.empty?
|
229
220
|
opts[:source].empty? ? "#{key}:#{value}" : "#{opts[:source]}@#{key}:#{value}"
|
230
221
|
end
|
231
222
|
end
|
data/lib/metricsd/version.rb
CHANGED
data/spec/client_spec.rb
CHANGED
@@ -34,98 +34,83 @@ describe Metricsd::Client do
|
|
34
34
|
|
35
35
|
describe '.record_hit' do
|
36
36
|
it 'should send two metrics in a single packet' do
|
37
|
-
@socket.should_receive(:send).with('all@custom.
|
37
|
+
@socket.should_receive(:send).with('all@custom.metric.status:1;all@custom.metric.time:450', 0)
|
38
38
|
Metricsd::Client.record_hit('custom.metric', true, 0.45)
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'should handle is_success=false' do
|
42
|
-
@socket.should_receive(:send).with('all@custom.
|
42
|
+
@socket.should_receive(:send).with('all@custom.metric.status:-1;all@custom.metric.time:450', 0)
|
43
43
|
Metricsd::Client.record_hit('custom.metric', false, 0.45)
|
44
44
|
end
|
45
45
|
|
46
|
-
it 'should change separator if :sep option is specified' do
|
47
|
-
@socket.should_receive(:send).with('all@custom.metric!count:1;all@custom.metric!time:450', 0)
|
48
|
-
Metricsd::Client.record_hit('custom.metric', true, 0.45, :sep => '!')
|
49
|
-
end
|
50
|
-
|
51
46
|
it 'should apply group to both the metrics' do
|
52
|
-
@socket.should_receive(:send).with('all@test
|
47
|
+
@socket.should_receive(:send).with('all@test.custom.metric.status:1;all@test.custom.metric.time:450', 0)
|
53
48
|
Metricsd::Client.record_hit('custom.metric', true, 0.45, :group => 'test')
|
54
49
|
end
|
55
50
|
|
56
51
|
it 'should apply source if empty string passed' do
|
57
|
-
@socket.should_receive(:send).with('test@custom.
|
52
|
+
@socket.should_receive(:send).with('test@custom.metric.status:1;test@custom.metric.time:450', 0)
|
58
53
|
Metricsd::Client.record_hit('custom.metric', true, 0.45, :source => '')
|
59
54
|
end
|
60
55
|
|
61
56
|
it 'should apply source if specified' do
|
62
|
-
@socket.should_receive(:send).with('test2@custom.
|
57
|
+
@socket.should_receive(:send).with('test2@custom.metric.status:1;test2@custom.metric.time:450', 0)
|
63
58
|
Metricsd::Client.record_hit('custom.metric', true, 0.45, :source => 'test2')
|
64
59
|
end
|
65
60
|
end
|
66
61
|
|
67
62
|
describe '.record_success' do
|
68
63
|
it 'should record successes' do
|
69
|
-
@socket.should_receive(:send).with('all@custom.
|
64
|
+
@socket.should_receive(:send).with('all@custom.metric.status:1', 0)
|
70
65
|
Metricsd::Client.record_success('custom.metric')
|
71
66
|
end
|
72
67
|
|
73
|
-
it 'should change separator if :sep option is specified' do
|
74
|
-
@socket.should_receive(:send).with('all@custom.metric!count:1', 0)
|
75
|
-
Metricsd::Client.record_success('custom.metric', :sep => '!')
|
76
|
-
end
|
77
|
-
|
78
68
|
it 'should apply group if specified' do
|
79
|
-
@socket.should_receive(:send).with('all@test
|
69
|
+
@socket.should_receive(:send).with('all@test.custom.metric.status:1', 0)
|
80
70
|
Metricsd::Client.record_success('custom.metric', :group => 'test')
|
81
71
|
end
|
82
72
|
|
83
73
|
it 'should apply source if empty string passed' do
|
84
|
-
@socket.should_receive(:send).with('test@custom.
|
74
|
+
@socket.should_receive(:send).with('test@custom.metric.status:1', 0)
|
85
75
|
Metricsd::Client.record_success('custom.metric', :source => '')
|
86
76
|
end
|
87
77
|
|
88
78
|
it 'should apply source specified' do
|
89
|
-
@socket.should_receive(:send).with('test2@custom.
|
79
|
+
@socket.should_receive(:send).with('test2@custom.metric.status:1', 0)
|
90
80
|
Metricsd::Client.record_success('custom.metric', :source => 'test2')
|
91
81
|
end
|
92
82
|
end
|
93
83
|
|
94
84
|
describe '.record_failure' do
|
95
85
|
it 'should record failures' do
|
96
|
-
@socket.should_receive(:send).with('all@custom.
|
86
|
+
@socket.should_receive(:send).with('all@custom.metric.status:-1', 0)
|
97
87
|
Metricsd::Client.record_failure('custom.metric')
|
98
88
|
end
|
99
89
|
|
100
|
-
it 'should change separator if :sep option is specified' do
|
101
|
-
@socket.should_receive(:send).with('all@custom.metric!count:-1', 0)
|
102
|
-
Metricsd::Client.record_failure('custom.metric', :sep => '!')
|
103
|
-
end
|
104
|
-
|
105
90
|
it 'should apply group if specified' do
|
106
|
-
@socket.should_receive(:send).with('all@test
|
91
|
+
@socket.should_receive(:send).with('all@test.custom.metric.status:-1', 0)
|
107
92
|
Metricsd::Client.record_failure('custom.metric', :group => 'test')
|
108
93
|
end
|
109
94
|
|
110
95
|
it 'should apply source if empty string passed' do
|
111
|
-
@socket.should_receive(:send).with('test@custom.
|
96
|
+
@socket.should_receive(:send).with('test@custom.metric.status:-1', 0)
|
112
97
|
Metricsd::Client.record_failure('custom.metric', :source => '')
|
113
98
|
end
|
114
99
|
|
115
100
|
it 'should apply source specified' do
|
116
|
-
@socket.should_receive(:send).with('test2@custom.
|
101
|
+
@socket.should_receive(:send).with('test2@custom.metric.status:-1', 0)
|
117
102
|
Metricsd::Client.record_failure('custom.metric', :source => 'test2')
|
118
103
|
end
|
119
104
|
end
|
120
105
|
|
121
106
|
describe '.record_time' do
|
122
107
|
it 'should record time if specified' do
|
123
|
-
@socket.should_receive(:send).with('all@custom.
|
108
|
+
@socket.should_receive(:send).with('all@custom.metric.time:450', 0)
|
124
109
|
Metricsd::Client.record_time('custom.metric', 0.45)
|
125
110
|
end
|
126
111
|
|
127
112
|
it 'should yield a block if time is not specified' do
|
128
|
-
@socket.should_receive(:send).with(match(/all@custom.
|
113
|
+
@socket.should_receive(:send).with(match(/all@custom.metric.time:1\d{2}/), 0)
|
129
114
|
yielded = false
|
130
115
|
Metricsd::Client.record_time('custom.metric') do
|
131
116
|
yielded = true
|
@@ -135,7 +120,7 @@ describe Metricsd::Client do
|
|
135
120
|
end
|
136
121
|
|
137
122
|
it 'should use options if time is not specified' do
|
138
|
-
@socket.should_receive(:send).with(match(/all@custom.
|
123
|
+
@socket.should_receive(:send).with(match(/all@custom.metric.time:\d+/), 0)
|
139
124
|
yielded = false
|
140
125
|
Metricsd::Client.record_time('custom.metric', {}) do
|
141
126
|
yielded = true
|
@@ -143,23 +128,18 @@ describe Metricsd::Client do
|
|
143
128
|
yielded.should be_true
|
144
129
|
end
|
145
130
|
|
146
|
-
it 'should change separator if :sep option is specified' do
|
147
|
-
@socket.should_receive(:send).with('all@custom.metric!time:450', 0)
|
148
|
-
Metricsd::Client.record_time('custom.metric', 0.45, :sep => '!')
|
149
|
-
end
|
150
|
-
|
151
131
|
it 'should apply group if specified' do
|
152
|
-
@socket.should_receive(:send).with('all@test
|
132
|
+
@socket.should_receive(:send).with('all@test.custom.metric.time:450', 0)
|
153
133
|
Metricsd::Client.record_time('custom.metric', 0.45, :group => 'test')
|
154
134
|
end
|
155
135
|
|
156
136
|
it 'should apply source if empty string passed' do
|
157
|
-
@socket.should_receive(:send).with('test@custom.
|
137
|
+
@socket.should_receive(:send).with('test@custom.metric.time:450', 0)
|
158
138
|
Metricsd::Client.record_time('custom.metric', 0.45, :source => '')
|
159
139
|
end
|
160
140
|
|
161
141
|
it 'should apply source specified' do
|
162
|
-
@socket.should_receive(:send).with('test2@custom.
|
142
|
+
@socket.should_receive(:send).with('test2@custom.metric.time:450', 0)
|
163
143
|
Metricsd::Client.record_time('custom.metric', 0.45, :source => 'test2')
|
164
144
|
end
|
165
145
|
end
|
@@ -171,7 +151,7 @@ describe Metricsd::Client do
|
|
171
151
|
end
|
172
152
|
|
173
153
|
it 'should apply group if specified' do
|
174
|
-
@socket.should_receive(:send).with('all@test
|
154
|
+
@socket.should_receive(:send).with('all@test.custom.metric:23', 0)
|
175
155
|
Metricsd::Client.record_value('custom.metric', 23, :group => 'test')
|
176
156
|
end
|
177
157
|
|
@@ -187,13 +167,13 @@ describe Metricsd::Client do
|
|
187
167
|
|
188
168
|
it 'should apply default group if specified' do
|
189
169
|
Metricsd.default_group = 'grp'
|
190
|
-
@socket.should_receive(:send).with('all@grp
|
170
|
+
@socket.should_receive(:send).with('all@grp.custom.metric:23', 0)
|
191
171
|
Metricsd::Client.record_value('custom.metric', 23)
|
192
172
|
end
|
193
173
|
|
194
174
|
it 'should override default group with the specified one' do
|
195
175
|
Metricsd.default_group = 'grp'
|
196
|
-
@socket.should_receive(:send).with('all@group
|
176
|
+
@socket.should_receive(:send).with('all@group.custom.metric:23', 0)
|
197
177
|
Metricsd::Client.record_value('custom.metric', 23, :group => 'group')
|
198
178
|
end
|
199
179
|
|
@@ -211,7 +191,7 @@ describe Metricsd::Client do
|
|
211
191
|
end
|
212
192
|
|
213
193
|
it 'should apply group if specified' do
|
214
|
-
@socket.should_receive(:send).with('all@test
|
194
|
+
@socket.should_receive(:send).with('all@test.another.metric:47;all@test.custom.metric:23', 0)
|
215
195
|
Metricsd::Client.record_values({'custom.metric' => 23, 'another.metric' => 47}, :group => 'test')
|
216
196
|
end
|
217
197
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metricsd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 4
|
10
|
+
version: 0.2.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Dmytro Shteflyuk
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-08-11 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -100,6 +100,7 @@ extra_rdoc_files: []
|
|
100
100
|
files:
|
101
101
|
- .gitignore
|
102
102
|
- .rvmrc
|
103
|
+
- .travis.yml
|
103
104
|
- CHANGELOG.md
|
104
105
|
- Gemfile
|
105
106
|
- Guardfile
|