From 4cc84b1675320508f9f41155abb41de7b99cc76e Mon Sep 17 00:00:00 2001 From: Seth Rosenblum Date: Fri, 5 Dec 2014 00:52:25 +0000 Subject: [PATCH 1/2] Allow configuring of SNMP to ignore non-increasing OIDs. Fixes #1231. --- checks.d/snmp.py | 7 +++++-- conf.d/snmp.yaml.example | 1 + tests/test_snmp.py | 9 +++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/checks.d/snmp.py b/checks.d/snmp.py index 455afeccbf..57af83c6a9 100644 --- a/checks.d/snmp.py +++ b/checks.d/snmp.py @@ -41,18 +41,21 @@ def __init__(self, name, init_config, agentConfig, instances=None): # Load Custom MIB directory mibs_path = None + ignore_nonincreasing_oid = False if init_config is not None: mibs_path = init_config.get("mibs_folder") - SnmpCheck.create_command_generator(mibs_path) + ignore_nonincreasing_oid = init_config.get("ignore_nonincreasing_oid", False) + SnmpCheck.create_command_generator(mibs_path, ignore_nonincreasing_oid) @classmethod - def create_command_generator(cls, mibs_path=None): + def create_command_generator(cls, mibs_path, ignore_nonincreasing_oid): ''' Create a command generator to perform all the snmp query. If mibs_path is not None, load the mibs present in the custom mibs folder. (Need to be in pysnmp format) ''' cls.cmd_generator = cmdgen.CommandGenerator() + cls.cmd_generator.ignoreNonIncreasingOid = ignore_nonincreasing_oid if mibs_path is not None: mib_builder = cls.cmd_generator.snmpEngine.msgAndPduDsp.\ mibInstrumController.mibBuilder diff --git a/conf.d/snmp.yaml.example b/conf.d/snmp.yaml.example index 85b4310c46..5e26dccbd3 100644 --- a/conf.d/snmp.yaml.example +++ b/conf.d/snmp.yaml.example @@ -1,6 +1,7 @@ init_config: # #You can specify an additional folder for your custom mib files (python format) # mibs_folder: /path/to/your/mibs/folder +# ignore_nonincreasing_oid: False instances: diff --git a/tests/test_snmp.py b/tests/test_snmp.py index 86edc2b827..3a852ac6d8 100644 --- a/tests/test_snmp.py +++ b/tests/test_snmp.py @@ -34,6 +34,15 @@ def testInit(self): custom_folder_represented = True break self.assertTrue(custom_folder_represented) + self.assertFalse(self.check.cmd_generator.ignoreNonIncreasingOid) + + self.config = { + "init_config": { + "ignore_nonincreasing_oid": True + } + } + self.check = load_check('snmp', self.config, self.agentConfig) + self.assertTrue(self.check.cmd_generator.ignoreNonIncreasingOid) def test_scalar_SNMPCheck(self): self.config = { From 2ff99663e96b8b4e6e9d7451a86e6d13e264e152 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Cavaill=C3=A9?= Date: Wed, 14 Jan 2015 20:26:02 +0100 Subject: [PATCH 2/2] Cast properly new ignore_nonincreasing_oid option to bool --- checks.d/snmp.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/checks.d/snmp.py b/checks.d/snmp.py index 57af83c6a9..9b0a42e07a 100644 --- a/checks.d/snmp.py +++ b/checks.d/snmp.py @@ -3,6 +3,7 @@ # project from checks import AgentCheck +from config import _is_affirmative # 3rd party from pysnmp.entity.rfc3413.oneliner import cmdgen @@ -44,7 +45,7 @@ def __init__(self, name, init_config, agentConfig, instances=None): ignore_nonincreasing_oid = False if init_config is not None: mibs_path = init_config.get("mibs_folder") - ignore_nonincreasing_oid = init_config.get("ignore_nonincreasing_oid", False) + ignore_nonincreasing_oid = _is_affirmative(init_config.get("ignore_nonincreasing_oid", False)) SnmpCheck.create_command_generator(mibs_path, ignore_nonincreasing_oid) @classmethod