sd-keepaneye aims at monitoring systemd services and notifying
failures. One initial goal of this tool was to bring back the nice
functionality of cron, which mails stderr output.
It features the following functionality:
- send mail upon systemd job completion: this feature is provided by
keepaneyedwhich monitors systemd events using the D-Bus interface. It monitors all jobs and notifies when a job ends (only for failures in the default configuration). - collectd plugin to gather stats on unit states (active, failed, etc.).
The OnFailure= alternative consists in defining a unit called when
the monitored service fails. Example implementation:
/etc/systemd/system/unit-status-mail@.service:
[Unit]
Description=Unit Status Mailer Service
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/unit-status-mail %I "Hostname: %H" "Machine ID: %m" "Boot ID: %b"
/usr/local/bin/unit-status-mail:
#!/bin/bash
MAILTO="root"
MAILFROM="unit-status-mailer"
UNIT=$1
EXTRA=""
for e in "${@:2}"; do
EXTRA+="$e"$'\n'
done
UNITSTATUS=$(systemctl status $UNIT -l -n 9999)
sendmail $MAILTO <<EOF
From:$MAILFROM
To:$MAILTO
Subject:Status mail for unit: $UNIT
Status report for unit: $UNIT
$EXTRA
$UNITSTATUS
EOF
echo -e "Status mail sent to: $MAILTO for unit: $UNIT"
and for instance /etc/systemd/system/certbot.service.d/email-failure.conf:
[Unit]
OnFailure=unit-status-mail@%n.service
Since systemd v244, this can even be defined for all services:
Unit files now support top level dropin directories of the form <unit_type>.d/ (e.g. service.d/) that may be used to add configuration that affects all corresponding unit files.
This is thus achieved in /etc/systemd/system/service.d/email-failure.conf:
[Unit]
OnFailure=unit-status-mail@%n.service
systemd_mon does about the same
thing and can notify to slack or hipchat. However, the list of monitored
services must be specified in a configuration file.
sagbescheid seems to do the same
and can notify to IRC. It also can monitor Unit state transitions.
Code may be downloaded using Git :
$ git clone http://sml.zincube.net/~niol/repositories.git/sd-keepaneye
It is browsable online in sd-keepaneye's repository browser, and this page also provides an up to date snapshot of the development source tree.
Patches are very welcome.
This project has too few users/contributors to justify the use of a dedicated bug tracking application.
Bug reports and feature requests may go in :
- by e-mail, directly to alexandre.rossi@gmail.com (please put
sd-keepaneyesomewhere in the subject), - through the sd-keepaneye's Github bug tracker.