Назад | Перейти на главную страницу

Перезапустить процесс с помощью monit, когда контрольная сумма файла изменилась

Я хочу перезапустить процесс, отслеживаемый с помощью monit, когда контрольная сумма файла не удалась. В настоящее время я использую

check process prosody with pidfile /var/run/prosody/prosody.pid
    depends certificate_file
    start program "/etc/init.d/prosody start"
    stop program "/etc/init.d/prosody stop"
    restart program "/etc/init.d/prosody restart"

check file certificate_file with path /etc/prosody/certs/fullchain.pem
    if changed checksum then exec "/usr/bin/monit restart prosody"

Но я бы хотел иметь команду вроде if changed checksum then restart prosody вместо использования двоичного файла monit через exec.

В restart кажется, что действие ограничено перезапуском текущего отслеживаемого процесса, поэтому действие в check file блок ничего не делает.

Проще говоря, действие начать сначала

check process prosody with pidfile /var/run/prosody/prosody.pid
    depends certificate_file
    start program "/etc/init.d/prosody start"
    stop program "/etc/init.d/prosody stop"
    restart program "/etc/init.d/prosody restart"

check file certificate_file with path /etc/prosody/certs/fullchain.pem
    if changed checksum then restart

Перезапуск события будет распространен на все зависимости с журналом, аналогичным

[CEST Mar 27 11:57:30] error    : 'certificate_file' checksum was changed for /etc/prosody/certs/fullchain.pem
[CEST Mar 27 11:57:30] info     : 'certificate_file' trying to restart
[CEST Mar 27 11:57:30] info     : 'prosody ' stop: /etc/init.d/prosody stop
[CEST Mar 27 11:57:30] info     : 'prosody ' start: /etc/init.d/prosody start

Имейте в виду, что Monit будет продолжать запускать событие снова и снова с этой конфигурацией -> поэтому запускайте перезапуск постоянно.

Также кажется, Начало и стоп действие должен необходимо указать иначе ничего не делается (это может быть ошибкой). (Проверено с помощью monit 5.14)


РЕДАКТИРОВАТЬ: с обновленной версией Monit 5.21.0 поведение намного лучше, и нет бесконечного цикла перезапуска

[CEST Mar 27 13:47:22] info     : 'certificate_file' trying to restart
[CEST Mar 27 13:47:22] info     : 'prosody' stop: '/etc/init.d/prosody stop'
[CEST Mar 27 13:47:22] info     : 'certificate_file' checksum has not changed
[CEST Mar 27 13:47:22] info     : 'prosody' start: '/etc/init.d/prosody start'