leafy-metrics 0.1.0 → 0.2.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.
- checksums.yaml +4 -4
- data/README.md +45 -7
- data/lib/leafy/metrics/graphite/graphite_reporter.rb +12 -0
- data/lib/leafy/metrics/registry.rb +6 -0
- data/lib/leafy/metrics/reporter.rb +4 -1
- data/lib/leafy/metrics/version.rb +2 -2
- data/spec/console_reporter_spec.rb +27 -6
- data/spec/csv_reporter_spec.rb +26 -6
- data/spec/graphite_reporter_spec.rb +30 -9
- metadata +26 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1ac83a37f745307ff29ef7d0e559d89632e7b7bb
|
4
|
+
data.tar.gz: 2cc48320d779ba09c1f1bf533ce3108b21e921d2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 57698bae6c946a20f92414c8971fc172b1a46c8355a0161590e7708860e2be39448fb3e636dba297e2db32200e3d4bc3728d85905b3ea46567421e0e73eb8300
|
7
|
+
data.tar.gz: aa163bba6d45bf4c98c3d0f3cf6600744c00f018f5dc1ded730bee8c8af1f69cb71b38c5e51b3a5e8e6172812ff1103d9ced62ce3e8953614fd33a2917f1ca18
|
data/README.md
CHANGED
@@ -111,25 +111,33 @@ in all examples below ```metrics = Leafy::Metrics::Registry.new```
|
|
111
111
|
### console reporter
|
112
112
|
|
113
113
|
require 'leafy/metrics/console_reporter'
|
114
|
-
reporter = Leafy::Metrics::ConsoleReporter
|
114
|
+
reporter = metrics.reporter_builder( Leafy::Metrics::ConsoleReporter ).build
|
115
115
|
reporter.start( 1, Leafy::Metrics::Reporter::SECONDS )
|
116
116
|
....
|
117
117
|
reporter.stop
|
118
118
|
|
119
119
|
or with all the possible configuration
|
120
120
|
|
121
|
-
reporter = Leafy::Metrics::ConsoleReporter
|
121
|
+
reporter = metrics.reporter_builder( Leafy::Metrics::ConsoleReporter )
|
122
122
|
.convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
123
123
|
.convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
124
124
|
.output_to( STDERR )
|
125
125
|
.build
|
126
126
|
|
127
|
+
or the config via a block
|
128
|
+
|
129
|
+
reporter = metrics.reporter_builder( Leafy::Metrics::ConsoleReporter ) do
|
130
|
+
convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
131
|
+
convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
132
|
+
output_to( STDERR )
|
133
|
+
end.build
|
134
|
+
|
127
135
|
### csv reporter
|
128
136
|
|
129
137
|
for each metric there will be a CSV file inside a given directory
|
130
138
|
|
131
139
|
require 'leafy/metrics/csv_reporter'
|
132
|
-
reporter = Leafy::Metrics::CSVReporter
|
140
|
+
reporter = metrics.reporter_builder( Leafy::Metrics::CSVReporter )
|
133
141
|
.build( 'metrics/directory' )
|
134
142
|
reporter.start( 1, Leafy::Metrics::Reporter::SECONDS )
|
135
143
|
....
|
@@ -137,11 +145,18 @@ for each metric there will be a CSV file inside a given directory
|
|
137
145
|
|
138
146
|
or with all possible configuration
|
139
147
|
|
140
|
-
reporter = Leafy::Metrics::CSVReporter
|
148
|
+
reporter = metrics.reporter_builder( Leafy::Metrics::CSVReporter )
|
141
149
|
.convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
142
150
|
.convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
143
151
|
.build( 'metrics/directory' )
|
144
152
|
|
153
|
+
or configuration via block
|
154
|
+
|
155
|
+
reporter = metrics.reporter_builder( Leafy::Metrics::CSVReporter ) do
|
156
|
+
convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
157
|
+
convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
158
|
+
end.build( 'metrics/directory' )
|
159
|
+
|
145
160
|
### graphite reporter
|
146
161
|
|
147
162
|
there are three targets where to send the data
|
@@ -153,20 +168,43 @@ there are three targets where to send the data
|
|
153
168
|
the latter is collecting a few report event and sends them as batch. the ```sender``` is one of the above targets.
|
154
169
|
|
155
170
|
require 'leafy/metrics/graphite_reporter'
|
156
|
-
reporter = Leafy::Metrics::GraphiteReporter
|
157
|
-
.
|
171
|
+
reporter = metrics.reporter_builder( Leafy::Metrics::GraphiteReporter )
|
172
|
+
.build_tcp( hostname, port )
|
158
173
|
reporter.start( 1, Leafy::Metrics::Reporter::SECONDS )
|
159
174
|
....
|
160
175
|
reporter.stop
|
161
176
|
|
162
177
|
or with full configuration
|
163
178
|
|
164
|
-
reporter = Leafy::Metrics::GraphiteReporter
|
179
|
+
reporter = metrics.reporter_builder( Leafy::Metrics::GraphiteReporter )
|
165
180
|
.convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
166
181
|
.convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
167
182
|
.prefixed_with( 'myapp' )
|
168
183
|
.build( sender )
|
169
184
|
|
185
|
+
or with block configuration
|
186
|
+
|
187
|
+
reporter = metrics.reporter_builder( Leafy::Metrics::GraphiteReporter ) do
|
188
|
+
convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
189
|
+
convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
190
|
+
prefixed_with( 'myapp' )
|
191
|
+
end.build_udp( host, port )
|
192
|
+
|
193
|
+
### any third party reporter
|
194
|
+
|
195
|
+
reporter = metrics.reporter_builder( com.readytalk.metrics.StatsDReporter ) do
|
196
|
+
convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
197
|
+
convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
198
|
+
end.build( host, port )
|
199
|
+
|
200
|
+
or using the Java module reference
|
201
|
+
|
202
|
+
reporter = metrics.reporter_builder( Java::ComReadytalkMetrics::StatsDReporter ) do
|
203
|
+
convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
204
|
+
convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
205
|
+
prefixed_with( 'app' )
|
206
|
+
end.build( host, port )
|
207
|
+
|
170
208
|
## developement
|
171
209
|
|
172
210
|
get all the gems and jars in place
|
@@ -20,6 +20,18 @@ module Leafy
|
|
20
20
|
def build( graphite )
|
21
21
|
Reporter.new( @builder.build( graphite.sender ) )
|
22
22
|
end
|
23
|
+
|
24
|
+
def build_tcp( host, port )
|
25
|
+
build( Leafy::Metrics::Graphite.new_tcp( host, port ) )
|
26
|
+
end
|
27
|
+
|
28
|
+
def build_udp( host, port )
|
29
|
+
build( Leafy::Metrics::Graphite.new_udp( host, port ) )
|
30
|
+
end
|
31
|
+
|
32
|
+
def build_pickled( host, port )
|
33
|
+
build( Leafy::Metrics::Graphite.new_pickled( host, port ) )
|
34
|
+
end
|
23
35
|
end
|
24
36
|
|
25
37
|
def self.for_registry( metrics )
|
@@ -28,7 +28,10 @@ module Leafy
|
|
28
28
|
|
29
29
|
class Builder
|
30
30
|
def initialize( reporter_class, metrics )
|
31
|
-
|
31
|
+
# stay backward compatible
|
32
|
+
# FIXME remove for first proper release
|
33
|
+
metrics = metrics.metrics if metrics.is_a?( Leafy::Metrics::Registry )
|
34
|
+
@builder = reporter_class.for_registry( metrics )
|
32
35
|
self
|
33
36
|
end
|
34
37
|
|
@@ -13,10 +13,10 @@ describe Leafy::Metrics::ConsoleReporter do
|
|
13
13
|
bytes = StringIO.new
|
14
14
|
java.lang.System.out = java.io.PrintStream.new( bytes.to_outputstream )
|
15
15
|
begin
|
16
|
-
reporter =
|
16
|
+
reporter = metrics.reporter_builder( subject ).build
|
17
17
|
requests.mark
|
18
18
|
reporter.start( 10, Leafy::Metrics::Reporter::MILLISECONDS )
|
19
|
-
sleep 0.
|
19
|
+
sleep 0.02
|
20
20
|
reporter.stop
|
21
21
|
result = bytes.string.gsub( /\n/m, '')
|
22
22
|
expect( result ).to match /count = 1/
|
@@ -27,10 +27,10 @@ describe Leafy::Metrics::ConsoleReporter do
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
-
it 'run reporter' do
|
30
|
+
it 'run reporter via builder config' do
|
31
31
|
bytes = StringIO.new
|
32
32
|
begin
|
33
|
-
reporter =
|
33
|
+
reporter = metrics.reporter_builder( subject )
|
34
34
|
.convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
35
35
|
.convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
36
36
|
.output_to( bytes )
|
@@ -38,8 +38,29 @@ describe Leafy::Metrics::ConsoleReporter do
|
|
38
38
|
|
39
39
|
requests.mark
|
40
40
|
reporter.start( 10, Leafy::Metrics::Reporter::MILLISECONDS )
|
41
|
-
sleep 0.
|
42
|
-
reporter.stop
|
41
|
+
sleep 0.02
|
42
|
+
reporter.stop
|
43
|
+
result = bytes.string.gsub( /\n/m, '')
|
44
|
+
expect( result ).to match /count = 1/
|
45
|
+
expect( result ).to match /millisecond/
|
46
|
+
ensure
|
47
|
+
reporter.stop if reporter
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'run reporter via block config' do
|
52
|
+
bytes = StringIO.new
|
53
|
+
begin
|
54
|
+
reporter = metrics.reporter_builder( subject ) do
|
55
|
+
convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
56
|
+
convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
57
|
+
output_to( bytes )
|
58
|
+
end.build
|
59
|
+
|
60
|
+
requests.mark
|
61
|
+
reporter.start( 10, Leafy::Metrics::Reporter::MILLISECONDS )
|
62
|
+
sleep 0.02
|
63
|
+
reporter.stop
|
43
64
|
result = bytes.string.gsub( /\n/m, '')
|
44
65
|
expect( result ).to match /count = 1/
|
45
66
|
expect( result ).to match /millisecond/
|
data/spec/csv_reporter_spec.rb
CHANGED
@@ -18,10 +18,10 @@ describe Leafy::Metrics::CSVReporter do
|
|
18
18
|
|
19
19
|
it 'run reporter with defaults' do
|
20
20
|
begin
|
21
|
-
reporter =
|
21
|
+
reporter = metrics.reporter_builder( subject ).build( tmpdir )
|
22
22
|
requests.mark
|
23
23
|
reporter.start( 10, Leafy::Metrics::Reporter::MILLISECONDS )
|
24
|
-
sleep 0.
|
24
|
+
sleep 0.02
|
25
25
|
reporter.stop
|
26
26
|
result = File.read( csvfile )
|
27
27
|
expect( result ).to match /t,count,mean_rate,m1_rate,m5_rate,m15_rate,rate_unit/
|
@@ -32,17 +32,37 @@ describe Leafy::Metrics::CSVReporter do
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
it 'run reporter' do
|
35
|
+
it 'run reporter via builder config' do
|
36
36
|
begin
|
37
|
-
reporter =
|
37
|
+
reporter = metrics.reporter_builder( subject )
|
38
38
|
.convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
39
39
|
.convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
40
40
|
.build( tmpdir )
|
41
41
|
|
42
42
|
requests.mark
|
43
43
|
reporter.start( 10, Leafy::Metrics::Reporter::MILLISECONDS )
|
44
|
-
sleep 0.
|
45
|
-
reporter.stop
|
44
|
+
sleep 0.02
|
45
|
+
reporter.stop
|
46
|
+
result = File.read( csvfile )
|
47
|
+
expect( result ).to match /t,count,mean_rate,m1_rate,m5_rate,m15_rate,rate_unit/
|
48
|
+
expect( result ).to match /second/
|
49
|
+
ensure
|
50
|
+
FileUtils.rm_rf( tmpdir )
|
51
|
+
reporter.stop if reporter
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'run reporter via block config' do
|
56
|
+
begin
|
57
|
+
reporter = metrics.reporter_builder( subject ) do
|
58
|
+
convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
59
|
+
convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
60
|
+
end.build( tmpdir )
|
61
|
+
|
62
|
+
requests.mark
|
63
|
+
reporter.start( 10, Leafy::Metrics::Reporter::MILLISECONDS )
|
64
|
+
sleep 0.02
|
65
|
+
reporter.stop
|
46
66
|
result = File.read( csvfile )
|
47
67
|
expect( result ).to match /t,count,mean_rate,m1_rate,m5_rate,m15_rate,rate_unit/
|
48
68
|
expect( result ).to match /second/
|
@@ -16,32 +16,53 @@ describe Leafy::Metrics::GraphiteReporter do
|
|
16
16
|
it 'run reporter with defaults' do
|
17
17
|
log = File.read( logfile )
|
18
18
|
begin
|
19
|
-
reporter =
|
19
|
+
reporter = metrics.reporter_builder( subject ).build( graphite )
|
20
20
|
requests.mark
|
21
21
|
reporter.start( 10, Leafy::Metrics::Reporter::MILLISECONDS )
|
22
|
-
sleep 0.
|
22
|
+
sleep 0.02
|
23
23
|
reporter.stop
|
24
24
|
result = File.read( logfile )[ (log.size)..-1 ]
|
25
|
-
expect( result ).to match /metrics-graphite-reporter
|
25
|
+
expect( result ).to match /metrics-graphite-reporter-.+-thread-1] WARN com.codahale.metrics.graphite.GraphiteReporter/
|
26
26
|
ensure
|
27
27
|
reporter.stop if reporter
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
it 'run reporter' do
|
31
|
+
it 'run reporter via builder config' do
|
32
32
|
log = File.read( logfile )
|
33
33
|
begin
|
34
|
-
reporter =
|
34
|
+
reporter = metrics.reporter_builder( subject )
|
35
35
|
.convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
36
36
|
.convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
37
|
+
.prefixed_with( 'myapp' )
|
37
38
|
.build( graphite )
|
38
|
-
|
39
|
+
|
40
|
+
requests.mark
|
41
|
+
reporter.start( 10, Leafy::Metrics::Reporter::MILLISECONDS )
|
42
|
+
sleep 0.02
|
43
|
+
reporter.stop
|
44
|
+
result = File.read( logfile )[ (log.size)..-1 ]
|
45
|
+
expect( result ).to match /metrics-graphite-reporter-.+-thread-1] WARN com.codahale.metrics.graphite.GraphiteReporter/
|
46
|
+
ensure
|
47
|
+
reporter.stop if reporter
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'run reporter via block config' do
|
52
|
+
log = File.read( logfile )
|
53
|
+
begin
|
54
|
+
reporter = metrics.reporter_builder( subject ) do
|
55
|
+
convert_rates_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
56
|
+
convert_durations_to( Leafy::Metrics::Reporter::MILLISECONDS )
|
57
|
+
prefixed_with( 'myapp' )
|
58
|
+
end.build( graphite )
|
59
|
+
|
39
60
|
requests.mark
|
40
61
|
reporter.start( 10, Leafy::Metrics::Reporter::MILLISECONDS )
|
41
|
-
sleep 0.
|
42
|
-
reporter.stop
|
62
|
+
sleep 0.02
|
63
|
+
reporter.stop
|
43
64
|
result = File.read( logfile )[ (log.size)..-1 ]
|
44
|
-
expect( result ).to match /metrics-graphite-reporter
|
65
|
+
expect( result ).to match /metrics-graphite-reporter-.+-thread-1] WARN com.codahale.metrics.graphite.GraphiteReporter/
|
45
66
|
ensure
|
46
67
|
reporter.stop if reporter
|
47
68
|
end
|
metadata
CHANGED
@@ -1,69 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: leafy-metrics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- christian meier
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-03-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name: jar-dependencies
|
15
14
|
requirement: !ruby/object:Gem::Requirement
|
16
15
|
requirements:
|
17
|
-
- -
|
16
|
+
- - ~>
|
18
17
|
- !ruby/object:Gem::Version
|
19
18
|
version: 0.1.8
|
20
|
-
|
19
|
+
name: jar-dependencies
|
21
20
|
prerelease: false
|
21
|
+
type: :runtime
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.1.8
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name: rspec
|
29
28
|
requirement: !ruby/object:Gem::Requirement
|
30
29
|
requirements:
|
31
|
-
- -
|
30
|
+
- - ~>
|
32
31
|
- !ruby/object:Gem::Version
|
33
32
|
version: 3.1.0
|
34
|
-
|
33
|
+
name: rspec
|
35
34
|
prerelease: false
|
35
|
+
type: :development
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 3.1.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name: yard
|
43
42
|
requirement: !ruby/object:Gem::Requirement
|
44
43
|
requirements:
|
45
|
-
- -
|
44
|
+
- - ~>
|
46
45
|
- !ruby/object:Gem::Version
|
47
46
|
version: 0.8.7
|
48
|
-
|
47
|
+
name: yard
|
49
48
|
prerelease: false
|
49
|
+
type: :development
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 0.8.7
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name: rake
|
57
56
|
requirement: !ruby/object:Gem::Requirement
|
58
57
|
requirements:
|
59
|
-
- -
|
58
|
+
- - ~>
|
60
59
|
- !ruby/object:Gem::Version
|
61
60
|
version: '10.2'
|
62
|
-
|
61
|
+
name: rake
|
63
62
|
prerelease: false
|
63
|
+
type: :development
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '10.2'
|
69
69
|
description: 'provides an API to register metrics like meters, timers, gauge, counter
|
@@ -75,7 +75,7 @@ executables: []
|
|
75
75
|
extensions: []
|
76
76
|
extra_rdoc_files: []
|
77
77
|
files:
|
78
|
-
-
|
78
|
+
- .gitignore
|
79
79
|
- Gemfile
|
80
80
|
- LICENSE
|
81
81
|
- README.md
|
@@ -101,27 +101,28 @@ homepage: https://github.com/lookout/leafy
|
|
101
101
|
licenses:
|
102
102
|
- MIT
|
103
103
|
metadata: {}
|
104
|
-
post_install_message:
|
104
|
+
post_install_message:
|
105
105
|
rdoc_options: []
|
106
106
|
require_paths:
|
107
107
|
- lib
|
108
108
|
required_ruby_version: !ruby/object:Gem::Requirement
|
109
109
|
requirements:
|
110
|
-
- -
|
110
|
+
- - '>='
|
111
111
|
- !ruby/object:Gem::Version
|
112
112
|
version: '0'
|
113
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - '>='
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: '0'
|
118
118
|
requirements:
|
119
119
|
- jar io.dropwizard.metrics:metrics-core, 3.1.0
|
120
120
|
- jar io.dropwizard.metrics:metrics-graphite, 3.1.0
|
121
121
|
- jar org.slf4j, slf4j-simple, 1.7.7, :scope => :test
|
122
|
-
rubyforge_project:
|
122
|
+
rubyforge_project:
|
123
123
|
rubygems_version: 2.4.5
|
124
|
-
signing_key:
|
124
|
+
signing_key:
|
125
125
|
specification_version: 4
|
126
126
|
summary: provide an API to register metrics
|
127
127
|
test_files: []
|
128
|
+
has_rdoc:
|