logstash-filter-metrics 2.0.3 → 3.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 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.