fluent-plugin-dstat 0.3.3 → 1.0.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 +5 -5
- data/fluent-plugin-dstat.gemspec +6 -21
- data/lib/fluent/plugin/in_dstat.rb +20 -41
- data/test/helper.rb +1 -0
- data/test/plugin/test_in_dstat.rb +6 -8
- metadata +20 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: dbcaf16559713e0913d2160ae9b2b081848474984d42b5e3227582a6eb9c2b4a
|
4
|
+
data.tar.gz: d39be7e49a80312eefd977137c19cf72a9bca3edae92be5c424a4093c2202869
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac260e611e6a09257d8c4bc27ea4092fa17a124d4983da273f9fa897994fd34d38c31330e6cbe99181055262ae61463241177f67a10eecaf4dfeeb349c4107e0
|
7
|
+
data.tar.gz: 1edcf9ba3e298ef4dc442718bb6611abbe1ae8d1a0d19dc19c7be18c88bbd04a5365870b0db4509c4f61eca9953cd600b1c8aba25a210c6129cf4c431dcd21f8
|
data/fluent-plugin-dstat.gemspec
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "fluent-plugin-dstat"
|
6
|
-
s.version = "0.
|
6
|
+
s.version = "1.0.0"
|
7
7
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
9
9
|
s.require_paths = ["lib"]
|
@@ -31,24 +31,9 @@ Gem::Specification.new do |s|
|
|
31
31
|
s.rubygems_version = "2.4.5"
|
32
32
|
s.summary = "Dstat Input plugin for Fluent event collector"
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
s.add_runtime_dependency(%q<rdoc>, [">= 0"])
|
40
|
-
s.add_development_dependency(%q<test-unit>, [">= 3.0.0"])
|
41
|
-
s.add_development_dependency(%q<bundler>, ["~> 1.0"])
|
42
|
-
else
|
43
|
-
s.add_runtime_dependency(%q<fluentd>, [">= 0.10.7", "< 2"])
|
44
|
-
s.add_runtime_dependency(%q<rdoc>, [">= 0"])
|
45
|
-
s.add_dependency(%q<test-unit>, [">= 3.0.0"])
|
46
|
-
s.add_dependency(%q<bundler>, ["~> 1.0"])
|
47
|
-
end
|
48
|
-
else
|
49
|
-
s.add_runtime_dependency(%q<fluentd>, [">= 0.10.7", "< 2"])
|
50
|
-
s.add_runtime_dependency(%q<rdoc>, [">= 0"])
|
51
|
-
s.add_dependency(%q<test-unit>, [">= 3.0.0"])
|
52
|
-
s.add_dependency(%q<bundler>, ["~> 1.0"])
|
53
|
-
end
|
34
|
+
s.add_runtime_dependency(%q<fluentd>, [">= 0.14.0", "< 2"])
|
35
|
+
s.add_development_dependency(%q<rdoc>, [">= 0"])
|
36
|
+
s.add_development_dependency(%q<test-unit>, [">= 3.0.0"])
|
37
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0"])
|
38
|
+
s.add_development_dependency(%q<rake>, ["~> 12.0"])
|
54
39
|
end
|
@@ -1,9 +1,11 @@
|
|
1
|
-
require 'fluent/input'
|
1
|
+
require 'fluent/plugin/input'
|
2
2
|
|
3
|
-
module Fluent
|
3
|
+
module Fluent::Plugin
|
4
4
|
class DstatInput < Input
|
5
5
|
|
6
|
-
Plugin.register_input('dstat', self)
|
6
|
+
Fluent::Plugin.register_input('dstat', self)
|
7
|
+
|
8
|
+
helpers :timer, :event_loop
|
7
9
|
|
8
10
|
def initialize
|
9
11
|
super
|
@@ -24,6 +26,10 @@ module Fluent
|
|
24
26
|
end
|
25
27
|
end
|
26
28
|
|
29
|
+
unless method_defined?(:log)
|
30
|
+
define_method("log") { $log }
|
31
|
+
end
|
32
|
+
|
27
33
|
desc "the tag of event"
|
28
34
|
config_param :tag, :string
|
29
35
|
desc "dstat command path"
|
@@ -46,47 +52,35 @@ module Fluent
|
|
46
52
|
begin
|
47
53
|
`#{@dstat_path} --version`
|
48
54
|
rescue Errno::ENOENT
|
49
|
-
raise ConfigError, "'#{@dstat_path}' command not found. Install dstat before run fluentd"
|
55
|
+
raise Fluent::ConfigError, "'#{@dstat_path}' command not found. Install dstat before run fluentd"
|
50
56
|
end
|
51
57
|
end
|
52
58
|
|
53
59
|
def check_dstat
|
54
60
|
now = Time.now
|
55
61
|
if now - @last_time > @delay * 3
|
56
|
-
|
62
|
+
log.info "Process dstat(#{@pid}) is stopped. Last updated: #{@last_time}"
|
57
63
|
restart
|
58
64
|
end
|
59
65
|
end
|
60
66
|
|
61
67
|
def start
|
68
|
+
super
|
62
69
|
system("mkfifo #{@tmp_file}")
|
63
70
|
@io = IO.popen(@command, "r")
|
64
71
|
@pid = @io.pid
|
65
72
|
|
66
|
-
@loop = Coolio::Loop.new
|
67
73
|
@dw = DstatCSVWatcher.new(@tmp_file, &method(:receive_lines))
|
68
|
-
@dw
|
69
|
-
@tw =
|
70
|
-
@tw.attach(@loop)
|
71
|
-
@thread = Thread.new(&method(:run))
|
74
|
+
event_loop_attach(@dw)
|
75
|
+
@tw = timer_execute(:in_dstat_timer, 1, &method(:check_dstat))
|
72
76
|
end
|
73
77
|
|
74
78
|
def shutdown
|
75
79
|
Process.kill(:TERM, @pid)
|
76
80
|
@dw.detach
|
77
81
|
@tw.detach
|
78
|
-
@loop.stop
|
79
|
-
@thread.join
|
80
82
|
File.delete(@tmp_file)
|
81
|
-
|
82
|
-
|
83
|
-
def run
|
84
|
-
begin
|
85
|
-
@loop.run
|
86
|
-
rescue
|
87
|
-
$log.error "unexpected error", :error=>$!.to_s
|
88
|
-
$log.error_backtrace
|
89
|
-
end
|
83
|
+
super
|
90
84
|
end
|
91
85
|
|
92
86
|
def restart
|
@@ -94,8 +88,8 @@ module Fluent
|
|
94
88
|
begin
|
95
89
|
Process.kill(:TERM, @pid)
|
96
90
|
rescue Errno::ESRCH => e
|
97
|
-
|
98
|
-
|
91
|
+
log.error "unexpected death of a child process", :error=>e.to_s
|
92
|
+
log.error_backtrace
|
99
93
|
end
|
100
94
|
@dw.detach
|
101
95
|
@tw.detach
|
@@ -104,9 +98,8 @@ module Fluent
|
|
104
98
|
@io = IO.popen(@command, "r")
|
105
99
|
@pid = @io.pid
|
106
100
|
@dw = DstatCSVWatcher.new(@tmp_file, &method(:receive_lines))
|
107
|
-
@dw
|
108
|
-
@tw =
|
109
|
-
@tw.attach(@loop)
|
101
|
+
event_loop_attach(@dw)
|
102
|
+
@tw = timer_execute(:in_dstat_timer, 1, &method(:check_dstat))
|
110
103
|
end
|
111
104
|
|
112
105
|
def receive_lines(lines)
|
@@ -144,7 +137,7 @@ module Fluent
|
|
144
137
|
'hostname' => @hostname,
|
145
138
|
'dstat' => data
|
146
139
|
}
|
147
|
-
router.emit(@tag, Engine.now, record)
|
140
|
+
router.emit(@tag, Fluent::Engine.now, record)
|
148
141
|
end
|
149
142
|
@line_number += 1
|
150
143
|
@last_time = Time.now
|
@@ -175,19 +168,5 @@ module Fluent
|
|
175
168
|
# will be readable on next event
|
176
169
|
end
|
177
170
|
end
|
178
|
-
|
179
|
-
class TimerWatcher < Cool.io::TimerWatcher
|
180
|
-
def initialize(interval, repeat, &check_dstat)
|
181
|
-
@check_dstat = check_dstat
|
182
|
-
super(interval, repeat)
|
183
|
-
end
|
184
|
-
|
185
|
-
def on_timer
|
186
|
-
@check_dstat.call
|
187
|
-
rescue
|
188
|
-
$log.error $!.to_s
|
189
|
-
$log.error_backtrace
|
190
|
-
end
|
191
|
-
end
|
192
171
|
end
|
193
172
|
end
|
data/test/helper.rb
CHANGED
@@ -20,7 +20,7 @@ class DstatInputTest < Test::Unit::TestCase
|
|
20
20
|
]
|
21
21
|
|
22
22
|
def create_driver(conf=CONFIG)
|
23
|
-
Fluent::Test::
|
23
|
+
Fluent::Test::Driver::Input.new(Fluent::Plugin::DstatInput).configure(conf)
|
24
24
|
end
|
25
25
|
|
26
26
|
def test_configure
|
@@ -44,19 +44,17 @@ class DstatInputTest < Test::Unit::TestCase
|
|
44
44
|
def emit_with_conf(conf)
|
45
45
|
d = create_driver(conf)
|
46
46
|
|
47
|
-
d.run
|
48
|
-
sleep 2
|
49
|
-
end
|
47
|
+
d.run(expect_emits: 1)
|
50
48
|
|
51
49
|
length = `dstat #{d.instance.option} #{d.instance.delay} 1`.split("\n")[0].split("\s").length
|
52
50
|
puts `dstat #{d.instance.option} #{d.instance.delay} 3`
|
53
51
|
|
54
|
-
|
55
|
-
assert_equal true,
|
56
|
-
assert_equal length,
|
52
|
+
events = d.events
|
53
|
+
assert_equal true, events.length > 0
|
54
|
+
assert_equal length, events[0][2]['dstat'].length
|
57
55
|
|
58
56
|
puts "--- #{d.instance.option} ---"
|
59
|
-
puts
|
57
|
+
puts events[0][2]
|
60
58
|
puts "--- end ---"
|
61
59
|
end
|
62
60
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-dstat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shunsuke Mikami
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-07-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|
@@ -16,7 +16,7 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.14.0
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: '2'
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.
|
29
|
+
version: 0.14.0
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '2'
|
@@ -37,7 +37,7 @@ dependencies:
|
|
37
37
|
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
39
|
version: '0'
|
40
|
-
type: :
|
40
|
+
type: :development
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
@@ -72,6 +72,20 @@ dependencies:
|
|
72
72
|
- - "~>"
|
73
73
|
- !ruby/object:Gem::Version
|
74
74
|
version: '1.0'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: rake
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '12.0'
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '12.0'
|
75
89
|
description:
|
76
90
|
email: shun0102@gmail.com
|
77
91
|
executables: []
|
@@ -111,9 +125,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
111
125
|
version: '0'
|
112
126
|
requirements: []
|
113
127
|
rubyforge_project:
|
114
|
-
rubygems_version: 2.
|
128
|
+
rubygems_version: 2.7.6
|
115
129
|
signing_key:
|
116
130
|
specification_version: 4
|
117
131
|
summary: Dstat Input plugin for Fluent event collector
|
118
132
|
test_files: []
|
119
|
-
has_rdoc:
|