check-systemd-service

Whats this and why?

This script is intended for icinga/nagios/icinga2 to check the state of a systemd service. We check the ServiceState and the Substate.

This tools uses dbus to gather needed informations, as systemd-developer Lennart Poettering says it is the right way to do and cli output is not stable and should not be parsed.

https://github.com/systemd/systemd/issues/83

How to install?

Debian

git clone https://github.com/pengutronix/monitoring-check-systemd-service.git
apt-get install python3-nagiosplugin python3-gi

RedHat / CentOS

python 3.6 and the corresponding gobject implementation are provided by the EPEL package. Follow the instructions to install EPEL on your system. The python3-nagiosplugin can be found at https://github.com/joernott/python-nagiosplugin-rpm and the RPM for this plugin can be built using the instructions below.

yum -y install  rh-python36 python36-gobject python36-gobject-base python3-nagiosplugin nagios-plugin-systemd-service    

How to build the RPM

Set up your RPMBUILD environment and put the SPEC file into the SPECS folder. Then get the source and run rpmbuild:

curl -o SPECS https://https://raw.githubusercontent.com/joernott/monitoring-check-systemd-service/master/contrib/check-systemd-service.spec
spectool -g -R SPECS/check-systemd-service.spec
rpmbuild -ba SPECS/check-systemd-service.spec

How to use?

> ./check-systemd-service -h
usage: check-systemd-service [-h] [-v] [-t TIMEOUT] unit

Nagios plugin to check a systemd service on different properties

positional arguments:
  unit                  Check this Unit

optional arguments:
  -h, --help            show this help message and exit
  -v, --verbose         increase output verbosity (use up to 3 times)
  -t TIMEOUT, --timeout TIMEOUT
            abort execution after TIMEOUT seconds

> ./check-systemd-service -t 3 systemd-logind 
SYSTEMD SERVICE SYSTEMD-LOGIND OK - ServiceState is active(running)

optional features (future)

It could check for every systemd service property. The plugin has access to the whole systemd-dbus dataset without parsing any CLI output.