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 +7 -0
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/fluentd.gemspec +3 -3
- data/lib/fluent/plugin/in_gc_stat.rb +78 -0
- data/lib/fluent/plugin/in_object_space.rb +118 -0
- data/lib/fluent/version.rb +1 -1
- data/test/plugin/in_object_space.rb +41 -0
- metadata +25 -21
data/ChangeLog
CHANGED
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
|
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.
|
1
|
+
0.10.16
|
data/fluentd.gemspec
CHANGED
@@ -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
|
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
|
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
|
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
|
data/lib/fluent/version.rb
CHANGED
@@ -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.
|
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-
|
12
|
+
date: 2012-03-27 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: msgpack
|
16
|
-
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: *
|
24
|
+
version_requirements: *70356207478320
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: json
|
27
|
-
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: *
|
35
|
+
version_requirements: *70356207476840
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: yajl-ruby
|
38
|
-
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
|
43
|
+
version: '1.0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70356207475080
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: cool.io
|
49
|
-
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: *
|
57
|
+
version_requirements: *70356207473980
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: http_parser.rb
|
60
|
-
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: *
|
68
|
+
version_requirements: *70356207466200
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rake
|
71
|
-
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: *
|
79
|
+
version_requirements: *70356207981360
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rr
|
82
|
-
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: *
|
90
|
+
version_requirements: *70356211841320
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: timecop
|
93
|
-
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: *
|
101
|
+
version_requirements: *70356212310240
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: jeweler
|
104
|
-
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: *
|
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
|