104 lines
4.1 KiB
PHP
104 lines
4.1 KiB
PHP
<?php
|
|
/**
|
|
* Observium
|
|
*
|
|
* This file is part of Observium.
|
|
*
|
|
* @package observium
|
|
* @subpackage discovery
|
|
* @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2021 Observium Limited
|
|
*
|
|
*/
|
|
|
|
//FA-EXT-MIB::swSfpTemperature.'...... .........'.1 = STRING: "51 " centigrade
|
|
//FA-EXT-MIB::swSfpTemperature.'...... .........'.2 = STRING: "52 " centigrade
|
|
//FA-EXT-MIB::swSfpVoltage.'...... .........'.1 = STRING: "3319.1 " milli voltage
|
|
//FA-EXT-MIB::swSfpVoltage.'...... .........'.2 = STRING: "3304.6 " milli voltage
|
|
//FA-EXT-MIB::swSfpCurrent.'...... .........'.1 = STRING: "8.892 " milli amphere
|
|
//FA-EXT-MIB::swSfpCurrent.'...... .........'.2 = STRING: "8.086 " milli amphere
|
|
//FA-EXT-MIB::swSfpRxPower.'...... .........'.1 = STRING: "-4.6 " dBm
|
|
//FA-EXT-MIB::swSfpRxPower.'...... .........'.2 = STRING: "-inf " dBm
|
|
//FA-EXT-MIB::swSfpTxPower.'...... .........'.1 = STRING: "-4.6 " dBm
|
|
//FA-EXT-MIB::swSfpTxPower.'...... .........'.2 = STRING: "-4.9 " dBm
|
|
|
|
$flags = OBS_SNMP_ALL_NUMERIC_INDEX;
|
|
|
|
$oids = snmpwalk_cache_oid($device, 'swSfpStatTable', array(), 'FA-EXT-MIB', NULL, $flags);
|
|
if (!safe_count($oids)) {
|
|
return;
|
|
}
|
|
$oids = snmpwalk_cache_oid($device, 'connUnitPortIndex', $oids, 'FCMGMT-MIB', NULL, $flags);
|
|
//$oids = snmpwalk_cache_oid($device, 'connUnitPortName', $oids, 'FCMGMT-MIB', NULL, $flags);
|
|
|
|
$port_sw = snmpwalk_cache_oid($device, 'swFCPortSpecifier', array(), 'SW-MIB');
|
|
|
|
//print_vars($oids);
|
|
foreach ($oids as $index => $entry)
|
|
{
|
|
if (isset($port_sw[$entry['connUnitPortIndex']])) {
|
|
$entry = array_merge($entry, $port_sw[$entry['connUnitPortIndex']]);
|
|
}
|
|
$port_fc = $entry['swFCPortSpecifier'];
|
|
|
|
$port = dbFetchRow('SELECT * FROM `ports` WHERE `device_id` = ? AND (`ifName` = ? OR `ifDescr` REGEXP ?)', array($device['device_id'], $port_fc, '^FC[[:alnum:]]* port '.$port_fc.'$'));
|
|
if (!$port && is_numeric($port_fc))
|
|
{
|
|
// non-bladed
|
|
$port_fc = '0/' . $port_fc;
|
|
$port = dbFetchRow('SELECT * FROM `ports` WHERE `device_id` = ? AND (`ifName` = ? OR `ifDescr` REGEXP ?)', array($device['device_id'], $port_fc, '^FC[[:alnum:]]* port '.$port_fc.'$'));
|
|
}
|
|
|
|
$options = array('entPhysicalIndex' => $entry['connUnitPortIndex']);
|
|
if ($port)
|
|
{
|
|
$name = $port['ifDescr'];
|
|
$options['measured_class'] = 'port';
|
|
$options['measured_entity'] = $port['port_id'];
|
|
} else {
|
|
$name = $entry['connUnitPortName'];
|
|
}
|
|
|
|
$descr = $name . ' Temperature';
|
|
$oid_name = 'swSfpTemperature';
|
|
$oid_num = '.1.3.6.1.4.1.1588.2.1.1.1.28.1.1.1.'.$index;
|
|
$type = $mib . '-' . $oid_name;
|
|
$value = $entry[$oid_name];
|
|
|
|
discover_sensor_ng($device,'temperature', $mib, $oid_name, $oid_num, $entry['connUnitPortIndex'], NULL, $descr, 1, $value, $options);
|
|
|
|
$descr = $name . ' Voltage';
|
|
$oid_name = 'swSfpVoltage';
|
|
$oid_num = '.1.3.6.1.4.1.1588.2.1.1.1.28.1.1.2.'.$index;
|
|
$type = $mib . '-' . $oid_name;
|
|
$value = $entry[$oid_name];
|
|
|
|
discover_sensor_ng($device,'voltage', $mib, $oid_name, $oid_num, $entry['connUnitPortIndex'], NULL, $descr, 0.001, $value, $options);
|
|
|
|
$descr = $name . ' Bias Current';
|
|
$oid_name = 'swSfpCurrent';
|
|
$oid_num = '.1.3.6.1.4.1.1588.2.1.1.1.28.1.1.3.'.$index;
|
|
$type = $mib . '-' . $oid_name;
|
|
$value = $entry[$oid_name];
|
|
|
|
discover_sensor_ng($device,'current', $mib, $oid_name, $oid_num, $entry['connUnitPortIndex'], NULL, $descr, 0.001, $value, $options);
|
|
|
|
$descr = $name . ' Receive Power';
|
|
$oid_name = 'swSfpRxPower';
|
|
$oid_num = '.1.3.6.1.4.1.1588.2.1.1.1.28.1.1.4.'.$index;
|
|
$type = $mib . '-' . $oid_name;
|
|
$value = str_replace('-inf', '-40', $entry[$oid_name]);
|
|
|
|
discover_sensor_ng($device,'dbm', $mib, $oid_name, $oid_num, $entry['connUnitPortIndex'], NULL, $descr, 1, $value, $options);
|
|
|
|
$descr = $name . ' Transmit Power';
|
|
$oid_name = 'swSfpTxPower';
|
|
$oid_num = '.1.3.6.1.4.1.1588.2.1.1.1.28.1.1.5.'.$index;
|
|
$type = $mib . '-' . $oid_name;
|
|
$value = $entry[$oid_name];
|
|
|
|
discover_sensor_ng($device,'dbm', $mib, $oid_name, $oid_num, $entry['connUnitPortIndex'], NULL, $descr, 1, $value, $options);
|
|
|
|
}
|
|
|
|
// EOF
|