Poller rewrite (Try 2) (#13525)

* core WIP

* try to finish up

* trim space too
and a couple of cleanups

* update test data

* put escapes back

* another net-snmp difference

* correct copy paste error

* WIP

* Use new code YAY

* a tiny bit more

* Kind of working

* Handle manual modules correctly

* convert core to modern module

* Only save metrics if modules is not overridden

* correct module exists check

* database error handling

* debug handling

* restore bad changes

* Introduce Actions
 RunAlertRulesAction
 UpdateDeviceGroupsAction

* tweaks to output

* Fix some issues in outside code

* Style fixes

* fixes to module status checks

* typehints!

* Use logger only and DI

* OS module not named correctly

* Work on quiet output a bit more

* generically don't change output when disabling debug if the driver is already stack

* Fix missing $device variable for legacy os polling
Fix missing dbFacile functions when no legacy modules polled in RunAlertRulesAction

* restore legacy os module shim

* use the new poller code for tests

* PollingDevice event

* Fix some issues and enable/disable error reporting around legacy modules

* typehints

* fully update baseline

* Use Process for version commands so we don't leak debug output.

* don't detect rrdtool version in ci every time

* style fixes

* Warning fixes

* more fixes

* re-update baseline

* remove diff noise

* fix up alerts

* Catch exceptions in device ip lookup

* Revert accidental snmp.inc.php poller target change
(should have been ?: not ??)
This commit is contained in:
Tony Murray
2021-11-17 19:23:55 -06:00
committed by GitHub
parent 7893b8bebe
commit c79b187d72
48 changed files with 1187 additions and 305 deletions

View File

@@ -24,6 +24,8 @@
* @author Heath Barnhart <hbarnhart@kanren.net>
*/
use App\Action;
use App\Actions\Device\UpdateDeviceGroupsAction;
use LibreNMS\Alert\AlertRules;
use LibreNMS\Config;
use LibreNMS\Data\Store\Datastore;
@@ -33,6 +35,7 @@ $init_modules = ['polling', 'alerts', 'laravel'];
require __DIR__ . '/includes/init.php';
$poller_start = microtime(true);
Log::setDefaultDriver('console');
echo Config::get('project_name') . " Poller\n";
$options = getopt('h:m:i:n:r::d::v::a::f::q');
@@ -139,7 +142,7 @@ foreach (dbFetch($query) as $device) {
// Update device_groups
echo "### Start Device Groups ###\n";
$dg_start = microtime(true);
$group_changes = \App\Models\DeviceGroup::updateGroupsFor($device['device_id']);
$group_changes = Action::execute(UpdateDeviceGroupsAction::class);
d_echo('Groups Added: ' . implode(',', $group_changes['attached']) . PHP_EOL);
d_echo('Groups Removed: ' . implode(',', $group_changes['detached']) . PHP_EOL);
echo '### End Device Groups, runtime: ' . round(microtime(true) - $dg_start, 4) . "s ### \n\n";