fluent-plugin-calc 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +11 -12
- data/fluent-plugin-calc.gemspec +1 -1
- data/lib/fluent/plugin/out_calc.rb +1 -1
- data/spec/out_calc_spec.rb +48 -17
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a1c071f135ee347fbda42cabebcf97145738e861
|
4
|
+
data.tar.gz: d96f235f6f89144c8c576be0a8502034355c6147
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 10600118061e558c871707bff0c6d24c55aa2c6b3dea62c176a5ac0f2e317dc2d1dd116bf306c2f4a806e26510105a2b6ce5d4969b4ff349e1152b4e885a4019
|
7
|
+
data.tar.gz: 2ddf8699037167a5bd72aef1a3489d73487bbb75c1befd80c77cf2be0d60e3c70468eb45fbdba1efa6f52417926c69bd45bd117b1881eb48b610edd3af5aec7f
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -7,7 +7,6 @@ Fluentd plugin to calc messages.
|
|
7
7
|
<match foo.**>
|
8
8
|
type calc
|
9
9
|
interval 5s
|
10
|
-
aggragate tag
|
11
10
|
add_tag_prefix calc
|
12
11
|
|
13
12
|
sum .*_count$
|
@@ -18,18 +17,18 @@ Fluentd plugin to calc messages.
|
|
18
17
|
|
19
18
|
Assuming following inputs are coming:
|
20
19
|
|
21
|
-
foo.bar: {"4xx_count":1,"5xx_count":2","reqtime_max":12083,"reqtime_min":10,reqtime_avg":240.46}
|
22
|
-
foo.bar: {"4xx_count":4,"5xx_count":2","reqtime_max":24831,"reqtime_min":82,reqtime_avg":300.46}
|
20
|
+
foo.bar: {"4xx_count":1,"5xx_count":2","reqtime_max":12083,"reqtime_min":10,"reqtime_avg":240.46}
|
21
|
+
foo.bar: {"4xx_count":4,"5xx_count":2","reqtime_max":24831,"reqtime_min":82,"reqtime_avg":300.46}
|
23
22
|
|
24
23
|
then output bocomes as belows:
|
25
24
|
|
26
|
-
foo.bar: {"4xx_count":5,"5xx_count":4","reqtime_max":24831,"reqtime_min":82,reqtime_avg":270.46}
|
25
|
+
calc.foo.bar: {"4xx_count":5,"5xx_count":4","reqtime_max":24831,"reqtime_min":82,"reqtime_avg":270.46}
|
27
26
|
|
28
27
|
## Parameters
|
29
28
|
|
30
|
-
-
|
31
|
-
|
32
|
-
|
29
|
+
- sum, min, max, avg
|
30
|
+
|
31
|
+
Calculation. Specify input keys by a regular expression
|
33
32
|
|
34
33
|
- interval
|
35
34
|
|
@@ -37,15 +36,15 @@ then output bocomes as belows:
|
|
37
36
|
|
38
37
|
- tag
|
39
38
|
|
40
|
-
The output tag name
|
39
|
+
The output tag name. Required for aggregate `all`.
|
41
40
|
|
42
41
|
- add_tag_prefix
|
43
42
|
|
44
|
-
Add tag prefix for output message
|
43
|
+
Add tag prefix for output message.
|
45
44
|
|
46
|
-
-
|
47
|
-
|
48
|
-
|
45
|
+
- aggragate
|
46
|
+
|
47
|
+
Calculate by each `tag` or `all`. The default value is `tag`.
|
49
48
|
|
50
49
|
## ChangeLog
|
51
50
|
|
data/fluent-plugin-calc.gemspec
CHANGED
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "fluent-plugin-calc"
|
6
|
-
s.version = "0.0.
|
6
|
+
s.version = "0.0.2"
|
7
7
|
s.authors = ["Naotoshi SEO"]
|
8
8
|
s.email = ["sonots@gmail.com"]
|
9
9
|
s.homepage = "https://github.com/sonots/fluent-plugin-calc"
|
@@ -121,7 +121,7 @@ class Fluent::CalcOutput < Fluent::Output
|
|
121
121
|
def generate_output(count, matches)
|
122
122
|
output = matches.dup
|
123
123
|
output.keys.each do |key|
|
124
|
-
if @avg.match(key)
|
124
|
+
if @avg and @avg.match(key)
|
125
125
|
output[key] = matches[key] / count.to_f # compute avg
|
126
126
|
end
|
127
127
|
end
|
data/spec/out_calc_spec.rb
CHANGED
@@ -1,11 +1,16 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
require_relative 'spec_helper'
|
3
3
|
|
4
|
+
class Fluent::Test::OutputTestDriver
|
5
|
+
def emit_with_tag(record, time=Time.now, tag = nil)
|
6
|
+
@tag = tag if tag
|
7
|
+
emit(record, time)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
4
11
|
describe Fluent::CalcOutput do
|
5
12
|
before { Fluent::Test.setup }
|
6
|
-
CONFIG = %[
|
7
|
-
input_key message
|
8
|
-
]
|
13
|
+
CONFIG = %[]
|
9
14
|
let(:tag) { 'foo.bar' }
|
10
15
|
let(:driver) { Fluent::Test::OutputTestDriver.new(Fluent::CalcOutput, tag).configure(config) }
|
11
16
|
|
@@ -14,7 +19,7 @@ describe Fluent::CalcOutput do
|
|
14
19
|
context 'invalid aggregate' do
|
15
20
|
let(:config) do
|
16
21
|
CONFIG + %[
|
17
|
-
|
22
|
+
aggregate foo
|
18
23
|
]
|
19
24
|
end
|
20
25
|
it { expect { driver }.to raise_error(Fluent::ConfigError) }
|
@@ -23,7 +28,7 @@ describe Fluent::CalcOutput do
|
|
23
28
|
context 'no tag for aggregate all' do
|
24
29
|
let(:config) do
|
25
30
|
CONFIG + %[
|
26
|
-
|
31
|
+
aggregate all
|
27
32
|
]
|
28
33
|
end
|
29
34
|
it { expect { driver }.to raise_error(Fluent::ConfigError) }
|
@@ -64,6 +69,7 @@ describe Fluent::CalcOutput do
|
|
64
69
|
let(:messages) do
|
65
70
|
[
|
66
71
|
{"4xx_count"=>1,"5xx_count"=>2,"reqtime_max"=>6,"reqtime_min"=>1,"reqtime_avg"=>3},
|
72
|
+
{">4sec_count"=>1},
|
67
73
|
{"4xx_count"=>2,"5xx_count"=>2,"reqtime_max"=>5,"reqtime_min"=>2,"reqtime_avg"=>2},
|
68
74
|
{"4xx_count"=>3,"5xx_count"=>2,"reqtime_max"=>1,"reqtime_min"=>3,"reqtime_avg"=>4},
|
69
75
|
]
|
@@ -121,24 +127,49 @@ describe Fluent::CalcOutput do
|
|
121
127
|
it { emit }
|
122
128
|
end
|
123
129
|
|
124
|
-
context 'aggregate
|
125
|
-
let(:
|
126
|
-
|
130
|
+
context 'aggregate' do
|
131
|
+
let(:emit) do
|
132
|
+
driver.run { messages.each {|message| driver.emit_with_tag(message, time, 'foo.bar') } }
|
133
|
+
driver.run { messages.each {|message| driver.emit_with_tag(message, time, 'foo.bar2') } }
|
134
|
+
driver.instance.flush_emit(0)
|
135
|
+
end
|
136
|
+
|
137
|
+
context 'aggregate all' do
|
138
|
+
let(:config) do
|
139
|
+
CONFIG + %[
|
127
140
|
aggregate all
|
128
141
|
tag foo
|
129
142
|
sum _count$
|
130
|
-
max _max$
|
131
|
-
min _min$
|
132
|
-
avg _avg$
|
133
143
|
]
|
144
|
+
end
|
145
|
+
before do
|
146
|
+
Fluent::Engine.stub(:now).and_return(time)
|
147
|
+
Fluent::Engine.should_receive(:emit).with("foo", time, {
|
148
|
+
"4xx_count"=>12,"5xx_count"=>12,"reqtime_max"=>6,"reqtime_min"=>1,"reqtime_avg"=>3.0
|
149
|
+
})
|
150
|
+
end
|
151
|
+
it { emit }
|
134
152
|
end
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
153
|
+
|
154
|
+
context 'aggregate tag' do
|
155
|
+
let(:config) do
|
156
|
+
CONFIG + %[
|
157
|
+
aggregate tag
|
158
|
+
add_tag_prefix calc
|
159
|
+
sum _count$
|
160
|
+
]
|
161
|
+
end
|
162
|
+
before do
|
163
|
+
Fluent::Engine.stub(:now).and_return(time)
|
164
|
+
Fluent::Engine.should_receive(:emit).with("calc.foo.bar", time, {
|
165
|
+
"4xx_count"=>6,"5xx_count"=>6,"reqtime_max"=>6,"reqtime_min"=>1,"reqtime_avg"=>3.0
|
166
|
+
})
|
167
|
+
Fluent::Engine.should_receive(:emit).with("calc.foo.bar2", time, {
|
168
|
+
"4xx_count"=>6,"5xx_count"=>6,"reqtime_max"=>6,"reqtime_min"=>1,"reqtime_avg"=>3.0
|
169
|
+
})
|
170
|
+
end
|
171
|
+
it { emit }
|
140
172
|
end
|
141
|
-
it { emit }
|
142
173
|
end
|
143
174
|
end
|
144
175
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-calc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Naotoshi SEO
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-05-
|
11
|
+
date: 2013-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|