mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
push more state to memcached fix sensors poller to not retry all temperature sensors where return >9000 5 times (lmsensors returns milliC, so 30000 for 30C)
git-svn-id: http://www.observium.org/svn/observer/trunk@3244 61d68cd4-352d-0410-923a-c4978735b2b8
This commit is contained in:
@@ -13,6 +13,14 @@ foreach (dbFetchRows("SELECT * FROM `mempools` WHERE device_id = ?", array($devi
|
||||
{
|
||||
if (!is_integer($i/2)) { $row_colour = $list_colour_a; } else { $row_colour = $list_colour_b; }
|
||||
|
||||
if ($config['memcached']['enable'])
|
||||
{
|
||||
$state = $memcache->get('mempool-'.$mempool['mempool_id'].'-state');
|
||||
if($debug) { print_r($state); }
|
||||
if(is_array($state)) { $mempool = array_merge($mempool, $state); }
|
||||
unset($state);
|
||||
}
|
||||
|
||||
$text_descr = rewrite_entity_descr($mempool['mempool_descr']);
|
||||
|
||||
$mempool_url = "device/".$device['device_id']."/health/mempool/";
|
||||
|
@@ -14,6 +14,15 @@ if (count($mempools))
|
||||
|
||||
foreach ($mempools as $mempool)
|
||||
{
|
||||
|
||||
if ($config['memcached']['enable'])
|
||||
{
|
||||
$state = $memcache->get('mempool-'.$mempool['mempool_id'].'-state');
|
||||
if($debug) { print_r($state); }
|
||||
if(is_array($state)) { $mempool = array_merge($mempool, $state); }
|
||||
unset($state);
|
||||
}
|
||||
|
||||
$percent= round($mempool['mempool_perc'],0);
|
||||
$text_descr = rewrite_entity_descr($mempool['mempool_descr']);
|
||||
$total = formatStorage($mempool['mempool_total']);
|
||||
|
@@ -6,12 +6,10 @@ $port = dbFetchRow("SELECT * FROM `ports` WHERE `port_id` = ?", array($vars['por
|
||||
|
||||
if ($config['memcached']['enable'])
|
||||
{
|
||||
$oids = array('ifInOctets', 'ifOutOctets', 'ifInUcastPkts', 'ifOutUcastPkts', 'ifInErrors', 'ifOutErrors');
|
||||
foreach ($oids as $oid)
|
||||
{
|
||||
$port[$oid.'_rate'] = $memcache->get('port-'.$port['port_id'].'-'.$oid.'_rate');
|
||||
if ($debug) { echo("MC[".$oid."->".$port[$oid.'_rate']."]"); }
|
||||
}
|
||||
$state = $memcache->get('port-'.$port['port_id'].'-state');
|
||||
if($debug) { print_r($state); }
|
||||
if(is_array($state)) { $port = array_merge($port, $state); }
|
||||
unset($state);
|
||||
}
|
||||
|
||||
$port_details = 1;
|
||||
|
@@ -108,12 +108,10 @@ if ($vars['view'] == 'minigraphs')
|
||||
{
|
||||
if ($config['memcached']['enable'])
|
||||
{
|
||||
$oids = array('ifInOctets', 'ifOutOctets', 'ifInUcastPkts', 'ifOutUcastPkts', 'ifInErrors', 'ifOutErrors');
|
||||
foreach ($oids as $oid)
|
||||
{
|
||||
$port[$oid.'_rate'] = $memcache->get('port-'.$port['port_id'].'-'.$oid.'_rate');
|
||||
if ($debug) { echo("MC[".$oid."->".$port[$oid.'_rate']."]"); }
|
||||
}
|
||||
$state = $memcache->get('port-'.$port['port_id'].'-state');
|
||||
if($debug) { print_r($state); }
|
||||
if(is_array($state)) { $port = array_merge($port, $state); }
|
||||
unset($state);
|
||||
}
|
||||
|
||||
include("includes/print-interface.inc.php");
|
||||
|
@@ -19,6 +19,15 @@ foreach (dbFetchRows("SELECT * FROM `mempools` AS M, `devices` as D WHERE D.devi
|
||||
{
|
||||
$text_descr = $mempool['mempool_descr'];
|
||||
|
||||
if ($config['memcached']['enable'])
|
||||
{
|
||||
$state = $memcache->get('mempool-'.$mempool['mempool_id'].'-state');
|
||||
if($debug) { print_r($state); }
|
||||
if(is_array($state)) { $port = array_merge($mempool, $state); }
|
||||
unset($state);
|
||||
}
|
||||
|
||||
|
||||
$mempool_url = "device/device=".$mempool['device_id']."/tab=health/metric=mempool/";
|
||||
$mini_url = "graph.php?id=".$mempool['mempool_id']."&type=".$graph_type."&from=".$config['time']['day']."&to=".$config['time']['now']."&width=80&height=20&bg=f4f4f4";
|
||||
|
||||
|
@@ -308,15 +308,15 @@ $ports = dbFetchRows($query, $param);
|
||||
|
||||
// FIXME - only populate what we need to search at this point, because we shouldn't show *all* ports, as it's silly.
|
||||
|
||||
foreach ($ports as $p)
|
||||
foreach ($ports as $port)
|
||||
{
|
||||
if ($config['memcached']['enable'])
|
||||
{
|
||||
$oids = array('ifInOctets', 'ifOutOctets', 'ifInUcastPkts', 'ifOutUcastPkts', 'ifInErrors', 'ifOutErrors');
|
||||
foreach ($oids as $oid)
|
||||
if ($config['memcached']['enable'])
|
||||
{
|
||||
$ports[$port['port_id']][$oid.'_rate'] = $memcache->get('port-'.$port['port_id'].'-'.$oid.'_rate');
|
||||
if ($debug) { echo("MC[".$oid."->".$port[$oid.'_rate']."]"); }
|
||||
$state = $memcache->get('port-'.$port['port_id'].'-state');
|
||||
if(is_array($state)) { $ports[$port['port_id']] = array_merge($port, $state); }
|
||||
unset($state);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -17,7 +17,7 @@ function poll_sensor($device, $class, $unit)
|
||||
if ($debug) echo("Attempt $i ");
|
||||
$sensor_value = trim(str_replace("\"", "", snmp_get($device, $sensor['sensor_oid'], "-OUqnv", "SNMPv2-MIB")));
|
||||
|
||||
if ($sensor_value < 9000) break; # TME sometimes sends 999.9 when it is right in the middle of an update;
|
||||
if (is_numeric($sensor_value) && $sensor_value != 9999) break; # TME sometimes sends 999.9 when it is right in the middle of an update;
|
||||
sleep(1); # Give the TME some time to reset
|
||||
}
|
||||
} else {
|
||||
|
@@ -31,9 +31,16 @@ foreach (dbFetchRows("SELECT * FROM mempools WHERE device_id = ?", array($device
|
||||
}
|
||||
rrdtool_update($mempool_rrd,"N:".$mempool['used'].":".$mempool['free']);
|
||||
|
||||
dbUpdate(array('mempool_used' => $mempool['used'], 'mempool_perc' => $percent, 'mempool_free' => $mempool['free'],
|
||||
'mempool_total' => $mempool['total'], 'mempool_largestfree' => $mempool['largestfree'], 'mempool_lowestfree' => $mempool['lowestfree']),
|
||||
'mempools', '`mempool_id` = ?', array($mempool['mempool_id']));
|
||||
$mempool['state'] = array('mempool_used' => $mempool['used'], 'mempool_perc' => $percent, 'mempool_free' => $mempool['free'],
|
||||
'mempool_total' => $mempool['total'], 'mempool_largestfree' => $mempool['largestfree'], 'mempool_lowestfree' => $mempool['lowestfree']);
|
||||
|
||||
if ($config['memcached']['enable'])
|
||||
{
|
||||
if($debug) { print_r($mempool['state']); }
|
||||
$memcache->set('mempool-'.$mempool['mempool_id'].'-value', $mempool['state']);
|
||||
} else {
|
||||
dbUpdate($mempool['state'], 'mempools', '`mempool_id` = ?', array($mempool['mempool_id']));
|
||||
}
|
||||
|
||||
echo("\n");
|
||||
}
|
||||
|
@@ -166,13 +166,17 @@ foreach ($ports as $port)
|
||||
|
||||
if ($config['memcached']['enable'])
|
||||
{
|
||||
$port['poll_time'] = $memcache->get('port-'.$port['port_id'].'-poll_time');
|
||||
# echo("time".$port['poll_time']);
|
||||
$state = $memcache->get('port-'.$port['port_id'].'-state');
|
||||
if($debug) { print_r($state); }
|
||||
if(is_array($state)) { $port = array_merge($port, $state); }
|
||||
unset($state);
|
||||
}
|
||||
|
||||
$polled_period = $polled - $port['poll_time'];
|
||||
|
||||
$port['update'] = array();
|
||||
$port['state'] = array();
|
||||
|
||||
if ($config['slow_statistics'] == TRUE)
|
||||
{
|
||||
$port['update']['poll_time'] = $polled;
|
||||
@@ -182,9 +186,9 @@ foreach ($ports as $port)
|
||||
|
||||
if ($config['memcached']['enable'])
|
||||
{
|
||||
$memcache->set('port-'.$port['port_id'].'-poll_time', $polled);
|
||||
$memcache->set('port-'.$port['port_id'].'-poll_prev', $port['poll_time']);
|
||||
$memcache->set('port-'.$port['port_id'].'-poll_period', $polled_period);
|
||||
$port['state']['poll_time'] = $polled;
|
||||
$port['state']['poll_prev'] = $port['poll_time'];
|
||||
$port['state']['poll_period'] = $polled_period;
|
||||
}
|
||||
|
||||
// Copy ifHC[In|Out]Octets values to non-HC if they exist
|
||||
@@ -291,9 +295,8 @@ foreach ($ports as $port)
|
||||
|
||||
if ($config['memcached']['enable'])
|
||||
{
|
||||
$port[$oid] = $memcache->get('port-'.$port['port_id'].'-'.$oid);
|
||||
$memcache->set('port-'.$port['port_id'].'-'.$oid, $this_port[$oid]);
|
||||
$memcache->set('port-'.$port['port_id'].'-'.$oid.'_prev', $port[$oid]);
|
||||
$port['state'][$oid] = $this_port[$oid];
|
||||
$port['state'][$oid.'_prev'] = $port[$oid];
|
||||
}
|
||||
|
||||
$oid_prev = $oid . "_prev";
|
||||
@@ -311,10 +314,10 @@ foreach ($ports as $port)
|
||||
}
|
||||
|
||||
if ($config['memcached']['enable'])
|
||||
{
|
||||
$memcache->set('port-'.$port['port_id'].'-'.$oid.'_rate', $oid_rate);
|
||||
$memcache->set('port-'.$port['port_id'].'-'.$oid.'_delta', $oid_diff);
|
||||
}
|
||||
{
|
||||
$port['state'][$oid.'_rate'] = $oid_rate;
|
||||
$port['state'][$oid.'_delta'] = $oid_diff;
|
||||
}
|
||||
|
||||
if ($debug) { echo("\n $oid ($oid_diff B) $oid_rate Bps $polled_period secs\n"); }
|
||||
}
|
||||
@@ -342,6 +345,14 @@ foreach ($ports as $port)
|
||||
echo('bytes('.formatStorage($port['stats']['ifInOctets_diff']).'/'.formatStorage($port['stats']['ifOutOctets_diff']).')');
|
||||
echo('pkts('.format_si($port['stats']['ifInUcastPkts_rate']).'pps/'.format_si($port['stats']['ifOutUcastPkts_rate']).'pps)');
|
||||
|
||||
// Store aggregate in/out state
|
||||
if ($config['memcached']['enable'])
|
||||
{
|
||||
$port['state']['ifOctets_rate'] = $port['stats']['ifOutOctets_rate'] + $port['stats']['ifInOctets_rate'];
|
||||
$port['state']['ifUcastPkts_rate'] = $port['stats']['ifOutUcastPkts_rate'] + $port['stats']['ifInUcastPkts_rate'];
|
||||
$port['state']['ifErrors_rate'] = $port['stats']['ifOutErrors_rate'] + $port['stats']['ifInErrors_rate'];
|
||||
}
|
||||
|
||||
// Port utilisation % threshold alerting. // FIXME allow setting threshold per-port. probably 90% of ports we don't care about.
|
||||
if ($config['alerts']['port_util_alert'])
|
||||
{
|
||||
@@ -412,6 +423,13 @@ foreach ($ports as $port)
|
||||
// Do Alcatel Detailed Stats
|
||||
if ($device['os'] == "aos") { include("port-alcatel.inc.php"); }
|
||||
|
||||
// Update Memcached
|
||||
if ($config['memcached']['enable'])
|
||||
{
|
||||
if($debug) { print_r($port['state']); }
|
||||
$memcache->set('port-'.$port['port_id'].'-state', $port['state']);
|
||||
}
|
||||
|
||||
// Update Database
|
||||
if (count($port['update']))
|
||||
{
|
||||
@@ -420,6 +438,8 @@ foreach ($ports as $port)
|
||||
}
|
||||
// End Update Database
|
||||
|
||||
|
||||
|
||||
// Send alerts for interface flaps.
|
||||
if ($config['alerts']['port']['ifdown'] && ($port['ifOperStatus'] != $this_port['ifOperStatus']) && $port['ignore'] == 0)
|
||||
{
|
||||
|
Reference in New Issue
Block a user