Use snmpEngineTime as primary uptime value

This commit is contained in:
laf
2015-07-19 11:03:43 +01:00
parent 6efe5b086c
commit 894a96c72a
+31 -31
View File
@@ -28,43 +28,43 @@ if (!empty($agent_data['uptime'])) {
}
if (empty($uptime)) {
$hrSystemUptime = snmp_get($device, 'hrSystemUptime.0', '-Oqv', 'HOST-RESOURCES-MIB');
if (!empty($hrSystemUptime) && !strpos($hrSystemUptime, 'No') && ($device['os'] != 'windows')) {
echo 'Using hrSystemUptime ('.$hrSystemUptime.")\n";
$agent_uptime = $uptime;
// Move uptime into agent_uptime
// HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (63050465) 7 days, 7:08:24.65
$hrSystemUptime = str_replace('(', '', $hrSystemUptime);
$hrSystemUptime = str_replace(')', '', $hrSystemUptime);
list($days,$hours, $mins, $secs) = explode(':', $hrSystemUptime);
list($secs, $microsecs) = explode('.', $secs);
$hours = ($hours + ($days * 24));
$mins = ($mins + ($hours * 60));
$secs = ($secs + ($mins * 60));
$uptime = $secs;
$uptime = (integer) snmp_get($device, 'snmpEngineTime.0', '-OUqv', 'SNMP-FRAMEWORK-MIB');
if (!is_numeric($snmpEngineTime)) {
$hrSystemUptime = snmp_get($device, 'hrSystemUptime.0', '-Oqv', 'HOST-RESOURCES-MIB');
if (!empty($hrSystemUptime) && !strpos($hrSystemUptime, 'No') && ($device['os'] != 'windows')) {
echo 'Using hrSystemUptime ('.$hrSystemUptime.")\n";
$agent_uptime = $uptime;
// Move uptime into agent_uptime
// HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (63050465) 7 days, 7:08:24.65
$hrSystemUptime = str_replace('(', '', $hrSystemUptime);
$hrSystemUptime = str_replace(')', '', $hrSystemUptime);
list($days,$hours, $mins, $secs) = explode(':', $hrSystemUptime);
list($secs, $microsecs) = explode('.', $secs);
$hours = ($hours + ($days * 24));
$mins = ($mins + ($hours * 60));
$secs = ($secs + ($mins * 60));
$uptime = $secs;
}
else {
echo 'Using SNMP Agent Uptime ('.$poll_device['sysUpTime'].")\n";
// SNMPv2-MIB::sysUpTime.0 = Timeticks: (2542831) 7:03:48.31
$poll_device['sysUpTime'] = str_replace('(', '', $poll_device['sysUpTime']);
$poll_device['sysUpTime'] = str_replace(')', '', $poll_device['sysUpTime']);
list($days, $hours, $mins, $secs) = explode(':', $poll_device['sysUpTime']);
list($secs, $microsecs) = explode('.', $secs);
$hours = ($hours + ($days * 24));
$mins = ($mins + ($hours * 60));
$secs = ($secs + ($mins * 60));
$uptime = $secs;
}//end if
}
else {
echo 'Using SNMP Agent Uptime ('.$poll_device['sysUpTime'].")\n";
// SNMPv2-MIB::sysUpTime.0 = Timeticks: (2542831) 7:03:48.31
$poll_device['sysUpTime'] = str_replace('(', '', $poll_device['sysUpTime']);
$poll_device['sysUpTime'] = str_replace(')', '', $poll_device['sysUpTime']);
list($days, $hours, $mins, $secs) = explode(':', $poll_device['sysUpTime']);
list($secs, $microsecs) = explode('.', $secs);
$hours = ($hours + ($days * 24));
$mins = ($mins + ($hours * 60));
$secs = ($secs + ($mins * 60));
$uptime = $secs;
echo 'Using snmpEngineTime ('.$uptime.")\n";
}//end if
}//end if
// Use snmpEngineTime (68 year rollover) to cross-reference for false positives in device rebooting due to sysUpTime rollover issues
$snmpEngineTime = (integer) snmp_get($device, 'snmpEngineTime.0', '-OUqv', 'SNMP-FRAMEWORK-MIB');
if (!is_numeric($snmpEngineTime)) {
$snmpEngineTime = 0;
}
if (is_numeric($uptime)) {
if ($uptime < $device['uptime'] && $uptime >= $snmpEngineTime) {
if ($uptime < $device['uptime']) {
notify($device, 'Device rebooted: '.$device['hostname'], 'Device Rebooted : '.$device['hostname'].' '.formatUptime($uptime).' ago.');
log_event('Device rebooted after '.formatUptime($device['uptime']), $device, 'reboot', $device['uptime']);
}