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.

Related Posts with Thumbnails

6 Comentarios para “Monitorar Asterisk com Monit no CentOS”

  1. muito util vamos analisar !!!!

  2. Qual o endereço da pagina após a instalação?

  3. O endereço para acessar a interface web é o ip + porta

    Ficaria assim: http://xxx.xxx.xxx.xxx:2812

    Abs

  4. Otima solução, para customização do asterisk.

Deixe um comentario