logstash-codec-sflow 0.11.0 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0d0ad6c9ef2cf42d5f3cd57608c6cd98390026ae
4
- data.tar.gz: a8a12e30f58dc856041faa94e8a11ce4217d90aa
3
+ metadata.gz: 5074ee2cb3fc307fe88e094cec33ae46d17ba96b
4
+ data.tar.gz: f22772698c0de3757d7428d954effedc9cd21d1e
5
5
  SHA512:
6
- metadata.gz: 7bb344ce75c3436645c45ac3bc365172ee58c319e5f1509c650d4fecf84824084804d22866ca91ab67915a56b32e9ecc154d0a22d2f51003907526f5ffc95498
7
- data.tar.gz: e6b3b1e3a29bdb6f34b8cf49dd2933df8c3d013232ad88ea642f3d3cc61e890cd60cccb7c3928903124d95fc140fad8e061c005c41433ef3f5e8ed0b905f95b3
6
+ metadata.gz: a028d13f047b1d5c4a92a0b2507e07e2c064ee408577d86a9eb219595e48ad8b51c4111568af5918a0dc1f6c6e9a6f4736333e214c7407d159775ea0855a7a9f
7
+ data.tar.gz: 8d811f0bfbff45fae54c52dbb3384789207145e6b4bbb2288ecc02dd61f0e2bc95c88934ba6e500ba92d8635e6394cd62307504d0e73e126e99c4ac688abea41
@@ -61,17 +61,19 @@ class LogStash::Codecs::Sflow < LogStash::Codecs::Base
61
61
 
62
62
  def snmp_call(event)
63
63
  if @snmp_interface
64
- if event.include?('source_id_index')
65
- event["source_id_index_descr"] = @snmp.get_interface(event["agent_ip"], event["source_id_index"])
66
- end
67
- if event.include?('input_interface')
68
- event["input_interface_descr"] = @snmp.get_interface(event["agent_ip"], event["input_interface"])
69
- end
70
- if event.include?('output_interface')
71
- event["output_interface_descr"] = @snmp.get_interface(event["agent_ip"], event["output_interface"])
72
- end
73
- if event.include?('interface_index')
74
- event["interface_index_descr"] = @snmp.get_interface(event["agent_ip"], event["interface_index"])
64
+ if event.include?('source_id_type') and event['source_id_type'].to_s == '0'
65
+ if event.include?('source_id_index')
66
+ event["source_id_index_descr"] = @snmp.get_interface(event["agent_ip"], event["source_id_index"])
67
+ end
68
+ if event.include?('input_interface')
69
+ event["input_interface_descr"] = @snmp.get_interface(event["agent_ip"], event["input_interface"])
70
+ end
71
+ if event.include?('output_interface')
72
+ event["output_interface_descr"] = @snmp.get_interface(event["agent_ip"], event["output_interface"])
73
+ end
74
+ if event.include?('interface_index')
75
+ event["interface_index_descr"] = @snmp.get_interface(event["agent_ip"], event["interface_index"])
76
+ end
75
77
  end
76
78
  end
77
79
  end
@@ -86,7 +88,7 @@ class LogStash::Codecs::Sflow < LogStash::Codecs::Base
86
88
  sample_length sample_count sample_header data storage) | @optional_removed_field
87
89
 
88
90
  if @snmp_interface
89
- @snmp = SNMPInterfaceResolver.new(@snmp_community, @interface_cache_size, @interface_cache_ttl)
91
+ @snmp = SNMPInterfaceResolver.new(@snmp_community, @interface_cache_size, @interface_cache_ttl, @logger)
90
92
  end
91
93
  end
92
94
 
@@ -1,21 +1,28 @@
1
- require 'snmp'
2
- require 'lru_redux'
3
-
4
- class SNMPInterfaceResolver
5
- def initialize(community, cache_size, cache_ttl)
6
- @community = community
7
- @cacheSnmpInterface = LruRedux::TTL::Cache.new(cache_size, cache_ttl)
8
- end
9
-
10
- def get_interface(host, ifIndex)
11
- unless @cacheSnmpInterface.key?("#{host}-#{ifIndex}")
12
- SNMP::Manager.open(:host => host, :community => @community, :version => :SNMPv2c) do |manager|
13
- response = manager.get("ifDescr.#{ifIndex}")
14
- response.each_varbind do |vb|
15
- @cacheSnmpInterface["#{host}-#{ifIndex}"] = vb.value.to_s
16
- end
17
- end
18
- end
19
- return @cacheSnmpInterface["#{host}-#{ifIndex}"]
20
- end
1
+ require 'snmp'
2
+ require 'lru_redux'
3
+
4
+ class SNMPInterfaceResolver
5
+ def initialize(community, cache_size, cache_ttl, logger)
6
+ @community = community
7
+ @cacheSnmpInterface = LruRedux::TTL::Cache.new(cache_size, cache_ttl)
8
+ @logger = logger
9
+ end
10
+
11
+ def get_interface(host, ifIndex)
12
+ unless @cacheSnmpInterface.key?("#{host}-#{ifIndex}")
13
+ begin
14
+ SNMP::Manager.open(:host => host, :community => @community, :version => :SNMPv2c) do |manager|
15
+ @cacheSnmpInterface["#{host}-#{ifIndex}"] = manager.get_value("ifDescr.#{ifIndex}").to_s
16
+ end
17
+ rescue SNMP::RequestTimeout => e
18
+ # This is not the best but it avoids loosing lots of events when facing
19
+ # request timeout exception with input thread restarting.
20
+ # Then we can easily detect this on the log or on elasticsearch
21
+ # searching for SnmpRequestTimeout descr fields
22
+ @logger.error("Timeout requesting description on #{host} of index #{ifIndex}: #{e.message}")
23
+ return "SnmpRequestTimeout"
24
+ end
25
+ end
26
+ return @cacheSnmpInterface["#{host}-#{ifIndex}"]
27
+ end
21
28
  end
@@ -1,14 +1,14 @@
1
1
  Gem::Specification.new do |s|
2
2
 
3
3
  s.name = 'logstash-codec-sflow'
4
- s.version = '0.11.0'
4
+ s.version = '1.0.0'
5
5
  s.licenses = ['Apache License (2.0)']
6
- s.summary = "The sflow codec is for decoding SFlow v5 flows."
7
- s.description = "This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program"
8
- s.authors = ["Nicolas Fraison"]
6
+ s.summary = 'The sflow codec is for decoding SFlow v5 flows.'
7
+ s.description = 'This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program'
8
+ s.authors = ['Nicolas Fraison']
9
9
  s.email = ''
10
- s.homepage = ""
11
- s.require_paths = ["lib"]
10
+ s.homepage = ''
11
+ s.require_paths = ['lib']
12
12
 
13
13
  # Files
14
14
  s.files = Dir['lib/**/*', 'spec/**/*', 'vendor/**/*', '*.gemspec', '*.md', 'CONTRIBUTORS', 'Gemfile', 'LICENSE', 'NOTICE.TXT']
@@ -17,10 +17,10 @@ Gem::Specification.new do |s|
17
17
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
18
18
 
19
19
  # Special flag to let us know this is actually a logstash plugin
20
- s.metadata = {"logstash_plugin" => "true", "logstash_group" => "codec"}
20
+ s.metadata = {'logstash_plugin' => 'true', 'logstash_group' => 'codec'}
21
21
 
22
22
  # Gem dependencies
23
- s.add_runtime_dependency "logstash-core", ">= 1.4.0", "< 3.0.0"
23
+ s.add_runtime_dependency 'logstash-core', '>= 1.4.0', '< 3.0.0'
24
24
  s.add_runtime_dependency 'bindata', ['>= 2.1.0']
25
25
  s.add_runtime_dependency 'lru_redux', ['>= 1.1.0']
26
26
  s.add_runtime_dependency 'snmp', ['>= 1.2.0']
metadata CHANGED
@@ -1,22 +1,22 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-codec-sflow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicolas Fraison
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-03 00:00:00.000000000 Z
11
+ date: 2016-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
- - - ">="
16
+ - - '>='
17
17
  - !ruby/object:Gem::Version
18
18
  version: 1.4.0
19
- - - "<"
19
+ - - <
20
20
  - !ruby/object:Gem::Version
21
21
  version: 3.0.0
22
22
  name: logstash-core
@@ -24,16 +24,16 @@ dependencies:
24
24
  type: :runtime
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - ">="
27
+ - - '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: 1.4.0
30
- - - "<"
30
+ - - <
31
31
  - !ruby/object:Gem::Version
32
32
  version: 3.0.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  requirement: !ruby/object:Gem::Requirement
35
35
  requirements:
36
- - - ">="
36
+ - - '>='
37
37
  - !ruby/object:Gem::Version
38
38
  version: 2.1.0
39
39
  name: bindata
@@ -41,13 +41,13 @@ dependencies:
41
41
  type: :runtime
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - ">="
44
+ - - '>='
45
45
  - !ruby/object:Gem::Version
46
46
  version: 2.1.0
47
47
  - !ruby/object:Gem::Dependency
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  requirements:
50
- - - ">="
50
+ - - '>='
51
51
  - !ruby/object:Gem::Version
52
52
  version: 1.1.0
53
53
  name: lru_redux
@@ -55,13 +55,13 @@ dependencies:
55
55
  type: :runtime
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - ">="
58
+ - - '>='
59
59
  - !ruby/object:Gem::Version
60
60
  version: 1.1.0
61
61
  - !ruby/object:Gem::Dependency
62
62
  requirement: !ruby/object:Gem::Requirement
63
63
  requirements:
64
- - - ">="
64
+ - - '>='
65
65
  - !ruby/object:Gem::Version
66
66
  version: 1.2.0
67
67
  name: snmp
@@ -69,13 +69,13 @@ dependencies:
69
69
  type: :runtime
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - ">="
72
+ - - '>='
73
73
  - !ruby/object:Gem::Version
74
74
  version: 1.2.0
75
75
  - !ruby/object:Gem::Dependency
76
76
  requirement: !ruby/object:Gem::Requirement
77
77
  requirements:
78
- - - ">="
78
+ - - '>='
79
79
  - !ruby/object:Gem::Version
80
80
  version: '0'
81
81
  name: logstash-devutils
@@ -83,7 +83,7 @@ dependencies:
83
83
  type: :development
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - ">="
86
+ - - '>='
87
87
  - !ruby/object:Gem::Version
88
88
  version: '0'
89
89
  description: This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program
@@ -130,17 +130,17 @@ require_paths:
130
130
  - lib
131
131
  required_ruby_version: !ruby/object:Gem::Requirement
132
132
  requirements:
133
- - - ">="
133
+ - - '>='
134
134
  - !ruby/object:Gem::Version
135
135
  version: '0'
136
136
  required_rubygems_version: !ruby/object:Gem::Requirement
137
137
  requirements:
138
- - - ">="
138
+ - - '>='
139
139
  - !ruby/object:Gem::Version
140
140
  version: '0'
141
141
  requirements: []
142
142
  rubyforge_project:
143
- rubygems_version: 2.4.8
143
+ rubygems_version: 2.4.5
144
144
  signing_key:
145
145
  specification_version: 4
146
146
  summary: The sflow codec is for decoding SFlow v5 flows.