Always mark device last_discovered (#15218)

Previously, if the device was ping only, it wasn't marked as discovered.
Now we always run discovery, but basically all it does is update last_discovered.
This commit is contained in:
Tony Murray
2023-08-13 09:56:54 -05:00
committed by GitHub
parent 2eed0722e7
commit d865e3b372
3 changed files with 14 additions and 11 deletions

View File

@ -589,7 +589,7 @@ class Service:
"""SELECT `device_id`,
`poller_group`,
COALESCE(`last_polled` <= DATE_ADD(DATE_ADD(NOW(), INTERVAL -%s SECOND), INTERVAL COALESCE(`last_polled_timetaken`, 0) SECOND), 1) AS `poll`,
IF(snmp_disable=1 OR status=0, 0, IF (%s < `last_discovered_timetaken` * 1.25, 0, COALESCE(`last_discovered` <= DATE_ADD(DATE_ADD(NOW(), INTERVAL -%s SECOND), INTERVAL COALESCE(`last_discovered_timetaken`, 0) SECOND), 1))) AS `discover`
IF(status=0, 0, IF (%s < `last_discovered_timetaken` * 1.25, 0, COALESCE(`last_discovered` <= DATE_ADD(DATE_ADD(NOW(), INTERVAL -%s SECOND), INTERVAL COALESCE(`last_discovered_timetaken`, 0) SECOND), 1))) AS `discover`
FROM `devices`
WHERE `disabled` = 0 AND (
`last_polled` IS NULL OR

View File

@ -102,8 +102,20 @@ if (! empty(\LibreNMS\Config::get('distributed_poller_group'))) {
global $device;
foreach (dbFetch("SELECT * FROM `devices` WHERE disabled = 0 $where ORDER BY device_id DESC", $sqlparams) as $device) {
$device_start = microtime(true);
DeviceCache::setPrimary($device['device_id']);
$discovered_devices += (int) discover_device($device, $module_override);
if (discover_device($device, $module_override)) {
$discovered_devices++;
$device_time = round(microtime(true) - $device_start, 3);
DB::table('devices')->where('device_id', $device['device_id'])->update([
'last_discovered_timetaken' => $device_time,
'last_discovered' => DB::raw('NOW()'),
]);
echo "Discovered in $device_time seconds\n\n";
}
}
$end = microtime(true);

View File

@ -119,7 +119,6 @@ function discover_device(&$device, $force_module = false)
// Reset $valid array
$device['attribs'] = DeviceCache::getPrimary()->getAttribs();
$device_start = microtime(true);
// Start counting device poll time
echo $device['hostname'] . ' ' . $device['device_id'] . ' ' . $device['os'] . ' ';
@ -179,14 +178,6 @@ function discover_device(&$device, $force_module = false)
}
}
$device_time = round(microtime(true) - $device_start, 3);
dbUpdate(['last_discovered' => ['NOW()'], 'last_discovered_timetaken' => $device_time], 'devices', '`device_id` = ?', [$device['device_id']]);
echo "Discovered in $device_time seconds\n";
echo PHP_EOL;
return true;
}
//end discover_device()