improvements to smokeping (averaged graph). needs to ignore NaN values, though.

git-svn-id: http://www.observium.org/svn/observer/trunk@2706 61d68cd4-352d-0410-923a-c4978735b2b8
This commit is contained in:
Adam Amstrong 2011-11-01 13:48:27 +00:00
parent d9ad342748
commit 895f0bce79
4 changed files with 151 additions and 5 deletions

View File

@ -0,0 +1,122 @@
<?php
## Dear Tobias. You write in Perl, this makes me hate you forever.
## This is my translation of Smokeping's graphing.
## Thanks to Bill Fenner for Perl->Human translation:>
$scale_min = 0;
$scale_rigid = TRUE;
include("includes/graphs/common.inc.php");
include("smokeping_common.inc.php");
$i = 0;
$pings = 20;
$iter = 0;
$colourset = "mixed";
if($width > "500")
{
$descr_len = 18;
} 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 = str_replace(":", "\:", substr(str_pad($source, $descr_len),0,$descr_len));
$filename = $config['smokeping']['dir'] . $filename;
$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";
$dm_list .= ",dm$i,+";
$sd_list .= ",s2d$i,+";
$ploss_list .= ",ploss$i,+";
$i++;
}
$descr = str_replace(":", "\:", substr(str_pad("Average", $descr_len),0,$descr_len));
$rrd_options .= " CDEF:ploss_all=0".$ploss_list.",$i,/";
$rrd_options .= " CDEF:dm_all=0".$dm_list.",$i,/";
$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'";
# $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++;
#}
?>

View File

@ -0,0 +1,7 @@
<?php
$direction = "in";
include("smokeping_all_common_avg.inc.php");
?>

View File

@ -0,0 +1,7 @@
<?php
$direction = "out";
include("smokeping_all_common_avg.inc.php");
?>

View File

@ -39,11 +39,15 @@ if($vars['view'] == "incoming")
if (count($smokeping_files['in'][$device['hostname']]))
{
$graph_array['type'] = "device_smokeping_in_all";
$graph_array['type'] = "device_smokeping_in_all_avg";
$graph_array['id'] = $device['device_id'];
echo('<tr><td>');
echo('<h3>Average</h3>');
include("includes/print-quadgraphs.inc.php");
echo('</td></tr>');
$graph_array['type'] = "device_smokeping_in_all";
$graph_array['legend'] = no;
echo('<tr><td>');
echo('<h3>Aggregate</h3>');
include("includes/print-quadgraphs.inc.php");
@ -78,15 +82,21 @@ if($vars['view'] == "incoming")
if (count($smokeping_files['out'][$device['hostname']]))
{
$graph_array['type'] = "device_smokeping_out_all";
$graph_array['type'] = "device_smokeping_out_all_avg";
$graph_array['id'] = $device['device_id'];
$graph_array['legend'] = no;
echo('<tr><td>');
echo('<h3>Aggregate</h3>');
include("includes/print-quadgraphs.inc.php");
echo('</td></tr>');
$graph_array['type'] = "device_smokeping_out_all";
$graph_array['legend'] = no;
echo('<tr><td>');
echo('<h3>Aggregate</h3>');
include("includes/print-quadgraphs.inc.php");
echo('</td></tr>');
unset($graph_array['legend']);
asort($smokeping_files['out'][$device['hostname']]);