mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
* Datastores to object oriented code, using the Laravel IoC container Change instantiation better DI move OpenTSDB Small re-orgs remove unused stuff Fix graphs and other scripts Use DI for all except rrd fix up connection error handling Add tests, fix up a "few" things Add Config::forget() Style fixes Don't reference legacy code remove accidental code paste Add datastores phpunit groups some tests * rebase fixes * some test fixes * shorter tests * shorter tests * Don't except when rrdtool can't be started. * restore tests * fix rrd tests * fix iterable change upstream * fix isValidDataset * fix invalid data bug * fix mysql incorrect ds * fix issue with data that is too long * use regular data_update() * Use log facade * OpenTSDB mis-ordered arguments fix * Making a singleton with different options makes different singletons. Just use the global config settings to disable datastores. * only filter tags for datastores that won't it don't modify the tags permanently * Update copyrights to include original authors. * Stats for all datastores * Fix mysql sends different rrd / other ds names * fix snmp last stats not initialized remove unused function * remove unused function and move single use function closer to its use * InfluxDB does not need to update null or U values. Skip write if all fields are empty * Fix smart value checks * fix style issues * Make sure port data is stored the same way as before for Graphite and OpenTSDB Add ifIndex tag to all to be compatible * Missed rrdtool_tune() call * Test update WIP * OpenTSDB now includes tags * fix style
88 lines
3.1 KiB
PHP
Executable File
88 lines
3.1 KiB
PHP
Executable File
#!/usr/bin/env php
|
|
<?php
|
|
|
|
/*
|
|
* LibreNMS module to poll Nagios Services
|
|
*
|
|
* Copyright (c) 2016 Aaron Daniels <aaron@daniels.id.au>
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the
|
|
* Free Software Foundation, either version 3 of the License, or (at your
|
|
* option) any later version. Please see LICENSE.txt at the top level of
|
|
* the source code distribution for details.
|
|
*/
|
|
|
|
use LibreNMS\Data\Store\Datastore;
|
|
|
|
$init_modules = array();
|
|
require __DIR__ . '/includes/init.php';
|
|
|
|
$options = getopt('drfpgh:');
|
|
if (set_debug(isset($options['d']))) {
|
|
echo "DEBUG!\n";
|
|
}
|
|
|
|
$poller_start = microtime(true);
|
|
|
|
$datastore = Datastore::init($options);
|
|
|
|
echo "Starting service polling run:\n\n";
|
|
$polled_services = 0;
|
|
|
|
$where = '';
|
|
if ($options['h']) {
|
|
if (is_numeric($options['h'])) {
|
|
$where = "AND `S`.`device_id` = ".$options['h'];
|
|
} else {
|
|
if (preg_match('/\*/', $options['h'])) {
|
|
$where = "AND `hostname` LIKE '".str_replace('*', '%', mres($options['h']))."'";
|
|
} else {
|
|
$where = "AND `hostname` = '".mres($options['h'])."'";
|
|
}
|
|
}
|
|
}
|
|
|
|
$sql = 'SELECT D.*,S.*,attrib_value FROM `devices` AS D'
|
|
.' INNER JOIN `services` AS S ON S.device_id = D.device_id AND D.disabled = 0 '.$where
|
|
.' LEFT JOIN `devices_attribs` as A ON D.device_id = A.device_id AND A.attrib_type = "override_icmp_disable"'
|
|
.' ORDER by D.device_id DESC;';
|
|
|
|
foreach (dbFetchRows($sql) as $service) {
|
|
// Run the polling function if service is enabled and the associated device is up, "Disable ICMP Test" option is not enabled,
|
|
// or service hostname/ip is different from associated device
|
|
if (!$service['service_disabled'] && ($service['status'] == 1 || ($service['status'] == 0 && $service['status_reason'] === 'snmp') ||
|
|
$service['attrib_value'] === 'true' || ($service['service_ip'] !== $service['hostname'] &&
|
|
$service['service_ip'] !== inet6_ntop($service['ip']) ))) {
|
|
poll_service($service);
|
|
$polled_services++;
|
|
} else {
|
|
if (!$service['service_disabled']) {
|
|
d_echo("\nService check - ".$service['service_id']."\nSkipping service check because device "
|
|
.$service['hostname']." is down due to icmp.\n");
|
|
Log::event(
|
|
"Service check - {$service['service_desc']} ({$service['service_id']}) -
|
|
Skipping service check because device {$service['hostname']} is down due to icmp",
|
|
$service['device_id'],
|
|
'service',
|
|
4,
|
|
$service['service_id']
|
|
);
|
|
} else {
|
|
d_echo("\nService check - ".$service['service_id']."\nSkipping service check because device "
|
|
.$service['service_type']." is disabled.\n");
|
|
}
|
|
}
|
|
}
|
|
|
|
$poller_end = microtime(true);
|
|
$poller_run = ($poller_end - $poller_start);
|
|
$poller_time = substr($poller_run, 0, 5);
|
|
|
|
|
|
$string = $argv[0] . " " . date(\LibreNMS\Config::get('dateformat.compact'))
|
|
." - $polled_services services polled in $poller_time secs";
|
|
d_echo("$string\n");
|
|
|
|
Datastore::terminate();
|