logstash-codec-sflow 0.11.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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.