60 votes

recevoir une notification lorsque le service surveillé par systemd entre en état d'échec

J'ai besoin que des messages réseau soient envoyés lorsqu'un service systemd que j'ai se plante ou est bloqué (c'est-à-dire qu'il entre dans l'état "failed" ; je surveille l'état "hung" en utilisant WatchdogSec=). J'ai remarqué que les nouveaux systemd ont FailureAction=, mais j'ai vu que cela n'autorise pas les commandes arbitraires, mais seulement le redémarrage ou l'arrêt.

Plus précisément, j'ai besoin d'un moyen pour qu'un message réseau soit envoyé lorsque systemd détecte que le programme s'est planté, et un autre lorsqu'il détecte qu'il s'est arrêté.

J'espère une meilleure réponse que "analyser les journaux", et j'ai besoin de quelque chose qui a un temps de réponse quasi instantané, donc je ne pense pas qu'une approche par sondage soit bonne ; il devrait s'agir de quelque chose qui se déclenche lorsque l'événement se produit.

56voto

BiHi Points 928

Les unités systemd supportent OnFailure qui activera une unité (ou plus) lorsque l'unité devient défaillante. Vous pouvez mettre quelque chose comme

 OnFailure=notify-failed@%n

Puis créez le fichier notify-failed@.service où vous pouvez utiliser le service spécificateur (vous voudrez probablement au moins %i) pour lancer le script ou la commande qui enverra la notification.

Vous pouvez voir un exemple pratique dans http://northernlightlabs.se/systemd.status.mail.on.unit.failure

36voto

Nigel Points 131

C'est juste ma façon de notifier :

/etc/systemd/system/notify-email@.service

[Unit]
Description=Sent email 

[Service]
Type=oneshot
ExecStart=/usr/bin/bash -c '/usr/bin/systemctl status %i | /usr/bin/mailx -Ssendwait -s "[SYSTEMD_%i] Fail" your_admin@company.blablabla'

[Install]
WantedBy=multi-user.target

ajouter à systemd :

systemctl enable /etc/systemd/system/notify-email@.service

D'autres services ajoutent :

[Unit]
OnFailure=notify-email@%i.service

Recharger la configuration :

systemctl daemon-reload

0voto

Michael Warkentin Points 117

Je suis tombé sur cet utilitaire qui semble répondre à ce besoin : https://github.com/joonty/systemd_mon

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X