fluent-plugin-stats 0.3.5 → 0.3.6

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: bf27cb39ed1dd976c0c6722b0be301d03e57eac9
4
- data.tar.gz: 95384c6fe1303b54e722158db18685924dc9718e
3
+ metadata.gz: 11b934f53568a8eee91bce6436279e8b6503057b
4
+ data.tar.gz: fea48bdcd8022fedee054ec732333a38eaa75714
5
5
  SHA512:
6
- metadata.gz: 8ee9239994adaa274869f4a7d73ea8c6864dd808acfbe3392f89bf2566fb5692b4d323e64806c0e6bb454044c87fe69f08e75a183b7f18c5c4712ac4a8cddef5
7
- data.tar.gz: 63af8f6ead4b5982e9505656c03cbe8dde5301d6e0e42d2839267eb36d24cec47267589962f2071db41805a897d428c441cdc8b08288cf8116eaea333c477600
6
+ metadata.gz: 94019310b7906f9638feef6d27614921c390298b4406df88663e95d70419ccd1fd5d2b75fc203989b835606f0d084e29e27fdf27fc8f0a0ccad32f10a705afd4
7
+ data.tar.gz: 9408530d2b650a126a19ca125883876da8f490be347073808f574b6b3d69126315325c0f6443439fe2cb3b3937d874b77511107266192d814882aaf61c99e9bd
@@ -1,6 +1,6 @@
1
1
  rvm:
2
- - 1.9.2
3
2
  - 1.9.3
4
3
  - 2.0.0
4
+ - 2.1
5
5
  gemfile:
6
6
  - Gemfile
@@ -1,3 +1,10 @@
1
+ ## 0.3.6 (2014/12/3)
2
+
3
+ Enhancements:
4
+
5
+ * Do not compute average for zero_emit message
6
+ * ToDo: Still, we should get the denominator to compute average from input json field
7
+
1
8
  ## 0.3.5 (2014/08/07)
2
9
 
3
10
  Enhancements:
@@ -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-stats"
6
- s.version = "0.3.5"
6
+ s.version = "0.3.6"
7
7
  s.authors = ["Naotoshi Seo"]
8
8
  s.email = ["sonots@gmail.com"]
9
9
  s.homepage = "https://github.com/sonots/fluent-plugin-stats"
@@ -80,12 +80,14 @@ class Fluent::StatsOutput < Fluent::Output
80
80
  matches = {}
81
81
  prev_matches.keys.each do |aggregate_key|
82
82
  next unless prev_matches[aggregate_key][:count] > 0 # Prohibit to emit anymore
83
- matches[aggregate_key] = { :count => 0, :sum => {}, :max => {}, :min => {}, :avg => {} }
83
+ matches[aggregate_key] = { :count => 0, :sum => {}, :max => {}, :min => {}, :avg => {}, :avg_count => {} }
84
84
  # ToDo: would want default configuration for :max, :min
85
85
  prev_matches[aggregate_key][:sum].keys.each {|key| matches[aggregate_key][:sum][key] = 0 }
86
86
  prev_matches[aggregate_key][:max].keys.each {|key| matches[aggregate_key][:max][key] = 0 }
87
87
  prev_matches[aggregate_key][:min].keys.each {|key| matches[aggregate_key][:min][key] = 0 }
88
88
  prev_matches[aggregate_key][:avg].keys.each {|key| matches[aggregate_key][:avg][key] = 0 }
89
+ prev_matches[aggregate_key][:avg_count] ||= {} # for lower version compatibility
90
+ prev_matches[aggregate_key][:avg_count].keys.each {|key| matches[aggregate_key][:avg_count][key] = 0 }
89
91
  end
90
92
  matches
91
93
  else
@@ -109,7 +111,7 @@ class Fluent::StatsOutput < Fluent::Output
109
111
  # Called when new line comes. This method actually does not emit
110
112
  def emit(tag, es, chain)
111
113
  # stats
112
- matches = { :count => 0, :sum => {}, :max => {}, :min => {}, :avg => {} }
114
+ matches = { :count => 0, :sum => {}, :max => {}, :min => {}, :avg => {}, :avg_count => {} }
113
115
  es.each do |time, record|
114
116
  record = stringify_keys(record)
115
117
  @sum_keys.each do |key|
@@ -127,6 +129,8 @@ class Fluent::StatsOutput < Fluent::Output
127
129
  @avg_keys.each do |key|
128
130
  next unless record[key] and value = record[key].to_f
129
131
  matches[:avg][key] = sum(matches[:avg][key], value)
132
+ # ignore zero emitted value
133
+ matches[:avg_count][key] = sum(matches[:avg_count][key], 1) unless (@zero_emit and value.zero?)
130
134
  end
131
135
  record.keys.each do |key|
132
136
  key = key.to_s
@@ -142,6 +146,8 @@ class Fluent::StatsOutput < Fluent::Output
142
146
  end
143
147
  if @avg and @avg.match(key)
144
148
  matches[:avg][key] = sum(matches[:avg][key], value) # sum yet
149
+ # ignore zero emitted value
150
+ matches[:avg_count][key] = sum(matches[:avg_count][key], 1) unless (@zero_emit and value.zero?)
145
151
  end
146
152
  end if @sum || @max || @min || @avg
147
153
  matches[:count] += 1
@@ -150,7 +156,8 @@ class Fluent::StatsOutput < Fluent::Output
150
156
  aggregate_key = @aggregate_proc.call(tag)
151
157
 
152
158
  # thread safe merge
153
- @matches[aggregate_key] ||= { :count => 0, :sum => {}, :max => {}, :min => {}, :avg => {} }
159
+ @matches[aggregate_key] ||= { :count => 0, :sum => {}, :max => {}, :min => {}, :avg => {}, :avg_count => {} }
160
+ @matches[aggregate_key][:avg_count] ||= {} # for lower version compatibility
154
161
  @mutex.synchronize do
155
162
  matches[:sum].keys.each do |key|
156
163
  @matches[aggregate_key][:sum][key] = sum(@matches[aggregate_key][:sum][key], matches[:sum][key])
@@ -163,6 +170,7 @@ class Fluent::StatsOutput < Fluent::Output
163
170
  end
164
171
  matches[:avg].keys.each do |key|
165
172
  @matches[aggregate_key][:avg][key] = sum(@matches[aggregate_key][:avg][key], matches[:avg][key]) # sum yet
173
+ @matches[aggregate_key][:avg_count][key] = sum(@matches[aggregate_key][:avg_count][key], matches[:avg_count][key])
166
174
  end
167
175
  @matches[aggregate_key][:count] += matches[:count]
168
176
  end
@@ -230,9 +238,11 @@ class Fluent::StatsOutput < Fluent::Output
230
238
  matches[:min].keys.each do |key|
231
239
  output[key + @min_suffix] = matches[:min][key]
232
240
  end
241
+ matches[:avg_count] ||= {} # for lower version compatibility
233
242
  matches[:avg].keys.each do |key|
234
243
  output[key + @avg_suffix] = matches[:avg][key]
235
- output[key + @avg_suffix] /= matches[:count].to_f if matches[:count] > 0
244
+ count = matches[:avg_count][key].to_f
245
+ output[key + @avg_suffix] /= count unless count.zero?
236
246
  end
237
247
  output
238
248
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-stats
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Naotoshi Seo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-06 00:00:00.000000000 Z
11
+ date: 2014-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -135,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
135
  version: '0'
136
136
  requirements: []
137
137
  rubyforge_project: fluent-plugin-stats
138
- rubygems_version: 2.2.0
138
+ rubygems_version: 2.2.2
139
139
  signing_key:
140
140
  specification_version: 4
141
141
  summary: Fluentd plugin to calculate statistics such as sum, max, min, avg