From 0c2293592067e4f398372b5622c386757905de83 Mon Sep 17 00:00:00 2001 From: Adam Amstrong Date: Sun, 4 Jul 2010 18:23:25 +0000 Subject: [PATCH] add split multicast/broadcast graphing for linux/ios/iosxe/iosxr and global toggle for polling if it (adds load) git-svn-id: http://www.observium.org/svn/observer/trunk@1288 61d68cd4-352d-0410-923a-c4978735b2b8 --- config.php.default | 1 + .../graphs/generic_multi_seperated.inc.php | 42 ++++++----- html/includes/graphs/port_nupkts.inc.php | 72 ++++++++++++++----- includes/defaults.inc.php | 4 ++ includes/polling/ports.inc.php | 27 ++++++- includes/static-config.php | 4 ++ 6 files changed, 112 insertions(+), 38 deletions(-) diff --git a/config.php.default b/config.php.default index 2eabdc4ebc..1be3e3c67f 100755 --- a/config.php.default +++ b/config.php.default @@ -117,6 +117,7 @@ $config['enable_syslog'] = 0; # Enable Syslog $config['enable_billing'] = 0; # Enable Billing $config['enable_inventory'] = 1; # Enable Inventory $config['enable_etherlike'] = 1; # Enable Etherlike +$config['enable_port_Xbcmc'] = 1; # Enable ifXEntry broadcast/multicast $config['enable_pseudowires'] = 1; # Enable Pseudowires $config['enable_ports_junoseatmvp'] = 0; # Enable JunOSe ATM VC Discovery/Poller $config['enable_ports_etherlike'] = 0; # Enable Polling EtherLike-MIB (doubles interface processing time) diff --git a/html/includes/graphs/generic_multi_seperated.inc.php b/html/includes/graphs/generic_multi_seperated.inc.php index 7ded1e2fcc..3ffef3a05f 100644 --- a/html/includes/graphs/generic_multi_seperated.inc.php +++ b/html/includes/graphs/generic_multi_seperated.inc.php @@ -2,12 +2,14 @@ include("common.inc.php"); + $units_descr = substr(str_pad($units_descr, 18),0,18); + $i = 0; - $rrd_options .= " COMMENT:' In\: Current Maximum '"; - if(!$nototal) {$rrd_options .= " COMMENT:'Total '";} - $rrd_options .= " COMMENT:'Out\: Current Maximum'"; - if(!$nototal) {$rrd_options .= " COMMENT:' Total'";} - $rrd_options .= " COMMENT:'\\\\n'"; + $rrd_options .= " COMMENT:'$units_descr Current Average Maximum\\n'"; + if(!$nototal) {$rrd_options .= " COMMENT:' Tot'";} + $rrd_options .= " COMMENT:'\\n'"; + + foreach($rrd_list as $rrd) { if(!$config['graph_colours'][$colours_in][$iter] || !$config['graph_colours'][$colours_out][$iter]) { $iter = 0; } @@ -15,8 +17,11 @@ $colour_in=$config['graph_colours'][$colours_in][$iter]; $colour_out=$config['graph_colours'][$colours_out][$iter]; - $rrd_options .= " DEF:".$in.$i."=".$rrd['filename'].":".$rra_in.":AVERAGE "; - $rrd_options .= " DEF:".$out.$i."=".$rrd['filename'].":".$rra_out.":AVERAGE "; + if($rrd['colour_area_in']) { $colour_in = $rrd['colour_area_in']; } + if($rrd['colour_area_out']) {$colour_out = $rrd['colour_area_out']; } + + $rrd_options .= " DEF:in".$i."=".$rrd['filename'].":".$rrd['rra_in'].":AVERAGE "; + $rrd_options .= " DEF:out".$i."=".$rrd['filename'].":".$rrd['rra_out'].":AVERAGE "; $rrd_options .= " CDEF:inB".$i."=in".$i.",$multiplier,* "; $rrd_options .= " CDEF:outB".$i."=out".$i.",$multiplier,*"; $rrd_options .= " CDEF:outB".$i."_neg=outB".$i.",-1,*"; @@ -26,18 +31,21 @@ $rrd_options .= " VDEF:totout".$i."=outB".$i.",TOTAL"; $rrd_options .= " VDEF:tot".$i."=octets".$i.",TOTAL"; } - $rrd_options .= " HRULE:999999999999999#" . $colour_out . ":\\\s:"; if($i) {$stack="STACK";} - $rrd_options .= " AREA:inB".$i."#" . $colour_in . ":'" . substr(str_pad($rrd['descr'], 18),0,18) . "':$stack"; - $rrd_optionsb .= " AREA:outB".$i."_neg#" . $colour_out . "::$stack"; - $rrd_options .= " GPRINT:inB".$i.":LAST:%6.2lf%s$units"; - $rrd_options .= " GPRINT:inB".$i.":MAX:%6.2lf%s$units"; + $rrd_options .= " AREA:inB".$i."#" . $colour_in . ":'" . substr(str_pad($rrd['descr'], 10),0,10) . "In ':$stack"; + $rrd_options .= " GPRINT:inB".$i.":LAST:%6.2lf%s"; + $rrd_options .= " GPRINT:inB".$i.":AVERAGE:%6.2lf%s"; + $rrd_options .= " GPRINT:inB".$i.":MAX:%6.2lf%s"; + if(!$nototal) { $rrd_options .= " GPRINT:totin".$i.":%6.2lf%s$total_units"; } - $rrd_options .= " COMMENT:' '"; - $rrd_options .= " GPRINT:outB".$i.":LAST:%6.2lf%s$units"; - $rrd_options .= " GPRINT:outB".$i.":MAX:%6.2lf%s$units"; - if(!$nototal) { $rrd_options .= " GPRINT:totout".$i.":%6.2lf%s$total_unit"; } - $rrd_options .= " COMMENT:\\\\n"; + $rrd_options .= " COMMENT:'\\n'"; + $rrd_optionsb .= " AREA:outB".$i."_neg#" . $colour_out . "::$stack"; + $rrd_options .= " HRULE:999999999999999#" . $colour_out . ":'" . substr(str_pad('', 10),0,10) . "Out':"; + $rrd_options .= " GPRINT:outB".$i.":LAST:%6.2lf%s"; + $rrd_options .= " GPRINT:outB".$i.":AVERAGE:%6.2lf%s"; + $rrd_options .= " GPRINT:outB".$i.":MAX:%6.2lf%s"; + if(!$nototal) { $rrd_options .= " GPRINT:totout".$i.":%6.2lf%s$total_unit"; } + $rrd_options .= " COMMENT:'\\n'"; $i++; $iter++; } $rrd_options .= $rrd_optionsb; diff --git a/html/includes/graphs/port_nupkts.inc.php b/html/includes/graphs/port_nupkts.inc.php index 5a8c207278..0dbf41d789 100644 --- a/html/includes/graphs/port_nupkts.inc.php +++ b/html/includes/graphs/port_nupkts.inc.php @@ -7,27 +7,61 @@ if($_GET['id']) { $interface = $_GET['id']; $query = mysql_query("SELECT * FROM `ports` AS I, `devices` AS D WHERE I.interface_id = '".$interface."' AND I.device_id = D.device_id"); - $port = mysql_fetch_array($query); -if(is_file($config['rrd_dir'] . "/" . $port['hostname'] . "/" . safename($port['ifIndex'] . ".rrd"))) { + +if(is_file($config['rrd_dir'] . "/" . $port['hostname'] . "/ifx-" . safename($port['ifIndex'] . ".rrd"))) +{ + $rrd_filename = $config['rrd_dir'] . "/" . $port['hostname'] . "/ifx-" . safename($port['ifIndex'] . ".rrd"); + + $rrd_list[1]['filename'] = $config['rrd_dir'] . "/" . $port['hostname'] . "/ifx-" . safename($port['ifIndex'] . ".rrd"); + $rrd_list[1]['descr'] = $int['ifDescr']; + $rrd_list[1]['rra_in'] = "InBroadcastPkts"; + $rrd_list[1]['rra_out'] = "OutBroadcastPkts"; + $rrd_list[1]['descr'] = "Broadcast"; + $rrd_list[1]['colour_area_in'] = "BB77BB"; + $rrd_list[1]['colour_area_out'] = "FFDD88"; + + $rrd_list[4]['filename'] = $config['rrd_dir'] . "/" . $port['hostname'] . "/ifx-" . safename($port['ifIndex'] . ".rrd"); + $rrd_list[4]['descr'] = $int['ifDescr']; + $rrd_list[4]['rra_in'] = "InMulticastPkts"; + $rrd_list[4]['rra_out'] = "OutMulticastPkts"; + $rrd_list[4]['descr'] = "Multicast"; + $rrd_list[4]['colour_area_in'] = "805080"; + $rrd_list[4]['colour_area_out'] = "c0a060"; + + $units=''; + $units_descr='Packets/sec'; + $total_units='B'; + $colours_in='greens'; + $multiplier = "1"; + $colours_out = 'blues'; + + $nototal = 1; + + include ("generic_multi_seperated.inc.php"); + +} +elseif(is_file($config['rrd_dir'] . "/" . $port['hostname'] . "/" . safename($port['ifIndex'] . ".rrd"))) +{ $rrd_filename = $config['rrd_dir'] . "/" . $port['hostname'] . "/" . safename($port['ifIndex'] . ".rrd"); + + $rra_in = "INNUCASTPKTS"; + $rra_out = "OUTNUCASTPKTS"; + + $colour_area_in = "AA66AA"; + $colour_line_in = "330033"; + $colour_area_out = "FFDD88"; + $colour_line_out = "FF6600"; + + $colour_area_in_max = "cc88cc"; + $colour_area_out_max = "FFefaa"; + + $unit_text = "Packets"; + + $graph_max = 1; + + include("generic_duplex.inc.php"); + } -$rra_in = "INNUCASTPKTS"; -$rra_out = "OUTNUCASTPKTS"; - -$colour_area_in = "AA66AA"; -$colour_line_in = "330033"; -$colour_area_out = "FFDD88"; -$colour_line_out = "FF6600"; - -$colour_area_in_max = "cc88cc"; -$colour_area_out_max = "FFefaa"; - -$unit_text = "Packets"; - -$graph_max = 1; - -include("generic_duplex.inc.php"); - ?> diff --git a/includes/defaults.inc.php b/includes/defaults.inc.php index 909f609de3..1c480cc65a 100644 --- a/includes/defaults.inc.php +++ b/includes/defaults.inc.php @@ -76,6 +76,10 @@ $config['show_overview_tab'] = true; $config['overview_show_sysDescr'] = true; +## Poller Modules + +$config['enable_port_Xbcmc'] = 1; # Enable ifXEntry broadcast/multicast + ### Ignores & Allows $config['bad_if'] = array("voip-null", "virtual-", "unrouted", "eobc", "mpls", "sl0", "lp0", "faith0", diff --git a/includes/polling/ports.inc.php b/includes/polling/ports.inc.php index f386a09eac..bdd7de5033 100755 --- a/includes/polling/ports.inc.php +++ b/includes/polling/ports.inc.php @@ -151,13 +151,36 @@ RRA:MAX:0.5:288:797"); } + $ifx_rrd = $host_rrd . "/ifx-" . safename($port['ifIndex'] . ".rrd"); + $ifx_rrd_cmd = $config['rrdtool'] . " create $ifx_rrd -s 300 \ + DS:InBroadcastPkts:DERIVE:600:0:12500000000 \ + DS:OutBroadcastPkts:DERIVE:600:0:12500000000 \ + DS:InMulticastPkts:DERIVE:600:0:12500000000 \ + DS:OutMulticastPkts:DERIVE:600:0:12500000000 \ + RRA:AVERAGE:0.5:1:600 \ + RRA:AVERAGE:0.5:6:700 \ + RRA:AVERAGE:0.5:24:775 \ + RRA:AVERAGE:0.5:288:797 \ + RRA:MAX:0.5:1:600 \ + RRA:MAX:0.5:6:700 \ + RRA:MAX:0.5:24:775 \ + RRA:MAX:0.5:288:797"; + + foreach ($stat_oids as $oid) { /// Copy values from array to global variables and force numeric. $$oid = $this_port[$oid]; if(!is_numeric($$oid)) { $$oid = "0"; } } - $woo = "$polled:$ifInOctets:$ifOutOctets:$ifInErrors:$ifOutErrors:$ifInUcastPkts:$ifOutUcastPkts:$ifInNUcastPkts:$ifOutNUcastPkts"; - $ret = rrdtool_update("$rrdfile", $woo); + $if_rrd_update = "$polled:$ifInOctets:$ifOutOctets:$ifInErrors:$ifOutErrors:$ifInUcastPkts:$ifOutUcastPkts:$ifInNUcastPkts:$ifOutNUcastPkts"; + $ret = rrdtool_update("$rrdfile", $if_rrd_update); + + + if($config['enable_port_Xbcmc'] && $config['os'][$device['os']]['ifXmcbc']) { + if(!is_file($ifx_rrd)) { shell_exec($ifx_rrd_cmd); } + $ifx_rrd_update = "$polled:$ifHCInBroadcastPkts:$ifHCOutBroadcastPkts:$ifHCInMulticastPkts:$ifHCOutMulticastPkts"; + $ret = rrdtool_update($ifx_rrd, $ifx_rrd_update); + } /// End Update IF-MIB diff --git a/includes/static-config.php b/includes/static-config.php index d531cef4dd..4bf3d1b9b0 100644 --- a/includes/static-config.php +++ b/includes/static-config.php @@ -13,6 +13,7 @@ $config['os']['default']['overtext'] = "CPU & Memory Usage"; $config['os']['linux']['group'] = "unix"; $config['os']['linux']['text'] = "Linux"; +$config['os']['linux']['ifXmcbc'] = 1; $config['os']['freebsd']['group'] = "unix"; $config['os']['freebsd']['text'] = "FreeBSD"; @@ -43,14 +44,17 @@ $config['os']['opensolaris']['text'] = "Sun OpenSolaris"; $config['os']['ios']['group'] = "ios"; $config['os']['ios']['text'] = "Cisco IOS"; $config['os']['ios']['type'] = "network"; +$config['os']['ios']['ifXmcbc'] = 1; $config['os']['iosxe']['group'] = "ios"; $config['os']['iosxe']['text'] = "Cisco IOS-XE"; $config['os']['iosxe']['type'] = "network"; +$config['os']['iosxe']['ifXmcbc'] = 1; $config['os']['iosxr']['group'] = "ios"; $config['os']['iosxr']['text'] = "Cisco IOS-XR"; $config['os']['iosxr']['type'] = "network"; +$config['os']['iosxr']['ifXmcbc'] = 1; $config['os']['asa']['group'] = "ios"; $config['os']['asa']['text'] = "Cisco ASA";