formatted-metrics 0.2.4 → 1.0.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 +7 -0
- data/lib/metrics/formatters/l2met.rb +11 -1
- data/lib/metrics/instrumenter.rb +9 -1
- data/lib/metrics/version.rb +1 -1
- data/spec/metrics/formatters/l2met_spec.rb +8 -8
- metadata +9 -23
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a34c6fd59ded3203162150ac1f63aa982c750da9
|
4
|
+
data.tar.gz: 68cb58c7cf99c4d777e38ea70916442ab74205f5
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f162ebda0be8a2939a314530fe828c279a18941a7d7a2cbb3db660f13e00406d6e511143bba9574e58b9b602a5fe4760ce552ff8108a25dbc47fdd900d30a567
|
7
|
+
data.tar.gz: 4c8114e6f9b1ca5c2dc3491b871f2148c58ba2546cdb554352db94495fa093c04e20d24f9ef173e48fa7c88f075b1dfe3557b523ae1682044fd7562856e77676
|
@@ -1,10 +1,14 @@
|
|
1
1
|
module Metrics::Formatters
|
2
|
+
PRECISION = 3
|
3
|
+
|
2
4
|
class L2Met < Base
|
5
|
+
# Example
|
6
|
+
# source=web.2 sample#load_avg_1m=0.31 sample#load_avg_5m=0.10 sample#load_avg_15m=0.05
|
3
7
|
def lines
|
4
8
|
groups.map do |source, instrumenters|
|
5
9
|
[
|
6
10
|
"source=#{full_source(source)}",
|
7
|
-
instrumenters.map { |instrumenter|
|
11
|
+
instrumenters.map { |instrumenter| measurement(instrumenter) }.join(' ')
|
8
12
|
].flatten.join(' ')
|
9
13
|
end
|
10
14
|
end
|
@@ -24,5 +28,11 @@ module Metrics::Formatters
|
|
24
28
|
configuration.source
|
25
29
|
end
|
26
30
|
end
|
31
|
+
|
32
|
+
def measurement(instrumenter)
|
33
|
+
value = instrumenter.value
|
34
|
+
value = value.round(PRECISION) if value.is_a?(Float)
|
35
|
+
"#{instrumenter.type}##{instrumenter.metric}=#{value}#{instrumenter.units}"
|
36
|
+
end
|
27
37
|
end
|
28
38
|
end
|
data/lib/metrics/instrumenter.rb
CHANGED
@@ -1,7 +1,11 @@
|
|
1
1
|
module Metrics
|
2
2
|
# Public: Responsible for sampling a measurement of something.
|
3
3
|
#
|
4
|
-
# metric
|
4
|
+
# metric - The name of the metric to measure (e.g. rack.request.time)
|
5
|
+
# options - Hash of options (default: {}):
|
6
|
+
# unit: Unit of measurement [ms, MB, GB, ...] (optional)
|
7
|
+
# type: Method type of the measurement [measure, sample, count]
|
8
|
+
# (optional, default: measure)
|
5
9
|
#
|
6
10
|
# Returns a new Metrics::Instrumenter.
|
7
11
|
class Instrumenter
|
@@ -34,6 +38,10 @@ module Metrics
|
|
34
38
|
timing? ? TIME_UNITS : options[:units]
|
35
39
|
end
|
36
40
|
|
41
|
+
def type
|
42
|
+
options[:type] || 'measure'
|
43
|
+
end
|
44
|
+
|
37
45
|
def source
|
38
46
|
options[:source]
|
39
47
|
end
|
data/lib/metrics/version.rb
CHANGED
@@ -8,15 +8,15 @@ describe Metrics::Formatters::L2Met do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def instrumenter(values)
|
11
|
-
double Metrics::Instrumenter, { source: nil }.merge(values)
|
11
|
+
double Metrics::Instrumenter, { source: nil, type: 'measure' }.merge(values)
|
12
12
|
end
|
13
13
|
|
14
14
|
describe '.lines' do
|
15
15
|
subject(:format) { formatter.lines }
|
16
16
|
|
17
17
|
context 'with a single instrumenter' do
|
18
|
-
let(:instrumenters) { [ instrumenter(metric: 'rack.request.time', value: 10, units: 'ms') ] }
|
19
|
-
it { should eq ['source=app
|
18
|
+
let(:instrumenters) { [ instrumenter(metric: 'rack.request.time', value: 10.3333, units: 'ms', type: 'sample') ] }
|
19
|
+
it { should eq ['source=app sample#rack.request.time=10.333ms'] }
|
20
20
|
end
|
21
21
|
|
22
22
|
context 'with multiple instrumenters' do
|
@@ -25,17 +25,17 @@ describe Metrics::Formatters::L2Met do
|
|
25
25
|
instrumenter(metric: 'jobs.busy', value: 10, units: 'jobs') ]
|
26
26
|
end
|
27
27
|
|
28
|
-
it { should eq ['source=app measure
|
28
|
+
it { should eq ['source=app measure#rack.request.time=10ms measure#jobs.busy=10jobs'] }
|
29
29
|
end
|
30
30
|
|
31
31
|
context 'with multiple metrics from different sources' do
|
32
32
|
let(:instrumenters) do
|
33
|
-
[ instrumenter(metric: 'rack.request.time', value: 10, units: 'ms'),
|
34
|
-
instrumenter(metric: 'jobs.queued', value: 15, units: 'jobs', source: 'foo'),
|
35
|
-
instrumenter(metric: 'jobs.busy', value: 10, units: 'jobs', source: 'foo') ]
|
33
|
+
[ instrumenter(metric: 'rack.request.time', value: 10, units: 'ms', type: 'sample'),
|
34
|
+
instrumenter(metric: 'jobs.queued', value: 15, units: 'jobs', source: 'foo', type: 'count'),
|
35
|
+
instrumenter(metric: 'jobs.busy', value: 10, units: 'jobs', source: 'foo', type: 'count') ]
|
36
36
|
end
|
37
37
|
|
38
|
-
it { should eq ['source=app
|
38
|
+
it { should eq ['source=app sample#rack.request.time=10ms', 'source=app.foo count#jobs.queued=15jobs count#jobs.busy=10jobs'] }
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: formatted-metrics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Eric J. Holmes
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-09-12 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,23 +27,20 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rspec
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - ~>
|
52
46
|
- !ruby/object:Gem::Version
|
@@ -54,7 +48,6 @@ dependencies:
|
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - ~>
|
60
53
|
- !ruby/object:Gem::Version
|
@@ -96,33 +89,26 @@ files:
|
|
96
89
|
homepage: http://github.com/remind101/formatted-metrics
|
97
90
|
licenses:
|
98
91
|
- MIT
|
92
|
+
metadata: {}
|
99
93
|
post_install_message:
|
100
94
|
rdoc_options: []
|
101
95
|
require_paths:
|
102
96
|
- lib
|
103
97
|
required_ruby_version: !ruby/object:Gem::Requirement
|
104
|
-
none: false
|
105
98
|
requirements:
|
106
|
-
- -
|
99
|
+
- - '>='
|
107
100
|
- !ruby/object:Gem::Version
|
108
101
|
version: '0'
|
109
|
-
segments:
|
110
|
-
- 0
|
111
|
-
hash: 147122982979217444
|
112
102
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
103
|
requirements:
|
115
|
-
- -
|
104
|
+
- - '>='
|
116
105
|
- !ruby/object:Gem::Version
|
117
106
|
version: '0'
|
118
|
-
segments:
|
119
|
-
- 0
|
120
|
-
hash: 147122982979217444
|
121
107
|
requirements: []
|
122
108
|
rubyforge_project:
|
123
|
-
rubygems_version:
|
109
|
+
rubygems_version: 2.0.3
|
124
110
|
signing_key:
|
125
|
-
specification_version:
|
111
|
+
specification_version: 4
|
126
112
|
summary: Easily output formatted metrics to stdout
|
127
113
|
test_files:
|
128
114
|
- spec/metrics/formatters/l2met_spec.rb
|