$entry) { // echo("[" . $entry['entSensorType'] . "|" . $entry['entSensorValue']. "|" . $index . "]"); if ($entitysensor[$entry['entSensorType']] && is_numeric($entry['entSensorValue']) && is_numeric($index)) { $entPhysicalIndex = $index; if ($entity_array[$index]['entPhysicalName'] || $device['os'] == 'iosxr') { $descr = rewrite_entity_descr($entity_array[$index]['entPhysicalName']).' - '.rewrite_entity_descr($entity_array[$index]['entPhysicalDescr']); } else { $descr = $entity_array[$index]['entPhysicalDescr']; $descr = rewrite_entity_descr($descr); } // Set description based on measured entity if it exists if (is_numeric($entry['entSensorMeasuredEntity']) && $entry['entSensorMeasuredEntity']) { $measured_descr = $entity_array[$entry['entSensorMeasuredEntity']]['entPhysicalName']; if (!$measured_descr) { $measured_descr = $entity_array[$entry['entSensorMeasuredEntity']]['entPhysicalDescr']; } $descr = $measured_descr.' - '.$descr; } // Bit dirty also, clean later $descr = str_replace('Temp: ', '', $descr); $descr = str_ireplace('temperature ', '', $descr); $oid = '.1.3.6.1.4.1.9.9.91.1.1.1.1.4.'.$index; $current = $entry['entSensorValue']; $type = $entitysensor[$entry['entSensorType']]; // echo("$index : ".$entry['entSensorScale']."|"); // FIXME this stuff is foul if ($entry['entSensorScale'] == 'nano') { $divisor = '1000000000'; $multiplier = '1'; } if ($entry['entSensorScale'] == 'micro') { $divisor = '1000000'; $multiplier = '1'; } if ($entry['entSensorScale'] == 'milli') { $divisor = '1000'; $multiplier = '1'; } if ($entry['entSensorScale'] == 'units') { $divisor = '1'; $multiplier = '1'; } if ($entry['entSensorScale'] == 'kilo') { $divisor = '1'; $multiplier = '1000'; } if ($entry['entSensorScale'] == 'mega') { $divisor = '1'; $multiplier = '1000000'; } if ($entry['entSensorScale'] == 'giga') { $divisor = '1'; $multiplier = '1000000000'; } if (is_numeric($entry['entSensorPrecision']) && $entry['entSensorPrecision'] > '0') { $divisor = $divisor.str_pad('', $entry['entSensorPrecision'], '0'); } $current = ($current * $multiplier / $divisor); // Set thresholds to null $limit = null; $low_limit = null; $warn_limit = null; $warn_limit_low = null; // Check thresholds for this entry (bit dirty, but it works!) if (is_array($t_oids[$index])) { foreach ($t_oids[$index] as $t_index => $entry) { // Critical Limit if ($entry['entSensorThresholdSeverity'] == 'major' && $entry['entSensorThresholdRelation'] == 'greaterOrEqual') { $limit = ($entry['entSensorThresholdValue'] * $multiplier / $divisor); } if ($entry['entSensorThresholdSeverity'] == 'major' && $entry['entSensorThresholdRelation'] == 'lessOrEqual') { $limit_low = ($entry['entSensorThresholdValue'] * $multiplier / $divisor); } // Warning Limit if ($entry['entSensorThresholdSeverity'] == 'minor' && $entry['entSensorThresholdRelation'] == 'greaterOrEqual') { $warn_limit = ($entry['entSensorThresholdValue'] * $multiplier / $divisor); } if ($entry['entSensorThresholdSeverity'] == 'minor' && $entry['entSensorThresholdRelation'] == 'lessOrEqual') { $warn_limit_low = ($entry['entSensorThresholdValue'] * $multiplier / $divisor); } }//end foreach }//end if // End Threshold code $ok = true; if ($current == '-127') { $ok = false; } //end if // if ($type == "temperature" && $current < 1) { $ok = FALSE; } // False reading. Temperature <1 :) if ($descr == '') { $ok = false; } //end if if ($ok) { // echo("\n".$valid['sensor'].", $type, $device, $oid, $index, 'cisco-entity-sensor', $descr, $divisor, $multiplier, $limit_low, $warn_limit_low, $warn_limit, $limit, $current"); discover_sensor($valid['sensor'], $type, $device, $oid, $index, 'cisco-entity-sensor', $descr, $divisor, $multiplier, $limit_low, $warn_limit_low, $warn_limit, $limit, $current, 'snmp', $entPhysicalIndex, $entry['entSensorMeasuredEntity']); } $cisco_entity_temperature = 1; unset($limit, $limit_low, $warn_limit, $warn_limit_low); }//end if }//end foreach }//end if }//end if