From d58bd29035b02755858b7dea6598be12c32bd3d5 Mon Sep 17 00:00:00 2001 From: Adam Amstrong Date: Mon, 22 Feb 2010 00:57:13 +0000 Subject: [PATCH] add generic memory pool poller and add old-cisco-memory-pool-mib support git-svn-id: http://www.observium.org/svn/observer/trunk@931 61d68cd4-352d-0410-923a-c4978735b2b8 --- discovery.php | 2 + html/includes/graphs/mempool.inc.php | 32 ++++++++++++ html/pages/device/overview.inc.php | 5 +- html/pages/device/overview/mempools.inc.php | 51 +++++++++++++++++++ includes/discovery/functions.inc.php | 23 +++++++++ includes/discovery/mempools-cmp.inc.php | 20 ++++++++ includes/discovery/mempools.inc.php | 28 +++++++++++ includes/polling/device-ios.inc.php | 8 ++- includes/polling/mempools-cmp.inc.php | 16 ++++++ includes/polling/mempools.inc.php | 56 +++++++++++++++++++++ poll-device.php | 1 + 11 files changed, 238 insertions(+), 4 deletions(-) create mode 100644 html/includes/graphs/mempool.inc.php create mode 100644 html/pages/device/overview/mempools.inc.php create mode 100755 includes/discovery/mempools-cmp.inc.php create mode 100755 includes/discovery/mempools.inc.php create mode 100755 includes/polling/mempools-cmp.inc.php create mode 100755 includes/polling/mempools.inc.php diff --git a/discovery.php b/discovery.php index 99348fede6..2f71689c35 100755 --- a/discovery.php +++ b/discovery.php @@ -96,6 +96,8 @@ while ($device = mysql_fetch_array($device_query)) include("includes/discovery/processors.inc.php"); + include("includes/discovery/mempools.inc.php"); + ## Discover IPv4 Addresses include("includes/discovery/ipv4-addresses.inc.php"); diff --git a/html/includes/graphs/mempool.inc.php b/html/includes/graphs/mempool.inc.php new file mode 100644 index 0000000000..b76b909d14 --- /dev/null +++ b/html/includes/graphs/mempool.inc.php @@ -0,0 +1,32 @@ + diff --git a/html/pages/device/overview.inc.php b/html/pages/device/overview.inc.php index b36cc12582..575ca64b01 100644 --- a/html/pages/device/overview.inc.php +++ b/html/pages/device/overview.inc.php @@ -72,8 +72,9 @@ echo("
"); ### Right Pane include("overview/processors.inc.php"); -include("overview/cemp.inc.php"); -include("overview/cmp.inc.php"); +include("overview/mempools.inc.php"); +#include("overview/cemp.inc.php"); +#include("overview/cmp.inc.php"); include("overview/hrStorage.inc.php"); include("overview/temperatures.inc.php"); include("overview/fanspeeds.inc.php"); diff --git a/html/pages/device/overview/mempools.inc.php b/html/pages/device/overview/mempools.inc.php new file mode 100644 index 0000000000..89141c88c7 --- /dev/null +++ b/html/pages/device/overview/mempools.inc.php @@ -0,0 +1,51 @@ +"); + echo("

Memory Pools

"); + echo(""); + $mempool_rows = '1'; + $mempools = mysql_query("SELECT * FROM `mempools` WHERE device_id = '" . $device['device_id'] . "'"); + while($mempool = mysql_fetch_array($mempools)) { + if(is_integer($mempool_rows/2)) { $row_colour = $list_colour_a; } else { $row_colour = $list_colour_b; } + $perc = round($mempool['mempool_used'] / ($mempool['mempool_total']) * 100,2); + $text_descr = $mempool['mempool_descr']; + $text_descr = str_replace("Routing Processor", "RP", $text_descr); + $text_descr = str_replace("Switching Processor", "SP", $text_descr); + $text_descr = str_replace("Processor", "Proc", $text_descr); + $text_descr = str_replace("Sub-Module", "Mod", $text_descr); + $text_descr = str_replace("DFC Card", "DFC", $text_descr); + + $mempool_url = "/device/".$device['device_id']."/health/memory/"; + $mini_url = $config['base_url'] . "/graph.php?id=".$mempool['mempool_id']."&type=mempool&from=".$day."&to=".$now."&width=80&height=20&bg=f4f4f4"; + + $mempool_popup = "onmouseover=\"return overlib('
".$device['hostname']." - ".$text_descr; + $mempool_popup .= "
"; + $mempool_popup .= "', RIGHT".$config['overlib_defaults'].");\" onmouseout=\"return nd();\""; + + $total = formatStorage($mempool['mempool_total']); + $used = formatStorage($mempool['mempool_used']); + $free = formatStorage($mempool['mempool_free']); + + if($perc > '90') { $left_background='c4323f'; $right_background='C96A73'; + } elseif($perc > '75') { $left_background='bf5d5b'; $right_background='d39392'; + } elseif($perc > '50') { $left_background='bf875b'; $right_background='d3ae92'; + } elseif($perc > '25') { $left_background='5b93bf'; $right_background='92b7d3'; + } else { $left_background='9abf5b'; $right_background='bbd392'; } + + echo(" + + + "); + + + $mempool_rows++; + } + echo("
" . $text_descr . " + ".print_percentage_bar (200, 20, $perc, "$used / $total", "ffffff", $left_background, $perc . "%", "ffffff", $right_background)." +
"); + echo("
"); +} + + +?> diff --git a/includes/discovery/functions.inc.php b/includes/discovery/functions.inc.php index 71d974eb44..bac4c28530 100644 --- a/includes/discovery/functions.inc.php +++ b/includes/discovery/functions.inc.php @@ -48,6 +48,29 @@ function discover_processor(&$valid_processor, $device, $oid, $index, $type, $de } } + +function discover_mempool(&$valid_mempool, $device, $index, $type, $descr, $precision = "1", $entPhysicalIndex = NULL, $hrDeviceIndex = NULL) { + + global $config; global $debug; + if($debug) { echo("$device, $oid, $index, $type, $descr, $precision, $current, $entPhysicalIndex, $hrDeviceIndex\n"); } + if($descr) { + if(mysql_result(mysql_query("SELECT count(mempool_id) FROM `mempools` WHERE `mempool_index` = '$index' AND `device_id` = '".$device['device_id']."' AND `mempool_type` = '$type'"),0) == '0') { + $query = "INSERT INTO mempools (`entPhysicalIndex`, `hrDeviceIndex`, `device_id`, `mempool_descr`, `mempool_index`, `mempool_type`, `mempool_precision`) + values ('$entPhysicalIndex', '$hrDeviceIndex', '".$device['device_id']."', '$descr', '$index', '$type','$precision')"; + mysql_query($query); + if($debug) { print $query . "\n"; } + echo("+"); + } else { + echo("."); + $query = "UPDATE `mempools` SET `mempool_descr` = '".$descr."' WHERE `device_id` = '".$device['device_id']."' AND `mempool_index` = '".$index."' AND `mempool_type` = '".$type."'"; + mysql_query($query); + if($debug) { print $query . "\n"; } + } + $valid_mempool[$type][$index] = 1; + } +} + + function discover_fan($device, $oid, $index, $type, $descr, $precision = 1, $low_limit = NULL, $high_limit = NULL, $current = NULL) { global $config; global $debug; diff --git a/includes/discovery/mempools-cmp.inc.php b/includes/discovery/mempools-cmp.inc.php new file mode 100755 index 0000000000..6fb42106e8 --- /dev/null +++ b/includes/discovery/mempools-cmp.inc.php @@ -0,0 +1,20 @@ + $cmp) { + if(is_numeric($cmp['ciscoMemoryPoolUsed']) && is_numeric($index)) { + discover_mempool($valid_mempool, $device, $index, "cmp", $cmp['ciscoMemoryPoolName'], "1", NULL, NULL); + } + } + } +} + +?> diff --git a/includes/discovery/mempools.inc.php b/includes/discovery/mempools.inc.php new file mode 100755 index 0000000000..bc0a635a05 --- /dev/null +++ b/includes/discovery/mempools.inc.php @@ -0,0 +1,28 @@ + " . $mempool_type . "\n"); } + if(!$valid_mempool[$mempool_type][$mempool_index]) { + echo("-"); + mysql_query("DELETE FROM `mempools` WHERE mempool_id = '" . $test_mempool['mempool_id'] . "'"); + } + unset($mempool_oid); unset($mempool_type); +} + +unset($valid_mempool); +echo("\n"); + +?> diff --git a/includes/polling/device-ios.inc.php b/includes/polling/device-ios.inc.php index 81187a9833..19e3381ac6 100755 --- a/includes/polling/device-ios.inc.php +++ b/includes/polling/device-ios.inc.php @@ -20,9 +20,13 @@ $snmp_cmdb .= " entPhysicalModelName.1 entPhysicalContainedIn.1 entPhysicalName.1 entPhysicalSoftwareRev.1 "; $snmp_cmdb .= " entPhysicalModelName.1001 entPhysicalContainedIn.1001"; $snmp_cmdb .= " cardDescr.1 cardSlotNumber.1"; - list($model_1,$contained_1,$name_1,$ver_1,$model_1001,$contained_1001,$descr_1,$slot_1) = explode("\n", shell_exec($snmp_cmdb)); - if(($contained_1 == "0" || $name_1 == "Chassis") && strpos($model_1, "No") === FALSE) { $ciscomodel = $model_1; list($version_1) = explode(",",$ver_1); } + $model_data = shell_exec($snmp_cmdb); + if($debug) {echo($model_data);} + list($model_1,$contained_1,$name_1,$ver_1,$model_1001,$contained_1001,$descr_1,$slot_1) = explode("\n", $model_data); + + if($slot_1 == "-1" && strpos($descr_1, "No") === FALSE) { $ciscomodel = $descr_1; } + if(($contained_1 == "0" || $name_1 == "Chassis") && strpos($model_1, "No") === FALSE) { $ciscomodel = $model_1; list($version_1) = explode(",",$ver_1); } if($contained_1001 == "0" && strpos($model_1001, "No") === FALSE) { $ciscomodel = $model_1001; } $ciscomodel = str_replace("\"","",$ciscomodel); if($ciscomodel) { $hardware = $ciscomodel; unset($ciscomodel); } diff --git a/includes/polling/mempools-cmp.inc.php b/includes/polling/mempools-cmp.inc.php new file mode 100755 index 0000000000..83bee2472c --- /dev/null +++ b/includes/polling/mempools-cmp.inc.php @@ -0,0 +1,16 @@ + diff --git a/includes/polling/mempools.inc.php b/includes/polling/mempools.inc.php new file mode 100755 index 0000000000..eaa1d8d2fa --- /dev/null +++ b/includes/polling/mempools.inc.php @@ -0,0 +1,56 @@ + diff --git a/poll-device.php b/poll-device.php index 9aba77052f..162fcb134f 100755 --- a/poll-device.php +++ b/poll-device.php @@ -114,6 +114,7 @@ while ($device = mysql_fetch_array($device_query)) { include("includes/polling/fanspeeds.inc.php"); include("includes/polling/voltages.inc.php"); include("includes/polling/processors.inc.php"); + include("includes/polling/mempools.inc.php"); include("includes/polling/device-netstats.inc.php"); include("includes/polling/ipSystemStats.inc.php"); include("includes/polling/ports.inc.php");