From 65e766156fc30abe1b32bb29bf5083b9c8fb5677 Mon Sep 17 00:00:00 2001 From: Vitali Kari Date: Thu, 31 Jan 2019 04:34:15 +0100 Subject: [PATCH] Add Raisecom Sensors (#9738) * update some mibs * extend snmpwalk_cache_twopart_oid function * add raisecom dbm and temperature sensors * add test data * add some more sensors * Update raisecom.inc.php * Update raisecom.inc.php --- includes/definitions/discovery/raisecom.yaml | 63 + includes/discovery/mempools/raisecom.inc.php | 12 + .../discovery/sensors/dbm/raisecom.inc.php | 38 + .../sensors/pre-cache/raisecom.inc.php | 4 + .../sensors/temperature/raisecom.inc.php | 33 + includes/polling/mempools/raisecom.inc.php | 12 + includes/snmp.inc.php | 4 +- mibs/raisecom/RAISECOM-BASE-MIB | 136 + mibs/raisecom/RAISECOM-BASE-MIB.my | 319 - ...-MIB.my => RAISECOM-COMMON-MANAGEMENT-MIB} | 857 ++- mibs/raisecom/RAISECOM-FANMONITOR-MIB | 292 + mibs/raisecom/RAISECOM-OPTICAL-MONITOR-MIB | 822 +++ ...b.mib => RAISECOM-OPTICAL-TRANSCEIVER-MIB} | 5675 +++++++++-------- mibs/raisecom/RAISECOM-POWERMONITOR-MIB | 173 + mibs/raisecom/RAISECOM-SYSTEM-MIB | 1571 +++++ mibs/raisecom/SWITCH-TC | 89 + tests/data/raisecom.json | 480 ++ tests/snmpsim/raisecom.snmprec | 38 + 18 files changed, 7158 insertions(+), 3460 deletions(-) create mode 100644 includes/definitions/discovery/raisecom.yaml create mode 100644 includes/discovery/mempools/raisecom.inc.php create mode 100644 includes/discovery/sensors/dbm/raisecom.inc.php create mode 100644 includes/discovery/sensors/pre-cache/raisecom.inc.php create mode 100644 includes/discovery/sensors/temperature/raisecom.inc.php create mode 100644 includes/polling/mempools/raisecom.inc.php create mode 100644 mibs/raisecom/RAISECOM-BASE-MIB delete mode 100644 mibs/raisecom/RAISECOM-BASE-MIB.my rename mibs/raisecom/{RAISECOM-COMMON-MANAGEMENT-MIB.my => RAISECOM-COMMON-MANAGEMENT-MIB} (61%) create mode 100644 mibs/raisecom/RAISECOM-FANMONITOR-MIB create mode 100644 mibs/raisecom/RAISECOM-OPTICAL-MONITOR-MIB rename mibs/raisecom/{raisecom-optical-transceiver-mib.mib => RAISECOM-OPTICAL-TRANSCEIVER-MIB} (91%) create mode 100644 mibs/raisecom/RAISECOM-POWERMONITOR-MIB create mode 100644 mibs/raisecom/RAISECOM-SYSTEM-MIB create mode 100644 mibs/raisecom/SWITCH-TC create mode 100644 tests/data/raisecom.json diff --git a/includes/definitions/discovery/raisecom.yaml b/includes/definitions/discovery/raisecom.yaml new file mode 100644 index 0000000000..9c9c803c1f --- /dev/null +++ b/includes/definitions/discovery/raisecom.yaml @@ -0,0 +1,63 @@ +mib: RAISECOM-COMMON-MANAGEMENT-MIB:RAISECOM-FANMONITOR-MIB:RAISECOM-POWERMONITOR-MIB:RAISECOM-SYSTEM-MIB +modules: + processors: + data: + - + oid: raisecomTotalCPUUtilization + value: raisecomTotalCPUUtilizationOneMin + num_oid: '.1.3.6.1.4.1.8886.1.1.1.3.1.2.1.2.{{ $index }}' + snmp_flags: ['-OeQUsb', '-Pu'] # workaround for underscores in mib + descr: 'Processor' + index: 3 + sensors: + fanspeed: + data: + - + oid: raisecomFanMonitorStateTable + value: raisecomFanSpeedValue + num_oid: '.1.3.6.1.4.1.8886.1.1.5.2.2.1.2.{{ $index }}' + snmp_flags: ['-OeQUs', '-Pu'] # workaround for underscores in mib + descr: 'Fan {{ $index }} Speed' + voltage: + data: + - + oid: raisecomVoltTable + value: raisecomVoltValue + num_oid: '.1.3.6.1.4.1.8886.1.1.4.3.1.1.3.{{ $index }}' + snmp_flags: ['-OeQUs', '-Pu'] # workaround for underscores in mib + descr: 'Voltage {{ $index }} ({{ $raisecomVoltReference }}mV)' + divisor: 1000 + low_limit: raisecomVoltThresholdLow + high_limit: raisecomVoltThresholdHigh + state: + data: + - + oid: raisecomConfigLoadState + value: raisecomConfigLoadState + num_oid: '.1.3.6.1.4.1.8886.1.2.1.3.{{ $index }}' + snmp_flags: ['-OeQUs', '-Pu'] # workaround for underscores in mib + descr: 'Config {{ $index }} Load State' + states: + - { descr: ready, graph: 0, value: 1, generic: 1 } + - { descr: running, graph: 0, value: 2, generic: 1 } + - { descr: successful, graph: 0, value: 3, generic: 0 } + - { descr: failed, graph: 0, value: 4, generic: 2 } + - + oid: raisecomFanMonitorStateTable + value: raisecomFanWorkState + num_oid: '.1.3.6.1.4.1.8886.1.1.5.2.2.1.3.{{ $index }}' + snmp_flags: ['-OeQUs', '-Pu'] # workaround for underscores in mib + descr: 'Fan {{ $index }} State' + states: + - { descr: normal, graph: 0, value: 1, generic: 0 } + - { descr: abnormal, graph: 0, value: 2, generic: 2 } + - + oid: raisecomPowerMonitorStateTable + value: raisecomPowerStatus + snmp_flags: ['-OeQUs', '-Pu'] # workaround for underscores in mib + num_oid: '.1.3.6.1.4.1.8886.1.24.2.1.1.6.{{ $index }}' + descr: 'Power Supply {{ $index }} State' + states: + - { descr: offline, graph: 0, value: 1, generic: 2 } + - { descr: online, graph: 0, value: 2, generic: 0 } + - { descr: power-on, graph: 0, value: 3, generic: 1 } diff --git a/includes/discovery/mempools/raisecom.inc.php b/includes/discovery/mempools/raisecom.inc.php new file mode 100644 index 0000000000..b6476cbfa4 --- /dev/null +++ b/includes/discovery/mempools/raisecom.inc.php @@ -0,0 +1,12 @@ + $data) { + foreach ($data as $key => $value) { + if (($key == 'txPower') && is_numeric($value['raisecomOpticalTransceiverParameterValue']) && ($value['raisecomOpticalTransceiverDDMValidStatus'] == 1)) { + $oid = '.1.3.6.1.4.1.8886.1.18.2.2.1.1.2.'.$index.'.3'; + $sensor_type = 'raisecomOpticalTransceiverTxPower'; + $port_descr = get_port_by_index_cache($device['device_id'], str_replace('1.', '', $index)); + $descr = $port_descr['ifDescr'] . ' Transmit Power'; + $low_limit = $value['raisecomOpticalTransceiverParamLowAlarmThresh'] / $divisor; + $low_warn_limit = $value['raisecomOpticalTransceiverParamLowWarningThresh'] / $divisor; + $warn_limit = $value['raisecomOpticalTransceiverParamHighWarningThresh'] / $divisor; + $high_limit = $value['raisecomOpticalTransceiverParamHighAlarmThresh'] / $divisor; + $current = $value['raisecomOpticalTransceiverParameterValue'] / $divisor; + $entPhysicalIndex = $index; + $entPhysicalIndex_measured = 'ports'; + discover_sensor($valid['sensor'], 'dbm', $device, $oid, 'tx-'.$index, $sensor_type, $descr, $divisor, $multiplier, $low_limit, $low_warn_limit, $warn_limit, $high_limit, $current, 'snmp', $entPhysicalIndex, $entPhysicalIndex_measured); + } + if (($key == 'rxPower') && is_numeric($value['raisecomOpticalTransceiverParameterValue']) && ($value['raisecomOpticalTransceiverDDMValidStatus'] != 0)) { + $oid = '.1.3.6.1.4.1.8886.1.18.2.2.1.1.2.'.$index.'.4'; + $sensor_type = 'raisecomOpticalTransceiverRxPower'; + $port_descr = get_port_by_index_cache($device['device_id'], str_replace('1.', '', $index)); + $descr = $port_descr['ifDescr'] . ' Receive Power'; + $low_limit = $value['raisecomOpticalTransceiverParamLowAlarmThresh'] / $divisor; + $low_warn_limit = $value['raisecomOpticalTransceiverParamLowWarningThresh'] / $divisor; + $warn_limit = $value['raisecomOpticalTransceiverParamHighWarningThresh'] / $divisor; + $high_limit = $value['raisecomOpticalTransceiverParamHighAlarmThresh'] / $divisor; + $current = $value['raisecomOpticalTransceiverParameterValue'] / $divisor; + $entPhysicalIndex = $index; + $entPhysicalIndex_measured = 'ports'; + discover_sensor($valid['sensor'], 'dbm', $device, $oid, 'rx-'.$index, $sensor_type, $descr, $divisor, $multiplier, $low_limit, $low_warn_limit, $warn_limit, $high_limit, $current, 'snmp', $entPhysicalIndex, $entPhysicalIndex_measured); + } + } +} diff --git a/includes/discovery/sensors/pre-cache/raisecom.inc.php b/includes/discovery/sensors/pre-cache/raisecom.inc.php new file mode 100644 index 0000000000..4d0b6e33e4 --- /dev/null +++ b/includes/discovery/sensors/pre-cache/raisecom.inc.php @@ -0,0 +1,4 @@ + $data) { + foreach ($data as $key => $value) { + if (($key == 'transceiverTemperature') && is_numeric($value['raisecomOpticalTransceiverParameterValue']) && ($value['raisecomOpticalTransceiverDDMValidStatus'] == 1)) { + $oid = '.1.3.6.1.4.1.8886.1.18.2.2.1.1.2.'.$index.'.1'; + $sensor_type = 'raisecomOpticalTransceiverTemperature'; + $port_descr = get_port_by_index_cache($device['device_id'], str_replace('1.', '', $index)); + $descr = $port_descr['ifDescr'] . ' Transceiver Temperature'; + $low_limit = $value['raisecomOpticalTransceiverParamLowAlarmThresh'] / $divisor; + $low_warn_limit = $value['raisecomOpticalTransceiverParamLowWarningThresh'] / $divisor; + $warn_limit = $value['raisecomOpticalTransceiverParamHighWarningThresh'] / $divisor; + $high_limit = $value['raisecomOpticalTransceiverParamHighAlarmThresh'] / $divisor; + $current = $value['raisecomOpticalTransceiverParameterValue'] / $divisor; + $entPhysicalIndex = $index; + $entPhysicalIndex_measured = 'ports'; + discover_sensor($valid['sensor'], 'temperature', $device, $oid, 'tx-'.$index, $sensor_type, $descr, $divisor, $multiplier, $low_limit, $low_warn_limit, $warn_limit, $high_limit, $current, 'snmp', $entPhysicalIndex, $entPhysicalIndex_measured); + } + } +} +$descr = 'System Temperature'; +$oid = ".1.3.6.1.4.1.8886.1.1.4.2.1.0"; // raisecomTemperatureValue +$value = snmp_get($device, $oid, ['-OUvq', '-Pu'], 'RAISECOM-SYSTEM-MIB', 'raisecom'); +$low_limit = snmp_get($device, 'raisecomTemperatureThresholdLow.0', ['-OUvq', '-Pu'], 'RAISECOM-SYSTEM-MIB', 'raisecom'); +$high_limit = snmp_get($device, 'raisecomTemperatureThresholdHigh.0', ['-OUvq', '-Pu'], 'RAISECOM-SYSTEM-MIB', 'raisecom'); + +if (is_numeric($value)) { + discover_sensor($valid['sensor'], 'temperature', $device, $oid, 0, 'raisecomTemperatureValue', $descr, '1', '1', $low_limit, $low_warn_limit, $warn_limit, $high_limit, $value); +} diff --git a/includes/polling/mempools/raisecom.inc.php b/includes/polling/mempools/raisecom.inc.php new file mode 100644 index 0000000000..6335f0c36e --- /dev/null +++ b/includes/polling/mempools/raisecom.inc.php @@ -0,0 +1,12 @@ +,