obtém notificação quando o serviço monitorado pelo systemd entra em estado com falha

26

Eu preciso ter mensagens de rede enviadas quando um serviço systemd falha ou é interrompido (isto é, entra em estado com falha; monitico para pendurado usando WatchdogSec =). Eu notei que o systemd mais novo tem o FailureAction =, mas depois viu que isso não permite comandos arbitrários, mas apenas reiniciando / shutdown.

Especificamente, eu preciso de uma maneira de ter uma mensagem de rede enviada quando o systemd detecta que o programa falhou, e outra quando ela detecta que está travada.

Eu estou esperando por uma resposta melhor do que "analisar os logs", e eu preciso de algo que tenha um tempo de resposta quase instantâneo, então eu não acho que uma abordagem de pesquisa é boa; deve ser algo desencadeado pelo evento que ocorre.

    
por Display Name 27.05.2015 / 21:03

3 respostas

29

unidades systemd suportam OnFailure que ativará uma unidade (ou mais) quando a unidade falhar. Você pode colocar algo como

 OnFailure=notify-failed@%n

Em seguida, crie o serviço [email protected] , no qual você pode usar o especificador (você provavelmente desejará pelo menos% i) para iniciar o script ou comando que enviará a notificação.

Você pode ver um exemplo prático no link

    
por 23.06.2015 / 22:10
4

Apenas minha maneira de notificar:

/etc/systemd/system/[email protected]

[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" [email protected]'

adicione ao systemd:

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

Em outros serviços, adicione:

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

Recarregue as configurações:

systemctl daemon-reload
    
por 01.08.2018 / 14:40
0

Me deparei com esse utilitário que parece fornecer isso: link

    
por 23.11.2017 / 20:25