Como obter o Monit para monitorar novamente um serviço que não foi monitorado?

7

Enquanto desenvolvíamos uma resposta para essa pergunta , tive um problema ao testar este conjunto de regras do MySQL Monit em um Ubuntu 12.04. 5 configuração:

check process mysqld with pidfile /var/run/mysqld/mysqld.pid
  group mysql
  start program = "/etc/init.d/mysql start"
  stop program = "/etc/init.d/mysql stop"
  if failed host 127.0.0.1 port 3306
    with timeout 15 seconds
  then restart
  if 5 restarts within 5 cycles
  then timeout
  alert [email protected] only on { timeout, nonexist }

O problema é que eu estava tentando invocar itens start / stop via /etc/init.d/ - que é mais uma construção do sistema CentOS / RedHat - em vez de usar /usr/sbin/service , o que seria mais apropriado para um sistema Ubuntu / Debian. / p>

Ok, meu problema ... Mas o problema é que você vê if 5 restarts within 5 cycles then timeout parte? Isso parece ter me mordido com força. Com o comando /etc/init.d/mysql start inapto a funcionar, o sistema tentou 5 reinicializações, falhou 5 vezes e expirou como resultado. E a condição de tempo limite parece resultar no conjunto de regras do serviço MySQL sendo ignorado meu Monit.

Eu reiniciei o serviço do Monit algumas vezes e até re-iniciei o conjunto de regras para ver se isso ajuda, mas nada disso parece afetar nada.

O que posso fazer para que o Monit preste atenção aos conjuntos de regras que ele "não monitora", devido ao esgotamento das condições de tempo limite?

    
por JakeGould 02.10.2015 / 21:06

2 respostas

4

Depois de fazer algumas pesquisas, o Monit armazena os dados de monitoramento do sistema em um arquivo de "estado". E esse arquivo de "estado" controla quais serviços estão sendo monitorados / não monitorados.

Então, enquanto isso é um pouco "força bruta" -ish, definitivamente funciona. Se um serviço se tornar "não monitorado" devido a algo como um tempo limite, basta remover o arquivo de estado Monit do sistema da seguinte forma:

sudo rm /var/lib/monit/state

E, em seguida, reinicie o Monit assim e tudo deve ser bom:

sudo service monit restart

FWIW, em outros sistemas / configurações, o arquivo “state” do Monit pode ser salvo como state ou monit.state ou mesmo .monit.state (com um ponto / período . prefixando) em outro diretório. Certifique-se de determinar exatamente onde esse arquivo de "estado" está sendo salvo quando você realmente tentar implementar essa correção.

    
por 02.10.2015 / 21:12
1

Monit inclui comandos para ativar e desativar o monitoramento de todos ou de serviços específicos.

Se um serviço não tiver sido monitorado, você poderá reativar o monitoramento com, por exemplo, monit monitor mysql ou monit monitor all .

Note que você deve ter a interface HTTP do Monit ativada para que esses comandos funcionem.

    
por 19.05.2018 / 02:44