From ea29977d296dfe92e77e265f4352ca943e68aae9 Mon Sep 17 00:00:00 2001 From: Paul Gear Date: Wed, 2 Dec 2015 19:40:21 +1000 Subject: [PATCH] Support MIB-based overrides in processor & memory pools --- html/pages/device/health/mempool.inc.php | 45 ++++++++++++++++---- html/pages/device/health/processor.inc.php | 31 ++++++++++---- includes/common.php | 48 +++++++++++++++++++++- 3 files changed, 106 insertions(+), 18 deletions(-) diff --git a/html/pages/device/health/mempool.inc.php b/html/pages/device/health/mempool.inc.php index c53189caf7..b21c0fc29e 100644 --- a/html/pages/device/health/mempool.inc.php +++ b/html/pages/device/health/mempool.inc.php @@ -4,8 +4,16 @@ $graph_type = 'mempool_usage'; $i = '1'; +if (count_mib_mempools($device) > 0) { + $mempools = get_mib_mempools($device); + $graph_type = 'device_mempool'; +} +else { + $mempools = dbFetchRows('SELECT * FROM `mempools` WHERE device_id = ?', array($device['device_id'])); +} + // FIXME css alternating colours -foreach (dbFetchRows('SELECT * FROM `mempools` WHERE device_id = ?', array($device['device_id'])) as $mempool) { +foreach ($mempools as $mempool) { if (!is_integer($i / 2)) { $row_colour = $list_colour_a; } @@ -15,30 +23,49 @@ foreach (dbFetchRows('SELECT * FROM `mempools` WHERE device_id = ?', array($devi $text_descr = rewrite_entity_descr($mempool['mempool_descr']); - $mempool_url = 'graphs/id='.$mempool['mempool_id'].'/type=mempool_usage/'; - $mini_url = 'graph.php?id='.$mempool['mempool_id'].'&type='.$graph_type.'&from='.$config['time']['day'].'&to='.$config['time']['now'].'&width=80&height=20&bg=f4f4f4'; + if ($graph_type == 'device_mempool') { + $id = 'device'; + $val = $device['device_id']; + } + else { + $id = 'id'; + $val = $mempool['mempool_id']; + } + $mempool_url = 'graphs/'.$id.'='.$val.'/type='.$graph_type.'/'; + $mini_url = 'graph.php?'.$id.'='.$val.'&type='.$graph_type.'&from='.$config['time']['day'].'&to='.$config['time']['now'].'&width=80&height=20&bg=f4f4f4'; $mempool_popup = "onmouseover=\"return overlib('
".$device['hostname'].' - '.$text_descr; - $mempool_popup .= "
"; + $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']); - $perc = round(($mempool['mempool_used'] / $mempool['mempool_total'] * 100)); + // don't bother recalculating if mempools use percentage + if ($mempool['percentage'] === true) { + $perc = round($mempool['mempool_used']); + } + else { + $perc = round(($mempool['mempool_used'] / $mempool['mempool_total'] * 100)); + } $background = get_percentage_colours($percent); $right_background = $background['right']; $left_background = $background['left']; - $graph_array['id'] = $mempool['mempool_id']; + $graph_array[$id] = $val; $graph_array['type'] = $graph_type; echo "
-
-

$text_descr
$used/$total - $perc% used

-
"; +
"; + if ($mempool['percentage'] === true) { + echo "

$text_descr
$perc% used

"; + } + else { + echo "

$text_descr
$used/$total - $perc% used

"; + } + echo "
"; echo "
"; include 'includes/print-graphrow.inc.php'; echo "
"; diff --git a/html/pages/device/health/processor.inc.php b/html/pages/device/health/processor.inc.php index dd60448a3b..1ffdc2a6bb 100644 --- a/html/pages/device/health/processor.inc.php +++ b/html/pages/device/health/processor.inc.php @@ -3,21 +3,36 @@ $graph_type = 'processor_usage'; $i = '1'; -foreach (dbFetchRows('SELECT * FROM `processors` WHERE device_id = ?', array($device['device_id'])) as $proc) { - $proc_url = 'graphs/id='.$proc['processor_id'].'/type=processor_usage/'; - $mini_url = 'graph.php?id='.$proc['processor_id'].'&type='.$graph_type.'&from='.$config['time']['day'].'&to='.$config['time']['now'].'&width=80&height=20&bg=f4f4f4'; +if (count_mib_processors($device) > 0) { + $processors = get_mib_processors($device); + $graph_type = 'device_processor'; +} +else { + $processors = dbFetchRows('SELECT * FROM `processors` WHERE device_id = ?', array($device['device_id'])); +} - $text_descr = $proc['processor_descr']; +foreach ($processors as $proc) { + if ($graph_type == 'device_processor') { + $id = 'device'; + $val = $device['device_id']; + } + else { + $id = 'id'; + $val = $proc['processor_id']; + } + $proc_url = 'graphs/'.$id.'='.$val.'/type='.$graph_type.'/'; + $base_url = 'graph.php?'.$id.'='.$val.'&type='.$graph_type.'&from='.$config['time']['day'].'&to='.$config['time']['now']; + $mini_url = $base_url.'&width=80&height=20&bg=f4f4f4'; - $text_descr = rewrite_entity_descr($text_descr); + $text_descr = rewrite_entity_descr($proc['processor_descr']); $proc_popup = "onmouseover=\"return overlib('
".$device['hostname'].' - '.$text_descr; - $proc_popup .= "
"; + $proc_popup .= ""; $proc_popup .= "', RIGHT".$config['overlib_defaults'].');" onmouseout="return nd();"'; $percent = round($proc['processor_usage']); - $graph_array['id'] = $proc['processor_id']; + $graph_array[$id] = $val; $graph_array['type'] = $graph_type; echo "
@@ -27,4 +42,4 @@ foreach (dbFetchRows('SELECT * FROM `processors` WHERE device_id = ?', array($de echo "
"; include 'includes/print-graphrow.inc.php'; echo "
"; -}//end foreach \ No newline at end of file +}//end foreach diff --git a/includes/common.php b/includes/common.php index d11e101296..bf5b76d019 100644 --- a/includes/common.php +++ b/includes/common.php @@ -767,8 +767,54 @@ function count_mib_health($device) } // count_mib_health +function get_mibval($device, $oid) +{ + $sql = 'SELECT * FROM `device_oids` WHERE `device_id` = ? AND `oid` = ?'; + return dbFetchRow($sql, array($device['device_id'], $oid)); +} // get_mibval + + /* - * FIXME: Dummy implementation + * FIXME: Dummy implementation - needs an abstraction for each device + */ +function get_mib_mempools($device) +{ + $mempools = array(); + if ($device['os'] == 'ruckuswireless') { + $mempool = array(); + $mibvals = get_mibval($device, '.1.3.6.1.4.1.25053.1.2.1.1.1.15.14.0'); + $mempool['mempool_descr'] = $mibvals['object_type']; + $mempool['mempool_id'] = 0; + $mempool['mempool_total'] = 100; + $mempool['mempool_used'] = $mibvals['numvalue']; + $mempool['mempool_free'] = 100 - $mibvals['numvalue']; + $mempool['percentage'] = true; + $mempools[] = $mempool; + } + return $mempools; +} // get_mib_mempools + + +/* + * FIXME: Dummy implementation - needs an abstraction for each device + */ +function get_mib_processors($device) +{ + $processors = array(); + if ($device['os'] == 'ruckuswireless') { + $proc = array(); + $mibvals = get_mibval($device, '.1.3.6.1.4.1.25053.1.2.1.1.1.15.13.0'); + $proc['processor_descr'] = $mibvals['object_type']; + $proc['processor_id'] = 0; + $proc['processor_usage'] = $mibvals['numvalue']; + $processors[] = $proc; + } + return $processors; +} // get_mib_processors + + +/* + * FIXME: Dummy implementation - needs an abstraction for each device * @return true if there is a custom graph defined for this type, subtype, and device */ function is_custom_graph($type, $subtype, $device)