$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 ?)', [$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 ?)', [$device['device_id'], $port_fc, '^FC[[:alnum:]]* port ' . $port_fc . '$']); } $options = ['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; $value = $entry[$oid_name]; discover_sensor_ng($device, 'temperature', $mib, $oid_name, $oid_num, $entry['connUnitPortIndex'], $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; $value = $entry[$oid_name]; discover_sensor_ng($device, 'voltage', $mib, $oid_name, $oid_num, $entry['connUnitPortIndex'], $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; $value = $entry[$oid_name]; discover_sensor_ng($device, 'current', $mib, $oid_name, $oid_num, $entry['connUnitPortIndex'], $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; $value = str_replace('-inf', '-40', $entry[$oid_name]); discover_sensor_ng($device, 'dbm', $mib, $oid_name, $oid_num, $entry['connUnitPortIndex'], $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; $value = $entry[$oid_name]; discover_sensor_ng($device, 'dbm', $mib, $oid_name, $oid_num, $entry['connUnitPortIndex'], $descr, 1, $value, $options); } // EOF