fluent-plugin-snmp 0.0.6 → 0.0.7

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.
data/README.md CHANGED
@@ -14,38 +14,32 @@ Or install it yourself as:
14
14
 
15
15
  ## Usage
16
16
 
17
- <source>
18
- type snmp
19
- tag snmp.server1
20
- nodes name, value
21
- host server1
22
- community private
23
- version 2c
24
- mib hrStorageIndex, hrStorageDescr, hrStorageSize, hrStorageUsed
25
- mib_modules HOST-RESOURCES-MIB
26
- retries 0
27
- timeout 3s
28
- polling_time 0,10,20,30,40,50
29
- </source>
30
-
31
- <source>
32
- type snmp
33
- tag snmp.server2
34
- host server2
35
- community private
36
- version 2c
37
- mib hrStorageIndex, hrStorageDescr,
38
- hrStorageSize, hrStorageUsed
39
- mib_modules HOST-RESOURCES-MIB
40
- retries 0
41
- timeout 3s
42
- polling_time 5,15,25,35,45,55
43
- </source>
44
-
45
-
46
- 2012-11-08 16:07:40 +0900 snmp.server1: {"name":"HOST-RESOURCES-MIB::hrStorageUsed.31","value":"2352425"}
47
- 2012-11-08 16:07:45 +0900 snmp.server2: {"value":"[name=HOST-RESOURCES-MIB::hrStorageIndex.7, value=7 (INTEGER)]"}
48
-
17
+ <source>
18
+ type snmp
19
+ tag snmp.server1
20
+ nodes name, value
21
+ host localhost
22
+ community public
23
+ mib sysContact.0, sysDescr.0, sysName.0
24
+ method_type get
25
+ polling_time 5
26
+ polling_type async_run
27
+ </source>
28
+
29
+ <source>
30
+ type snmp
31
+ tag snmp.server2
32
+ host localhost
33
+ community public
34
+ mib hrStorageIndex, hrStorageDescr, hrStorageSize, hrStorageUsed
35
+ mib_modules HOST-RESOURCES-MIB
36
+ polling_time 0,10,20,30,40,50
37
+ out_executor sample/out_exec.rb.sample
38
+ </source>
39
+
40
+ <match snmp.server*>
41
+ type stdout
42
+ </match>
49
43
 
50
44
  ## Copyright
51
45
  Copyright (c) 2012 Internet Initiative Inc.
@@ -3,11 +3,11 @@ $:.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"
6
+ gem.version = "0.0.7"
7
7
  gem.authors = ["hiro-su"]
8
8
  gem.email = ["h-sugimoto@iij.ad.jp"]
9
- gem.description = %q{Input plugin to walk snmp}
10
- gem.summary = %q{Input plugin to walk snmp}
9
+ gem.description = %q{Input plugin to snmp}
10
+ gem.summary = %q{Input plugin to snmp}
11
11
 
12
12
  gem.files = `git ls-files`.split($\)
13
13
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -11,11 +11,13 @@ module Fluent
11
11
  config_param :mib, :string
12
12
  config_param :nodes, :string, :default => nil
13
13
  config_param :polling_time, :string, :default => nil
14
+ config_param :polling_offset, :time, :default => 0
15
+ config_param :polling_type, :string, :default => "run" #or async_run
14
16
  config_param :host_name, :string, :default => nil
15
17
  config_param :retry, :integer, :default => 5
16
18
  config_param :retry_interval, :time, :default => 1
17
- config_param :method_type, :string, :default => "walk"
18
- config_param :out_exec_filter, :string, :default => nil
19
+ config_param :method_type, :string, :default => "walk" #or get
20
+ config_param :out_executor, :string, :default => nil
19
21
 
20
22
  # SNMP Lib Params
21
23
  # require param: host, community
@@ -52,7 +54,8 @@ module Fluent
52
54
  def configure(conf)
53
55
  super
54
56
 
55
- raise ConfigError, "tag is required param" if @tag.empty?
57
+ raise ConfigError, "snmp: 'tag' is required param" if @tag.empty?
58
+ raise ConfigError, "snmp: 'polling_type' parameter is required on snmp input" if @polling_type.empty?
56
59
 
57
60
  # @mib, @mib_modules, @nodesを配列に変換
58
61
  @mib = @mib.split(',').map{|str| str.strip}
@@ -87,9 +90,10 @@ module Fluent
87
90
  :use_IPv6 => @use_IPv6
88
91
  }
89
92
 
90
- unless @out_exec_filter.nil?
93
+ unless @out_executor.nil?
94
+ $log.info "load snmp out executor #{out_executor}"
91
95
  @out_exec = lambda do |manager|
92
- require @out_exec_filter
96
+ load @out_executor
93
97
  opts = {
94
98
  :tag => @tag,
95
99
  :mib => @mib,
@@ -117,7 +121,8 @@ module Fluent
117
121
  end
118
122
 
119
123
  def run
120
- Polling::run(@polling_time) do
124
+ Polling.setting offset: @polling_offset
125
+ Polling.__send__(@polling_type, @polling_time) do
121
126
  break if @end_flag
122
127
  exec_params = {
123
128
  manager: @manager,
@@ -137,16 +142,25 @@ module Fluent
137
142
 
138
143
  def shutdown
139
144
  @end_flag = true
140
- @thread.run
141
- @thread.join
142
- @starter.join
143
- @manager.close
144
- super
145
+ if @thread
146
+ @thread.run
147
+ @thread.join
148
+ @thread = nil
149
+ end
150
+ if @starter
151
+ @starter.join
152
+ @starter = nil
153
+ end
154
+ if @manager
155
+ @manager.close
156
+ end
145
157
  end
146
158
 
159
+ private
160
+
147
161
  def exec_snmp opts={}
148
162
  @retry_count ||= 0
149
- if @out_exec_filter.nil?
163
+ if @out_executor.nil?
150
164
  case opts[:method_type]
151
165
  when /^walk$/
152
166
  snmp_walk(opts[:manager], opts[:mib], opts[:nodes])
@@ -174,8 +188,6 @@ module Fluent
174
188
  raise ex
175
189
  end
176
190
 
177
- private
178
-
179
191
  def snmp_walk(manager, mib, nodes, test=false)
180
192
  manager.walk(mib) do |row|
181
193
  time = Engine.now
@@ -1,42 +1,25 @@
1
1
  <source>
2
- type snmp
3
- tag snmp.server1
4
- nodes name, value
5
- host localhost
6
- community public
7
- version 2c
8
- mib hrStorageIndex, hrStorageDescr, hrStorageSize, hrStorageUsed
9
- mib_modules HOST-RESOURCES-MIB
10
- retries 0
11
- timeout 3s
12
- polling_time 0,10,20,30,40,50
2
+ type snmp
3
+ tag snmp.server1
4
+ nodes name, value
5
+ host localhost
6
+ community public
7
+ mib sysContact.0, sysDescr.0, sysName.0
8
+ method_type get
9
+ polling_time 5
10
+ polling_type async_run
13
11
  </source>
14
12
 
15
- #<source>
16
- #type snmp
17
- #tag snmp.server2
18
- #host localhost
19
- #community public
20
- #version 2c
21
- #mib hrStorageIndex, hrStorageDescr, hrStorageSize, hrStorageUsed
22
- #mib_modules HOST-RESOURCES-MIB
23
- #retries 0
24
- #timeout 3s
25
- #polling_time 5,15,25,35,45,55
26
- #</source>
27
- #
28
- #<source>
29
- #type snmp
30
- #tag snmp.server3
31
- #host localhost
32
- #community public
33
- #version 2c
34
- #mib hrStorageIndex, hrStorageDescr, hrStorageSize, hrStorageUsed
35
- #mib_modules HOST-RESOURCES-MIB
36
- #retries 0
37
- #timeout 3s
38
- #polling_time 5m
39
- #</source>
13
+ <source>
14
+ type snmp
15
+ tag snmp.server2
16
+ host localhost
17
+ community public
18
+ mib hrStorageIndex, hrStorageDescr, hrStorageSize, hrStorageUsed
19
+ mib_modules HOST-RESOURCES-MIB
20
+ polling_time 0,10,20,30,40,50
21
+ out_executor sample/out_exec.rb.sample
22
+ </source>
40
23
 
41
24
  <match snmp.server*>
42
25
  type stdout
@@ -14,6 +14,7 @@ class SnmpInputTest < Test::Unit::TestCase
14
14
  mib hrStorageIndex, hrStorageDescr, hrStorageSize, hrStorageUsed
15
15
  nodes name, value
16
16
  polling_time 0,10,20,30,40,50
17
+ polling_offset 0
17
18
  host localhost
18
19
  host_name test_host
19
20
  community public
@@ -22,7 +23,7 @@ class SnmpInputTest < Test::Unit::TestCase
22
23
  retry_interval 2
23
24
  timeout 3s
24
25
  method_type walk
25
- out_exec_filter sample/out_exec.rb
26
+ out_executor sample/out_exec.rb.sample
26
27
  ]
27
28
 
28
29
  def create_driver(conf=CONFIG)
@@ -37,9 +38,10 @@ class SnmpInputTest < Test::Unit::TestCase
37
38
  assert_equal ["hrStorageIndex","hrStorageDescr","hrStorageSize","hrStorageUsed"], d.instance.mib
38
39
  assert_equal ["name","value"], d.instance.nodes
39
40
  assert_equal ["0","10","20","30","40","50"], d.instance.polling_time
41
+ assert_equal 0, d.instance.polling_offset
40
42
  assert_equal "walk", d.instance.method_type
41
43
  assert_equal 2, d.instance.retry_interval
42
- assert_equal "sample/out_exec.rb", d.instance.out_exec_filter
44
+ assert_equal "sample/out_exec.rb.sample", d.instance.out_executor
43
45
 
44
46
  # SNMP Lib Params
45
47
  assert_equal "localhost", d.instance.host
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-snmp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-25 00:00:00.000000000 Z
12
+ date: 2013-03-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fluentd
@@ -107,7 +107,7 @@ dependencies:
107
107
  - - ! '>='
108
108
  - !ruby/object:Gem::Version
109
109
  version: '0'
110
- description: Input plugin to walk snmp
110
+ description: Input plugin to snmp
111
111
  email:
112
112
  - h-sugimoto@iij.ad.jp
113
113
  executables: []
@@ -148,7 +148,7 @@ rubyforge_project:
148
148
  rubygems_version: 1.8.24
149
149
  signing_key:
150
150
  specification_version: 3
151
- summary: Input plugin to walk snmp
151
+ summary: Input plugin to snmp
152
152
  test_files:
153
153
  - test/helper.rb
154
154
  - test/plugin/test_in_snmp.rb