logstash-filter-metrics 2.0.3 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0f2bd00bd043a2bf95979960d720f2094fcedb18
4
- data.tar.gz: 5482a6465053b99571cc0e2ecb88a2d0ad2fa40f
3
+ metadata.gz: 6a50be0b406ee5990f6019e289c34a53d3c6045b
4
+ data.tar.gz: 34a73a6c0117be3127dbd3e76f712f57f9852979
5
5
  SHA512:
6
- metadata.gz: fa2a32308d42f6dd3247396434287bc78ab50040be8c4da062d290f8b10f281a889d086f6bde779f7ca860e55bf6434bb182cb23825ecd8ab5c330dd94cbf1d3
7
- data.tar.gz: 06171b990cc090b758ab8afe49089118919548610f1c9889b6a5af6a74f51c93dd2c8ff01c098f259e14a37d2f7ac8b73fc4d8422ce64bb46895ddca93141280
6
+ metadata.gz: 0163461d2d0081bb9078a687079230900035e85608cd9119664577bf872baf0f188bb6217660fb4a3837489f2a1036976b934cb350913944443cf3cbc4335da0
7
+ data.tar.gz: e7ff4132ffd0f0c3085f35fa85e4272e9d475062b9c20b366edf2cf5637ded28ed68d6099114bbdba444cc0fb5da8f1a918fecf33f16cd27334441f06843ab20
@@ -1,8 +1,11 @@
1
+ ## 3.0.0
2
+ - Elasticsearch 2.0 does not allow for dots in field names. This change changes to use sub-field syntax instead of
3
+ dotted syntax. This is a breaking change.
4
+
1
5
  ## 2.0.2
2
6
  - Fix test that used deprecated "tags" syntax
3
7
 
4
8
  ## 2.0.0
5
- - Plugins were updated to follow the new shutdown semantic, this mainly allows Logstash to instruct input plugins to terminate gracefully,
9
+ - Plugins were updated to follow the new shutdown semantic, this mainly allows Logstash to instruct input plugins to terminate gracefully,
6
10
  instead of using Thread.raise on the plugins' threads. Ref: https://github.com/elastic/logstash/pull/3895
7
11
  - Dependency on logstash-core update to 2.0
8
-
@@ -5,13 +5,18 @@ require "logstash/namespace"
5
5
 
6
6
  # The metrics filter is useful for aggregating metrics.
7
7
  #
8
+ # IMPORTANT: Elasticsearch 2.0 no longer allows field names with dots. Version 3.0
9
+ # of the metrics filter plugin changes behavior to use nested fields rather than
10
+ # dotted notation to avoid colliding with versions of Elasticsearch 2.0+. Please
11
+ # note the changes in the documentation (underscores and sub-fields used).
12
+ #
8
13
  # For example, if you have a field 'response' that is
9
14
  # a http response code, and you want to count each
10
15
  # kind of response, you can do this:
11
16
  # [source,ruby]
12
17
  # filter {
13
18
  # metrics {
14
- # meter => [ "http.%{response}" ]
19
+ # meter => [ "http_%{response}" ]
15
20
  # add_tag => "metric"
16
21
  # }
17
22
  # }
@@ -31,24 +36,24 @@ require "logstash/namespace"
31
36
  #
32
37
  # For a `meter => "something"` you will receive the following fields:
33
38
  #
34
- # * "thing.count" - the total count of events
35
- # * "thing.rate_1m" - the 1-minute rate (sliding)
36
- # * "thing.rate_5m" - the 5-minute rate (sliding)
37
- # * "thing.rate_15m" - the 15-minute rate (sliding)
39
+ # * "[thing][count]" - the total count of events
40
+ # * "[thing][rate_1m]" - the 1-minute rate (sliding)
41
+ # * "[thing][rate_5m]" - the 5-minute rate (sliding)
42
+ # * "[thing][rate_15m]" - the 15-minute rate (sliding)
38
43
  #
39
44
  # #### 'timer' values
40
45
  #
41
46
  # For a `timer => [ "thing", "%{duration}" ]` you will receive the following fields:
42
47
  #
43
- # * "thing.count" - the total count of events
44
- # * "thing.rate_1m" - the 1-minute rate of events (sliding)
45
- # * "thing.rate_5m" - the 5-minute rate of events (sliding)
46
- # * "thing.rate_15m" - the 15-minute rate of events (sliding)
47
- # * "thing.min" - the minimum value seen for this metric
48
- # * "thing.max" - the maximum value seen for this metric
49
- # * "thing.stddev" - the standard deviation for this metric
50
- # * "thing.mean" - the mean for this metric
51
- # * "thing.pXX" - the XXth percentile for this metric (see `percentiles`)
48
+ # * "[thing][count]" - the total count of events
49
+ # * "[thing][rate_1m]" - the 1-minute rate of events (sliding)
50
+ # * "[thing][rate_5m]" - the 5-minute rate of events (sliding)
51
+ # * "[thing][rate_15m]" - the 15-minute rate of events (sliding)
52
+ # * "[thing][min]" - the minimum value seen for this metric
53
+ # * "[thing][max]" - the maximum value seen for this metric
54
+ # * "[thing][stddev]" - the standard deviation for this metric
55
+ # * "[thing][mean]" - the mean for this metric
56
+ # * "[thing][pXX]" - the XXth percentile for this metric (see `percentiles`)
52
57
  #
53
58
  # #### Example: computing event rate
54
59
  #
@@ -76,7 +81,7 @@ require "logstash/namespace"
76
81
  # if "metric" in [tags] {
77
82
  # stdout {
78
83
  # codec => line {
79
- # format => "rate: %{events.rate_1m}"
84
+ # format => "rate: %{[events][rate_1m]}"
80
85
  # }
81
86
  # }
82
87
  # }
@@ -98,7 +103,7 @@ require "logstash/namespace"
98
103
  # [source,ruby]
99
104
  # output {
100
105
  # graphite {
101
- # metrics => [ "events.rate_1m", "%{events.rate_1m}" ]
106
+ # metrics => [ "events.rate_1m", "%{[events][rate_1m]}" ]
102
107
  # }
103
108
  # }
104
109
  class LogStash::Filters::Metrics < LogStash::Filters::Base
@@ -158,7 +163,7 @@ class LogStash::Filters::Metrics < LogStash::Filters::Base
158
163
  end # def register
159
164
 
160
165
  def filter(event)
161
-
166
+
162
167
 
163
168
  # TODO(piavlo): This should probably be moved to base filter class.
164
169
  if @ignore_older_than > 0 && Time.now - event.timestamp.time > @ignore_older_than
@@ -194,14 +199,14 @@ class LogStash::Filters::Metrics < LogStash::Filters::Base
194
199
  @metric_timers.each_pair do |name, metric|
195
200
  flush_rates event, name, metric
196
201
  # These 4 values are not sliding, so they probably are not useful.
197
- event["#{name}.min"] = metric.min
198
- event["#{name}.max"] = metric.max
202
+ event["[#{name}][min]"] = metric.min
203
+ event["[#{name}][max]"] = metric.max
199
204
  # timer's stddev currently returns variance, fix it.
200
- event["#{name}.stddev"] = metric.stddev ** 0.5
201
- event["#{name}.mean"] = metric.mean
205
+ event["[#{name}][stddev]"] = metric.stddev ** 0.5
206
+ event["[#{name}][mean]"] = metric.mean
202
207
 
203
208
  @percentiles.each do |percentile|
204
- event["#{name}.p#{percentile}"] = metric.snapshot.value(percentile / 100.0)
209
+ event["[#{name}][p#{percentile}]"] = metric.snapshot.value(percentile / 100.0)
205
210
  end
206
211
  metric.clear if should_clear?
207
212
  end
@@ -232,10 +237,10 @@ class LogStash::Filters::Metrics < LogStash::Filters::Base
232
237
  private
233
238
 
234
239
  def flush_rates(event, name, metric)
235
- event["#{name}.count"] = metric.count
236
- event["#{name}.rate_1m"] = metric.one_minute_rate if @rates.include? 1
237
- event["#{name}.rate_5m"] = metric.five_minute_rate if @rates.include? 5
238
- event["#{name}.rate_15m"] = metric.fifteen_minute_rate if @rates.include? 15
240
+ event["[#{name}][count]"] = metric.count
241
+ event["[#{name}][rate_1m]"] = metric.one_minute_rate if @rates.include? 1
242
+ event["[#{name}][rate_5m]"] = metric.five_minute_rate if @rates.include? 5
243
+ event["[#{name}][rate_15m]"] = metric.fifteen_minute_rate if @rates.include? 15
239
244
  end
240
245
 
241
246
  def metric_key(key)
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
 
3
3
  s.name = 'logstash-filter-metrics'
4
- s.version = '2.0.3'
4
+ s.version = '3.0.0'
5
5
  s.licenses = ['Apache License (2.0)']
6
6
  s.summary = "The metrics filter is useful for aggregating metrics."
7
7
  s.description = "This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program"
@@ -26,4 +26,3 @@ Gem::Specification.new do |s|
26
26
 
27
27
  s.add_development_dependency 'logstash-devutils'
28
28
  end
29
-
@@ -6,7 +6,7 @@ describe LogStash::Filters::Metrics do
6
6
  context "with basic meter config" do
7
7
  context "when no events were received" do
8
8
  it "should not flush" do
9
- config = {"meter" => ["http.%{response}"]}
9
+ config = {"meter" => ["http_%{response}"]}
10
10
  filter = LogStash::Filters::Metrics.new config
11
11
  filter.register
12
12
 
@@ -18,7 +18,7 @@ describe LogStash::Filters::Metrics do
18
18
  context "when events are received" do
19
19
  context "on the first flush" do
20
20
  subject {
21
- config = {"meter" => ["http.%{response}"]}
21
+ config = {"meter" => ["http_%{response}"]}
22
22
  filter = LogStash::Filters::Metrics.new config
23
23
  filter.register
24
24
  filter.filter LogStash::Event.new({"response" => 200})
@@ -29,22 +29,24 @@ describe LogStash::Filters::Metrics do
29
29
 
30
30
  it "should flush counts" do
31
31
  insist { subject.length } == 1
32
- insist { subject.first["http.200.count"] } == 2
33
- insist { subject.first["http.404.count"] } == 1
32
+ insist { subject.first["http_200"]["count"] } == 2
33
+ insist { subject.first["http_404"]["count"] } == 1
34
34
  end
35
35
 
36
36
  it "should include rates and percentiles" do
37
- metrics = ["http.200.rate_1m", "http.200.rate_5m", "http.200.rate_15m",
38
- "http.404.rate_1m", "http.404.rate_5m", "http.404.rate_15m"]
39
- metrics.each do |metric|
40
- insist { subject.first }.include? metric
37
+ meters = [ "http_200", "http_404" ]
38
+ rates = [ "rate_1m", "rate_5m", "rate_15m" ]
39
+ meters.each do |meter|
40
+ rates.each do |rate|
41
+ insist { subject.first[meter] }.include? rate
42
+ end
41
43
  end
42
44
  end
43
45
  end
44
46
 
45
47
  context "on the second flush" do
46
48
  it "should not reset counts" do
47
- config = {"meter" => ["http.%{response}"]}
49
+ config = {"meter" => ["http_%{response}"]}
48
50
  filter = LogStash::Filters::Metrics.new config
49
51
  filter.register
50
52
  filter.filter LogStash::Event.new({"response" => 200})
@@ -54,8 +56,8 @@ describe LogStash::Filters::Metrics do
54
56
  events = filter.flush
55
57
  events = filter.flush
56
58
  insist { events.length } == 1
57
- insist { events.first["http.200.count"] } == 2
58
- insist { events.first["http.404.count"] } == 1
59
+ insist { events.first["http_200"]["count"] } == 2
60
+ insist { events.first["http_404"]["count"] } == 1
59
61
  end
60
62
  end
61
63
  end
@@ -64,7 +66,7 @@ describe LogStash::Filters::Metrics do
64
66
  context "on the first flush" do
65
67
  subject {
66
68
  config = {
67
- "meter" => ["http.%{response}"],
69
+ "meter" => ["http_%{response}"],
68
70
  "rates" => [1]
69
71
  }
70
72
  filter = LogStash::Filters::Metrics.new config
@@ -76,9 +78,9 @@ describe LogStash::Filters::Metrics do
76
78
  }
77
79
 
78
80
  it "should include only the requested rates" do
79
- rate_fields = subject.first.to_hash.keys.select {|field| field.start_with?("http.200.rate") }
81
+ rate_fields = subject.first["http_200"].to_hash.keys.select {|field| field.start_with?("rate") }
80
82
  insist { rate_fields.length } == 1
81
- insist { rate_fields }.include? "http.200.rate_1m"
83
+ insist { rate_fields }.include? "rate_1m"
82
84
  end
83
85
  end
84
86
  end
@@ -86,8 +88,8 @@ describe LogStash::Filters::Metrics do
86
88
 
87
89
  context "with multiple instances" do
88
90
  it "counts should be independent" do
89
- config1 = {"meter" => ["http.%{response}"]}
90
- config2 = {"meter" => ["http.%{response}"]}
91
+ config1 = {"meter" => ["http_%{response}"]}
92
+ config2 = {"meter" => ["http_%{response}"]}
91
93
  filter1 = LogStash::Filters::Metrics.new config1
92
94
  filter2 = LogStash::Filters::Metrics.new config2
93
95
  events1 = [
@@ -112,17 +114,17 @@ describe LogStash::Filters::Metrics do
112
114
  events1 = filter1.flush
113
115
  events2 = filter2.flush
114
116
 
115
- insist { events1.first["http.200.count"] } == 1
116
- insist { events2.first["http.200.count"] } == 2
117
- insist { events1.first["http.404.count"] } == 1
118
- insist { events2.first["http.404.count"] } == nil
117
+ insist { events1.first["http_200"]["count"] } == 1
118
+ insist { events2.first["http_200"]["count"] } == 2
119
+ insist { events1.first["http_404"]["count"] } == 1
120
+ insist { events2.first["http_404"] } == nil
119
121
  end
120
122
  end
121
123
 
122
124
  context "with timer config" do
123
125
  context "on the first flush" do
124
126
  subject {
125
- config = {"timer" => ["http.request_time", "%{request_time}"]}
127
+ config = {"timer" => ["http_request_time", "%{request_time}"]}
126
128
  filter = LogStash::Filters::Metrics.new config
127
129
  filter.register
128
130
  filter.filter LogStash::Event.new({"request_time" => 10})
@@ -133,34 +135,34 @@ describe LogStash::Filters::Metrics do
133
135
 
134
136
  it "should flush counts" do
135
137
  insist { subject.length } == 1
136
- insist { subject.first["http.request_time.count"] } == 3
138
+ insist { subject.first["http_request_time"]["count"] } == 3
137
139
  end
138
140
 
139
141
  it "should include rates and percentiles keys" do
140
142
  metrics = ["rate_1m", "rate_5m", "rate_15m", "p1", "p5", "p10", "p90", "p95", "p99"]
141
143
  metrics.each do |metric|
142
- insist { subject.first }.include? "http.request_time.#{metric}"
144
+ insist { subject.first["http_request_time"] }.include? metric
143
145
  end
144
146
  end
145
147
 
146
148
  it "should include min value" do
147
- insist { subject.first['http.request_time.min'] } == 10.0
149
+ insist { subject.first['http_request_time']['min'] } == 10.0
148
150
  end
149
151
 
150
152
  it "should include mean value" do
151
- insist { subject.first['http.request_time.mean'] } == 20.0
153
+ insist { subject.first['http_request_time']['mean'] } == 20.0
152
154
  end
153
155
 
154
156
  it "should include stddev value" do
155
- insist { subject.first['http.request_time.stddev'] } == Math.sqrt(10.0)
157
+ insist { subject.first['http_request_time']['stddev'] } == Math.sqrt(10.0)
156
158
  end
157
159
 
158
160
  it "should include max value" do
159
- insist { subject.first['http.request_time.max'] } == 30.0
161
+ insist { subject.first['http_request_time']['max'] } == 30.0
160
162
  end
161
163
 
162
164
  it "should include percentile value" do
163
- insist { subject.first['http.request_time.p99'] } == 30.0
165
+ insist { subject.first['http_request_time']['p99'] } == 30.0
164
166
  end
165
167
  end
166
168
  end
@@ -169,7 +171,7 @@ describe LogStash::Filters::Metrics do
169
171
  context "on the first flush" do
170
172
  subject {
171
173
  config = {
172
- "timer" => ["http.request_time", "request_time"],
174
+ "timer" => ["http_request_time", "request_time"],
173
175
  "rates" => [1],
174
176
  "percentiles" => [1, 2]
175
177
  }
@@ -181,20 +183,20 @@ describe LogStash::Filters::Metrics do
181
183
 
182
184
  it "should flush counts" do
183
185
  insist { subject.length } == 1
184
- insist { subject.first["http.request_time.count"] } == 1
186
+ insist { subject.first["http_request_time"]["count"] } == 1
185
187
  end
186
188
 
187
189
  it "should include only the requested rates" do
188
- rate_fields = subject.first.to_hash.keys.select {|field| field.start_with?("http.request_time.rate") }
190
+ rate_fields = subject.first["http_request_time"].to_hash.keys.select {|field| field.start_with?("rate") }
189
191
  insist { rate_fields.length } == 1
190
- insist { rate_fields }.include? "http.request_time.rate_1m"
192
+ insist { rate_fields }.include? "rate_1m"
191
193
  end
192
194
 
193
195
  it "should include only the requested percentiles" do
194
- percentile_fields = subject.first.to_hash.keys.select {|field| field.start_with?("http.request_time.p") }
196
+ percentile_fields = subject.first["http_request_time"].to_hash.keys.select {|field| field.start_with?("p") }
195
197
  insist { percentile_fields.length } == 2
196
- insist { percentile_fields }.include? "http.request_time.p1"
197
- insist { percentile_fields }.include? "http.request_time.p2"
198
+ insist { percentile_fields }.include? "p1"
199
+ insist { percentile_fields }.include? "p2"
198
200
  end
199
201
  end
200
202
  end
@@ -202,7 +204,7 @@ describe LogStash::Filters::Metrics do
202
204
 
203
205
  context "when a custom flush_interval is set" do
204
206
  it "should flush only when required" do
205
- config = {"meter" => ["http.%{response}"], "flush_interval" => 15}
207
+ config = {"meter" => ["http_%{response}"], "flush_interval" => 15}
206
208
  filter = LogStash::Filters::Metrics.new config
207
209
  filter.register
208
210
  filter.filter LogStash::Event.new({"response" => 200})
@@ -218,21 +220,21 @@ describe LogStash::Filters::Metrics do
218
220
 
219
221
  context "when a custom clear_interval is set" do
220
222
  it "should clear the metrics after interval has passed" do
221
- config = {"meter" => ["http.%{response}"], "clear_interval" => 15}
223
+ config = {"meter" => ["http_%{response}"], "clear_interval" => 15}
222
224
  filter = LogStash::Filters::Metrics.new config
223
225
  filter.register
224
226
  filter.filter LogStash::Event.new({"response" => 200})
225
227
 
226
- insist { filter.flush.first["http.200.count"] } == 1 # 5s
227
- insist { filter.flush.first["http.200.count"] } == 1 # 10s
228
- insist { filter.flush.first["http.200.count"] } == 1 # 15s
228
+ insist { filter.flush.first["http_200"]["count"] } == 1 # 5s
229
+ insist { filter.flush.first["http_200"]["count"] } == 1 # 10s
230
+ insist { filter.flush.first["http_200"]["count"] } == 1 # 15s
229
231
  insist { filter.flush }.nil? # 20s
230
232
  end
231
233
  end
232
234
 
233
235
  context "when invalid rates are set" do
234
236
  subject {
235
- config = {"meter" => ["http.%{response}"], "rates" => [90]}
237
+ config = {"meter" => ["http_%{response}"], "rates" => [90]}
236
238
  filter = LogStash::Filters::Metrics.new config
237
239
  }
238
240
 
metadata CHANGED
@@ -1,17 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-filter-metrics
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-14 00:00:00.000000000 Z
11
+ date: 2015-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- requirement: !ruby/object:Gem::Requirement
14
+ name: logstash-core
15
+ version_requirements: !ruby/object:Gem::Requirement
15
16
  requirements:
16
17
  - - '>='
17
18
  - !ruby/object:Gem::Version
@@ -19,10 +20,7 @@ dependencies:
19
20
  - - <
20
21
  - !ruby/object:Gem::Version
21
22
  version: 3.0.0
22
- name: logstash-core
23
- prerelease: false
24
- type: :runtime
25
- version_requirements: !ruby/object:Gem::Requirement
23
+ requirement: !ruby/object:Gem::Requirement
26
24
  requirements:
27
25
  - - '>='
28
26
  - !ruby/object:Gem::Version
@@ -30,63 +28,65 @@ dependencies:
30
28
  - - <
31
29
  - !ruby/object:Gem::Version
32
30
  version: 3.0.0
31
+ prerelease: false
32
+ type: :runtime
33
33
  - !ruby/object:Gem::Dependency
34
+ name: metriks
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
34
40
  requirement: !ruby/object:Gem::Requirement
35
41
  requirements:
36
42
  - - '>='
37
43
  - !ruby/object:Gem::Version
38
44
  version: '0'
39
- name: metriks
40
45
  prerelease: false
41
46
  type: :runtime
47
+ - !ruby/object:Gem::Dependency
48
+ name: thread_safe
42
49
  version_requirements: !ruby/object:Gem::Requirement
43
50
  requirements:
44
51
  - - '>='
45
52
  - !ruby/object:Gem::Version
46
53
  version: '0'
47
- - !ruby/object:Gem::Dependency
48
54
  requirement: !ruby/object:Gem::Requirement
49
55
  requirements:
50
56
  - - '>='
51
57
  - !ruby/object:Gem::Version
52
58
  version: '0'
53
- name: thread_safe
54
59
  prerelease: false
55
60
  type: :runtime
61
+ - !ruby/object:Gem::Dependency
62
+ name: logstash-devutils
56
63
  version_requirements: !ruby/object:Gem::Requirement
57
64
  requirements:
58
65
  - - '>='
59
66
  - !ruby/object:Gem::Version
60
67
  version: '0'
61
- - !ruby/object:Gem::Dependency
62
68
  requirement: !ruby/object:Gem::Requirement
63
69
  requirements:
64
70
  - - '>='
65
71
  - !ruby/object:Gem::Version
66
72
  version: '0'
67
- name: logstash-devutils
68
73
  prerelease: false
69
74
  type: :development
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - '>='
73
- - !ruby/object:Gem::Version
74
- version: '0'
75
75
  description: This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program
76
76
  email: info@elastic.co
77
77
  executables: []
78
78
  extensions: []
79
79
  extra_rdoc_files: []
80
80
  files:
81
+ - lib/logstash/filters/metrics.rb
82
+ - spec/filters/metrics_spec.rb
83
+ - logstash-filter-metrics.gemspec
81
84
  - CHANGELOG.md
85
+ - README.md
82
86
  - CONTRIBUTORS
83
87
  - Gemfile
84
88
  - LICENSE
85
89
  - NOTICE.TXT
86
- - README.md
87
- - lib/logstash/filters/metrics.rb
88
- - logstash-filter-metrics.gemspec
89
- - spec/filters/metrics_spec.rb
90
90
  homepage: http://www.elastic.co/guide/en/logstash/current/index.html
91
91
  licenses:
92
92
  - Apache License (2.0)
@@ -109,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
109
  version: '0'
110
110
  requirements: []
111
111
  rubyforge_project:
112
- rubygems_version: 2.4.8
112
+ rubygems_version: 2.1.9
113
113
  signing_key:
114
114
  specification_version: 4
115
115
  summary: The metrics filter is useful for aggregating metrics.