mirror of
https://github.com/stylersnico/librenms.git
synced 2026-07-28 08:02:41 +02:00
Merge pull request #2458 from laf/rrdtune
Fix for crazy traffic values seen in graphs
This commit is contained in:
@@ -339,6 +339,7 @@ foreach ($ports as $port) {
|
||||
}
|
||||
|
||||
// Update IF-MIB data
|
||||
$tune_port = false;
|
||||
foreach ($data_oids as $oid) {
|
||||
|
||||
if ($oid == 'ifAlias') {
|
||||
@@ -358,6 +359,15 @@ foreach ($ports as $port) {
|
||||
}
|
||||
}
|
||||
else if ($port[$oid] != $this_port[$oid]) {
|
||||
$port_tune = get_dev_attrib($device, 'ifName_tune:'.$port['ifName']);
|
||||
$device_tune = get_dev_attrib($device,'override_rrdtool_tune');
|
||||
if ($port_tune == "true" ||
|
||||
($device_tune == "true" && $port_tune != 'false') ||
|
||||
($config['rrdtool_tune'] == "true" && $port_tune != 'false' && $device_tune != 'false')) {
|
||||
if ($oid == 'ifSpeed') {
|
||||
$tune_port = true;
|
||||
}
|
||||
}
|
||||
$port['update'][$oid] = $this_port[$oid];
|
||||
log_event($oid.': '.$port[$oid].' -> '.$this_port[$oid], $device, 'interface', $port['port_id']);
|
||||
if ($debug) {
|
||||
@@ -501,6 +511,9 @@ foreach ($ports as $port) {
|
||||
'OUTMULTICASTPKTS' => $this_port['ifOutMulticastPkts'],
|
||||
);
|
||||
|
||||
if ($tune_port === true) {
|
||||
rrdtool_tune('port',$rrdfile,$this_port['ifSpeed']);
|
||||
}
|
||||
rrdtool_update("$rrdfile", $fields);
|
||||
// End Update IF-MIB
|
||||
// Update PAgP
|
||||
|
||||
@@ -166,7 +166,11 @@ function rrdtool_graph($graph_file, $options) {
|
||||
function rrdtool($command, $filename, $options) {
|
||||
global $config, $debug, $rrd_pipes, $console_color;
|
||||
|
||||
if ($config['rrdcached'] && ($config['rrdtool_version'] >= 1.5 || $command != "create")) {
|
||||
if ($config['rrdcached'] &&
|
||||
(version_compare($config['rrdtool_version'], '1.5.5', '>=') ||
|
||||
(version_compare($config['rrdtool_version'], '1.5', '>=') && $command != "tune") ||
|
||||
($command != "create" && $command != "tune"))
|
||||
) {
|
||||
if (isset($config['rrdcached_dir']) && $config['rrdcached_dir'] !== false) {
|
||||
$filename = str_replace($config['rrd_dir'].'/', './'.$config['rrdcached_dir'].'/', $filename);
|
||||
$filename = str_replace($config['rrd_dir'], './'.$config['rrdcached_dir'].'/', $filename);
|
||||
@@ -294,3 +298,20 @@ function rrdtool_escape($string, $maxlength=null){
|
||||
return $result.' ';
|
||||
|
||||
}
|
||||
|
||||
function rrdtool_tune($type, $filename, $max) {
|
||||
$fields = array();
|
||||
if ($type === 'port') {
|
||||
if ($max < 10000000) {
|
||||
return false;
|
||||
}
|
||||
$max = $max / 8;
|
||||
$fields = array(
|
||||
'INOCTETS','OUTOCTETS','INERRORS','OUTERRORS','INUCASTPKTS','OUTUCASTPKTS','INNUCASTPKTS','OUTNUCASTPKTS','INDISCARDS','OUTDISCARDS','INUNKNOWNPROTOS','INBROADCASTPKTS','OUTBROADCASTPKTS','INMULTICASTPKTS','OUTMULTICASTPKTS'
|
||||
);
|
||||
}
|
||||
if (count($fields) > 0) {
|
||||
$options = "--maximum " . implode(":$max --maximum ", $fields). ":$max";
|
||||
rrdtool('tune', $filename, $options);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user