Index: html/includes/graphs/port/baystackstats_dropnores.inc.php =================================================================== --- html/includes/graphs/port/baystackstats_dropnores.inc.php (Revision 0) +++ html/includes/graphs/port/baystackstats_dropnores.inc.php (Arbeitskopie) @@ -0,0 +1,33 @@ +<?php + +/** + * Observium + * + * This file is part of Observium. + * + * @package observium + * @subpackage graphs + * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2018 Observium Limited + * + */ + +$total_units = "Pkts"; +//$multiplier = "8"; +$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/'.'port-'.get_port_rrdindex($port).'-baystackstats.rrd'; + +$graph_title = "Drop on no Resources"; +$colours = 'red'; + +$ds = 'IfNoResPktsDropped'; + +$colour_area = "ef3b2c"; +$colour_line = "67000d"; + +$colour_area_max = "dddddd"; + +$graph_max = 1; + +$unit_text = "Drop No Resources"; + +include($config['html_dir']."/includes/graphs/generic_simplex.inc.php"); + Index: html/includes/graphs/port/baystackstats_pfcinout.inc.php =================================================================== --- html/includes/graphs/port/baystackstats_pfcinout.inc.php (Revision 0) +++ html/includes/graphs/port/baystackstats_pfcinout.inc.php (Arbeitskopie) @@ -0,0 +1,39 @@ +<?php + +/** + * Observium + * + * This file is part of Observium. + * + * @package observium + * @subpackage graphs + * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2018 Observium Limited + * + */ + + +$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/'.'port-'.get_port_rrdindex($port).'-baystackstats.rrd'; + +$ds_in = "IfInPfcFrames"; +$ds_out = "IfOutPfcFrames"; + +$colour_area_in = "AA66AA"; +$colour_line_in = darken_color($colour_area_in); +//$colour_line_in = "330033"; +$colour_area_out = "FFDD88"; +$colour_line_out = "FF6600"; + +$colour_area_in_max = "cc88cc"; +$colour_area_out_max = "FFefaa"; + +$graph_max = 1; +$graph_title = "PFC Frames"; +$unit_text = "Packets/s"; + +$args['nototal'] = 1; +$print_total = 0; +$nototal = 1; + + +include('includes/graphs/generic_duplex.inc.php'); + Index: html/pages/device/port/graphs.inc.php =================================================================== --- html/pages/device/port/graphs.inc.php (Revision 10042) +++ html/pages/device/port/graphs.inc.php (Arbeitskopie) @@ -91,7 +91,25 @@ echo('</td></tr>'); } + + if (is_file(get_port_rrdfilename($port, "baystackstats", TRUE))) + { + echo('<tr><td>'); + echo("<h3>Drops On no Resources</h3>"); + $graph_array['type'] = "port_baystackstats_dropnores"; + print_graph_row_port($graph_array, $port); + echo('</td></tr>'); + + echo('<tr><td>'); + echo("<h3>Priority-Based Flow Control</h3>"); + $graph_array['type'] = "port_baystackstats_pfcinout"; + + print_graph_row_port($graph_array, $port); + echo('</td></tr>'); + + } + if (is_file(get_port_rrdfilename($port, "fdbcount", TRUE))) { echo('<tr><td>'); Index: includes/polling/ports/bay-stack-stats-mib.inc.php =================================================================== --- includes/polling/ports/bay-stack-stats-mib.inc.php (Revision 0) +++ includes/polling/ports/bay-stack-stats-mib.inc.php (Arbeitskopie) @@ -0,0 +1,19 @@ +<?php + +// BAY-STACK-STATS-MIB + +$port_module = 'bay_stack_stats'; + +if ($ports_modules[$port_module]) +{ + $baystackstats_oids = array('bayStackStatsIfNoResourcesPktsDropped', 'bayStackStatsIfInPfcFrames', 'bayStackStatsIfOutPfcFrames'); + + foreach ($baystackstats_oids as $oid) + { + $port_stats = snmpwalk_cache_oid($device, $oid, $port_stats, "BAY-STACK-STATS-MIB"); + } + $process_port_functions[$port_module] = snmp_status(); +} + + +// EOF Index: includes/polling/ports/bay-stack-stats-mib.lib.php =================================================================== --- includes/polling/ports/bay-stack-stats-mib.lib.php (Revision 0) +++ includes/polling/ports/bay-stack-stats-mib.lib.php (Arbeitskopie) @@ -0,0 +1,35 @@ +<?php + +// BAY-STACK-STATS-MIB functions + +function process_port_bay_stack_stats(&$this_port, $device, $port) +{ + // Check to make sure Port data is cached. + if (!isset($this_port['bayStackStatsIfNoResourcesPktsDropped'])) { return; } + + // Used below for StatsD only + $baystackstats_oids = array('bayStackStatsIfNoResourcesPktsDropped', 'bayStackStatsIfInPfcFrames', 'bayStackStatsIfOutPfcFrames'); + + if (dbFetchCell("SELECT COUNT(*) FROM `ports_bayStackStats` WHERE `port_id` = ?", array($port['port_id'])) == "0") + { + dbInsert(array('port_id' => $port['port_id']), 'ports_bayStackStats'); + } + + foreach ($baystackstats_oids as $oid) + { + $baystackstats_update[$oid] = $this_port[$oid]; + } + + dbUpdate($baystackstats_update, 'ports_bayStackStats', '`port_id` = ?', array($port['port_id'])); + + // Update RRDs + rrdtool_update_ng($device, 'port-baystackstats', array( + 'IfNoResPktsDropped' => $this_port['bayStackStatsIfNoResourcesPktsDropped'], + 'IfInPfcFrames' => $this_port['bayStackStatsIfInPfcFrames'], + 'IfOutPfcFrames' => $this_port['bayStackStatsIfOutPfcFrames'], + ), get_port_rrdindex($port)); + +} + + +// EOF