Observium_CE/includes/discovery/sensors/des-1210-28me-b2.inc.php

168 lines
7.4 KiB
PHP

<?php
/**
* Observium
*
* This file is part of Observium.
*
* @package observium
* @subpackage discovery
* @copyright (C) Adam Armstrong
*
*/
// DES-1210-28ME-B2::sfpConnectorType.28 = STRING: SFP - SC
// DES-1210-28ME-B2::sfpTranceiverCode.28 = STRING: Single Mode
// DES-1210-28ME-B2::sfpBaudRate.28 = STRING: d
// DES-1210-28ME-B2::sfpVendorName.28 = STRING:
// DES-1210-28ME-B2::sfpVendorOui.28 = STRING: 0: 0: 0
// DES-1210-28ME-B2::sfpVendorPn.28 = STRING: AP-B53121-3CS3
// DES-1210-28ME-B2::sfpVendorRev.28 = STRING: 1.00
// DES-1210-28ME-B2::sfpWavelength.28 = STRING: 60e
// DES-1210-28ME-B2::sfpVendorSn.28 = STRING: SG53E2080XXXX
// DES-1210-28ME-B2::sfpDateCode.28 = STRING: 120224
// DES-1210-28ME-B2::ddmActionPort.28 = INTEGER: 28
// DES-1210-28ME-B2::ddmActionState.28 = INTEGER: disable(0)
// DES-1210-28ME-B2::ddmActionShutdown.28 = INTEGER: none(0)
// DES-1210-28ME-B2::ddmHighAlarm.28.temperature = STRING: +95.000
// DES-1210-28ME-B2::ddmHighAlarm.28.voltage = STRING: 3.80
// DES-1210-28ME-B2::ddmHighAlarm.28.bias = STRING: 20.0
// DES-1210-28ME-B2::ddmHighAlarm.28.txPower = STRING: 1.5900
// DES-1210-28ME-B2::ddmHighAlarm.28.rxPower = STRING: 1.2599
// DES-1210-28ME-B2::ddmLowAlarm.28.temperature = STRING: -25.000
// DES-1210-28ME-B2::ddmLowAlarm.28.voltage = STRING: 2.80
// DES-1210-28ME-B2::ddmLowAlarm.28.bias = STRING: 0.5
// DES-1210-28ME-B2::ddmLowAlarm.28.txPower = STRING: 0.1599
// DES-1210-28ME-B2::ddmLowAlarm.28.rxPower = STRING: 0.0099
// DES-1210-28ME-B2::ddmHighWarning.28.temperature = STRING: +90.000
// DES-1210-28ME-B2::ddmHighWarning.28.voltage = STRING: 3.70
// DES-1210-28ME-B2::ddmHighWarning.28.bias = STRING: 18.0
// DES-1210-28ME-B2::ddmHighWarning.28.txPower = STRING: 1.2599
// DES-1210-28ME-B2::ddmHighWarning.28.rxPower = STRING: 1.0000
// DES-1210-28ME-B2::ddmLowWarning.28.temperature = STRING: -20.000
// DES-1210-28ME-B2::ddmLowWarning.28.voltage = STRING: 2.90
// DES-1210-28ME-B2::ddmLowWarning.28.bias = STRING: 1.0
// DES-1210-28ME-B2::ddmLowWarning.28.txPower = STRING: 0.2000
// DES-1210-28ME-B2::ddmLowWarning.28.rxPower = STRING: 0.0126
// DES-1210-28ME-B2::ddmStatusPort.28 = INTEGER: 28
// DES-1210-28ME-B2::ddmTemperature.28 = STRING:
// DES-1210-28ME-B2::ddmVoltage.28 = STRING:
// DES-1210-28ME-B2::ddmBiasCurrent.28 = STRING:
// DES-1210-28ME-B2::ddmTxPower.28 = STRING:
// DES-1210-28ME-B2::ddmRxPower.28 = STRING:
$oids = snmpwalk_cache_oid($device, 'ddmStatusTable', [], $mib);
print_debug_vars($oids);
if (!snmp_status()) {
return;
}
// DES-1210-28ME-B2::ddmPowerUnit.0 = INTEGER: mw(0)
$power_unit = snmp_get_oid($device, 'ddmPowerUnit.0', $mib);
$oids = snmpwalk_cache_oid($device, 'sfpVendorName', $oids, $mib);
$oids = snmpwalk_cache_oid($device, 'sfpVendorPn', $oids, $mib);
$oids_limit = snmpwalk_cache_twopart_oid($device, 'ddmThresholdMgmtEntry', [], $mib);
foreach ($oids as $index => $entry) {
$entry['index'] = $index;
$match = [ 'measured_match' => [ 'entity_type' => 'port', 'field' => 'ifIndex', 'match' => '%index%' ] ];
$options = entity_measured_match_definition($device, $match, $entry);
$name = $options['port_label'];
$part_name = ' (' . trim($entry['sfpVendorName'] . ' ' . $entry['sfpVendorPn']) . ')';
// Temperature
$descr = $name . ' Temperature' . $part_name;
$class = 'temperature';
$oid_name = 'ddmTemperature';
//$oid_num = '.1.3.6.1.4.1.171.10.75.15.2.105.2.1.1.1.2.' . $index;
$oid_num = snmp_translate($oid_name, $mib) . '.' . $index;
$scale = 1;
$value = $entry[$oid_name];
$limits = [
'limit_high' => $oids_limit[$index]['temperature']['ddmHighAlarm'],
'limit_low' => $oids_limit[$index]['temperature']['ddmLowAlarm'],
'limit_high_warn' => $oids_limit[$index]['temperature']['ddmHighWarning'],
'limit_low_warn' => $oids_limit[$index]['temperature']['ddmLowWarning']
];
if (empty(snmp_fix_numeric($value))) {
// DGS-1210-28XME-BX::ddmTemperature.26 = STRING:
// DGS-1210-28XME-BX::ddmTemperature.28 = STRING: +0.000
continue;
}
discover_sensor_ng($device, $class, $mib, $oid_name, $oid_num, $index, $descr, $scale, $value, array_merge($options, $limits));
// Voltage
$descr = $name . ' Voltage' . $part_name;
$class = 'voltage';
$oid_name = 'ddmVoltage';
//$oid_num = '.1.3.6.1.4.1.171.10.75.15.2.105.2.1.1.1.3.' . $index;
$oid_num = snmp_translate($oid_name, $mib) . '.' . $index;
$scale = 1;
$value = $entry[$oid_name];
$limits = [
'limit_high' => $oids_limit[$index]['voltage']['ddmHighAlarm'],
'limit_low' => $oids_limit[$index]['voltage']['ddmLowAlarm'],
'limit_high_warn' => $oids_limit[$index]['voltage']['ddmHighWarning'],
'limit_low_warn' => $oids_limit[$index]['voltage']['ddmLowWarning']
];
discover_sensor_ng($device, $class, $mib, $oid_name, $oid_num, $index, $descr, $scale, $value, array_merge($options, $limits));
// Tx Bias
$descr = $name . ' Tx Bias' . $part_name;
$class = 'current';
$oid_name = 'ddmBiasCurrent';
$oid_num = '.1.3.6.1.4.1.171.10.75.15.2.105.2.1.1.1.4.' . $index;
$scale = 0.001;
$value = $entry[$oid_name];
$limits = [
'limit_high' => $oids_limit[$index]['bias']['ddmHighAlarm'] * $scale,
'limit_low' => $oids_limit[$index]['bias']['ddmLowAlarm'] * $scale,
'limit_high_warn' => $oids_limit[$index]['bias']['ddmHighWarning'] * $scale,
'limit_low_warn' => $oids_limit[$index]['bias']['ddmLowWarning'] * $scale
];
discover_sensor_ng($device, $class, $mib, $oid_name, $oid_num, $index, $descr, $scale, $value, array_merge($options, $limits));
// Tx Power
$descr = $name . ' Tx Power' . $part_name;
$class = $power_unit === 'mw' ? 'power' : 'dbm';
$oid_name = 'ddmTxPower';
//$oid_num = '.1.3.6.1.4.1.171.10.75.15.2.105.2.1.1.1.5.' . $index;
$oid_num = snmp_translate($oid_name, $mib) . '.' . $index;
$scale = $power_unit === 'mw' ? 0.001 : 1;
$value = $entry[$oid_name];
$limits = [
'limit_high' => $oids_limit[$index]['txPower']['ddmHighAlarm'] * $scale,
'limit_low' => $oids_limit[$index]['txPower']['ddmLowAlarm'] * $scale,
'limit_high_warn' => $oids_limit[$index]['txPower']['ddmHighWarning'] * $scale,
'limit_low_warn' => $oids_limit[$index]['txPower']['ddmLowWarning'] * $scale
];
discover_sensor_ng($device, $class, $mib, $oid_name, $oid_num, $index, $descr, $scale, $value, array_merge($options, $limits));
// Rx Power
$descr = $name . ' Rx Power' . $part_name;
$class = $power_unit === 'mw' ? 'power' : 'dbm';
$oid_name = 'ddmRxPower';
//$oid_num = '.1.3.6.1.4.1.171.10.75.15.2.105.2.1.1.1.6.' . $index;
$oid_num = snmp_translate($oid_name, $mib) . '.' . $index;
$scale = $power_unit === 'mw' ? 0.001 : 1;
$value = $entry[$oid_name];
$limits = [
'limit_high' => $oids_limit[$index]['rxPower']['ddmHighAlarm'] * $scale,
'limit_low' => $oids_limit[$index]['rxPower']['ddmLowAlarm'] * $scale,
'limit_high_warn' => $oids_limit[$index]['rxPower']['ddmHighWarning'] * $scale,
'limit_low_warn' => $oids_limit[$index]['rxPower']['ddmLowWarning'] * $scale
];
discover_sensor_ng($device, $class, $mib, $oid_name, $oid_num, $index, $descr, $scale, $value, array_merge($options, $limits));
}
// EOF