fluent-plugin-grepcounter 0.1.2 → 0.1.3

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: 55fb88fa0e4693f083e614072f4e4b39a977e4dc
4
- data.tar.gz: 6a34586f73d49333d97fddd3ce51c33c2033c40b
3
+ metadata.gz: cceea9a84d43542c30eda8ae0b2d3127d3a8ee8a
4
+ data.tar.gz: ed10007f880499d164493b9c42a5edaefb0525c4
5
5
  SHA512:
6
- metadata.gz: 01453ec71582eaed4d7a0d505dbcbfd93e3708debf9766ecb6c820679d5e85c4a1db0d8290981db628abc1fd6fc0d3ace701d097ee72ad57f722c178f1f1d65e
7
- data.tar.gz: d3634e8a26b8dd3dbb04031248bc695c920d1987b7e2b62491cf36a5acd039d2ac683a19169025c7e795a360ca78d93890ffcccd15b9ccb7574cf7eda1ca15d7
6
+ metadata.gz: 66b848914ad05a5f45ddc55cdd3e3e0c01dbd5046879cd1bef6a910f194e23cf6b3ce631a9b008b03d0ce5fc27747e64b049ed10d08ce7768334250c637014b3
7
+ data.tar.gz: f5f6c761d747e58dc7ed9f14e94383221e7476376bf1764e22ac777e14c42aa86d54f538fe77a35ce1e2ad01748ce70164543e44a1faf0e42677b7c441c55b80
@@ -1,3 +1,9 @@
1
+ ## 0.1.3 (20130617)
2
+
3
+ Features
4
+
5
+ - comparison
6
+
1
7
  ## 0.1.2 (2013/05/16)
2
8
 
3
9
  Features
data/README.md CHANGED
@@ -45,7 +45,7 @@ Another example of grepcounter configuration to use `output_with_joined_delimite
45
45
  output_with_joined_delimiter \n
46
46
  </source>
47
47
 
48
- Then, output bocomes as belows (indented). You can use the `message` field is joined with \n.
48
+ Then, output bocomes as belows (indented). You can see the `message` field is joined with \n.
49
49
 
50
50
  warn.count.syslog.host1: {
51
51
  "count":2,
@@ -56,14 +56,50 @@ Then, output bocomes as belows (indented). You can use the `message` field is jo
56
56
 
57
57
  ## Parameters
58
58
 
59
+ - count\_interval
60
+
61
+ The interval time to count in seconds. Default is 60.
62
+
63
+ - input\_key
64
+
65
+ The target field key to grep out
66
+
67
+ - regexp
68
+
69
+ The filtering regular expression
70
+
71
+ - exclude
72
+
73
+ The excluding regular expression like grep -v
74
+
75
+ - threshold
76
+
77
+ The threshold number to emit
78
+
79
+ - comparison
80
+
81
+ The comparison operator for the threshold (either of `>=` or `<=`). Default is `>=`, i.e., emit if count >= threshold.
82
+
83
+ - output\_with\_joined\_delimiter
84
+
85
+ Join the output message array field with the specified delimiter to make the output message be a string.
86
+
59
87
  - aggregate
60
88
 
61
89
  Count by each `tag` or `all`. The default value is `tag`.
62
90
 
63
- - output_tag
91
+ - output\_tag
64
92
 
65
93
  The output tag. Required for aggregate `all`.
66
94
 
95
+ - add\_tag\_prefix
96
+
97
+ Add tag prefix for output message
98
+
99
+ - replace\_invalid\_sequence
100
+
101
+ Replace invalid byte sequence in UTF-8 with '?' character if `true`
102
+
67
103
  ## ChaangeLog
68
104
 
69
105
  See [CHANGELOG.md](CHANGELOG.md) for details.
@@ -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-grepcounter"
6
- s.version = "0.1.2"
6
+ s.version = "0.1.3"
7
7
  s.authors = ["Naotoshi SEO"]
8
8
  s.email = ["sonots@gmail.com"]
9
9
  s.homepage = "https://github.com/sonots/fluent-plugin-grepcounter"
@@ -7,6 +7,7 @@ class Fluent::GrepCounterOutput < Fluent::Output
7
7
  config_param :count_interval, :time, :default => 5
8
8
  config_param :exclude, :string, :default => nil
9
9
  config_param :threshold, :integer, :default => 1
10
+ config_param :comparison, :string, :default => '>='
10
11
  config_param :output_tag, :string, :default => nil
11
12
  config_param :add_tag_prefix, :string, :default => 'count'
12
13
  config_param :output_with_joined_delimiter, :string, :default => nil
@@ -25,15 +26,19 @@ class Fluent::GrepCounterOutput < Fluent::Output
25
26
  @exclude = Regexp.compile(@exclude) if @exclude
26
27
  @threshold = @threshold.to_i
27
28
 
29
+ unless ['>=', '<='].include?(@comparison)
30
+ raise Fluent::ConfigError, "grepcounter: comparison allows >=, <="
31
+ end
32
+
28
33
  unless ['tag', 'all'].include?(@aggregate)
29
- raise Fluent::ConfigError, "grepcounter aggregate allows tag/all"
34
+ raise Fluent::ConfigError, "grepcounter: aggregate allows tag/all"
30
35
  end
31
36
 
32
37
  case @aggregate
33
38
  when 'all'
34
- raise Fluent::ConfigError, "output_tag must be specified with aggregate all" if @output_tag.nil?
39
+ raise Fluent::ConfigError, "grepcounter: output_tag must be specified with aggregate all" if @output_tag.nil?
35
40
  when 'tag'
36
- # raise Fluent::ConfigError, "add_tag_prefix must be specified with aggregate tag" if @add_tag_prefix.nil?
41
+ # raise Fluent::ConfigError, "grepcounter: add_tag_prefix must be specified with aggregate tag" if @add_tag_prefix.nil?
37
42
  end
38
43
 
39
44
  @matches = {}
@@ -72,8 +77,7 @@ class Fluent::GrepCounterOutput < Fluent::Output
72
77
 
73
78
  chain.next
74
79
  rescue => e
75
- $log.warn e.message
76
- $log.warn e.backtrace.join(', ')
80
+ $log.warn "grepcounter: #{e.class} #{e.message} #{e.backtrace.first}"
77
81
  end
78
82
 
79
83
  # thread callback
@@ -89,8 +93,7 @@ class Fluent::GrepCounterOutput < Fluent::Output
89
93
  @last_checked = now
90
94
  end
91
95
  rescue => e
92
- $log.warn e.message
93
- $log.warn e.backtrace.join(", ")
96
+ $log.warn "grepcounter: #{e.class} #{e.message} #{e.backtrace.first}"
94
97
  end
95
98
  end
96
99
  end
@@ -121,7 +124,7 @@ class Fluent::GrepCounterOutput < Fluent::Output
121
124
 
122
125
  def generate_output(count, matches, tag = nil)
123
126
  return nil if count.nil?
124
- return nil if count < @threshold
127
+ return nil unless eval("#{count} #{@comparison} #{@threshold}")
125
128
  output = {}
126
129
  output['count'] = count
127
130
  output['message'] = @output_with_joined_delimiter.nil? ? matches : matches.join(@output_with_joined_delimiter)
@@ -40,6 +40,15 @@ describe Fluent::GrepCounterOutput do
40
40
  end
41
41
  it { expect { driver }.to raise_error(Fluent::ConfigError) }
42
42
  end
43
+
44
+ context 'invalid comparison' do
45
+ let(:config) do
46
+ CONFIG + %[
47
+ comparison foo
48
+ ]
49
+ end
50
+ it { expect { driver }.to raise_error(Fluent::ConfigError) }
51
+ end
43
52
  end
44
53
 
45
54
  describe 'good configuration' do
@@ -52,6 +61,7 @@ describe Fluent::GrepCounterOutput do
52
61
  its(:regexp) { should be_nil }
53
62
  its(:exclude) { should be_nil }
54
63
  its(:threshold) { should == 1 }
64
+ its(:comparison) { should == '>=' }
55
65
  its(:output_tag) { should be_nil }
56
66
  its(:add_tag_prefix) { should == 'count' }
57
67
  end
@@ -121,7 +131,7 @@ describe Fluent::GrepCounterOutput do
121
131
  it { emit }
122
132
  end
123
133
 
124
- context 'threshold (less than or equal to)' do
134
+ context 'threshold (hit)' do
125
135
  let(:config) do
126
136
  CONFIG + %[
127
137
  regexp WARN
@@ -139,7 +149,7 @@ describe Fluent::GrepCounterOutput do
139
149
  it { emit }
140
150
  end
141
151
 
142
- context 'threshold (greater)' do
152
+ context 'threshold (miss)' do
143
153
  let(:config) do
144
154
  CONFIG + %[
145
155
  regexp WARN
@@ -248,6 +258,42 @@ describe Fluent::GrepCounterOutput do
248
258
  end
249
259
  it { expect { emit }.not_to raise_error(ArgumentError) }
250
260
  end
261
+
262
+ describe "comparison <=" do
263
+ context 'threshold (hit)' do
264
+ let(:config) do
265
+ CONFIG + %[
266
+ regexp WARN
267
+ threshold 3
268
+ comparison <=
269
+ ]
270
+ end
271
+ before do
272
+ Fluent::Engine.stub(:now).and_return(time)
273
+ Fluent::Engine.should_receive(:emit).with("count.#{tag}", time, {"count"=>3,
274
+ "message"=>["2013/01/13T07:02:13.232645 WARN POST /auth","2013/01/13T07:02:21.542145 WARN GET /favicon.ico","2013/01/13T07:02:43.632145 WARN POST /login"],
275
+ "input_tag" => tag,
276
+ "input_tag_last" => tag.split('.').last,
277
+ })
278
+ end
279
+ it { emit }
280
+ end
281
+
282
+ context 'threshold (miss)' do
283
+ let(:config) do
284
+ CONFIG + %[
285
+ regexp WARN
286
+ threshold 2
287
+ comparison <=
288
+ ]
289
+ end
290
+ before do
291
+ Fluent::Engine.stub(:now).and_return(time)
292
+ Fluent::Engine.should_not_receive(:emit)
293
+ end
294
+ it { emit }
295
+ end
296
+ end
251
297
  end
252
298
  end
253
299
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-grepcounter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
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-16 00:00:00.000000000 Z
11
+ date: 2013-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -120,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
120
  version: '0'
121
121
  requirements: []
122
122
  rubyforge_project: fluent-plugin-grepcounter
123
- rubygems_version: 2.0.0
123
+ rubygems_version: 2.0.2
124
124
  signing_key:
125
125
  specification_version: 4
126
126
  summary: Count the number of matched messages