Reinicia o processo usando monit, quando a soma de verificação de um arquivo é alterada

3

Eu quero reiniciar um processo monitorado por monit, quando a soma de verificação de um arquivo falhou. Atualmente eu uso

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"

Mas eu gostaria de ter algum comando como if changed checksum then restart prosody em vez de usar o binário monit via exec .

A ação restart parece estar limitada para reiniciar o processo atualmente monitorado, portanto, uma ação em um bloco check file não faz nada.

    
por allo 17.03.2017 / 20:50

1 resposta

2

Basta colocar a ação reiniciar

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

A reinicialização de eventos será propagada para todas as dependências com log semelhante a

[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

Lembre-se de que a Monit continuará ativando o evento novamente com essa configuração - > então disparar reiniciar continuamente.

Também parece iniciar e parar ação deve ser especificada caso nada seja feito (pode ser um bug). (Testado com o item 5.14)

EDIT: Com uma versão 5.21.0 atualizada do Monit, o comportamento é muito melhor e não há loop de reinicialização infinito

[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'
    
por 27.03.2017 / 12:10

Tags