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 +4 -4
- data/CHANGELOG.md +5 -2
- data/lib/logstash/filters/metrics.rb +31 -26
- data/logstash-filter-metrics.gemspec +1 -2
- data/spec/filters/metrics_spec.rb +43 -41
- metadata +22 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6a50be0b406ee5990f6019e289c34a53d3c6045b
|
4
|
+
data.tar.gz: 34a73a6c0117be3127dbd3e76f712f57f9852979
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0163461d2d0081bb9078a687079230900035e85608cd9119664577bf872baf0f188bb6217660fb4a3837489f2a1036976b934cb350913944443cf3cbc4335da0
|
7
|
+
data.tar.gz: e7ff4132ffd0f0c3085f35fa85e4272e9d475062b9c20b366edf2cf5637ded28ed68d6099114bbdba444cc0fb5da8f1a918fecf33f16cd27334441f06843ab20
|
data/CHANGELOG.md
CHANGED
@@ -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 => [ "
|
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
|
35
|
-
# * "thing
|
36
|
-
# * "thing
|
37
|
-
# * "thing
|
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
|
44
|
-
# * "thing
|
45
|
-
# * "thing
|
46
|
-
# * "thing
|
47
|
-
# * "thing
|
48
|
-
# * "thing
|
49
|
-
# * "thing
|
50
|
-
# * "thing
|
51
|
-
# * "thing
|
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
|
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
|
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}
|
198
|
-
event["#{name}
|
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}
|
201
|
-
event["#{name}
|
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}
|
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}
|
236
|
-
event["#{name}
|
237
|
-
event["#{name}
|
238
|
-
event["#{name}
|
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 = '
|
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" => ["
|
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" => ["
|
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["
|
33
|
-
insist { subject.first["
|
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
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
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" => ["
|
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["
|
58
|
-
insist { events.first["
|
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" => ["
|
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?("
|
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? "
|
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" => ["
|
90
|
-
config2 = {"meter" => ["
|
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["
|
116
|
-
insist { events2.first["
|
117
|
-
insist { events1.first["
|
118
|
-
insist { events2.first["
|
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" => ["
|
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["
|
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?
|
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['
|
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['
|
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['
|
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['
|
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['
|
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" => ["
|
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["
|
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?("
|
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? "
|
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?("
|
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? "
|
197
|
-
insist { percentile_fields }.include? "
|
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" => ["
|
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" => ["
|
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["
|
227
|
-
insist { filter.flush.first["
|
228
|
-
insist { filter.flush.first["
|
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" => ["
|
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:
|
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-
|
11
|
+
date: 2015-10-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
|
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
|
-
|
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.
|
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.
|