Necesito que me envíen mensajes de red cuando un servicio systemd que tengo se cuelga o se cuelga (es decir, entra en estado fallido; superviso si se cuelga usando WatchdogSec =). Noté que los nuevos systemd tienen FailureAction =, pero luego vi que esto no permite comandos arbitrarios, sino solo reiniciar / apagar.
Específicamente, necesito una forma de enviar un mensaje de red cuando systemd detecta que el programa se ha bloqueado y otro cuando detecta que se ha bloqueado.
Espero una respuesta mejor que "analizar los registros", y necesito algo que tenga un tiempo de respuesta casi instantáneo, por lo que no creo que un enfoque de sondeo sea bueno; debería ser algo desencadenado por el evento que ocurre.
Respuestas:
Las unidades systemd admiten OnFailure que activará una unidad (o más) cuando la unidad vaya a fallar. Puedes poner algo como
Y luego cree el
[email protected]
servicio donde pueda usar el especificador requerido (probablemente desee al menos% i) para iniciar el script o comando que enviará una notificación.Puede ver un ejemplo práctico en http://northernlightlabs.se/systemd.status.mail.on.unit.failure
fuente
notify%n.service
es redundante y dará como resultado[email protected]
. Segundo,%i
debe usarse en lugar de%I
, o todos los guiones del nombre se convertirán en barras diagonales.Solo mi forma de notificar:
/etc/systemd/system/[email protected]
agregar a systemd:
En otros servicios agregue:
Vuelva a cargar la configuración:
fuente
Encontré esta utilidad que parece proporcionar esto: https://github.com/joonty/systemd_mon
fuente