ruby-metrics 0.8.6 → 0.9.0
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/.bundle/config +1 -2
- data/.gitignore +2 -0
- data/.rvmrc +1 -1
- data/.travis.yml +5 -0
- data/CHANGELOG.md +48 -0
- data/Gemfile +8 -2
- data/README.md +2 -1
- data/Rakefile +20 -7
- data/examples/gmontest.rb +17 -0
- data/examples/opentsdb_reporter.rb +77 -0
- data/lib/ruby-metrics.rb +3 -4
- data/lib/ruby-metrics/agent.rb +72 -16
- data/lib/ruby-metrics/instruments/counter.rb +19 -12
- data/lib/ruby-metrics/instruments/gauge.rb +13 -9
- data/lib/ruby-metrics/instruments/histogram.rb +46 -45
- data/lib/ruby-metrics/instruments/meter.rb +29 -26
- data/lib/ruby-metrics/instruments/timer.rb +38 -37
- data/lib/ruby-metrics/integration.rb +3 -4
- data/lib/ruby-metrics/logging.rb +0 -2
- data/lib/ruby-metrics/reporter.rb +28 -0
- data/lib/ruby-metrics/statistics/exponential_sample.rb +4 -5
- data/lib/ruby-metrics/statistics/uniform_sample.rb +1 -2
- data/lib/ruby-metrics/time_units.rb +13 -11
- data/lib/ruby-metrics/version.rb +1 -1
- data/ruby-metrics-ganglia.gemspec +21 -0
- data/ruby-metrics-librato.gemspec +20 -0
- data/ruby-metrics-opentsdb.gemspec +21 -0
- data/ruby-metrics.gemspec +18 -15
- data/spec/agent_spec.rb +13 -4
- data/spec/instruments/meter_spec.rb +40 -3
- data/spec/instruments/timer_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- metadata +106 -105
- data/Gemfile.lock +0 -34
- data/lib/ruby-metrics/instruments.rb +0 -89
- data/lib/ruby-metrics/instruments/base.rb +0 -23
- data/lib/ruby-metrics/statistics/sample.rb +0 -21
- data/spec/instruments/base_spec.rb +0 -16
- data/spec/instruments_spec.rb +0 -76
- data/spec/integration/webrick_spec.rb +0 -18
- data/spec/statistics/sample_spec.rb +0 -22
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "ruby-metrics/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "ruby-metrics-opentsdb"
|
7
|
+
s.version = Metrics::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["John Ewart"]
|
10
|
+
s.email = ["john@johnewart.net"]
|
11
|
+
s.homepage = "https://github.com/johnewart/ruby-metrics-opentsdb"
|
12
|
+
s.summary = %q{OpenTSDB reporter for ruby-metrics}
|
13
|
+
s.description = %q{A reporter that uses OpenTSDB to stash metric data}
|
14
|
+
s.license = 'MIT'
|
15
|
+
|
16
|
+
s.files = ['lib/ruby-metrics/reporters/opentsdb.rb']
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
|
19
|
+
s.add_dependency "opentsdb", '0.1.0'
|
20
|
+
s.add_dependency 'ruby-metrics', Metrics::VERSION
|
21
|
+
end
|
data/ruby-metrics.gemspec
CHANGED
@@ -1,27 +1,30 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
$:.push File.expand_path(
|
3
|
-
require
|
2
|
+
$:.push File.expand_path('../lib', __FILE__)
|
3
|
+
require 'ruby-metrics/version'
|
4
|
+
|
5
|
+
plugin_files = Dir['ruby-metrics-*.gemspec'].map { |gemspec|
|
6
|
+
eval(File.read(gemspec)).files
|
7
|
+
}.flatten.uniq
|
4
8
|
|
5
9
|
Gem::Specification.new do |s|
|
6
|
-
s.name =
|
10
|
+
s.name = 'ruby-metrics'
|
7
11
|
s.version = Metrics::VERSION
|
8
12
|
s.platform = Gem::Platform::RUBY
|
9
|
-
s.authors = [
|
10
|
-
s.email = [
|
11
|
-
s.homepage =
|
13
|
+
s.authors = ['John Ewart']
|
14
|
+
s.email = ['john@johnewart.net']
|
15
|
+
s.homepage = 'https://github.com/johnewart/ruby-metrics'
|
12
16
|
s.summary = %q{Metrics for Ruby}
|
13
17
|
s.description = %q{A Ruby implementation of metrics inspired by @coda's JVM metrics for those of us in Ruby land}
|
18
|
+
s.license = 'MIT'
|
14
19
|
|
15
|
-
s.
|
16
|
-
|
17
|
-
s.add_dependency "json"
|
20
|
+
s.add_dependency 'json', '~> 1.5', '>= 1.5.5'
|
18
21
|
|
19
|
-
s.add_development_dependency
|
20
|
-
s.add_development_dependency
|
21
|
-
s.add_development_dependency
|
22
|
+
s.add_development_dependency 'rspec', '~> 2.14', '>= 2.14.0'
|
23
|
+
s.add_development_dependency 'simplecov', '~> 0.3', '>= 0.3.8'
|
24
|
+
s.add_development_dependency 'rack-test', '~> 0.5', '>= 0.5.7'
|
22
25
|
|
23
|
-
s.files = `git ls-files`.split("\n")
|
26
|
+
s.files = `git ls-files`.split("\n") - plugin_files
|
24
27
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
25
28
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
26
|
-
s.require_paths = [
|
27
|
-
end
|
29
|
+
s.require_paths = ['lib']
|
30
|
+
end
|
data/spec/agent_spec.rb
CHANGED
@@ -9,9 +9,9 @@ describe Metrics::Agent do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
it "should add a counter instrument correctly" do
|
12
|
-
@counter = Metrics::Instruments::Counter.new
|
12
|
+
@counter = Metrics::Instruments::Counter.new(:units => "jobs")
|
13
13
|
Metrics::Instruments::Counter.stub!(:new).and_return @counter
|
14
|
-
@agent.counter(:test_counter).should == @counter
|
14
|
+
@agent.counter(:test_counter, "jobs").should == @counter
|
15
15
|
end
|
16
16
|
|
17
17
|
it "should allow for creating a gauge with a block via #gauge" do
|
@@ -39,10 +39,19 @@ describe Metrics::Agent do
|
|
39
39
|
end
|
40
40
|
|
41
41
|
it "should add a meter instrument correctly" do
|
42
|
-
@meter = Metrics::Instruments::Meter.new
|
42
|
+
@meter = Metrics::Instruments::Meter.new(:units => "hits/sec")
|
43
43
|
Metrics::Instruments::Meter.stub!(:new).and_return @meter
|
44
44
|
|
45
|
-
@agent.meter(:test_meter).should == @meter
|
45
|
+
@agent.meter(:test_meter, "hits/sec").should == @meter
|
46
46
|
end
|
47
|
+
|
48
|
+
it "should add a timer instrument correctly" do
|
49
|
+
@timer = Metrics::Instruments::Timer.new(:units => "reqs/sec")
|
50
|
+
Metrics::Instruments::Timer.stub!(:new).and_return @timer
|
51
|
+
|
52
|
+
timer = @agent.timer(:test_timer, "reqs/sec").should == @timer
|
53
|
+
@timer.units.should == "reqs/sec"
|
47
54
|
|
55
|
+
end
|
56
|
+
|
48
57
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'timecop'
|
2
3
|
|
3
4
|
describe Metrics::Instruments::Meter do
|
4
5
|
before(:each) do
|
@@ -26,24 +27,60 @@ describe Metrics::Instruments::Meter do
|
|
26
27
|
|
27
28
|
context "A timer with an initial mark of 3 at a 1 second rate unit on a 5 second interval" do
|
28
29
|
|
29
|
-
before(:each) do
|
30
|
+
before(:each) do
|
31
|
+
@start_time = Time.local(2014, 1, 1, 12, 0, 0)
|
32
|
+
Timecop.freeze(@start_time)
|
30
33
|
@meter = Metrics::Instruments::Meter.new
|
31
34
|
@meter.mark(3)
|
32
35
|
@meter.tick()
|
33
36
|
end
|
34
37
|
|
38
|
+
after(:each) do
|
39
|
+
Timecop.return
|
40
|
+
end
|
41
|
+
|
35
42
|
def tick_for(seconds)
|
36
43
|
count = ((seconds) / 5).to_i
|
37
44
|
(1..count).each do
|
38
45
|
@meter.tick()
|
39
46
|
end
|
40
47
|
end
|
41
|
-
|
48
|
+
|
49
|
+
context 'When computing mean rate' do
|
50
|
+
it 'should have a mean rate of 3/sec one second in' do
|
51
|
+
@meter.mark(3)
|
52
|
+
Timecop.freeze(Time.now + 1) do
|
53
|
+
@meter.mean_rate.should == 3
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'should have a mean rate of 0.003/msec one second in' do
|
58
|
+
@meter.mark(3)
|
59
|
+
Timecop.freeze(Time.now + 1) do
|
60
|
+
@meter.mean_rate(:milliseconds).should == 0.003
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'should have a rate of 180/minute one second in' do
|
65
|
+
@meter.mark(3)
|
66
|
+
Timecop.freeze(Time.now + 1) do
|
67
|
+
@meter.mean_rate(:minutes).should == 180
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'should have a rate of 10800/hour one second in' do
|
72
|
+
@meter.mark(3)
|
73
|
+
Timecop.freeze(Time.now + 1) do
|
74
|
+
@meter.mean_rate(:hours).should == 10800
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
42
79
|
context "For a 1 minute window" do
|
43
80
|
it "should have a rate of 0.6 events/sec after the first tick" do
|
44
81
|
@meter.one_minute_rate.should == 0.6
|
45
82
|
end
|
46
|
-
|
83
|
+
|
47
84
|
it "should have a rate of 0.22072766470286553 events/sec after 1 minute" do
|
48
85
|
tick_for(60)
|
49
86
|
@meter.one_minute_rate.should == 0.22072766470286553
|
@@ -81,7 +81,7 @@ describe Metrics::Instruments::Timer do
|
|
81
81
|
end
|
82
82
|
|
83
83
|
it "should accurately calculate the standard deviation of the durations" do
|
84
|
-
@timer.std_dev.should == 11.
|
84
|
+
@timer.std_dev.should == 11.40175425099138
|
85
85
|
end
|
86
86
|
|
87
87
|
it "should accurately calculate percentiles" do
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,107 +1,134 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-metrics
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 8
|
8
|
-
- 6
|
9
|
-
version: 0.8.6
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.9.0
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- John Ewart
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2014-05-08 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: json
|
22
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
23
17
|
none: false
|
24
|
-
requirements:
|
25
|
-
- -
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
|
28
|
-
|
29
|
-
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.5'
|
22
|
+
- - ! '>='
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: 1.5.5
|
30
25
|
type: :runtime
|
31
26
|
prerelease: false
|
32
|
-
version_requirements:
|
33
|
-
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '1.5'
|
33
|
+
- - ! '>='
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: 1.5.5
|
36
|
+
- !ruby/object:Gem::Dependency
|
34
37
|
name: rspec
|
35
|
-
requirement:
|
38
|
+
requirement: !ruby/object:Gem::Requirement
|
36
39
|
none: false
|
37
|
-
requirements:
|
38
|
-
- -
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
|
41
|
-
|
42
|
-
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '2.14'
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 2.14.0
|
43
47
|
type: :development
|
44
48
|
prerelease: false
|
45
|
-
version_requirements:
|
46
|
-
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.14'
|
55
|
+
- - ! '>='
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: 2.14.0
|
58
|
+
- !ruby/object:Gem::Dependency
|
47
59
|
name: simplecov
|
48
|
-
requirement:
|
60
|
+
requirement: !ruby/object:Gem::Requirement
|
49
61
|
none: false
|
50
|
-
requirements:
|
51
|
-
- -
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
- 8
|
62
|
+
requirements:
|
63
|
+
- - ~>
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0.3'
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
57
68
|
version: 0.3.8
|
58
69
|
type: :development
|
59
70
|
prerelease: false
|
60
|
-
version_requirements:
|
61
|
-
|
71
|
+
version_requirements: !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ~>
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0.3'
|
77
|
+
- - ! '>='
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: 0.3.8
|
80
|
+
- !ruby/object:Gem::Dependency
|
62
81
|
name: rack-test
|
63
|
-
requirement:
|
82
|
+
requirement: !ruby/object:Gem::Requirement
|
64
83
|
none: false
|
65
|
-
requirements:
|
66
|
-
- -
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
|
69
|
-
|
70
|
-
|
84
|
+
requirements:
|
85
|
+
- - ~>
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0.5'
|
88
|
+
- - ! '>='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: 0.5.7
|
71
91
|
type: :development
|
72
92
|
prerelease: false
|
73
|
-
version_requirements:
|
74
|
-
|
75
|
-
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ~>
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0.5'
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: 0.5.7
|
102
|
+
description: A Ruby implementation of metrics inspired by @coda's JVM metrics for
|
103
|
+
those of us in Ruby land
|
104
|
+
email:
|
76
105
|
- john@johnewart.net
|
77
106
|
executables: []
|
78
|
-
|
79
107
|
extensions: []
|
80
|
-
|
81
108
|
extra_rdoc_files: []
|
82
|
-
|
83
|
-
files:
|
109
|
+
files:
|
84
110
|
- .bundle/config
|
85
111
|
- .gitignore
|
86
112
|
- .rvmrc
|
113
|
+
- .travis.yml
|
114
|
+
- CHANGELOG.md
|
87
115
|
- Gemfile
|
88
|
-
- Gemfile.lock
|
89
116
|
- LICENSE
|
90
117
|
- README.md
|
91
118
|
- Rakefile
|
92
119
|
- autotest/discover.rb
|
93
120
|
- examples/counter.rb
|
94
121
|
- examples/gauge.rb
|
122
|
+
- examples/gmontest.rb
|
95
123
|
- examples/histogram.rb
|
96
124
|
- examples/integration/rack_endpoint.ru
|
97
125
|
- examples/integration/rack_middleware.ru
|
98
126
|
- examples/integration/webrick.rb
|
99
127
|
- examples/meter.rb
|
128
|
+
- examples/opentsdb_reporter.rb
|
100
129
|
- examples/timer.rb
|
101
130
|
- lib/ruby-metrics.rb
|
102
131
|
- lib/ruby-metrics/agent.rb
|
103
|
-
- lib/ruby-metrics/instruments.rb
|
104
|
-
- lib/ruby-metrics/instruments/base.rb
|
105
132
|
- lib/ruby-metrics/instruments/counter.rb
|
106
133
|
- lib/ruby-metrics/instruments/gauge.rb
|
107
134
|
- lib/ruby-metrics/instruments/histogram.rb
|
@@ -112,76 +139,50 @@ files:
|
|
112
139
|
- lib/ruby-metrics/integration/rack_middleware.rb
|
113
140
|
- lib/ruby-metrics/integration/webrick.rb
|
114
141
|
- lib/ruby-metrics/logging.rb
|
142
|
+
- lib/ruby-metrics/reporter.rb
|
115
143
|
- lib/ruby-metrics/statistics/exponential_sample.rb
|
116
|
-
- lib/ruby-metrics/statistics/sample.rb
|
117
144
|
- lib/ruby-metrics/statistics/uniform_sample.rb
|
118
145
|
- lib/ruby-metrics/time_units.rb
|
119
146
|
- lib/ruby-metrics/version.rb
|
147
|
+
- ruby-metrics-ganglia.gemspec
|
148
|
+
- ruby-metrics-librato.gemspec
|
149
|
+
- ruby-metrics-opentsdb.gemspec
|
120
150
|
- ruby-metrics.gemspec
|
121
151
|
- spec/agent_spec.rb
|
122
|
-
- spec/instruments/base_spec.rb
|
123
152
|
- spec/instruments/counter_spec.rb
|
124
153
|
- spec/instruments/gauge_spec.rb
|
125
154
|
- spec/instruments/histogram_spec.rb
|
126
155
|
- spec/instruments/meter_spec.rb
|
127
156
|
- spec/instruments/timer_spec.rb
|
128
|
-
- spec/instruments_spec.rb
|
129
157
|
- spec/integration/rack_endpoint_spec.rb
|
130
158
|
- spec/integration/rack_middleware_spec.rb
|
131
|
-
- spec/integration/webrick_spec.rb
|
132
159
|
- spec/spec_helper.rb
|
133
160
|
- spec/statistics/exponential_sample_spec.rb
|
134
|
-
- spec/statistics/sample_spec.rb
|
135
161
|
- spec/statistics/uniform_sample_spec.rb
|
136
162
|
- spec/time_units_spec.rb
|
137
|
-
has_rdoc: true
|
138
163
|
homepage: https://github.com/johnewart/ruby-metrics
|
139
|
-
licenses:
|
140
|
-
|
164
|
+
licenses:
|
165
|
+
- MIT
|
141
166
|
post_install_message:
|
142
167
|
rdoc_options: []
|
143
|
-
|
144
|
-
require_paths:
|
168
|
+
require_paths:
|
145
169
|
- lib
|
146
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
170
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
147
171
|
none: false
|
148
|
-
requirements:
|
149
|
-
- -
|
150
|
-
- !ruby/object:Gem::Version
|
151
|
-
|
152
|
-
|
153
|
-
- 0
|
154
|
-
version: "0"
|
155
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
172
|
+
requirements:
|
173
|
+
- - ! '>='
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: '0'
|
176
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
156
177
|
none: false
|
157
|
-
requirements:
|
158
|
-
- -
|
159
|
-
- !ruby/object:Gem::Version
|
160
|
-
|
161
|
-
segments:
|
162
|
-
- 0
|
163
|
-
version: "0"
|
178
|
+
requirements:
|
179
|
+
- - ! '>='
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '0'
|
164
182
|
requirements: []
|
165
|
-
|
166
|
-
|
167
|
-
rubygems_version: 1.3.7
|
183
|
+
rubyforge_project:
|
184
|
+
rubygems_version: 1.8.23.2
|
168
185
|
signing_key:
|
169
186
|
specification_version: 3
|
170
187
|
summary: Metrics for Ruby
|
171
|
-
test_files:
|
172
|
-
- spec/agent_spec.rb
|
173
|
-
- spec/instruments/base_spec.rb
|
174
|
-
- spec/instruments/counter_spec.rb
|
175
|
-
- spec/instruments/gauge_spec.rb
|
176
|
-
- spec/instruments/histogram_spec.rb
|
177
|
-
- spec/instruments/meter_spec.rb
|
178
|
-
- spec/instruments/timer_spec.rb
|
179
|
-
- spec/instruments_spec.rb
|
180
|
-
- spec/integration/rack_endpoint_spec.rb
|
181
|
-
- spec/integration/rack_middleware_spec.rb
|
182
|
-
- spec/integration/webrick_spec.rb
|
183
|
-
- spec/spec_helper.rb
|
184
|
-
- spec/statistics/exponential_sample_spec.rb
|
185
|
-
- spec/statistics/sample_spec.rb
|
186
|
-
- spec/statistics/uniform_sample_spec.rb
|
187
|
-
- spec/time_units_spec.rb
|
188
|
+
test_files: []
|