fluent-plugin-snmp 0.0.8 → 0.0.9
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 +6 -14
- data/Gemfile +0 -1
- data/README.md +14 -6
- data/fluent-plugin-snmp.gemspec +8 -7
- data/lib/fluent/plugin/in_snmp.rb +10 -19
- data/sample/out_exec.rb.sample +1 -1
- data/sample/snmp.conf.sample +3 -3
- data/test/plugin/test_in_snmp.rb +24 -27
- metadata +39 -39
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
YzFmMTM3ZTc4MGU1YWE1ZWM0MmYyYWIyZGZhYmYwMTAxOGFlOTJkZDg2ZmQ0
|
10
|
-
NWU5ODUxZDgyYzJlZDkzZjM3ZGRkZWVkMjA0M2E5NzNmZDJlZGEwOTgxNmEy
|
11
|
-
MGIyNDQyOThkOWU4YTYzNmYyZjAwMGIxOTQ0ZTI2YjU1NjkwZWY=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
Njg0MmY1MDE1ODcwNmRkZWQ3OTFkYTg4MDIxYmJhNjkxNDhlYTE2ODUwYzE0
|
14
|
-
ZDliN2E3NTBiNmM5N2ZmNWFkNDcwN2Q3NmY1NDA0NDM0NzZiNWY5ZDBiZDhh
|
15
|
-
MzVhN2ZiNzU4ZTk1ZDA5NDQyMzNhZDJjYWMxYjJiMWQ4NjljNGE=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: fbf4f6aea588052f179cb8bb809937efe48a5eb1
|
4
|
+
data.tar.gz: 90280ffe549a38dd122c9488e41472ef5783fb26
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 75e4fc90bc40575af0f2b55e1fa8797f0bc92dac8cf83ae9e0363da75f919e954cdf4625d49324f820f13f8be9faf59bf6a49ffccaa5edab51c56291eee4f7b7
|
7
|
+
data.tar.gz: bf4a4889d90481063def2e6b365490eedd55457133224a541d7fc3e6b6ed2c00e46ce785a845944a738166bf315fc15859cba8865dd597715d543e074a66fd94
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,16 +1,24 @@
|
|
1
|
-
# Fluent::Plugin::Snmp
|
1
|
+
# Fluent::Plugin::Snmp, a plugin for [Fluentd](http://fluentd.org)
|
2
2
|
|
3
3
|
Fluentd snmp input plugin
|
4
4
|
|
5
|
-
## Installation
|
5
|
+
## Installation possibilities
|
6
6
|
|
7
|
-
|
7
|
+
- With your application's Gemfile:
|
8
8
|
|
9
|
-
gem 'fluent-plugin-snmp'
|
9
|
+
`gem 'fluent-plugin-snmp'`
|
10
10
|
|
11
|
-
|
11
|
+
- Install it yourself as:
|
12
12
|
|
13
|
-
|
13
|
+
`$ gem install fluent-plugin-snmp`
|
14
|
+
|
15
|
+
- Intall with td-agent:
|
16
|
+
|
17
|
+
`$ td-agent-gem install fluent-plugin-snmp`
|
18
|
+
|
19
|
+
- If you are using vanilla Fluentd:
|
20
|
+
|
21
|
+
`$ fluent-gem install fluent-plugin-snmp`
|
14
22
|
|
15
23
|
## Usage
|
16
24
|
|
data/fluent-plugin-snmp.gemspec
CHANGED
@@ -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-snmp"
|
6
|
-
gem.version = "0.0.
|
6
|
+
gem.version = "0.0.9"
|
7
7
|
gem.authors = ["hiro-su"]
|
8
8
|
gem.email = ["h-sugimoto@iij.ad.jp"]
|
9
9
|
gem.description = %q{Input plugin to snmp}
|
@@ -14,10 +14,11 @@ Gem::Specification.new do |gem|
|
|
14
14
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
15
15
|
gem.require_paths = ["lib"]
|
16
16
|
|
17
|
-
gem.
|
18
|
-
gem.
|
19
|
-
gem.
|
20
|
-
|
21
|
-
gem.
|
22
|
-
gem.
|
17
|
+
gem.add_runtime_dependency "fluentd", ">= 0.10.58"
|
18
|
+
gem.add_runtime_dependency "snmp", "~> 1.2.0"
|
19
|
+
gem.add_runtime_dependency "polling", "0.1.5"
|
20
|
+
|
21
|
+
gem.add_development_dependency "bundler", "~> 1.12"
|
22
|
+
gem.add_development_dependency "rake", "~> 10.0"
|
23
|
+
gem.add_development_dependency "mocha", "~> 1.1.0"
|
23
24
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'fluent/input'
|
1
2
|
require 'snmp' # http://snmplib.rubyforge.org/doc/index.html
|
2
3
|
require 'polling'
|
3
4
|
|
@@ -13,7 +14,6 @@ module Fluent
|
|
13
14
|
config_param :polling_time, :string, :default => nil
|
14
15
|
config_param :polling_offset, :time, :default => 0
|
15
16
|
config_param :polling_type, :string, :default => "run" #or async_run
|
16
|
-
config_param :host_name, :string, :default => nil
|
17
17
|
config_param :method_type, :string, :default => "walk" #or get
|
18
18
|
config_param :out_executor, :string, :default => nil
|
19
19
|
|
@@ -99,23 +99,16 @@ module Fluent
|
|
99
99
|
:nodes => @nodes,
|
100
100
|
:conf => conf
|
101
101
|
}
|
102
|
-
|
102
|
+
out_exec(manager, opts)
|
103
103
|
end
|
104
104
|
end
|
105
105
|
end
|
106
106
|
|
107
|
-
def starter
|
108
|
-
@starter = Thread.new do
|
109
|
-
yield
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
107
|
def start
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
end
|
108
|
+
super
|
109
|
+
@manager = SNMP::Manager.new(@snmp_init_params)
|
110
|
+
@thread = Thread.new(&method(:run))
|
111
|
+
@end_flag = false
|
119
112
|
end
|
120
113
|
|
121
114
|
def run
|
@@ -140,10 +133,6 @@ module Fluent
|
|
140
133
|
@thread.join
|
141
134
|
@thread = nil
|
142
135
|
end
|
143
|
-
if @starter
|
144
|
-
@starter.join
|
145
|
-
@starter = nil
|
146
|
-
end
|
147
136
|
if @manager
|
148
137
|
@manager.close
|
149
138
|
end
|
@@ -184,7 +173,7 @@ module Fluent
|
|
184
173
|
else
|
185
174
|
nodes.each{|param| record[param] = check_type(vb.__send__(param))}
|
186
175
|
end
|
187
|
-
|
176
|
+
router.emit(@tag, time, record)
|
188
177
|
return {:time => time, :record => record} if test
|
189
178
|
end
|
190
179
|
end
|
@@ -202,7 +191,7 @@ module Fluent
|
|
202
191
|
else
|
203
192
|
nodes.each{|param| record[param] = check_type(vb.__send__(param))}
|
204
193
|
end
|
205
|
-
|
194
|
+
router.emit(@tag, time, record)
|
206
195
|
return {:time => time, :record => record} if test
|
207
196
|
end
|
208
197
|
rescue => ex
|
@@ -213,6 +202,8 @@ module Fluent
|
|
213
202
|
def check_type(value)
|
214
203
|
if value =~ /^\d+(\.\d+)?$/
|
215
204
|
return value.to_f
|
205
|
+
elsif SNMP::Integer === value
|
206
|
+
return value.to_i
|
216
207
|
else
|
217
208
|
return value.to_s
|
218
209
|
end
|
data/sample/out_exec.rb.sample
CHANGED
data/sample/snmp.conf.sample
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
<source>
|
2
|
-
type snmp
|
2
|
+
@type snmp
|
3
3
|
tag snmp.server1
|
4
4
|
nodes name, value
|
5
5
|
host localhost
|
@@ -11,7 +11,7 @@
|
|
11
11
|
</source>
|
12
12
|
|
13
13
|
<source>
|
14
|
-
type snmp
|
14
|
+
@type snmp
|
15
15
|
tag snmp.server2
|
16
16
|
host localhost
|
17
17
|
community public
|
@@ -22,5 +22,5 @@
|
|
22
22
|
</source>
|
23
23
|
|
24
24
|
<match snmp.server*>
|
25
|
-
type stdout
|
25
|
+
@type stdout
|
26
26
|
</match>
|
data/test/plugin/test_in_snmp.rb
CHANGED
@@ -6,7 +6,7 @@ class SnmpInputTest < Test::Unit::TestCase
|
|
6
6
|
|
7
7
|
def setup
|
8
8
|
Fluent::Test.setup
|
9
|
-
|
9
|
+
#@obj = Fluent::SnmpInput.new
|
10
10
|
end
|
11
11
|
|
12
12
|
CONFIG = %[
|
@@ -16,11 +16,8 @@ class SnmpInputTest < Test::Unit::TestCase
|
|
16
16
|
polling_time 0,10,20,30,40,50
|
17
17
|
polling_offset 0
|
18
18
|
host localhost
|
19
|
-
host_name test_host
|
20
19
|
community public
|
21
20
|
mib_modules HOST-RESOURCES-MIB, IF-MIB
|
22
|
-
retry 0
|
23
|
-
retry_interval 2
|
24
21
|
timeout 3s
|
25
22
|
method_type walk
|
26
23
|
out_executor sample/out_exec.rb.sample
|
@@ -40,19 +37,16 @@ class SnmpInputTest < Test::Unit::TestCase
|
|
40
37
|
assert_equal ["0","10","20","30","40","50"], d.instance.polling_time
|
41
38
|
assert_equal 0, d.instance.polling_offset
|
42
39
|
assert_equal "walk", d.instance.method_type
|
43
|
-
assert_equal 2, d.instance.retry_interval
|
44
40
|
assert_equal "sample/out_exec.rb.sample", d.instance.out_executor
|
45
41
|
|
46
42
|
# SNMP Lib Params
|
47
43
|
assert_equal "localhost", d.instance.host
|
48
|
-
assert_equal "test_host", d.instance.host_name
|
49
44
|
assert_nil d.instance.port
|
50
45
|
assert_nil d.instance.trap_port
|
51
46
|
assert_equal "public", d.instance.community
|
52
47
|
assert_nil d.instance.write_community
|
53
48
|
assert_equal :SNMPv2c, d.instance.version
|
54
49
|
assert_equal 3, d.instance.timeout
|
55
|
-
assert_equal 0, d.instance.retry
|
56
50
|
assert_nil d.instance.transport
|
57
51
|
assert_nil d.instance.max_recv_bytes
|
58
52
|
assert_nil d.instance.mib_dir
|
@@ -61,18 +55,22 @@ class SnmpInputTest < Test::Unit::TestCase
|
|
61
55
|
end
|
62
56
|
|
63
57
|
def test_check_type
|
64
|
-
|
65
|
-
|
66
|
-
assert_equal "
|
67
|
-
assert_equal "
|
68
|
-
assert_equal
|
69
|
-
assert_equal
|
70
|
-
assert_equal
|
71
|
-
assert_equal
|
72
|
-
assert_equal
|
73
|
-
assert_equal String,
|
74
|
-
assert_equal
|
75
|
-
assert_equal
|
58
|
+
d = create_driver
|
59
|
+
|
60
|
+
assert_equal "test", d.instance.__send__(:check_type, "test")
|
61
|
+
assert_equal "utrh0", d.instance.__send__(:check_type, "utrh0")
|
62
|
+
assert_equal "sensorValue_degC", d.instance.__send__(:check_type, "sensorValue_degC")
|
63
|
+
assert_equal "sensorValue_%RH", d.instance.__send__(:check_type, "sensorValue_%RH")
|
64
|
+
assert_equal 12.00, d.instance.__send__(:check_type, "12")
|
65
|
+
assert_equal 12.34, d.instance.__send__(:check_type, "12.34")
|
66
|
+
assert_equal 12, d.instance.__send__(:check_type, SNMP::Integer.new("12"))
|
67
|
+
assert_equal String, d.instance.__send__(:check_type, "test").class
|
68
|
+
assert_equal String, d.instance.__send__(:check_type, "utrh0").class
|
69
|
+
assert_equal String, d.instance.__send__(:check_type, "sensorValue_degC").class
|
70
|
+
assert_equal String, d.instance.__send__(:check_type, "sensorValue_%RH").class
|
71
|
+
assert_equal Float, d.instance.__send__(:check_type, "12").class
|
72
|
+
assert_equal Float, d.instance.__send__(:check_type, "12.34").class
|
73
|
+
assert_equal Fixnum, d.instance.__send__(:check_type, SNMP::Integer.new("12")).class
|
76
74
|
end
|
77
75
|
|
78
76
|
def test_snmp_walk
|
@@ -93,15 +91,14 @@ class SnmpInputTest < Test::Unit::TestCase
|
|
93
91
|
Time.stubs(:now).returns(Time.parse "2012/12/31 23:59:50")
|
94
92
|
manager = SNMP::Manager.new(snmp_init_params)
|
95
93
|
|
96
|
-
data =
|
94
|
+
data = d.instance.__send__(:snmp_walk, manager, mib, nodes, true)
|
97
95
|
record = data[:record]
|
98
96
|
|
99
97
|
assert_equal 1356965990, data[:time]
|
100
|
-
assert_equal "HOST-RESOURCES-MIB::hrStorageIndex.
|
101
|
-
assert_equal
|
98
|
+
assert_equal "HOST-RESOURCES-MIB::hrStorageIndex.1", record["name"]
|
99
|
+
assert_equal 1, record["value"]
|
102
100
|
end
|
103
101
|
|
104
|
-
|
105
102
|
def test_snmp_get
|
106
103
|
d = create_driver %[
|
107
104
|
tag snmp.server1
|
@@ -128,12 +125,12 @@ class SnmpInputTest < Test::Unit::TestCase
|
|
128
125
|
Time.stubs(:now).returns(Time.parse "2012/12/31 23:59:50")
|
129
126
|
manager = SNMP::Manager.new(snmp_init_params)
|
130
127
|
|
131
|
-
data =
|
128
|
+
data = d.instance.__send__(:snmp_get, manager, mib, nodes, true)
|
132
129
|
record = data[:record]
|
133
130
|
|
134
131
|
assert_equal 1356965990, data[:time]
|
135
132
|
assert_equal "HOST-RESOURCES-MIB::hrStorageIndex.31", record["name"]
|
136
|
-
assert_equal
|
133
|
+
assert_equal 31, record["value"]
|
137
134
|
end
|
138
135
|
|
139
136
|
def test_exec_snmp
|
@@ -157,7 +154,7 @@ class SnmpInputTest < Test::Unit::TestCase
|
|
157
154
|
:test => true
|
158
155
|
}
|
159
156
|
|
160
|
-
exec =
|
161
|
-
assert_equal
|
157
|
+
exec = d.instance.__send__(:exec_snmp, opts)
|
158
|
+
assert_equal nil, exec
|
162
159
|
end
|
163
160
|
end
|
metadata
CHANGED
@@ -1,99 +1,99 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-snmp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- hiro-su
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-08-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
-
type: :
|
19
|
+
version: 0.10.58
|
20
|
+
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 0.10.58
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: snmp
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
34
|
-
type: :
|
33
|
+
version: 1.2.0
|
34
|
+
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 1.2.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: polling
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - '='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
48
|
-
type: :
|
47
|
+
version: 0.1.5
|
48
|
+
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - '='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 0.1.5
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
62
|
-
type: :
|
61
|
+
version: '1.12'
|
62
|
+
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '1.12'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :
|
75
|
+
version: '10.0'
|
76
|
+
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
82
|
+
version: '10.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: mocha
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
90
|
-
type: :
|
89
|
+
version: 1.1.0
|
90
|
+
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
96
|
+
version: 1.1.0
|
97
97
|
description: Input plugin to snmp
|
98
98
|
email:
|
99
99
|
- h-sugimoto@iij.ad.jp
|
@@ -101,7 +101,7 @@ executables: []
|
|
101
101
|
extensions: []
|
102
102
|
extra_rdoc_files: []
|
103
103
|
files:
|
104
|
-
- .gitignore
|
104
|
+
- ".gitignore"
|
105
105
|
- Gemfile
|
106
106
|
- LICENSE.txt
|
107
107
|
- README.md
|
@@ -121,17 +121,17 @@ require_paths:
|
|
121
121
|
- lib
|
122
122
|
required_ruby_version: !ruby/object:Gem::Requirement
|
123
123
|
requirements:
|
124
|
-
- -
|
124
|
+
- - ">="
|
125
125
|
- !ruby/object:Gem::Version
|
126
126
|
version: '0'
|
127
127
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- -
|
129
|
+
- - ">="
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: '0'
|
132
132
|
requirements: []
|
133
133
|
rubyforge_project:
|
134
|
-
rubygems_version: 2.
|
134
|
+
rubygems_version: 2.6.6
|
135
135
|
signing_key:
|
136
136
|
specification_version: 4
|
137
137
|
summary: Input plugin to snmp
|