fluent-plugin-groupcounter 0.2.1 → 0.2.2
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/fluent-plugin-groupcounter.gemspec +1 -1
- data/lib/fluent/plugin/out_groupcounter.rb +10 -11
- data/spec/out_groupcounter_spec.rb +28 -8
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0eae1a0bcfc8a083aae95ca82cf3870d3ec1055c
|
4
|
+
data.tar.gz: 14201fa360defd334687a6ee18aa3722fdba9791
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 089d7eec6dc0e3206e105610b9e28b8f6813c927d79d006c5ec04abcdb1870adc7a4d18808fc821a3050af86ce352557cfc48da51e50d9572fdc1ee465558e3c
|
7
|
+
data.tar.gz: ccc024bf4414587322556d0a9725ad475786b8ac7e71c9c6cd5d07c24bf73b307a5d0169542a0e4cfd7333a566fc898b5d7653991ece26a53449cedfb0ace0d9
|
@@ -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-groupcounter"
|
6
|
-
s.version = "0.2.
|
6
|
+
s.version = "0.2.2"
|
7
7
|
s.authors = ["Ryosuke IWANAGA", "Naotoshi SEO"]
|
8
8
|
s.email = ["@riywo", "sonots@gmail.com"]
|
9
9
|
s.homepage = "https://github.com/riywo/fluent-plugin-groupcounter"
|
@@ -37,10 +37,6 @@ class Fluent::GroupCounterOutput < Fluent::Output
|
|
37
37
|
def configure(conf)
|
38
38
|
super
|
39
39
|
|
40
|
-
if @group_by_keys.nil? and @group_by_expression.nil?
|
41
|
-
raise Fluent::ConfigError, "Either of group_by_keys or group_by_expression must be specified"
|
42
|
-
end
|
43
|
-
|
44
40
|
if @count_interval
|
45
41
|
@count_interval = @count_interval.to_i
|
46
42
|
else
|
@@ -114,12 +110,13 @@ class Fluent::GroupCounterOutput < Fluent::Output
|
|
114
110
|
# total_count = counts_per_tag.delete('__total_count')
|
115
111
|
|
116
112
|
counts_per_tag.each do |group_key, count|
|
113
|
+
group_key_with = group_key.empty? ? "" : group_key + @delimiter
|
117
114
|
output[key_prefix + group_key + @count_suffix] = count[:count] if count[:count]
|
118
|
-
output[key_prefix +
|
119
|
-
output[key_prefix +
|
120
|
-
output[key_prefix +
|
121
|
-
# output[key_prefix +
|
122
|
-
# output[key_prefix +
|
115
|
+
output[key_prefix + group_key_with + "#{@min_key}#{@min_suffix}"] = count[:min] if count[:min]
|
116
|
+
output[key_prefix + group_key_with + "#{@max_key}#{@max_suffix}"] = count[:max] if count[:max]
|
117
|
+
output[key_prefix + group_key_with + "#{@avg_key}#{@avg_suffix}"] = count[:sum] / (count[:count] * 1.0) if count[:sum] and count[:count] > 0
|
118
|
+
# output[key_prefix + group_key_with + "rate"] = ((count[:count] * 100.0) / (1.00 * step)).floor / 100.0
|
119
|
+
# output[key_prefix + group_key_with + "percentage"] = count[:count] * 100.0 / (1.00 * total_count) if total_count > 0
|
123
120
|
end
|
124
121
|
|
125
122
|
output
|
@@ -139,7 +136,7 @@ class Fluent::GroupCounterOutput < Fluent::Output
|
|
139
136
|
|
140
137
|
output = {}
|
141
138
|
counts.keys.each do |tag|
|
142
|
-
generate_fields(counts[tag], output, stripped_tag(tag) +
|
139
|
+
generate_fields(counts[tag], output, stripped_tag(tag) + @delimiter)
|
143
140
|
end
|
144
141
|
output
|
145
142
|
end
|
@@ -237,9 +234,11 @@ class Fluent::GroupCounterOutput < Fluent::Output
|
|
237
234
|
if @group_by_expression
|
238
235
|
tags = tag.split('.')
|
239
236
|
group_key = expand_placeholder(@group_by_expression, record, tag, tags, Time.at(time))
|
240
|
-
|
237
|
+
elsif @group_by_keys
|
241
238
|
values = @group_by_keys.map {|key| record[key] || 'undef'}
|
242
239
|
group_key = values.join(@delimiter)
|
240
|
+
else
|
241
|
+
return ""
|
243
242
|
end
|
244
243
|
group_key = group_key.to_s.force_encoding('ASCII-8BIT')
|
245
244
|
|
@@ -22,13 +22,6 @@ describe Fluent::GroupCounterOutput do
|
|
22
22
|
let(:driver) { Fluent::Test::OutputTestDriver.new(Fluent::GroupCounterOutput, tag).configure(config) }
|
23
23
|
|
24
24
|
describe 'test configure' do
|
25
|
-
describe 'bad configuration' do
|
26
|
-
context 'test empty configuration' do
|
27
|
-
let(:config) { %[] }
|
28
|
-
it { expect { driver }.to raise_error(Fluent::ConfigError) }
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
25
|
describe 'good configuration' do
|
33
26
|
subject { driver.instance }
|
34
27
|
|
@@ -84,7 +77,7 @@ describe Fluent::GroupCounterOutput do
|
|
84
77
|
Hash[*(expected.map {|key, val| next ["test_#{key}", val] }.flatten)]
|
85
78
|
end
|
86
79
|
|
87
|
-
context '
|
80
|
+
context 'typical' do
|
88
81
|
let(:config) { CONFIG }
|
89
82
|
before do
|
90
83
|
Fluent::Engine.stub(:now).and_return(time)
|
@@ -221,6 +214,33 @@ describe Fluent::GroupCounterOutput do
|
|
221
214
|
it { emit }
|
222
215
|
end
|
223
216
|
|
217
|
+
context 'no group_by' do
|
218
|
+
let(:config) do
|
219
|
+
%[
|
220
|
+
tag_prefix count
|
221
|
+
output_per_tag true
|
222
|
+
|
223
|
+
count_suffix count
|
224
|
+
max_key reqtime
|
225
|
+
min_key reqtime
|
226
|
+
avg_key reqtime
|
227
|
+
]
|
228
|
+
end
|
229
|
+
let(:expected) do
|
230
|
+
{
|
231
|
+
"count"=>4,
|
232
|
+
"reqtime_min"=>0.0,
|
233
|
+
"reqtime_max"=>3.003,
|
234
|
+
"reqtime_avg"=>1.5015,
|
235
|
+
}
|
236
|
+
end
|
237
|
+
before do
|
238
|
+
Fluent::Engine.stub(:now).and_return(time)
|
239
|
+
Fluent::Engine.should_receive(:emit).with("count.#{tag}", time, expected)
|
240
|
+
end
|
241
|
+
it { emit }
|
242
|
+
end
|
243
|
+
|
224
244
|
context 'tag' do
|
225
245
|
context 'not effective if output_per_tag true' do
|
226
246
|
let(:config) do
|