Мне нужно, чтобы сетевые сообщения отправлялись, когда у меня происходит сбой или зависание службы systemd (т. Е. Переход в состояние сбоя; я отслеживаю зависание с помощью WatchdogSec =). Я заметил, что более новые systemd имеют FailureAction =, но потом увидел, что это не разрешает произвольные команды, а только перезагрузку / выключение.
В частности, мне нужен способ отправки одного сетевого сообщения, когда systemd обнаруживает сбой программы, и другого, когда он обнаруживает зависание.
Я надеюсь на лучший ответ, чем «анализ журналов», и мне нужно что-то, что имеет почти мгновенное время отклика, поэтому я не думаю, что подход к опросу хорош; это должно быть что-то вызванное происходящим событием.
Ответы:
Блоки systemd поддерживают функцию OnFailure, которая активирует блок (или более), когда блок выходит из строя. Вы можете положить что-то вроде
А затем создать
notify-failed@.service
сервис , где вы можете использовать нужный спецификатор (вы , вероятно, хотите , по крайней мере , % I) , чтобы запустить сценарий или команду , которая будет посылать уведомления.Вы можете увидеть практический пример в http://northernlightlabs.se/systemd.status.mail.on.unit.failure
источник
notify%n.service
это избыточно, и приведет кnotify@my-service.service.service
. Во-вторых,%i
следует использовать вместо%I
, иначе все тире в имени будут преобразованы в прямые.Просто мой способ уведомить:
/etc/systemd/system/notify-email@.service
добавить в systemd:
У других сервисов добавьте:
Перезагрузите конфигурацию:
источник
Я столкнулся с этой утилитой, которая, кажется, обеспечивает это: https://github.com/joonty/systemd_mon
источник