Monitoramento e gerência de processos no servidor

Filed Under (Failover) by admin on 11-09-2009

Vários são os serviços disponibilizados por um servidor: e-mail, http, database…. e todos sujeitos a falhas ou a um mal funcionamento que pode comprometer outros sistemas e na pior hipótese toda máquina.
É preciso então que estes sistemas sejam monitorados e em caso de falha ou mal funcionamento que os
administradores sejam notificados.
Neste post vou apresentar como isso pode ser facilmente configurado através do Monit.

O Monit é um utilitário UNIX de monitoração e gerência de processos. Ele é capaz de
 identificar que um processo (serviço, sistema…) caiu ou se está consumindo memória ou cpu excessivamente.
Quando identifica uma situação anormal o Monit notifica os administradores e restaura o processo.
Existem também recursos de monitoramento de arquivos, diretórios e sistema de arquivos que não serão abordados neste post,
mas que são muito úteis.

O site do Monit é o http://mmonit.com/monit/

Instalação

Neste exemplo vamos monitorar o funcionamento do apache (obs: o Monit pode ser configurado para monitorar vários processos)

Faça o download do arquivo e descompacte-o:

 tar zxvf monit-x.y.z.tar.gz
 cd monit-x.y.z

Execute o ./configure e verifique se todas as dependências estão instaladas no seu Linux.

Se estiver tudo ok entao: make && make install

O Monit é instalado no /usr/local/bin e o arquivo de configuração monitrc eu criarei no /etc
Configuração
extraído do original http://mmonit.com/monit/documentation/monit.pdf

(1) # Monit control file
(2)
(3) set daemon 60
(4) set logfile syslog facility LOG_daemon
(5) set mailserver mail.meuserver.com
(6) set alert sysadm@meuserver.com
(7) set httpd port 2812 address localhost
(8) allow localhost
(9) allow admin:monit
(10)
(11) check process apache with pidfile “/var/run/apache2.pid”
(12) start = “/etc/init.d/apache2 start”
(13) stop = “/etc/init.d/apache2 stop”
(14) if failed port 80 and protocol http
(15) and request “/index.html” then restart
(16) if cpu usage is greater than 60 percent for 2 cycles then alert
(17) if cpu usage > 98% for 5 cycles then restart
(18) if 2 restarts within 3 cycles then timeout
(19) alert foo@meuserver.com
A linha é apenas um comentário. Na linha 3, o monit é configurado para iniciar no modo dæmon e verificar cada serviço em
ciclos de 1 minuto (valor em segundos). na linha 4 , o monit informa que o  log de erros e as mensagens de status utilizarao o  syslog.
O Monit precisa de um servidor SMTP server para enviar as mensagens de alerta, e na linha 5 especificamos
o endereço do SMTP server que o monit deve usar. A linha 6 define o e-mail que receberá os alertas sysadm@meuserver.com
A linha 7 inicia o servidor http próprio do monit. Este servidor HTTP será acessado para visualizar a interface de monitoramento e gerência (fig. 1 e fig. 2)
A linha 8 define que o servidor http dele poderá ser acessado apenas de localhost
e a linha 9 adiciona um usuário/senha para que o o servidor http do monit possa ser acessado via
HTTP Basic Authentication

Informações sobre o processo a ser monitorado

A linha 11 informa qual processo vamos monitorar, ela contém um identificador para o processo e o caminho para o pidfile dele.
Se desejamos que o monit inicie, pare ou reinicie um processo devemos configurar os comandos start e stop.
As linhas 12-13 definem os comandos para parar e iniciar o apache.
Na linha 4 configuramos o monit para estabelecer uma conexao com o servidor apache e solicitar o arquivo index.html
Se este teste falhar, monit irá reiniciar o processo do apache.
Nas linhas 16-17 o processo é testado quanto ao uso dos recursos de cpu da máquina e executa as tarefas necessárias de alerta ou reiniciar.
Finalizando o e-mail para onde o monit enviará e-mails caso o serviço configurado falhe.
O ideal é que o monit inicie junto com o linux, mas para testar você pode iniciá-lo simplesmente chamndo: monit e para para-lo: monit quit
É prudente antes de iniciá-lo executar monit -t para verificar se não existem erros na configuração do monitrc.

Até apróxima ;-)