From b4fcb6eb5d3d312f055da17a61885d2a11adda59 Mon Sep 17 00:00:00 2001 From: Tom Laermans Date: Wed, 2 Mar 2011 15:03:05 +0000 Subject: [PATCH] fix snmp retries/timeout typo, fix division by zero with broken mempools and don't discard lm-sensors fans faster than 500rpm - found by Corentin Chary git-svn-id: http://www.observium.org/svn/observer/trunk@1779 61d68cd4-352d-0410-923a-c4978735b2b8 --- .../discovery/fanspeeds/lmsensors.inc.php | 2 +- includes/polling/mempools.inc.php | 9 +++++++- includes/snmp.inc.php | 23 ++++++++++--------- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/includes/discovery/fanspeeds/lmsensors.inc.php b/includes/discovery/fanspeeds/lmsensors.inc.php index c0ce50e8a..7a14808b9 100644 --- a/includes/discovery/fanspeeds/lmsensors.inc.php +++ b/includes/discovery/fanspeeds/lmsensors.inc.php @@ -20,7 +20,7 @@ if ($device['os'] == "linux") $oid = "1.3.6.1.4.1.2021.13.16.3.1.3.". $index; $current = snmp_get($device, $oid, "-Oqv", "LM-SENSORS-MIB"); $descr = trim(str_ireplace("fan-", "", $descr)); - if($current > '0' && $current < '500') { + if($current > '0') { discover_sensor($valid_sensor, 'fanspeed', $device, $oid, $index, 'lmsensors', $descr, '1', '1', NULL, NULL, NULL, NULL, $current); } } diff --git a/includes/polling/mempools.inc.php b/includes/polling/mempools.inc.php index 877aac271..553468283 100755 --- a/includes/polling/mempools.inc.php +++ b/includes/polling/mempools.inc.php @@ -34,7 +34,14 @@ while($mempool = mysql_fetch_array($mempool_data)) { ### Do we need a generic mempool poller? } - $percent = round($mempool['used'] / $mempool['total'] * 100, 2); + if ($mempool['total']) + { + $percent = round($mempool['used'] / $mempool['total'] * 100, 2); + } + else + { + $percent = 0; + } echo($percent."% "); diff --git a/includes/snmp.inc.php b/includes/snmp.inc.php index d5722b8b3..b95d95a15 100644 --- a/includes/snmp.inc.php +++ b/includes/snmp.inc.php @@ -70,10 +70,11 @@ function snmp_get_multi($device, $oids, $options = "-OQUs", $mib = NULL, $mibdir return $array; } -function snmp_get($device, $oid, $options = NULL, $mib = NULL, $mibdir = NULL) { +function snmp_get($device, $oid, $options = NULL, $mib = NULL, $mibdir = NULL) +{ global $debug,$config,$runtime_stats,$mibs_loaded; if (is_numeric($device['timeout'])) { $timeout = $device['timeout']; } elseif (isset($config['snmp']['timeout'])) { $timeout = $config['snmp']['timeout']; } - if (is_numeric($device['retries'])) { $timeout = $device['retries']; } elseif (isset($config['snmp']['retries'])) { $timeout = $config['snmp']['retries']; } + if (is_numeric($device['retries'])) { $timeout = $device['retries']; } elseif (isset($config['snmp']['retries'])) { $retries = $config['snmp']['retries']; } if ($config['snmp']['internal'] == true) { if ($mib && $mibdir && !$mibs_loaded[$mib]) @@ -115,7 +116,7 @@ function snmp_get($device, $oid, $options = NULL, $mib = NULL, $mibdir = NULL) { function snmp_walk($device, $oid, $options = NULL, $mib = NULL, $mibdir = NULL) { global $debug,$config,$runtime_stats; if (is_numeric($device['timeout'])) { $timeout = $device['timeout']; } elseif (isset($config['snmp']['timeout'])) { $timeout = $config['snmp']['timeout']; } - if (is_numeric($device['retries'])) { $timeout = $device['retries']; } elseif (isset($config['snmp']['retries'])) { $timeout = $config['snmp']['retries']; } + if (is_numeric($device['retries'])) { $timeout = $device['retries']; } elseif (isset($config['snmp']['retries'])) { $retries = $config['snmp']['retries']; } // php has no bulkwalk functionality, so use binary for this. if ($device['snmpver'] == 'v1' || $config['os'][$device['os']]['nobulk']) { $snmpcommand = $config['snmpwalk']; @@ -153,7 +154,7 @@ function snmp_walk($device, $oid, $options = NULL, $mib = NULL, $mibdir = NULL) function snmpwalk_cache_cip($device, $oid, $array, $mib = 0) { global $config; if (is_numeric($device['timeout'])) { $timeout = $device['timeout']; } elseif (isset($config['snmp']['timeout'])) { $timeout = $config['snmp']['timeout']; } - if (is_numeric($device['retries'])) { $timeout = $device['retries']; } elseif (isset($config['snmp']['retries'])) { $timeout = $config['snmp']['retries']; } + if (is_numeric($device['retries'])) { $timeout = $device['retries']; } elseif (isset($config['snmp']['retries'])) { $retries = $config['snmp']['retries']; } if ($device['snmpver'] == 'v1' || $config['os'][$device['os']]['nobulk']) { $snmpcommand = $config['snmpwalk']; } @@ -195,7 +196,7 @@ function snmp_cache_ifIndex($device) { global $config; if (is_numeric($device['timeout'])) { $timeout = $device['timeout']; } elseif (isset($config['snmp']['timeout'])) { $timeout = $config['snmp']['timeout']; } - if (is_numeric($device['retries'])) { $timeout = $device['retries']; } elseif (isset($config['snmp']['retries'])) { $timeout = $config['snmp']['retries']; } + if (is_numeric($device['retries'])) { $timeout = $device['retries']; } elseif (isset($config['snmp']['retries'])) { $retries = $config['snmp']['retries']; } if ($device['snmpver'] == 'v1' || $config['os'][$device['os']]['nobulk']) { $snmpcommand = $config['snmpwalk']; @@ -306,7 +307,7 @@ function snmpwalk_cache_twopart_oid($device, $oid, $array, $mib = 0) { global $config; if (is_numeric($device['timeout'])) { $timeout = $device['timeout']; } elseif (isset($config['snmp']['timeout'])) { $timeout = $config['snmp']['timeout']; } - if (is_numeric($device['retries'])) { $timeout = $device['retries']; } elseif (isset($config['snmp']['retries'])) { $timeout = $config['snmp']['retries']; } + if (is_numeric($device['retries'])) { $timeout = $device['retries']; } elseif (isset($config['snmp']['retries'])) { $retries = $config['snmp']['retries']; } if ($device['snmpver'] == 'v1' || $config['os'][$device['os']]['nobulk']) { $snmpcommand = $config['snmpwalk']; @@ -338,7 +339,7 @@ function snmpwalk_cache_twopart_oid($device, $oid, $array, $mib = 0) function snmpwalk_cache_threepart_oid($device, $oid, $array, $mib = 0) { global $config, $debug; if (is_numeric($device['timeout'])) { $timeout = $device['timeout']; } elseif (isset($config['snmp']['timeout'])) { $timeout = $config['snmp']['timeout']; } - if (is_numeric($device['retries'])) { $timeout = $device['retries']; } elseif (isset($config['snmp']['retries'])) { $timeout = $config['snmp']['retries']; } + if (is_numeric($device['retries'])) { $timeout = $device['retries']; } elseif (isset($config['snmp']['retries'])) { $retries = $config['snmp']['retries']; } if ($device['snmpver'] == 'v1' || $config['os'][$device['os']]['nobulk']) { $snmpcommand = $config['snmpwalk']; @@ -371,7 +372,7 @@ function snmpwalk_cache_threepart_oid($device, $oid, $array, $mib = 0) { function snmp_cache_slotport_oid($oid, $device, $array, $mib = 0) { global $config; if (is_numeric($device['timeout'])) { $timeout = $device['timeout']; } elseif (isset($config['snmp']['timeout'])) { $timeout = $config['snmp']['timeout']; } - if (is_numeric($device['retries'])) { $timeout = $device['retries']; } elseif (isset($config['snmp']['retries'])) { $timeout = $config['snmp']['retries']; } + if (is_numeric($device['retries'])) { $timeout = $device['retries']; } elseif (isset($config['snmp']['retries'])) { $retries = $config['snmp']['retries']; } if ($device['snmpver'] == 'v1' || $config['os'][$device['os']]['nobulk']) { $snmpcommand = $config['snmpwalk']; @@ -411,7 +412,7 @@ function snmp_cache_oid($oid, $device, $array, $mib = 0) function snmp_cache_port_oids($oids, $port, $device, $array, $mib=0) { global $config; if (is_numeric($device['timeout'])) { $timeout = $device['timeout']; } elseif (isset($config['snmp']['timeout'])) { $timeout = $config['snmp']['timeout']; } - if (is_numeric($device['retries'])) { $timeout = $device['retries']; } elseif (isset($config['snmp']['retries'])) { $timeout = $config['snmp']['retries']; } + if (is_numeric($device['retries'])) { $timeout = $device['retries']; } elseif (isset($config['snmp']['retries'])) { $retries = $config['snmp']['retries']; } foreach($oids as $oid){ $string .= " $oid.$port"; } @@ -439,7 +440,7 @@ function snmp_cache_port_oids($oids, $port, $device, $array, $mib=0) { function snmp_cache_portIfIndex ($device, $array) { global $config; if (is_numeric($device['timeout'])) { $timeout = $device['timeout']; } elseif (isset($config['snmp']['timeout'])) { $timeout = $config['snmp']['timeout']; } - if (is_numeric($device['retries'])) { $timeout = $device['retries']; } elseif (isset($config['snmp']['retries'])) { $timeout = $config['snmp']['retries']; } + if (is_numeric($device['retries'])) { $timeout = $device['retries']; } elseif (isset($config['snmp']['retries'])) { $retries = $config['snmp']['retries']; } $cmd = $config['snmpwalk'] . " -CI -m CISCO-STACK-MIB -O q -" . $device['snmpver'] . " -c " . $device['community'] . " "; $cmd .= " -M ".$config['install_dir']."/mibs/"; if (isset($timeout)) { $cmd .= " -t " . $timeout; } @@ -461,7 +462,7 @@ function snmp_cache_portIfIndex ($device, $array) { function snmp_cache_portName ($device, $array) { global $config; if (is_numeric($device['timeout'])) { $timeout = $device['timeout']; } elseif (isset($config['snmp']['timeout'])) { $timeout = $config['snmp']['timeout']; } - if (is_numeric($device['retries'])) { $timeout = $device['retries']; } elseif (isset($config['snmp']['retries'])) { $timeout = $config['snmp']['retries']; } + if (is_numeric($device['retries'])) { $timeout = $device['retries']; } elseif (isset($config['snmp']['retries'])) { $retries = $config['snmp']['retries']; } $cmd = $config['snmpwalk'] . " -CI -m CISCO-STACK-MIB -O Qs -" . $device['snmpver'] . " -c " . $device['community'] . " "; $cmd .= " -M ".$config['install_dir']."/mibs/"; if (isset($timeout)) { $cmd .= " -t " . $timeout; }