Files

157 lines
4.7 KiB
Markdown
Raw Permalink Normal View History

source: Extensions/Services.md
path: blob/master/doc/
[TOC]
# Setting up services
2019-09-09 05:48:35 -05:00
Services within LibreNMS provides the ability to use Nagios plugins to
perform additional monitoring outside of SNMP.
2019-09-09 05:48:35 -05:00
**These services are tied into an existing device so you need at least
one device to be able to add it to LibreNMS - localhost is a good
one. This is needed in order for alerting to work properly.**
## Pre installed plugins
2019-09-09 05:48:35 -05:00
Note: Plugins will only load if they are prefixed with "check_" and
they have that prefix stripped out when displaying in the "Add Serice"
GUI "Type" dropdown list.
2019-09-09 05:48:35 -05:00
Plugins come from two main places
[pkg-nagios-plugins-contrib](https://github.com/bzed/pkg-nagios-plugins-contrib)
and [monitoring-plugins](https://www.monitoring-plugins.org). This is
where you can find the documentation for most, if not all of the plugins.
2019-09-09 05:48:35 -05:00
The plugins are bundled with the pre build VM images via the package
`monitoring-plugins` in Ubuntu and `nagios-plugins-all` in CentOS.
## Setup
2019-09-09 05:48:35 -05:00
Service checks is now distributed aware. If you run a distributed
setup then you can now run `services-wrapper.py` in cron instead of
`check-services.php` across all polling nodes.
2019-09-09 05:48:35 -05:00
If you need to debug the output of services-wrapper.py then you can
add `-d` to the end of the command - it is NOT recommended to do this
in cron.
2019-09-09 05:48:35 -05:00
Firstly, install Nagios plugins however you would like, this could be
via yum, apt-get or direct from source.
Next, you need to enable the services within config.php with the following:
```php
$config['show_services'] = 1;
```
2019-09-09 05:48:35 -05:00
This will enable a new service menu within your navbar.
```php
$config['nagios_plugins'] = "/usr/lib/nagios/plugins";
```
2019-09-09 05:48:35 -05:00
This will point LibreNMS at the location of the nagios plugins -
please ensure that any plugins you use are set to executable. For example:
```
chmod +x /usr/lib/nagios/plugins/*
```
2019-09-09 05:48:35 -05:00
Finally, you now need to add services-wrapper.py to the current cron
file (/etc/cron.d/librenms typically) like:
```bash
*/5 * * * * librenms /opt/librenms/services-wrapper.py 1
```
2019-09-09 05:48:35 -05:00
Now you can add services via the main Services link in the navbar, or
via the 'Add Service' link within the device, services page.
2016-03-15 22:16:08 +10:00
2019-09-09 05:48:35 -05:00
Note that some services (procs, inodes, load and similar) will always
poll the local LibreNMS server it's running on, regardless of which
device you add it to.
2016-03-15 22:16:08 +10:00
## Performance data
2019-09-09 05:48:35 -05:00
By default, the check-services script will collect all performance
data that the Nagios script returns and display each datasource on a
separate graph. LibreNMS expects scripts to return using Nagios
convention for the response message structure:
[AEN200](https://nagios-plugins.org/doc/guidelines.html#AEN200)
2019-09-09 05:48:35 -05:00
However for some modules it would be better if some of this
information was consolidated on a single graph.
An example is the ICMP check. This check returns: Round Trip Average
(rta), Round Trip Min (rtmin) and Round Trip Max (rtmax).
2016-03-15 22:16:08 +10:00
These have been combined onto a single graph.
2019-09-09 05:48:35 -05:00
If you find a check script that would benefit from having some
datasources graphed together, please log an issue on GitHub with the
debug information from the script, and let us know which DS's should
go together. Example below:
2016-03-15 22:16:08 +10:00
2019-09-09 05:48:35 -05:00
```
./check-services.php -d
-- snip --
2016-03-15 22:16:08 +10:00
Nagios Service - 26
Request: /usr/lib/nagios/plugins/check_icmp localhost
Perf Data - DS: rta, Value: 0.016, UOM: ms
Perf Data - DS: pl, Value: 0, UOM: %
Perf Data - DS: rtmax, Value: 0.044, UOM: ms
Perf Data - DS: rtmin, Value: 0.009, UOM: ms
Response: OK - localhost: rta 0.016ms, lost 0%
Service DS: {
"rta": "ms",
"pl": "%",
"rtmax": "ms",
"rtmin": "ms"
}
OK u:0.00 s:0.00 r:40.67
RRD[update /opt/librenms/rrd/localhost/services-26.rrd N:0.016:0:0.044:0.009]
-- snip --
2019-09-09 05:48:35 -05:00
```
## Alerting
Services uses the Nagios Alerting scheme where:
2019-09-09 05:48:35 -05:00
```
0 = Ok,
1 = Warning,
2 = Critical,
```
2019-09-09 05:48:35 -05:00
To create an alerting rule to alert on service=critical, your alerting
rule would look like:
2019-09-09 05:48:35 -05:00
```
%services.service_status = "2"
2019-09-09 05:48:35 -05:00
```
2017-08-30 14:13:45 -05:00
## Debug
2019-09-09 05:48:35 -05:00
Change user to librenms for example
2017-08-30 14:13:45 -05:00
```
su - librenms
```
2019-09-09 05:48:35 -05:00
then you can run the following command to help troubleshoot services.
2017-08-30 14:13:45 -05:00
```
./check-services.php -d
```
2019-09-09 05:48:35 -05:00
## Service checks polling logic
2019-09-09 05:48:35 -05:00
Service check is skipped when the associated device is not pingable,
and an appropriate entry is populated in the event log. Service check
is polled if it's `IP address` parameter is not equal to associated
device's IP address, even when the associated device is not pingable.
2019-09-09 05:48:35 -05:00
To override the default logic and always poll service checks, you can
disable ICMP testing for any device by switching `Disable ICMP Test`
setting (Edit -> Misc) to ON.
Service checks will never be polled on disabled devices.