Index: html/pages/device.inc.php =================================================================== --- html/pages/device.inc.php (revision 3) +++ html/pages/device.inc.php (revision 11) @@ -168,9 +168,10 @@ } // Build array of smokeping files for use in tab building and smokeping page. - if (isset($config['smokeping']['dir'])) + if (isset($config['smokeping']['srv'])) { $smokeping_files = get_smokeping_files(); + $smokeping_servers = get_smokeping_server_array($smokeping_files['outgoing']); } // Print latency tab if there are smokeping files with source or destination matching this hostname Index: html/pages/device/latency.inc.php =================================================================== --- html/pages/device/latency.inc.php (revision 3) +++ html/pages/device/latency.inc.php (revision 11) @@ -38,16 +38,9 @@ { if (count($smokeping_files['incoming'][$device['hostname']])) { - $graph_array['type'] = "device_smokeping_in_all_avg"; $graph_array['device'] = $device['device_id']; - echo(''); - echo('

Average

'); - print_graph_row($graph_array); - - echo(''); - - $graph_array['type'] = "device_smokeping_in_all"; + $graph_array['type'] = "ping_smokeping_in_all"; $graph_array['legend'] = 'no'; echo(''); echo('

Aggregate

'); @@ -55,7 +48,20 @@ print_graph_row($graph_array); echo(''); + + foreach ($smokeping_servers as $smokeping_server) + { + $graph_array['type'] = "ping_smokeping_in_all_det"; + $graph_array['legend'] = 'no'; + $graph_array['srv'] = $smokeping_server; + echo(''); + echo('

Detailed - '.$smokeping_server.'

'); + print_graph_row($graph_array); + + echo(''); + } + unset($graph_array['legend']); ksort($smokeping_files['incoming'][$device['hostname']]); @@ -82,24 +88,30 @@ { if (count($smokeping_files['outgoing'][$device['hostname']])) { - $graph_array['type'] = "device_smokeping_out_all_avg"; $graph_array['device'] = $device['device_id']; + + $graph_array['type'] = "ping_smokeping_out_all"; + $graph_array['legend'] = 'no'; echo(''); - echo('

Average

'); + echo('

Aggregate

'); print_graph_row($graph_array); echo(''); + + foreach ($smokeping_servers as $smokeping_server) + { + $graph_array['type'] = "ping_smokeping_out_all_det"; + $graph_array['legend'] = 'no'; + $graph_array['srv'] = $smokeping_server; + echo(''); + echo('

Detailed - '.$smokeping_server.'

'); - $graph_array['type'] = "device_smokeping_out_all"; - $graph_array['legend'] = 'no'; - echo(''); - echo('

Aggregate

'); + print_graph_row($graph_array); - print_graph_row($graph_array); + echo(''); + } - echo(''); - unset($graph_array['legend']); asort($smokeping_files['outgoing'][$device['hostname']]); Index: html/pages/graphs.inc.php =================================================================== --- html/pages/graphs.inc.php (revision 3) +++ html/pages/graphs.inc.php (revision 11) @@ -102,6 +102,30 @@ $navbar['options']['graph'] = array('text' => ucfirst($type).' ('.$subtype.')', 'url' => generate_url($vars, array('type' => $type."_".$subtype, 'page' => "graphs"))); break; + case 'ping': + foreach ($title_array as $key => $element) + { + $navbar['options'][$key] = $element; + } + if ($vars['type'] == "ping_smokeping_in_all_det") + { + foreach ($smokeping_servers as $smokeping_server) + { + if ($vars['srv'] == $smokeping_server) + { + $navbar['options']['graph']['suboptions'][$smokeping_server]['class'] = 'active'; + $navbar['options']['graph']['text'] .= 'Smokeping ('.$smokeping_server.')'; + } + $navbar['options']['graph']['suboptions'][$smokeping_server]['text'] = $smokeping_server; + $navbar['options']['graph']['suboptions'][$smokeping_server]['url'] = generate_url($vars, array('page' => "graphs", 'srv' => $smokeping_server)); + } + } + else { + $navbar['options']['graph'] = array('text' => 'Smokeping Aggregate', + 'url' => generate_url($vars, array('page' => "graphs"))); + } + + break; default: # Load our list of available graphtypes for this object /// FIXME not all of these are going to be valid Index: html/includes/graphs/device/smokeping_out_all.inc.php =================================================================== --- html/includes/graphs/device/smokeping_out_all.inc.php (revision 3) +++ html/includes/graphs/device/smokeping_out_all.inc.php (revision 11) @@ -1,18 +0,0 @@ -Human translation:> - -$scale_min = 0; -$scale_rigid = TRUE; - -include_once($config['html_dir']."/includes/graphs/common.inc.php"); -include("smokeping_common.inc.php"); - -$i = 0; -$pings = 20; -$iter = 0; -$colourset = "mixed"; - -if($width > "500") -{ - $descr_len = 25; -} else { - $descr_len = 12 + round(($width - 275) / 8); -} - -if($width > "500") -{ - $rrd_options .= " COMMENT:'".substr(str_pad($unit_text, $descr_len+5),0,$descr_len+5)." RTT Loss SDev RTT\:SDev\l'"; -} else { - $rrd_options .= " COMMENT:'".substr(str_pad($unit_text, $descr_len+5),0,$descr_len+5)." RTT Loss SDev RTT\:SDev\l'"; -} - -foreach ($smokeping_files[$direction][$device['hostname']] as $source => $filename) -{ - - if (!isset($config['graph_colours'][$colourset][$iter])) { $iter = 0; } - $colour = $config['graph_colours'][$colourset][$iter]; - $iter++; - - $descr = rrdtool_escape($source, $descr_len); - - $rrd_options .= " DEF:median$i=".$filename.":median:AVERAGE "; - $rrd_options .= " DEF:loss$i=".$filename.":loss:AVERAGE"; - $rrd_options .= " CDEF:ploss$i=loss$i,$pings,/,100,*"; - $rrd_options .= " CDEF:dm$i=median$i"; -# $rrd_options .= " CDEF:dm$i=median$i,0,".$max->{$start}.",LIMIT"; - - // start emulate Smokeping::calc_stddev - foreach (range(1, $pings) as $p) - { - $rrd_options .= " DEF:pin".$i."p".$p."=".$filename.":ping".$p.":AVERAGE"; - $rrd_options .= " CDEF:p".$i."p".$p."=pin".$i."p".$p.",UN,0,pin".$i."p".$p.",IF"; - } - - unset($pings_options, $m_options, $sdev_options); - - foreach (range(2, $pings) as $p) - { - $pings_options .= ",p".$i."p".$p.",UN,+"; - $m_options .= ",p".$i."p".$p.",+"; - $sdev_options .= ",p".$i."p".$p.",m".$i.",-,DUP,*,+"; - } - - $rrd_options .= " CDEF:pings".$i."=".$pings .",p".$i."p1,UN". $pings_options . ",-"; - $rrd_options .= " CDEF:m".$i."=p".$i."p1".$m_options.",pings".$i.",/"; - $rrd_options .= " CDEF:sdev".$i."=p".$i."p1,m".$i.",-,DUP,*".$sdev_options.",pings".$i.",/,SQRT"; - // end emulate Smokeping::calc_stddev - - $rrd_options .= " CDEF:dmlow$i=dm$i,sdev$i,2,/,-"; - $rrd_options .= " CDEF:s2d$i=sdev$i"; - $rrd_options .= " AREA:dmlow$i"; - $rrd_options .= " AREA:s2d$i#".$colour."30::STACK"; - $rrd_options .= " LINE1:dm$i#".$colour.":'$descr'"; - -# $rrd_options .= " LINE1:sdev$i#000000:$descr"; - - $rrd_options .= " VDEF:avmed$i=median$i,AVERAGE"; - $rrd_options .= " VDEF:avsd$i=sdev$i,AVERAGE"; - $rrd_options .= " CDEF:msr$i=median$i,POP,avmed$i,avsd$i,/"; - $rrd_options .= " VDEF:avmsr$i=msr$i,AVERAGE"; - - $rrd_options .= " GPRINT:avmed$i:'%5.1lf%ss'"; - $rrd_options .= " GPRINT:ploss$i:AVERAGE:'%5.1lf%%'"; - - $rrd_options .= " GPRINT:avsd$i:'%5.1lf%Ss'"; - $rrd_options .= " GPRINT:avmsr$i:'%5.1lf%s\\l'"; - - $i++; -} - -?> Index: html/includes/graphs/device/smokeping_common.inc.php =================================================================== --- html/includes/graphs/device/smokeping_common.inc.php (revision 3) +++ html/includes/graphs/device/smokeping_common.inc.php (revision 11) @@ -1,16 +0,0 @@ - Index: html/includes/graphs/device/smokeping_out_all_avg.inc.php =================================================================== --- html/includes/graphs/device/smokeping_out_all_avg.inc.php (revision 3) +++ html/includes/graphs/device/smokeping_out_all_avg.inc.php (revision 11) @@ -1,18 +0,0 @@ -Human translation:> - -$scale_min = 0; -$scale_rigid = TRUE; - -include_once($config['html_dir']."/includes/graphs/common.inc.php"); -include("smokeping_common.inc.php"); - -$i = 0; -$pings = 20; -$iter = 0; -$colourset = "mixed"; - -if($width > "500") -{ - $descr_len = 25; -} else { - $descr_len = 12 + round(($width - 275) / 8); -} - -// FIXME str_pad really needs a "limit to length" so we can rid of all the substrs all over the code to limit the length as below... -if($width > "500") -{ - $rrd_options .= " COMMENT:'".substr(str_pad($unit_text, $descr_len+5),0,$descr_len+5)." RTT Loss SDev RTT\:SDev\l'"; -} else { - $rrd_options .= " COMMENT:'".substr(str_pad($unit_text, $descr_len+5),0,$descr_len+5)." RTT Loss SDev RTT\:SDev\l'"; -} - -foreach ($smokeping_files[$direction][$device['hostname']] as $source => $filename) -{ - - if (!isset($config['graph_colours'][$colourset][$iter])) { $iter = 0; } - $colour = $config['graph_colours'][$colourset][$iter]; - $iter++; - - $descr = rrdtool_escape($source, $descr_len); - - $rrd_options .= " DEF:median$i=".$filename.":median:AVERAGE "; - $rrd_options .= " CDEF:dm$i=median$i,UN,0,median$i,IF"; - $rrd_options .= " DEF:loss$i=".$filename.":loss:AVERAGE"; - $rrd_options .= " CDEF:ploss$i=loss$i,$pings,/,100,*"; -# $rrd_options .= " CDEF:dm$i=median$i"; -# $rrd_options .= " CDEF:dm$i=median$i,0,".$max->{$start}.",LIMIT"; - - // start emulate Smokeping::calc_stddev - foreach (range(1, $pings) as $p) - { - $rrd_options .= " DEF:pin".$i."p".$p."=".$filename.":ping".$p.":AVERAGE"; - $rrd_options .= " CDEF:p".$i."p".$p."=pin".$i."p".$p.",UN,0,pin".$i."p".$p.",IF"; - } - - unset($pings_options, $m_options, $sdev_options); - - foreach (range(2, $pings) as $p) - { - $pings_options .= ",p".$i."p".$p.",UN,+"; - $m_options .= ",p".$i."p".$p.",+"; - $sdev_options .= ",p".$i."p".$p.",m".$i.",-,DUP,*,+"; - } - - $rrd_options .= " CDEF:pings".$i."=".$pings .",p".$i."p1,UN". $pings_options . ",-"; - $rrd_options .= " CDEF:m".$i."=p".$i."p1".$m_options.",pings".$i.",/"; - $rrd_options .= " CDEF:sdev".$i."=p".$i."p1,m".$i.",-,DUP,*".$sdev_options.",pings".$i.",/,SQRT"; - // end emulate Smokeping::calc_stddev - - $rrd_options .= " CDEF:dmlow$i=dm$i,sdev$i,2,/,-"; - $rrd_options .= " CDEF:s2d$i=sdev$i"; - - $dm_list .= ",dm$i,+"; - $sd_list .= ",s2d$i,+"; - $ploss_list .= ",ploss$i,+"; - - $i++; - -} - -$descr = rrdtool_escape("Average", $descr_len); - -$rrd_options .= " CDEF:ploss_all=0".$ploss_list.",$i,/"; -$rrd_options .= " CDEF:dm_all=0".$dm_list.",$i,/"; -# $rrd_options .= " CDEF:dm_all_clean=dm_all,UN,NaN,dm_all,IF"; -$rrd_options .= " CDEF:sd_all=0".$sd_list.",$i,/"; -$rrd_options .= " CDEF:dmlow_all=dm_all,sd_all,2,/,-"; - -$rrd_options .= " AREA:dmlow_all"; -$rrd_options .= " AREA:sd_all#AAAAAA::STACK"; -$rrd_options .= " LINE1:dm_all#CC0000:'$descr'"; - -$rrd_options .= " VDEF:avmed=dm_all,AVERAGE"; -$rrd_options .= " VDEF:avsd=sd_all,AVERAGE"; -$rrd_options .= " CDEF:msr=dm_all,POP,avmed,avsd,/"; -$rrd_options .= " VDEF:avmsr=msr,AVERAGE"; - -$rrd_options .= " GPRINT:avmed:'%5.1lf%ss'"; -$rrd_options .= " GPRINT:ploss_all:AVERAGE:'%5.1lf%%'"; -$rrd_options .= " GPRINT:avsd:'%5.1lf%Ss'"; -$rrd_options .= " GPRINT:avmsr:'%5.1lf%s\\l'"; - -?> Index: html/includes/graphs/ping/smokeping_common.inc.php =================================================================== --- html/includes/graphs/ping/smokeping_common.inc.php (revision 0) +++ html/includes/graphs/ping/smokeping_common.inc.php (revision 11) @@ -0,0 +1,16 @@ + Index: html/includes/graphs/ping/smokeping_in_all_det.inc.php =================================================================== --- html/includes/graphs/ping/smokeping_in_all_det.inc.php (revision 0) +++ html/includes/graphs/ping/smokeping_in_all_det.inc.php (revision 11) @@ -0,0 +1,18 @@ + "500") +{ + $descr_len = 25; +} else { + $descr_len = 12 + round(($width - 275) / 8); +} + +// FIXME str_pad really needs a "limit to length" so we can rid of all the substrs all over the code to limit the length as below... +if($width > "500") +{ + $rrd_options .= " COMMENT:' Average Min Max Last\l'"; +} else { + $rrd_options .= " COMMENT:' Average Min Max Last\l'"; +} + +$filename = $smokeping_files[$direction][$device['hostname']][$vars['srv']]; +$source = $vars['srv']; +if (!isset($config['graph_colours'][$colourset][$iter])) { $iter = 0; } +$colour = $config['graph_colours'][$colourset][$iter]; +$iter++; + +$descr = rrdtool_escape($source, $descr_len); + +$rrd_options .= " DEF:median=".$filename.":median:AVERAGE "; +$rrd_options .= " DEF:loss=".$filename.":loss:AVERAGE "; +$rrd_options .= " CDEF:loss_rnd=loss,CEIL "; //NOT ALWAYS LOST PACKETS COUNT IS INTEGER... HI TOBI :) +$rrd_options .= " CDEF:ploss=loss_rnd,".$pings.",/,100,* "; + +foreach (range(1, $pings) as $p) +{ + $rrd_options .= " DEF:ping".$p."=".$filename.":ping".$p.":AVERAGE "; + $rrd_options .= " CDEF:smoke_all".$p."=ping".$p.",median,- "; + $rrd_options .= " CDEF:smoke".$p."=5,median,*,smoke_all".$p.",GT,smoke_all".$p.",5,median,*,IF"; + $rrd_options .= " LINE2:median#FFFFFF00:'' AREA:smoke".$p."#00000015:'':STACK "; +} +foreach (range(0, $pings) as $p) +{ + $rrd_options .= " CDEF:loss".$p."=loss_rnd,".$p.",EQ,median,UNKN,IF "; + $rrd_options .= " CDEF:loss".$p."_1=COUNT,2,%,0,EQ,loss".$p.",UNKN,IF "; + $rrd_options .= " CDEF:loss".$p."_2=COUNT,2,%,1,EQ,loss".$p.",UNKN,IF "; +} + +$rrd_options .= " COMMENT:'Median RTT\: ' "; +$rrd_options .= " GPRINT:median:AVERAGE:%6.2lf%ss "; +$rrd_options .= " GPRINT:median:MIN:%6.2lf%ss "; +$rrd_options .= " GPRINT:median:MAX:%6.2lf%ss "; +$rrd_options .= " GPRINT:median:LAST:%6.2lf%ss\\l "; + +$rrd_options .= " COMMENT:'Packet loss\:' "; +$rrd_options .= " GPRINT:loss_rnd:AVERAGE:%7.2lf%% "; +$rrd_options .= " GPRINT:loss_rnd:MIN:%7.2lf%% "; +$rrd_options .= " GPRINT:loss_rnd:MAX:%7.2lf%% "; +$rrd_options .= " GPRINT:loss_rnd:LAST:%7.2lf%%\\l "; + +$rrd_options .= " COMMENT:'Loss colour\: ' "; + +$m = 0; //TO OPTIMIZE SEARCH OF COLOURS - E.G. DON'T TRY TO EVALUATE IF PACKETLOSS OF 0% COMES AFTER 10% +$legended = array_fill(0, 12, 0); +foreach (range(0, $pings) as $p) +{ + $ploss = ($p/$pings)*100; + $line_text = ""; + foreach (range($m, count($config['smokeping']['loss_colour'])) as $k) + { + if ($ploss <= $config['smokeping']['loss_value'][$k]) + { + $line_colour = $config['smokeping']['loss_colour'][$k]; + if ($legended[$k] == 0) + { + if ($ploss > 0) + { + $line_text = ($config['smokeping']['loss_value'][$k-1] + 1)."..".$config['smokeping']['loss_value'][$k]."%"; + } else { + $line_text = "0%"; + } + $legended[$k] = 1; + } + $rrd_options .= " LINE2:loss".$p."_1#".$line_colour.":'".$line_text."' LINE2:loss".$p."_2#".$line_colour.":'' "; + $m = $k; + break; + } + } +} +$rrd_options .= " COMMENT:\\l "; + +//EOF + + + Index: html/includes/graphs/ping/smokeping_in_all.inc.php =================================================================== --- html/includes/graphs/ping/smokeping_in_all.inc.php (revision 0) +++ html/includes/graphs/ping/smokeping_in_all.inc.php (revision 11) @@ -0,0 +1,18 @@ +Human translation:> + +$scale_min = 0; +$scale_rigid = TRUE; + +include_once($config['html_dir']."/includes/graphs/common.inc.php"); +include("smokeping_common.inc.php"); + +$i = 0; +$pings = $config['smokeping_pings']; +$iter = 0; +$colourset = "mixed"; + +if($width > "500") +{ + $descr_len = 25; +} else { + $descr_len = 12 + round(($width - 275) / 8); +} + +if($width > "500") +{ + $rrd_options .= " COMMENT:'".substr(str_pad($unit_text, $descr_len+5),0,$descr_len+5)." RTT Loss SDev RTT\:SDev\l'"; +} else { + $rrd_options .= " COMMENT:'".substr(str_pad($unit_text, $descr_len+5),0,$descr_len+5)." RTT Loss SDev RTT\:SDev\l'"; +} + +foreach ($smokeping_files[$direction][$device['hostname']] as $source => $filename) +{ + + if (!isset($config['graph_colours'][$colourset][$iter])) { $iter = 0; } + $colour = $config['graph_colours'][$colourset][$iter]; + $iter++; + + $descr = rrdtool_escape($source, $descr_len); + + $rrd_options .= " DEF:median$i=".$filename.":median:AVERAGE "; + $rrd_options .= " DEF:loss$i=".$filename.":loss:AVERAGE"; + $rrd_options .= " CDEF:ploss$i=loss$i,$pings,/,100,*"; + $rrd_options .= " CDEF:dm$i=median$i"; +# $rrd_options .= " CDEF:dm$i=median$i,0,".$max->{$start}.",LIMIT"; + + // start emulate Smokeping::calc_stddev + foreach (range(1, $pings) as $p) + { + $rrd_options .= " DEF:pin".$i."p".$p."=".$filename.":ping".$p.":AVERAGE"; + $rrd_options .= " CDEF:p".$i."p".$p."=pin".$i."p".$p.",UN,0,pin".$i."p".$p.",IF"; + } + + unset($pings_options, $m_options, $sdev_options); + + foreach (range(2, $pings) as $p) + { + $pings_options .= ",p".$i."p".$p.",UN,+"; + $m_options .= ",p".$i."p".$p.",+"; + $sdev_options .= ",p".$i."p".$p.",m".$i.",-,DUP,*,+"; + } + + $rrd_options .= " CDEF:pings".$i."=".$pings .",p".$i."p1,UN". $pings_options . ",-"; + $rrd_options .= " CDEF:m".$i."=p".$i."p1".$m_options.",pings".$i.",/"; + $rrd_options .= " CDEF:sdev".$i."=p".$i."p1,m".$i.",-,DUP,*".$sdev_options.",pings".$i.",/,SQRT"; + // end emulate Smokeping::calc_stddev + + $rrd_options .= " CDEF:dmlow$i=dm$i,sdev$i,2,/,-"; + $rrd_options .= " CDEF:s2d$i=sdev$i"; + $rrd_options .= " AREA:dmlow$i"; + $rrd_options .= " AREA:s2d$i#".$colour."30::STACK"; + $rrd_options .= " LINE1:dm$i#".$colour.":'$descr'"; + +# $rrd_options .= " LINE1:sdev$i#000000:$descr"; + + $rrd_options .= " VDEF:avmed$i=median$i,AVERAGE"; + $rrd_options .= " VDEF:avsd$i=sdev$i,AVERAGE"; + $rrd_options .= " CDEF:msr$i=median$i,POP,avmed$i,avsd$i,/"; + $rrd_options .= " VDEF:avmsr$i=msr$i,AVERAGE"; + + $rrd_options .= " GPRINT:avmed$i:'%5.1lf%ss'"; + $rrd_options .= " GPRINT:ploss$i:AVERAGE:'%5.1lf%%'"; + + $rrd_options .= " GPRINT:avsd$i:'%5.1lf%Ss'"; + $rrd_options .= " GPRINT:avmsr$i:'%5.1lf%s\\l'"; + + $i++; +} + +?> Index: html/includes/graphs/ping/auth.inc.php =================================================================== --- html/includes/graphs/ping/auth.inc.php (revision 0) +++ html/includes/graphs/ping/auth.inc.php (revision 11) @@ -0,0 +1,29 @@ + $device['hostname'], 'url' => generate_url(array('page' => 'device', 'device' => $device['device_id']))); + $title_array[] = array('text' => 'Pings', 'url' => generate_url(array('page' => 'device', 'device' => $device['device_id'], 'tab' => 'latency'))); + + $smokeping_files = get_smokeping_files(); + $smokeping_servers = get_smokeping_server_array($smokeping_files['outgoing']); + + $device = device_by_id_cache($vars['device']); + + $title = generate_device_link($device); + $auth = TRUE; +} + +// EOF Index: html/includes/functions.inc.php =================================================================== --- html/includes/functions.inc.php (revision 3) +++ html/includes/functions.inc.php (revision 11) @@ -1602,43 +1602,58 @@ global $config; $smokeping_files = array(); - - if ($rdebug) { echo('- Recursing through ' . $config['smokeping']['dir'] . '
'); } - - if (is_dir($config['smokeping']['dir'])) + + foreach ($config['smokeping']['srv'] as $smokesrv) { - foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($config['smokeping']['dir'])) as $file) + if (is_dir($smokesrv['dir'])) { - if (basename($file) != "." && basename($file) != ".." && strstr($file, ".rrd")) + if ($rdebug) { echo('- Recursing through ' . $smokesrv['dir'] . '
'); } + foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($smokesrv['dir'])) as $file) { - if ($rdebug) { echo('- Found file ending in ".rrd": ' . basename($file) . '
'); } + if (basename($file) != "." && basename($file) != ".." && strstr($file, ".rrd")) + { + if ($rdebug) { echo('- Found file ending in ".rrd": ' . basename($file) . '
'); } - if (strstr($file, "~")) - { - list($target,$slave) = explode("~", basename($file,".rrd")); - if ($rdebug) { echo('- Determined to be a slave file for target ' . $target . '
'); } - $target = str_replace($config['smokeping']['split_char'], ".", $target); - if ($config['smokeping']['suffix']) { $target = $target.$config['smokeping']['suffix']; if ($rdebug) { echo('- Suffix is configured, target is now ' . $target . '
'); } } - $smokeping_files['incoming'][$target][$slave] = $file; - $smokeping_files['outgoing'][$slave][$target] = $file; - } else { - $target = basename($file,".rrd"); - if ($rdebug) { echo('- Determined to be a local file, for target ' . $target . '
'); } - $target = str_replace($config['smokeping']['split_char'], ".", $target); - if ($rdebug) { echo('- After replacing configured split_char ' . $config['smokeping']['split_char'] . ' by . target is ' . $target . '
'); } - if ($config['smokeping']['suffix']) { $target = $target.$config['smokeping']['suffix']; if ($rdebug) { echo('- Suffix is configured, target is now ' . $target . '
'); } } - $smokeping_files['incoming'][$target][$config['own_hostname']] = $file; - $smokeping_files['outgoing'][$config['own_hostname']][$target] = $file; + if (strstr($file, "~")) + { + list($target,$slave) = explode("~", basename($file,".rrd")); + if ($rdebug) { echo('- Determined to be a slave file for target ' . $target . '
'); } + $target = str_replace($config['smokeping']['split_char'], ".", $target); + if ($config['smokeping']['suffix']) { $target = $target.$config['smokeping']['suffix']; if ($rdebug) { echo('- Suffix is configured, target is now ' . $target . '
'); } } + $smokeping_files['incoming'][$target][$slave] = $file; + $smokeping_files['outgoing'][$slave][$target] = $file; + } else { + $target = basename($file,".rrd"); + if ($rdebug) { echo('- Determined to be a local file, for target ' . $target . '
'); } + $target = str_replace($config['smokeping']['split_char'], ".", $target); + if ($rdebug) { echo('- After replacing configured split_char ' . $config['smokeping']['split_char'] . ' by . target is ' . $target . '
'); } + if ($config['smokeping']['suffix']) { $target = $target.$config['smokeping']['suffix']; if ($rdebug) { echo('- Suffix is configured, target is now ' . $target . '
'); } } + $smokeping_files['incoming'][$target][$smokesrv['hostname']] = $file; + $smokeping_files['outgoing'][$smokesrv['hostname']][$target] = $file; + } } } + } else { + if ($rdebug) { echo("- Smokeping RRD directory not found: " . $smokesrv['dir']); } } - } else { - if ($rdebug) { echo("- Smokeping RRD directory not found: " . $config['smokeping']['dir']); } } - return $smokeping_files; } +function get_smokeping_server_array($smokeping_server_list) +{ + global $device; + + $smokeping_servers = array(); + + foreach ($smokeping_server_list as $server_name => $targets) + { + if (!(in_array($server_name, $smokeping_servers)) && array_key_exists($device['hostname'], $targets)) {$smokeping_servers[] = $server_name; } + } + + return ($smokeping_servers); +} + /** * Darkens or lightens a colour * Found via http://codepad.org/MTGLWVd0 Index: includes/defaults.inc.php =================================================================== --- includes/defaults.inc.php (revision 3) +++ includes/defaults.inc.php (revision 11) @@ -375,10 +375,13 @@ #$config['collectd_dir'] = '/var/lib/collectd/rrd'; // Smokeping -#$config['smokeping']['dir'] = "/var/lib/smokeping/"; $config['smokeping']['split_char'] = "_"; #$config['smokeping']['suffix'] = ".yourdomain.com"; #$config['smokeping']['slaves'][] = 'slave01'; // Used in the generate-smokeping script only +#$config['smokeping']['srv'][] = array('dir' => '/var/lib/smokeping', 'hostname' => 'observium-dev'); +$config['smokeping']['loss_colour'] = array('55FF00', '00FFD5', '00D5FF', '00AAFF', '0080FF', '0055FF', '0000FF', '8000FF', 'D400FF', 'FF00D4', 'FF0080', 'FF0000'); +$config['smokeping']['loss_value'] = array(0, 2, 4, 6, 8, 10, 15, 20, 25, 40, 50, 100); +$config['smokeping_pings'] = 20; // NFSen RRD dir. $config['nfsen_enable'] = 0;