fluentd 0.10.15 → 0.10.16

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of fluentd might be problematic. Click here for more details.

data/ChangeLog CHANGED
@@ -1,4 +1,11 @@
1
1
 
2
+ Release 0.10.16 - 2012/03/26
3
+
4
+ * Added in_gc plugin
5
+ * Added in_object_space plugin
6
+ * Changed dependency yajl-ruby from '~> 1.0.0' to '~> 1.0'
7
+
8
+
2
9
  Release 0.10.15 - 2012/03/09
3
10
 
4
11
  * Added experimental in_status plugin
data/Rakefile CHANGED
@@ -14,7 +14,7 @@ begin
14
14
  gemspec.require_paths = ["lib"]
15
15
  gemspec.add_dependency "msgpack", "~> 0.4.4"
16
16
  gemspec.add_dependency "json", ">= 1.4.3"
17
- gemspec.add_dependency "yajl-ruby", "~> 1.0.0"
17
+ gemspec.add_dependency "yajl-ruby", "~> 1.0"
18
18
  gemspec.add_dependency "cool.io", "~> 1.1.0"
19
19
  gemspec.add_dependency "http_parser.rb", "~> 0.5.1"
20
20
  gemspec.add_development_dependency "rake", ">= 0.9.2"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.10.15
1
+ 0.10.16
@@ -109,7 +109,7 @@ Gem::Specification.new do |s|
109
109
  s.add_development_dependency(%q<jeweler>, [">= 1.0.0"])
110
110
  s.add_runtime_dependency(%q<msgpack>, ["~> 0.4.4"])
111
111
  s.add_runtime_dependency(%q<json>, [">= 1.4.3"])
112
- s.add_runtime_dependency(%q<yajl-ruby>, ["~> 1.0.0"])
112
+ s.add_runtime_dependency(%q<yajl-ruby>, ["~> 1.0"])
113
113
  s.add_runtime_dependency(%q<cool.io>, ["~> 1.1.0"])
114
114
  s.add_runtime_dependency(%q<http_parser.rb>, ["~> 0.5.1"])
115
115
  s.add_development_dependency(%q<rake>, [">= 0.9.2"])
@@ -128,7 +128,7 @@ Gem::Specification.new do |s|
128
128
  s.add_dependency(%q<jeweler>, [">= 1.0.0"])
129
129
  s.add_dependency(%q<msgpack>, ["~> 0.4.4"])
130
130
  s.add_dependency(%q<json>, [">= 1.4.3"])
131
- s.add_dependency(%q<yajl-ruby>, ["~> 1.0.0"])
131
+ s.add_dependency(%q<yajl-ruby>, ["~> 1.0"])
132
132
  s.add_dependency(%q<cool.io>, ["~> 1.1.0"])
133
133
  s.add_dependency(%q<http_parser.rb>, ["~> 0.5.1"])
134
134
  s.add_dependency(%q<rake>, [">= 0.9.2"])
@@ -148,7 +148,7 @@ Gem::Specification.new do |s|
148
148
  s.add_dependency(%q<jeweler>, [">= 1.0.0"])
149
149
  s.add_dependency(%q<msgpack>, ["~> 0.4.4"])
150
150
  s.add_dependency(%q<json>, [">= 1.4.3"])
151
- s.add_dependency(%q<yajl-ruby>, ["~> 1.0.0"])
151
+ s.add_dependency(%q<yajl-ruby>, ["~> 1.0"])
152
152
  s.add_dependency(%q<cool.io>, ["~> 1.1.0"])
153
153
  s.add_dependency(%q<http_parser.rb>, ["~> 0.5.1"])
154
154
  s.add_dependency(%q<rake>, [">= 0.9.2"])
@@ -0,0 +1,78 @@
1
+ #
2
+ # Fluent
3
+ #
4
+ # Copyright (C) 2011 FURUHASHI Sadayuki
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module Fluent
19
+
20
+
21
+ class GCStatInput < Input
22
+ Plugin.register_input('gc_stat', self)
23
+
24
+ def initialize
25
+ super
26
+ end
27
+
28
+ config_param :emit_interval, :time, :default => 60
29
+ config_param :tag, :string
30
+
31
+ class TimerWatcher < Coolio::TimerWatcher
32
+ def initialize(interval, repeat, &callback)
33
+ @callback = callback
34
+ super(interval, repeat)
35
+ end
36
+
37
+ def on_timer
38
+ @callback.call
39
+ rescue
40
+ # TODO log?
41
+ $log.error $!.to_s
42
+ $log.error_backtrace
43
+ end
44
+ end
45
+
46
+ def configure(conf)
47
+ super
48
+ end
49
+
50
+ def start
51
+ @loop = Coolio::Loop.new
52
+ @timer = TimerWatcher.new(@emit_interval, true, &method(:on_timer))
53
+ @loop.attach(@timer)
54
+ @thread = Thread.new(&method(:run))
55
+ end
56
+
57
+ def shutdown
58
+ @loop.watchers.each {|w| w.detach }
59
+ @loop.stop
60
+ @thread.join
61
+ end
62
+
63
+ def run
64
+ @loop.run
65
+ rescue
66
+ $log.error "unexpected error", :error=>$!.to_s
67
+ $log.error_backtrace
68
+ end
69
+
70
+ def on_timer
71
+ now = Engine.now
72
+ record = GC.stat
73
+ Engine.emit(@tag, now, record)
74
+ end
75
+ end
76
+
77
+
78
+ end
@@ -0,0 +1,118 @@
1
+ #
2
+ # Fluent
3
+ #
4
+ # Copyright (C) 2011 FURUHASHI Sadayuki
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module Fluent
19
+
20
+
21
+ class ObjectSpaceInput < Input
22
+ Plugin.register_input('object_space', self)
23
+
24
+ def initialize
25
+ super
26
+ end
27
+
28
+ config_param :emit_interval, :time, :default => 60
29
+ config_param :tag, :string
30
+ config_param :top, :integer, :default => 15
31
+
32
+ class TimerWatcher < Coolio::TimerWatcher
33
+ def initialize(interval, repeat, &callback)
34
+ @callback = callback
35
+ super(interval, repeat)
36
+ end
37
+
38
+ def on_timer
39
+ @callback.call
40
+ rescue
41
+ # TODO log?
42
+ $log.error $!.to_s
43
+ $log.error_backtrace
44
+ end
45
+ end
46
+
47
+ def configure(conf)
48
+ super
49
+ end
50
+
51
+ def start
52
+ @loop = Coolio::Loop.new
53
+ @timer = TimerWatcher.new(@emit_interval, true, &method(:on_timer))
54
+ @loop.attach(@timer)
55
+ @thread = Thread.new(&method(:run))
56
+ end
57
+
58
+ def shutdown
59
+ @loop.watchers.each {|w| w.detach }
60
+ @loop.stop
61
+ @thread.join
62
+ end
63
+
64
+ def run
65
+ @loop.run
66
+ rescue
67
+ $log.error "unexpected error", :error=>$!.to_s
68
+ $log.error_backtrace
69
+ end
70
+
71
+ class Counter
72
+ def initialize(klass, init_count)
73
+ @klass = klass
74
+ @count = init_count
75
+ end
76
+
77
+ def incr!
78
+ @count += 1
79
+ end
80
+
81
+ def name
82
+ @klass.name
83
+ end
84
+
85
+ attr_reader :count
86
+ end
87
+
88
+ def on_timer
89
+ now = Engine.now
90
+
91
+ array = []
92
+ map = {}
93
+
94
+ ObjectSpace.each_object {|obj|
95
+ klass = obj.class
96
+ if c = map[klass]
97
+ c.incr!
98
+ else
99
+ c = Counter.new(klass, 1)
100
+ array << c
101
+ map[klass] = c
102
+ end
103
+ }
104
+
105
+ array.sort_by! {|c| -c.count }
106
+
107
+ record = {}
108
+ array.each_with_index {|c,i|
109
+ break if i >= @top
110
+ record[c.name] = c.count
111
+ }
112
+
113
+ Engine.emit(@tag, now, record)
114
+ end
115
+ end
116
+
117
+
118
+ end
@@ -1,5 +1,5 @@
1
1
  module Fluent
2
2
 
3
- VERSION = '0.10.15'
3
+ VERSION = '0.10.16'
4
4
 
5
5
  end
@@ -0,0 +1,41 @@
1
+ require 'fluent/test'
2
+
3
+ class ObjectSpaceInputTest < Test::Unit::TestCase
4
+ def setup
5
+ Fluent::Test.setup
6
+ end
7
+
8
+ CONFIG = %[
9
+ emit_interval 1
10
+ tag t1
11
+ top 2
12
+ ]
13
+
14
+ def create_driver(conf=CONFIG)
15
+ Fluent::Test::InputTestDriver.new(Fluent::ObjectSpaceInput).configure(conf)
16
+ end
17
+
18
+ def test_configure
19
+ d = create_driver
20
+ assert_equal 1, d.instance.emit_interval
21
+ assert_equal "t1", d.instance.tag
22
+ assert_equal 2, d.instance.top
23
+ end
24
+
25
+ def test_emit
26
+ d = create_driver
27
+
28
+ time = Time.parse("2011-01-02 13:14:15").to_i
29
+
30
+ d.run do
31
+ sleep 2
32
+ end
33
+
34
+ emits = d.emits
35
+ assert_equal true, emits.length > 0
36
+
37
+ tag, time, record = emits[0]
38
+ assert_equal 2, record.size
39
+ end
40
+ end
41
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluentd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.15
4
+ version: 0.10.16
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-09 00:00:00.000000000Z
12
+ date: 2012-03-27 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: msgpack
16
- requirement: &70355087964700 !ruby/object:Gem::Requirement
16
+ requirement: &70356207478320 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.4.4
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70355087964700
24
+ version_requirements: *70356207478320
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: json
27
- requirement: &70355087961840 !ruby/object:Gem::Requirement
27
+ requirement: &70356207476840 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,21 +32,21 @@ dependencies:
32
32
  version: 1.4.3
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70355087961840
35
+ version_requirements: *70356207476840
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: yajl-ruby
38
- requirement: &70355087958040 !ruby/object:Gem::Requirement
38
+ requirement: &70356207475080 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
42
42
  - !ruby/object:Gem::Version
43
- version: 1.0.0
43
+ version: '1.0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70355087958040
46
+ version_requirements: *70356207475080
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: cool.io
49
- requirement: &70355087953920 !ruby/object:Gem::Requirement
49
+ requirement: &70356207473980 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.1.0
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70355087953920
57
+ version_requirements: *70356207473980
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: http_parser.rb
60
- requirement: &70355087948700 !ruby/object:Gem::Requirement
60
+ requirement: &70356207466200 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 0.5.1
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70355087948700
68
+ version_requirements: *70356207466200
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
- requirement: &70355087947960 !ruby/object:Gem::Requirement
71
+ requirement: &70356207981360 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 0.9.2
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70355087947960
79
+ version_requirements: *70356207981360
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rr
82
- requirement: &70355087946840 !ruby/object:Gem::Requirement
82
+ requirement: &70356211841320 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 1.0.0
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70355087946840
90
+ version_requirements: *70356211841320
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: timecop
93
- requirement: &70355087946240 !ruby/object:Gem::Requirement
93
+ requirement: &70356212310240 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: 0.3.0
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70355087946240
101
+ version_requirements: *70356212310240
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: jeweler
104
- requirement: &70355087945380 !ruby/object:Gem::Requirement
104
+ requirement: &70356224203900 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,7 +109,7 @@ dependencies:
109
109
  version: 1.0.0
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *70355087945380
112
+ version_requirements: *70356224203900
113
113
  description:
114
114
  email: frsyuki@gmail.com
115
115
  executables:
@@ -151,7 +151,9 @@ files:
151
151
  - lib/fluent/plugin/buf_zfile.rb
152
152
  - lib/fluent/plugin/in_exec.rb
153
153
  - lib/fluent/plugin/in_forward.rb
154
+ - lib/fluent/plugin/in_gc_stat.rb
154
155
  - lib/fluent/plugin/in_http.rb
156
+ - lib/fluent/plugin/in_object_space.rb
155
157
  - lib/fluent/plugin/in_status.rb
156
158
  - lib/fluent/plugin/in_stream.rb
157
159
  - lib/fluent/plugin/in_syslog.rb
@@ -181,6 +183,7 @@ files:
181
183
  - test/plugin/in_exec.rb
182
184
  - test/plugin/in_forward.rb
183
185
  - test/plugin/in_http.rb
186
+ - test/plugin/in_object_space.rb
184
187
  - test/plugin/in_stream.rb
185
188
  - test/plugin/out_copy.rb
186
189
  - test/plugin/out_exec.rb
@@ -224,6 +227,7 @@ test_files:
224
227
  - test/plugin/in_exec.rb
225
228
  - test/plugin/in_forward.rb
226
229
  - test/plugin/in_http.rb
230
+ - test/plugin/in_object_space.rb
227
231
  - test/plugin/in_stream.rb
228
232
  - test/plugin/out_copy.rb
229
233
  - test/plugin/out_exec.rb