Nesse artigo iremos monitorar o Asterisk e outras aplicações com a ferramenta Monit.
Monit é um utilitário open source para gerenciar e monitorar processos, arquivos, diretórios e sistemas de arquivos em um sistema UNIX, ele realiza manutenção e reparo automático e pode executar ações significativas em situações de erro.
Iniciaremos a instalação do Monit a partir das fontes
Download
Iremos para o diretório source do linux e baixaremos as fontes:
cd /usr/src
wget http://mmonit.com/monit/dist/monit-5.1.1.tar.gz
tar -xf monit-5.1.1.tar.gz
cd monit-5.1.1
Compilando
Nesta etapa iremos compilar e instalar os fontes do Monit:
./configure –prefix=/usr
make
make install
Agora vamos copiar o arquivo de configuração de exemplo que vem com os fontes do Monit para o diretório /etc.
cp monitrc /etc
Após a cópia iremos ativar o script de inicialização do Monit:
cd contrib
cp rc.monit /etc/init.d/monit
chmod +x /etc/init.d/monit
chkconfig –add monit
Configurando
Agora iremos modificar o arquivo de configuração para monitorarmos as seguintes aplicações:
- Asterisk
- Mysql
- Sendmail
- Tronco SIP
O arquivo de configuração do Monit é divido em três partes, são elas:
- Global Section: Aqui é onde fica as configurações gerais do programa
- Services: Configuração dos Serviços
- Includes: Permite incluir no arquivo de configuração do Monit outros arquivos de configuração para outros processos
Editar o arquivo de configuração:
nano /etc/monitrc
############################################################################### ## Global section ############################################################################### ## ## Start Monit in the background (run as a daemon): # set daemon 60 # Indica o tempo em segundos que o Monit irá controlar os serviços with start delay 30 # Ao iniciar o programa o primeiro ciclo será executado depois de 30 segundos set logfile /var/log/monit.log # Nome do arquivo onde se grava todos os registros de log do Monit set idfile /var/.monit.id # Nome do diretório e do arquivo onde será guardado o número do processo do Monit set mailserver localhost # Nome do host do servidor de correio eletronico que o Monit irá utilizar para enviar os alertas set eventqueue basedir /var/monit slots 100 # Se por algum motivo o servidor de correio não está funcionando podemos decidir se o Monit irá guardar # todos os alertas em uma determinada pasta. Quando o servidor voltar a funcionar todos os alertas # serão enviados seguindo a ordem cronológica em que foram guardados set mail-format { From: monit@mestreasterisk.com.br Subject: monit alerta -- $EVENT $SERVICE Message: $EVENT Servicio $SERVICE Data: $DATE Ação: $ACTION Host: $HOST Descrição: $DESCRIPTION Sem mais, Monit } # Com o bloco acima definiremos como deve ser enviado o correio eletronico de alerta set alert admin@mestreasterisk.com.br # Com está linha definimos o correio eletrônico de quem receberá todos os alertas set httpd port 2812 allow admin:password # Monit vem com um servidor Web nativo. E nas duas linhas acima ativamos o servidor Web para a porta 2812 # (que deverá ser aberta no seu firewall) e o nome de usuario e senha para ingressar na página ############################################################################### ## Services ############################################################################### # Aqui inicia-se a configuração dos serviços. # Servidor check system mestreasterisk.com.br if loadavg (1min) > 4 then alert if loadavg (5min) > 2 then alert if memory usage > 75% then alert if cpu usage (user) > 70% then alert if cpu usage (system) > 30% then alert if cpu usage (wait) > 20% then alert # Asterisk check process asterisk with pidfile /var/run/asterisk.pid start program = "/etc/init.d/asterisk start" with timeout 60 seconds stop program = "/etc/init.d/asterisk stop" with timeout 60 seconds if failed port 5060 type udp protocol SIP and target XXXX@sip.mestreasterisk.com.br maxforward 10 then restart if 5 restarts within 5 cycles then timeout # Tronco SIP check host Vono with address vono.net.br if failed port 5060 type udp protocol SIP and target XXXXXXXXX@vono.net.br maxforward 10 then alert # SendMail check process sendmail with pidfile /var/run/sendmail.pid group mail start program = "/etc/init.d/sendmail start" stop program = "/etc/init.d/sendmail stop" if failed port 25 protocol smtp then restart if 5 restarts within 5 cycles then timeout # MySQL check process mysql with pidfile /var/run/mysqld/mysqld.pid group database start program = "/etc/init.d/mysqld start" stop program = "/etc/init.d/mysqld stop" if failed port 3306 protocol mysql then restart if 5 restarts within 5 cycles then timeout
Salvamos as configurações e iniciamos o serviço do Monit:
/etc/init.d/monit start
Veremos o que se passa quando o Monit monitora o Tronco SIP. (sip debug)
U +21.582148 189.100.XXX.XXX:35763 -> 83.211.227.21:5060
OPTIONS sip:XXXXXXXXXX@vono.net.br SIP/2.0.
Via: SIP/2.0/UDP 189.100..XXX.XXX:35763;branch=z9hG4bKh40112408;rport.
Max-Forwards: 10.
To: <sip:XXXXXXXXXX@vono.net.br>.
From: monit <sip:monit@189.100..XXX.XXX>;tag=1928237401.
Call-ID: 1442445677.
CSeq: 63104 OPTIONS.
Contact: <sip:189.100.XXX.XXX:35763>.
Accept: application/sdp.
Content-Length: 0.
User-Agent: monit/5.1.1.
###
U +0.142660 83.211.227.21:5060 -> 189.100.XXX.XXX:35763
SIP/2.0 200 OK.
Via: SIP/2.0/UDP 189.100.XXX.XXX:35763;branch=z9hG4bKh40112408;rport=35763.
To: <sip:XXXXXXXXXX@vono.net.br>;tag=d7cbdeb4f107ce82ed834cadd3d6dbb2.a04a.
From: monit <sip:monit@189.100.XXX.XXX>;tag=1928237401.
Call-ID: 1442445677.
CSeq: 63104 OPTIONS.
Accept: */*.
Accept-Encoding: .
Accept-Language: en.
Support: .
Server: SPS EUT RM GW 03 (0.9.6 (i386/linux)).
Content-Length: 0.
O Monit atua como um user agent e utilizando o sip:uri registrado com o provedor ele controla se o serviço está ativo.
Logo abaixo você irá ver a imagem da minha página de administração:
Segue o link para o manual do Monit
Isso é tudo.

6 Comentarios para “Monitorar Asterisk com Monit no CentOS”
muito util vamos analisar !!!!
Qual o endereço da pagina após a instalação?
O endereço para acessar a interface web é o ip + porta
Ficaria assim: http://xxx.xxx.xxx.xxx:2812
Abs
Otima solução, para customização do asterisk.