Adds some basic NFSEN integration support. by falz.

git-svn-id: http://www.observium.org/svn/observer/trunk@2033 61d68cd4-352d-0410-923a-c4978735b2b8
This commit is contained in:
Adam Amstrong
2011-04-07 19:07:47 +00:00
parent 1760eff9df
commit 9b1ec8050d
8 changed files with 116 additions and 7 deletions

View File

@@ -0,0 +1,45 @@
<?php
include("includes/graphs/common.inc.php");
$device = device_by_id_cache($id);
if (!is_array($config['nfsen_rrds'])) { $config['nfsen_rrds'] = array($config['nfsen_rrds']); }
foreach ( $config['nfsen_rrds'] as $nfsenrrds )
{
if ($configs[strlen($nfsenrrds)-1] != '/') { $nfsenrrds .= '/'; }
# convert dots in filename to underscores
$basefilename_underscored = preg_replace('/\./', $config['nfsen_split_char'], $device['hostname']);
if (is_file($nfsenrrds . $basefilename_underscored . ".rrd"))
{
$rrd_filename = $nfsenrrds . $basefilename_underscored . ".rrd";
$flowtypes = array('tcp', 'udp', 'icmp', 'other');
$rrd_list=array();
$nfsen_iter=1;
foreach ($flowtypes as $flowtype)
{
$rrd_list[$nfsen_iter]['filename'] = $rrd_filename;
$rrd_list[$nfsen_iter]['descr'] = $flowtype;
$rrd_list[$nfsen_iter]['rra'] = $rraprefix . $flowtype;
# set a multiplier which in turn will create a CDEF if this var is set
if ($rraprefix == "traffic_") { $multiplier = "8"; }
$colours = "blues";
$nototal = 0;
$units="";
$unit_text = $rradescr;
$scale_min = "0";
if ($_GET['debug']) { print_r($rrd_list); }
$nfsen_iter++;
}
}
}
include("includes/graphs/generic_multi_simplex_seperated.inc.php");
?>

View File

@@ -0,0 +1,5 @@
<?php
$rradescr = "Flows/s ";
$rraprefix = "flows_";
include("nfsen_common.inc.php");
?>

View File

@@ -0,0 +1,5 @@
<?php
$rradescr = "Packets/s ";
$rraprefix = "packets_";
include("nfsen_common.inc.php");
?>

View File

@@ -0,0 +1,5 @@
<?php
$rradescr = "Byts/s ";
$rraprefix = "traffic_";
include("nfsen_common.inc.php");
?>

View File

@@ -7,21 +7,28 @@ $rrd_options .= " COMMENT:'$unit_text Cur Max'";
if (!$nototal) { $rrd_options .= " COMMENT:'Total '"; }
$rrd_options .= " COMMENT:'\\n'";
$i = 0;
$iter=0;
foreach ($rrd_list as $rrd)
{
if (!$config['graph_colours'][$colours][$iter]) { $iter = 0; }
$colour = $config['graph_colours'][$colours][$iter];
$rrd_options .= " DEF:".$rrd['rra'].$i."=".$rrd['filename'].":".$rrd['rra'].":AVERAGE ";
$rrd_options .= " DEF:".$rrd['rra'].$i."max=".$rrd['filename'].":".$rrd['rra'].":MAX ";
if (!$args['nototal'])
if (!$nototal)
{
$rrd_options .= " VDEF:tot".$rrd['rra'].$i."=".$rrd['rra'].$i.",TOTAL";
}
if ($i) { $stack="STACK"; }
$rrd_options .= " AREA:".$rrd['rra'].$i."#" . $colour . ":'" . substr(str_pad($rrd['descr'], 18),0,18) . "':$stack";
# if we've been passed a multiplier we must make a CDEF based on it!
$defname = $rrd['rra'];
if (is_numeric($multiplier))
{
$defname = $defname . "_cdef";
$rrd_options .= " CDEF:" . $defname . $i . "=" . $rrd['rra'] . $i . "," . $multiplier . ",*";
}
$rrd_options .= " AREA:" . $defname . $i . "#" . $colour . ":'" . substr(str_pad($rrd['descr'], 18),0,18) . "':$stack";
$rrd_options .= " GPRINT:".$rrd['rra'].$i.":LAST:%6.2lf%s$units";
$rrd_options .= " GPRINT:".$rrd['rra'].$i."max:MAX:%6.2lf%s$units";

View File

@@ -212,6 +212,27 @@ if (device_permitted($_GET['id']) || $check_device == $_GET['id'])
</li>');
}
if ($config['nfsen_enable'])
{
if (!is_array($config['nfsen_rrds'])) { $config['nfsen_rrds'] = array($config['nfsen_rrds']); }
foreach ($config['nfsen_rrds'] as $nfsenrrds)
{
if ($configs[strlen($nfsenrrds)-1] != '/') { $nfsenrrds .= '/'; }
$basefilename_underscored = preg_replace('/\./', $config['nfsen_split_char'], $device['hostname']);
if (is_file($nfsenrrds . $basefilename_underscored . ".rrd")) { $nfsen_rrd_file = $nfsenrrds . $basefilename_underscored . ".rrd"; }
}
}
if ($nfsen_rrd_file)
{
echo('<li class="' . $select['nfsen'] . '">
<a href="'.$config['base_url']."/device/" . $device['device_id'] . '/nfsen/">
<img src="images/16/rainbow.png" align="absmiddle" border="0" /> Netflow
</a>
</li>');
}
if ($_SESSION['userlevel'] >= "7")
{
echo('<li class="' . $select['edit'] . '">

View File

@@ -0,0 +1,17 @@
<?php
$datas = array(
'Flows' => 'nfsen_flows',
'Packets' => 'nfsen_packets',
'Traffic' => 'nfsen_traffic'
);
foreach ($datas as $name=>$type)
{
$graph_title = $name;
$graph_type = "device_".$type;
include("includes/print-device-graph.php");
}
?>

View File

@@ -153,6 +153,10 @@ $config['billing']['bill_autoadd'] = 0; # Enable Auto-add bill per bill_id
$config['rancid_ignorecomments'] = 0; # Ignore lines starting with #
#$config['collectd_dir'] = '/var/lib/collectd/rrd';
# NFSen RRD dir.
$config['nfsen_enable'] = 0;
#$config['nfsen_split_char'] = "_";
#$config['nfsen_rrds'] = "/var/nfsen/profiles-stat/live/";
### Ignores & Allows