fluent-plugin-numeric-monitor 0.1.7 → 0.1.8

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: ed7ae5ea19e39d2c8681925b418fb903f2c04edc
4
- data.tar.gz: b8ac80695a505db3f0de381bdfd1ff3f78f10232
3
+ metadata.gz: e9958f6c8175857684aa47425a26b7a334570e6a
4
+ data.tar.gz: 64f7c2b792cf2a14b62e4f120ece11e5f0aab977
5
5
  SHA512:
6
- metadata.gz: 048e8fc9090e7a8cac43820b9892878c180acad53d40f890c16d9928f6685e907259bc9a75ed81888cb60a8f230df1c6cc2f0021393cb8c3db07fd6c5a3e52d9
7
- data.tar.gz: 05958871c3bb114ca921ced7af82676d03ce7741beea5c17d6c518c50813b40afe4cc6a3a7b476e5a2a1b5df1353521b3ac854167d4b1f4bb8fd5ab2383ef112
6
+ metadata.gz: c9ea36335547a948cfd4f808224c4c55158ca350a9fc39f1a5c5135a1da19c5ded3f456440d3de21cdec05740e2c17ecb19f6efa39d8a6ac90d6d7cdccbefc4e
7
+ data.tar.gz: 030b305fc8bb4bcf9c504d683d33a1c5ca511e57c7fe97b86a276d2a5728c005119fe6c33db0f9db37e81c709a562755888bbe21a97310afc4c1c855c08f15dd
data/.travis.yml CHANGED
@@ -1,4 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.3
4
3
  - 2.0.0
4
+ - 2.1.5
5
+ - 2.2.2
data/example/test.conf ADDED
@@ -0,0 +1,17 @@
1
+ <source>
2
+ @type dummy
3
+ tag testing
4
+ rate 10
5
+ auto_increment_key num
6
+ dummy [{"str": "message"}]
7
+ </source>
8
+
9
+ <match testing>
10
+ @type numeric_monitor
11
+ count_interval 10s
12
+ monitor_key num
13
+ </match>
14
+
15
+ <match monitor>
16
+ @type stdout
17
+ </match>
@@ -0,0 +1,17 @@
1
+ <source>
2
+ @type dummy
3
+ tag testing
4
+ rate 10
5
+ auto_increment_key num
6
+ dummy [{"str": "message"}]
7
+ </source>
8
+
9
+ <match testing>
10
+ @type numeric_monitor
11
+ count_interval 1s
12
+ monitor_key num
13
+ </match>
14
+
15
+ <match monitor>
16
+ @type stdout
17
+ </match>
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |gem|
3
3
  gem.name = "fluent-plugin-numeric-monitor"
4
- gem.version = "0.1.7"
4
+ gem.version = "0.1.8"
5
5
  gem.authors = ["TAGOMORI Satoshi"]
6
6
  gem.email = ["tagomoris@gmail.com"]
7
7
  gem.description = %q{Fluentd plugin to calculate min/max/avg/Xpercentile values, and emit these data as message}
@@ -15,5 +15,6 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ["lib"]
16
16
 
17
17
  gem.add_development_dependency "rake"
18
+ gem.add_development_dependency "test-unit"
18
19
  gem.add_runtime_dependency "fluentd"
19
20
  end
@@ -8,13 +8,21 @@ class Fluent::NumericMonitorOutput < Fluent::Output
8
8
 
9
9
  EMIT_STREAM_RECORDS = 100
10
10
 
11
- config_param :count_interval, :time, :default => 60
12
- config_param :unit, :string, :default => nil
13
- config_param :tag, :string, :default => 'monitor'
14
- config_param :tag_prefix, :string, :default => nil
11
+ config_param :count_interval, :time, default: 60
12
+ config_param :unit, default: nil do |value|
13
+ case value
14
+ when 'minute' then 60
15
+ when 'hour' then 3600
16
+ when 'day' then 86400
17
+ else
18
+ raise Fluent::ConfigError, "unit must be one of minute/hour/day"
19
+ end
20
+ end
21
+ config_param :tag, :string, default: 'monitor'
22
+ config_param :tag_prefix, :string, default: nil
15
23
 
16
- config_param :output_per_tag, :bool, :default => false
17
- config_param :aggregate, :default => 'tag' do |val|
24
+ config_param :output_per_tag, :bool, default: false
25
+ config_param :aggregate, default: 'tag' do |val|
18
26
  case val
19
27
  when 'tag' then :tag
20
28
  when 'all' then :all
@@ -22,10 +30,10 @@ class Fluent::NumericMonitorOutput < Fluent::Output
22
30
  raise Fluent::ConfigError, "aggregate MUST be one of 'tag' or 'all'"
23
31
  end
24
32
  end
25
- config_param :input_tag_remove_prefix, :string, :default => nil
33
+ config_param :input_tag_remove_prefix, :string, default: nil
26
34
  config_param :monitor_key, :string
27
- config_param :output_key_prefix, :string, :default => nil
28
- config_param :percentiles, :default => nil do |val|
35
+ config_param :output_key_prefix, :string, default: nil
36
+ config_param :percentiles, default: nil do |val|
29
37
  values = val.split(",").map(&:to_i)
30
38
  if values.select{|i| i < 1 or i > 99 }.size > 0
31
39
  raise Fluent::ConfigError, "percentiles MUST be specified between 1 and 99 by integer"
@@ -33,22 +41,15 @@ class Fluent::NumericMonitorOutput < Fluent::Output
33
41
  values
34
42
  end
35
43
 
36
- config_param :samples_limit, :integer, :default => 1000000
44
+ config_param :samples_limit, :integer, default: 1000000
45
+ config_param :interval, :float, default: 0.5
37
46
 
38
47
  attr_accessor :count, :last_checked
39
48
 
40
49
  def configure(conf)
41
50
  super
42
51
 
43
- if @unit
44
- @count_interval = case @unit
45
- when 'minute' then 60
46
- when 'hour' then 3600
47
- when 'day' then 86400
48
- else
49
- raise Fluent::ConfigError, "unit must be one of minute/hour/day"
50
- end
51
- end
52
+ @count_interval = @unit if @unit
52
53
 
53
54
  if @input_tag_remove_prefix
54
55
  @removed_prefix_string = @input_tag_remove_prefix + '.'
@@ -64,7 +65,7 @@ class Fluent::NumericMonitorOutput < Fluent::Output
64
65
  raise Fluent::ConfigError, 'Specify both of output_per_tag and tag_prefix'
65
66
  end
66
67
  @tag_prefix_string = @tag_prefix + '.' if @output_per_tag
67
-
68
+
68
69
  @count = count_initialized
69
70
  @mutex = Mutex.new
70
71
  end
@@ -88,8 +89,8 @@ class Fluent::NumericMonitorOutput < Fluent::Output
88
89
  def watch
89
90
  @last_checked = Fluent::Engine.now
90
91
  while true
91
- sleep 0.5
92
- if Fluent::Engine.now - @last_checked > @count_interval
92
+ sleep @interval
93
+ if Fluent::Engine.now - @last_checked >= @count_interval
93
94
  now = Fluent::Engine.now
94
95
  flush_emit
95
96
  @last_checked = now
@@ -101,15 +102,15 @@ class Fluent::NumericMonitorOutput < Fluent::Output
101
102
  # counts['tag'] = {:min => num, :max => num, :sum => num, :num => num [, :sample => [....]]}
102
103
  if @aggregate == :all
103
104
  if @percentiles
104
- {'all' => {:min => nil, :max => nil, :sum => nil, :num => 0, :sample => []}}
105
+ {'all' => {min: nil, max: nil, sum: nil, num: 0, sample: []}}
105
106
  else
106
- {'all' => {:min => nil, :max => nil, :sum => nil, :num => 0}}
107
+ {'all' => {min: nil, max: nil, sum: nil, num: 0}}
107
108
  end
108
109
  elsif keys
109
110
  values = if @percentiles
110
- Array.new(keys.length) {|i| {:min => nil, :max => nil, :sum => nil, :num => 0, :sample => []}}
111
+ Array.new(keys.length) {|i| {min: nil, max: nil, sum: nil, num: 0, sample: []}}
111
112
  else
112
- Array.new(keys.length) {|i| {:min => nil, :max => nil, :sum => nil, :num => 0}}
113
+ Array.new(keys.length) {|i| {min: nil, max: nil, sum: nil, num: 0}}
113
114
  end
114
115
  Hash[[keys, values].transpose]
115
116
  else
@@ -193,8 +194,8 @@ class Fluent::NumericMonitorOutput < Fluent::Output
193
194
  end
194
195
 
195
196
  @mutex.synchronize do
196
- c = (@count[tag] ||= {:min => nil, :max => nil, :sum => nil, :num => 0})
197
-
197
+ c = (@count[tag] ||= {min: nil, max: nil, sum: nil, num: 0})
198
+
198
199
  if c[:min].nil? or c[:min] > min
199
200
  c[:min] = min
200
201
  end
@@ -208,7 +209,7 @@ class Fluent::NumericMonitorOutput < Fluent::Output
208
209
  c[:sample] ||= []
209
210
  if c[:sample].size + sample.size > @samples_limit
210
211
  (c[:sample].size + sample.size - @samples_limit).times do
211
- c[:sample].delete_at(rand(c[:sample].size))
212
+ c[:sample].delete_at(rand(c[:sample].size))
212
213
  end
213
214
  end
214
215
  c[:sample] += sample
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-numeric-monitor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - TAGOMORI Satoshi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-07 00:00:00.000000000 Z
11
+ date: 2015-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: test-unit
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: fluentd
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +66,8 @@ files:
52
66
  - LICENSE.txt
53
67
  - README.md
54
68
  - Rakefile
69
+ - example/test.conf
70
+ - example/test_1s.conf
55
71
  - fluent-plugin-numeric-monitor.gemspec
56
72
  - lib/fluent/plugin/out_numeric_monitor.rb
57
73
  - test/helper.rb
@@ -76,10 +92,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
76
92
  version: '0'
77
93
  requirements: []
78
94
  rubyforge_project:
79
- rubygems_version: 2.2.2
95
+ rubygems_version: 2.4.5
80
96
  signing_key:
81
97
  specification_version: 4
82
98
  summary: Fluentd plugin to calculate min/max/avg/Xpercentile values
83
99
  test_files:
84
100
  - test/helper.rb
85
101
  - test/plugin/test_out_numeric_monitor.rb
102
+ has_rdoc: