J'ai besoin d'envoyer des messages réseau lorsqu'un service systemd tombe en panne ou est bloqué (c'est-à-dire qu'il entre en état d'échec; je surveille le blocage en utilisant WatchdogSec =). J'ai remarqué que les nouveaux systemd ont FailureAction =, mais j'ai vu que cela ne permettait pas les commandes arbitraires, mais simplement le redémarrage / l'arrêt.
Plus précisément, j'ai besoin d'un moyen pour envoyer un message réseau lorsque systemd détecte que le programme s'est écrasé, et un autre lorsqu'il détecte qu'il s'est bloqué.
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 presque instantané, donc je ne pense pas qu'une approche d'interrogation soit bonne; ce devrait être quelque chose déclenché par l'événement qui se produit.
Réponses:
Les unités systemd prennent en charge OnFailure qui active une unité (ou plus) lorsque l'unité tombe en panne. Vous pouvez mettre quelque chose comme
Et puis créez le
[email protected]
service où vous pouvez utiliser le spécificateur requis (vous voudrez probablement au moins% i) pour lancer le script ou la commande qui enverra une notification.Vous pouvez voir un exemple pratique dans http://n Northernlightlabs.se/systemd.status.mail.on.unit.failure
la source
notify%n.service
est redondant et se traduira par[email protected]
. Deuxièmement,%i
doit être utilisé à la place de%I
, ou tous les tirets du nom seront convertis en barres obliques.Juste ma façon d'avertir:
/etc/systemd/system/[email protected]
ajouter à systemd:
À d'autres services, ajoutez:
Rechargez la configuration:
la source
Je suis tombé sur cet utilitaire qui semble fournir ceci: https://github.com/joonty/systemd_mon
la source