fluent-plugin-measure_time 0.1.2 → 0.2.0
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 +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +7 -2
- data/CHANGELOG.md +6 -0
- data/Gemfile +3 -0
- data/Gemfile.fluentd.v10 +6 -0
- data/README.md +71 -2
- data/example/v0.10.conf +29 -0
- data/example/v0.12.conf +31 -0
- data/fluent-plugin-measure_time.gemspec +1 -1
- data/lib/fluent/plugin/in_measure_time.rb +5 -124
- data/lib/fluent/plugin/measure_timable.rb +129 -0
- data/lib/fluent/plugin/out_measure_time.rb +19 -0
- data/spec/in_measure_time_spec.rb +10 -7
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a8d172be4d254d2c2d37283bb71b50ec5f6a804
|
4
|
+
data.tar.gz: 40825b213be411cae4ea76b21665cf28876f07f9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8b0acf5b99ca783344045e15f1b3bfbaca61321b3221b5196021b27c8cf3fc69043bcedcec6ad2d1234b9492c8c0f1ed7d456f896ee2bef9e941f85be0a92961
|
7
|
+
data.tar.gz: 9154958570ea846abcc7a8e116139cdfe6e6f6b484d78ead00677d467a270be02d4ddf7fffb6fbd167d236a637f2dcf43862f384a9bef242810e62db98927d07
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/Gemfile.fluentd.v10
ADDED
data/README.md
CHANGED
@@ -31,10 +31,12 @@ Use RubyGems:
|
|
31
31
|
As an example, let's profile how long the [emit](https://github.com/sonots/fluent-plugin-grep/blob/master/lib/fluent/plugin/out_grep.rb#L56) method of [fluent-plugin-grep](https://github.com/sonots/fluent-plugin-grep) is taking.
|
32
32
|
Configure fluentd.conf as below:
|
33
33
|
|
34
|
+
For Fluentd v0.10:
|
35
|
+
|
34
36
|
```apache
|
35
37
|
<source>
|
36
38
|
type measure_time
|
37
|
-
# This makes available the `
|
39
|
+
# This makes available the `measure_time` directive for all plugins
|
38
40
|
</source>
|
39
41
|
|
40
42
|
<source>
|
@@ -59,7 +61,43 @@ Configure fluentd.conf as below:
|
|
59
61
|
tag measure_time
|
60
62
|
hook emit
|
61
63
|
</measure_time>
|
64
|
+
</match>
|
65
|
+
```
|
66
|
+
|
67
|
+
For Fluentd v0.12:
|
68
|
+
|
69
|
+
```apache
|
70
|
+
<label @measure_time>
|
71
|
+
<match>
|
72
|
+
@type measure_time
|
73
|
+
# This makes available the `measure_time` directive for all plugins
|
74
|
+
</match>
|
75
|
+
</label>
|
76
|
+
|
77
|
+
<source>
|
78
|
+
@type dummy
|
79
|
+
tag raw.dummy
|
80
|
+
dummy {"message":"foo"}
|
62
81
|
</source>
|
82
|
+
|
83
|
+
# measure_time plugin output comes here
|
84
|
+
<match measure_time>
|
85
|
+
@type stdout
|
86
|
+
</match>
|
87
|
+
|
88
|
+
# Whatever you want to do
|
89
|
+
<match greped.**>
|
90
|
+
@type stdout
|
91
|
+
</match>
|
92
|
+
|
93
|
+
<match **>
|
94
|
+
@type grep
|
95
|
+
add_tag_prefix greped
|
96
|
+
<measure_time>
|
97
|
+
tag measure_time
|
98
|
+
hook emit
|
99
|
+
</measure_time>
|
100
|
+
</match>
|
63
101
|
```
|
64
102
|
|
65
103
|
The output of fluent-plugin-measure_time will be as below:
|
@@ -114,10 +152,12 @@ This profiling is very useful to investigate when you have a suspicion that thro
|
|
114
152
|
|
115
153
|
The configuration will be as follows:
|
116
154
|
|
155
|
+
For Fluentd v0.10:
|
156
|
+
|
117
157
|
```apache
|
118
158
|
<source>
|
119
159
|
type measure_time
|
120
|
-
# This makes available the `
|
160
|
+
# This makes available the `measure_time` directive for all plugins
|
121
161
|
</source>
|
122
162
|
|
123
163
|
<source>
|
@@ -139,6 +179,35 @@ The configuration will be as follows:
|
|
139
179
|
</match>
|
140
180
|
```
|
141
181
|
|
182
|
+
For Fluentd v0.12:
|
183
|
+
|
184
|
+
```apache
|
185
|
+
<label @measure_time>
|
186
|
+
<match>
|
187
|
+
@type measure_time
|
188
|
+
# This makes available the `measure_time` directive for all plugins
|
189
|
+
</match>
|
190
|
+
</match>
|
191
|
+
|
192
|
+
<source>
|
193
|
+
@type forward
|
194
|
+
port 24224
|
195
|
+
<measure_time>
|
196
|
+
tag measure_time
|
197
|
+
hook on_message
|
198
|
+
</measure_time>
|
199
|
+
</source>
|
200
|
+
|
201
|
+
<match measure_time>
|
202
|
+
@type stdout
|
203
|
+
</match>
|
204
|
+
|
205
|
+
# whatever you want
|
206
|
+
<match **>
|
207
|
+
@type stdout
|
208
|
+
</match>
|
209
|
+
```
|
210
|
+
|
142
211
|
Output becomes as below:
|
143
212
|
|
144
213
|
```
|
data/example/v0.10.conf
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
<source>
|
2
|
+
type measure_time
|
3
|
+
# This makes available the `measure_time` directive for all plugins
|
4
|
+
</source>
|
5
|
+
|
6
|
+
<source>
|
7
|
+
type dummy
|
8
|
+
tag raw.dummy
|
9
|
+
dummy {"message":"test"}
|
10
|
+
</source>
|
11
|
+
|
12
|
+
# measure_time plugin output comes here
|
13
|
+
<match measure_time>
|
14
|
+
type stdout
|
15
|
+
</match>
|
16
|
+
|
17
|
+
# Whatever you want to do
|
18
|
+
<match greped.**>
|
19
|
+
type stdout
|
20
|
+
</match>
|
21
|
+
|
22
|
+
<match **>
|
23
|
+
type grep
|
24
|
+
add_tag_prefix greped
|
25
|
+
<measure_time>
|
26
|
+
tag measure_time
|
27
|
+
hook emit
|
28
|
+
</measure_time>
|
29
|
+
</match>
|
data/example/v0.12.conf
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
<label @measure_time>
|
2
|
+
<match>
|
3
|
+
@type measure_time
|
4
|
+
# This makes available the `measure_time` directive for all plugins
|
5
|
+
</match>
|
6
|
+
</label>
|
7
|
+
|
8
|
+
<source>
|
9
|
+
@type dummy
|
10
|
+
tag raw.dummy
|
11
|
+
dummy {"message":"foo"}
|
12
|
+
</source>
|
13
|
+
|
14
|
+
# measure_time plugin output comes here
|
15
|
+
<match measure_time>
|
16
|
+
@type stdout
|
17
|
+
</match>
|
18
|
+
|
19
|
+
# Whatever you want to do
|
20
|
+
<match greped.**>
|
21
|
+
@type stdout
|
22
|
+
</match>
|
23
|
+
|
24
|
+
<match **>
|
25
|
+
@type grep
|
26
|
+
add_tag_prefix greped
|
27
|
+
<measure_time>
|
28
|
+
tag measure_time
|
29
|
+
hook emit
|
30
|
+
</measure_time>
|
31
|
+
</match>
|
@@ -3,7 +3,7 @@ $:.push File.expand_path('../lib', __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
5
|
gem.name = "fluent-plugin-measure_time"
|
6
|
-
gem.version = "0.
|
6
|
+
gem.version = "0.2.0"
|
7
7
|
gem.authors = ["Naotoshi Seo"]
|
8
8
|
gem.email = "sonots@gmail.com"
|
9
9
|
gem.homepage = "https://github.com/sonots/fluent-plugin-measure_time"
|
@@ -1,135 +1,16 @@
|
|
1
|
-
require 'fluent/
|
1
|
+
require 'fluent/plugin/measure_timable'
|
2
2
|
|
3
3
|
module Fluent
|
4
4
|
class MeasureTimeInput < Input
|
5
5
|
Plugin.register_input('measure_time', self)
|
6
6
|
|
7
|
-
|
8
|
-
::Fluent::
|
9
|
-
::Fluent::Output.__send__(:include, MeasureTimable)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
module MeasureTimable
|
14
|
-
def self.included(klass)
|
15
|
-
unless klass.method_defined?(:configure_without_measure_time)
|
16
|
-
klass.__send__(:alias_method, :configure_without_measure_time, :configure)
|
17
|
-
klass.__send__(:alias_method, :configure, :configure_with_measure_time)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
attr_reader :measure_time
|
22
|
-
|
23
|
-
def configure_with_measure_time(conf)
|
24
|
-
configure_without_measure_time(conf)
|
25
|
-
if element = conf.elements.select { |element| element.name == 'measure_time' }.first
|
26
|
-
@measure_time = MeasureTime.new(self, log)
|
27
|
-
@measure_time.configure(element)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
class MeasureTime
|
33
|
-
attr_reader :plugin, :log, :times, :mutex, :thread, :tag, :interval, :hook
|
34
|
-
def initialize(plugin, log)
|
35
|
-
@plugin = plugin
|
36
|
-
@klass = @plugin.class
|
37
|
-
@log = log
|
38
|
-
@times = []
|
39
|
-
@mutex = Mutex.new
|
7
|
+
unless method_defined?(:router)
|
8
|
+
define_method(:router) { ::Fluent::Engine }
|
40
9
|
end
|
41
10
|
|
42
11
|
def configure(conf)
|
43
|
-
|
44
|
-
|
45
|
-
raise Fluent::ConfigError, '`hook` option must be specified in <measure_time></measure_time> directive'
|
46
|
-
end
|
47
|
-
@hook_msg = {:class => @klass.to_s, :hook => @hook.to_s, :object_id => @plugin.object_id.to_s}
|
48
|
-
@interval = conf['interval'].to_i if conf['interval']
|
49
|
-
@add_or_emit_proc =
|
50
|
-
if @interval
|
51
|
-
# add to calculate statistics in each interval
|
52
|
-
Proc.new {|elapsed|
|
53
|
-
@mutex.synchronize { @times << elapsed }
|
54
|
-
}
|
55
|
-
else
|
56
|
-
# emit information immediately
|
57
|
-
Proc.new {|elapsed|
|
58
|
-
msg = {:time => elapsed}.merge(@hook_msg)
|
59
|
-
::Fluent::Engine.emit(@tag, ::Fluent::Engine.now, msg)
|
60
|
-
}
|
61
|
-
end
|
62
|
-
apply_hook
|
63
|
-
end
|
64
|
-
|
65
|
-
def apply_hook
|
66
|
-
@plugin.instance_eval <<EOF
|
67
|
-
def #{@hook}(*args)
|
68
|
-
measure_time.measure_time do
|
69
|
-
super
|
70
|
-
end
|
71
|
-
end
|
72
|
-
def start
|
73
|
-
super
|
74
|
-
measure_time.start
|
75
|
-
end
|
76
|
-
def stop
|
77
|
-
super
|
78
|
-
measure_time.stop
|
79
|
-
end
|
80
|
-
EOF
|
81
|
-
end
|
82
|
-
|
83
|
-
def measure_time
|
84
|
-
started = Time.now
|
85
|
-
output = yield
|
86
|
-
elapsed = (Time.now - started).to_f
|
87
|
-
log.debug "elapsed time at #{@klass}##{@hook} is #{elapsed} sec"
|
88
|
-
@add_or_emit_proc.call(elapsed)
|
89
|
-
output
|
90
|
-
end
|
91
|
-
|
92
|
-
def start
|
93
|
-
return unless @interval
|
94
|
-
@thread = Thread.new(&method(:run))
|
95
|
-
end
|
96
|
-
|
97
|
-
def stop
|
98
|
-
return unless @interval
|
99
|
-
@thread.terminate
|
100
|
-
@thread.join
|
101
|
-
end
|
102
|
-
|
103
|
-
def run
|
104
|
-
@last_checked ||= Engine.now
|
105
|
-
while (sleep 0.5)
|
106
|
-
begin
|
107
|
-
now = Engine.now
|
108
|
-
if now - @last_checked >= @interval
|
109
|
-
flush(now)
|
110
|
-
@last_checked = now
|
111
|
-
end
|
112
|
-
rescue => e
|
113
|
-
log.warn "in_measure_time: hook #{@klass}##{@hook} #{e.class} #{e.message} #{e.backtrace.first}"
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
def flush(now)
|
119
|
-
times = []
|
120
|
-
@mutex.synchronize do
|
121
|
-
times = @times.dup
|
122
|
-
@times.clear
|
123
|
-
end
|
124
|
-
triple = nil
|
125
|
-
unless times.empty?
|
126
|
-
num = times.size
|
127
|
-
max = num == 0 ? 0 : times.max
|
128
|
-
avg = num == 0 ? 0 : times.map(&:to_f).inject(:+) / num.to_f
|
129
|
-
triple = [@tag, now, {:max => max, :avg => avg, :num => num}.merge(@hook_msg)]
|
130
|
-
Engine.emit(*triple)
|
131
|
-
end
|
132
|
-
triple
|
12
|
+
::Fluent::Input.__send__(:include, MeasureTimable)
|
13
|
+
::Fluent::Output.__send__(:include, MeasureTimable)
|
133
14
|
end
|
134
15
|
end
|
135
16
|
end
|
@@ -0,0 +1,129 @@
|
|
1
|
+
module Fluent
|
2
|
+
module MeasureTimable
|
3
|
+
def self.included(klass)
|
4
|
+
unless klass.method_defined?(:configure_without_measure_time)
|
5
|
+
klass.__send__(:alias_method, :configure_without_measure_time, :configure)
|
6
|
+
klass.__send__(:alias_method, :configure, :configure_with_measure_time)
|
7
|
+
end
|
8
|
+
|
9
|
+
unless klass.method_defined?(:router)
|
10
|
+
define_method(:router) { ::Fluent::Engine }
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
attr_reader :measure_time
|
15
|
+
|
16
|
+
def configure_with_measure_time(conf)
|
17
|
+
configure_without_measure_time(conf)
|
18
|
+
if element = conf.elements.select { |element| element.name == 'measure_time' }.first
|
19
|
+
@measure_time = MeasureTime.new(self, log, router)
|
20
|
+
@measure_time.configure(element)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
class MeasureTime
|
26
|
+
attr_reader :plugin, :log, :router, :times, :mutex, :thread, :tag, :interval, :hook
|
27
|
+
def initialize(plugin, log, router)
|
28
|
+
@plugin = plugin
|
29
|
+
@klass = @plugin.class
|
30
|
+
@log = log
|
31
|
+
@router = router
|
32
|
+
@times = []
|
33
|
+
@mutex = Mutex.new
|
34
|
+
end
|
35
|
+
|
36
|
+
def configure(conf)
|
37
|
+
@tag = conf['tag'] || 'measure_time'
|
38
|
+
unless @hook = conf['hook']
|
39
|
+
raise Fluent::ConfigError, '`hook` option must be specified in <measure_time></measure_time> directive'
|
40
|
+
end
|
41
|
+
@hook_msg = {:class => @klass.to_s, :hook => @hook.to_s, :object_id => @plugin.object_id.to_s}
|
42
|
+
@interval = conf['interval'].to_i if conf['interval']
|
43
|
+
@add_or_emit_proc =
|
44
|
+
if @interval
|
45
|
+
# add to calculate statistics in each interval
|
46
|
+
Proc.new {|elapsed|
|
47
|
+
@mutex.synchronize { @times << elapsed }
|
48
|
+
}
|
49
|
+
else
|
50
|
+
# emit information immediately
|
51
|
+
Proc.new {|elapsed|
|
52
|
+
msg = {:time => elapsed}.merge(@hook_msg)
|
53
|
+
router.emit(@tag, ::Fluent::Engine.now, msg)
|
54
|
+
}
|
55
|
+
end
|
56
|
+
apply_hook
|
57
|
+
end
|
58
|
+
|
59
|
+
def apply_hook
|
60
|
+
@plugin.instance_eval <<EOF
|
61
|
+
def #{@hook}(*args)
|
62
|
+
measure_time.measure_time do
|
63
|
+
super
|
64
|
+
end
|
65
|
+
end
|
66
|
+
def start
|
67
|
+
super
|
68
|
+
measure_time.start
|
69
|
+
end
|
70
|
+
def stop
|
71
|
+
super
|
72
|
+
measure_time.stop
|
73
|
+
end
|
74
|
+
EOF
|
75
|
+
end
|
76
|
+
|
77
|
+
def measure_time
|
78
|
+
started = Time.now
|
79
|
+
output = yield
|
80
|
+
elapsed = (Time.now - started).to_f
|
81
|
+
log.debug "elapsed time at #{@klass}##{@hook} is #{elapsed} sec"
|
82
|
+
@add_or_emit_proc.call(elapsed)
|
83
|
+
output
|
84
|
+
end
|
85
|
+
|
86
|
+
def start
|
87
|
+
return unless @interval
|
88
|
+
@thread = Thread.new(&method(:run))
|
89
|
+
end
|
90
|
+
|
91
|
+
def stop
|
92
|
+
return unless @interval
|
93
|
+
@thread.terminate
|
94
|
+
@thread.join
|
95
|
+
end
|
96
|
+
|
97
|
+
def run
|
98
|
+
@last_checked ||= ::Fluent::Engine.now
|
99
|
+
while (sleep 0.5)
|
100
|
+
begin
|
101
|
+
now = ::Fluent::Engine.now
|
102
|
+
if now - @last_checked >= @interval
|
103
|
+
flush(now)
|
104
|
+
@last_checked = now
|
105
|
+
end
|
106
|
+
rescue => e
|
107
|
+
log.warn "in_measure_time: hook #{@klass}##{@hook} #{e.class} #{e.message} #{e.backtrace.first}"
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
def flush(now)
|
113
|
+
times = []
|
114
|
+
@mutex.synchronize do
|
115
|
+
times = @times.dup
|
116
|
+
@times.clear
|
117
|
+
end
|
118
|
+
triple = nil
|
119
|
+
unless times.empty?
|
120
|
+
num = times.size
|
121
|
+
max = num == 0 ? 0 : times.max
|
122
|
+
avg = num == 0 ? 0 : times.map(&:to_f).inject(:+) / num.to_f
|
123
|
+
triple = [@tag, now, {:max => max, :avg => avg, :num => num}.merge(@hook_msg)]
|
124
|
+
router.emit(*triple)
|
125
|
+
end
|
126
|
+
triple
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'fluent/plugin/measure_timable'
|
2
|
+
|
3
|
+
module Fluent
|
4
|
+
class MeasureTimeOutput < Output
|
5
|
+
Plugin.register_output('measure_time', self)
|
6
|
+
|
7
|
+
unless method_defined?(:router)
|
8
|
+
define_method(:router) { ::Fluent::Engine }
|
9
|
+
end
|
10
|
+
|
11
|
+
def configure(conf)
|
12
|
+
::Fluent::Input.__send__(:include, MeasureTimable)
|
13
|
+
::Fluent::Output.__send__(:include, MeasureTimable)
|
14
|
+
end
|
15
|
+
|
16
|
+
def emit(tag, time, msg)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -7,7 +7,10 @@ describe Fluent::MeasureTimeInput do
|
|
7
7
|
before { Fluent::Test.setup }
|
8
8
|
|
9
9
|
def create_driver(conf=%[])
|
10
|
-
Fluent::Test::InputTestDriver.new(Fluent::MeasureTimeInput).configure(conf)
|
10
|
+
d = Fluent::Test::InputTestDriver.new(Fluent::MeasureTimeInput).configure(conf)
|
11
|
+
unless d.respond_to?(:router)
|
12
|
+
d.singleton_class.send(:define_method, :router) { ::Fluent::Engine }
|
13
|
+
end
|
11
14
|
end
|
12
15
|
|
13
16
|
describe 'test configure' do
|
@@ -78,8 +81,8 @@ describe "extends Fluent::ForwardInput" do
|
|
78
81
|
data = ['tag1', 0, {'a'=>1}].to_msgpack
|
79
82
|
d.__send__(:on_message, data, data.bytesize, "hi, yay!")
|
80
83
|
triple = d.measure_time.flush(0)
|
81
|
-
triple[0].
|
82
|
-
triple[2].keys.
|
84
|
+
expect(triple[0]).to eql('measure_time')
|
85
|
+
expect(triple[2].keys).to eql([:max, :avg, :num, :class, :hook, :object_id])
|
83
86
|
end
|
84
87
|
end
|
85
88
|
end
|
@@ -119,9 +122,9 @@ describe "extends Fluent::StdoutOutput" do
|
|
119
122
|
]}
|
120
123
|
it 'should flush' do
|
121
124
|
time = Fluent::Engine.now
|
122
|
-
Fluent::Engine.
|
123
|
-
Fluent::Engine.should_receive(:emit) # .with("measure_time", time, {})
|
125
|
+
allow(Fluent::Engine).to receive(:now) { time }
|
124
126
|
d = driver.instance
|
127
|
+
expect(d.router).to receive(:emit) # .with("measure_time", time, {})
|
125
128
|
d.emit('tag1', Fluent::OneEventStream.new(0, {'a'=>1}), Fluent::NullOutputChain.instance)
|
126
129
|
end
|
127
130
|
end
|
@@ -138,8 +141,8 @@ describe "extends Fluent::StdoutOutput" do
|
|
138
141
|
d = driver.instance
|
139
142
|
d.emit('tag1', Fluent::OneEventStream.new(0, {'a'=>1}), Fluent::NullOutputChain.instance)
|
140
143
|
triple = d.measure_time.flush(0)
|
141
|
-
triple[0].
|
142
|
-
triple[2].keys.
|
144
|
+
expect(triple[0]).to eql('measure_time')
|
145
|
+
expect(triple[2].keys).to eql([:max, :avg, :num, :class, :hook, :object_id])
|
143
146
|
end
|
144
147
|
end
|
145
148
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-measure_time
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Naotoshi Seo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-04-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|
@@ -105,6 +105,7 @@ files:
|
|
105
105
|
- ".travis.yml"
|
106
106
|
- CHANGELOG.md
|
107
107
|
- Gemfile
|
108
|
+
- Gemfile.fluentd.v10
|
108
109
|
- LICENSE
|
109
110
|
- README.md
|
110
111
|
- Rakefile
|
@@ -116,8 +117,12 @@ files:
|
|
116
117
|
- benchmark/in_forward.conf
|
117
118
|
- benchmark/patched_in_forward.conf
|
118
119
|
- benchmark/plugin/in_forward.rb
|
120
|
+
- example/v0.10.conf
|
121
|
+
- example/v0.12.conf
|
119
122
|
- fluent-plugin-measure_time.gemspec
|
120
123
|
- lib/fluent/plugin/in_measure_time.rb
|
124
|
+
- lib/fluent/plugin/measure_timable.rb
|
125
|
+
- lib/fluent/plugin/out_measure_time.rb
|
121
126
|
- spec/in_measure_time_spec.rb
|
122
127
|
- spec/spec_helper.rb
|
123
128
|
homepage: https://github.com/sonots/fluent-plugin-measure_time
|
@@ -140,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
140
145
|
version: '0'
|
141
146
|
requirements: []
|
142
147
|
rubyforge_project:
|
143
|
-
rubygems_version: 2.
|
148
|
+
rubygems_version: 2.5.1
|
144
149
|
signing_key:
|
145
150
|
specification_version: 4
|
146
151
|
summary: Fluentd plugin to measure elapsed time to process messages
|