Monitorización de Asterisk - Monit en CentOS

Con este articulo, estrenamos un nuevo ciclo de escritos acerca de la monitorización de Asterisk. Hoy hablaremos del programa Monit. Monit permite monitorear procesos, archivo, carpetas y filesystem.

Empezamos con la instalación de Monit desde las fuentes:

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

Compilamos:

./configure --prefix=/usr

make

make install

Copiamos el archivo de configuración de ejemplo que viene con las fuentes en la carpeta etc

cp monitrc /etc

Terminamos con la copia y activación del script de arranque de monit

cd contrib

cp rc.monit /etc/init.d/monit

chmod +x /etc/init.d/monit

chkconfig --add monit

chkconfig monit on

Ahora vamos a modificar el archivo de configuración en modo de monitorear los siguientes programas:

  • sendmail
  • MySQL
  • Asterisk
  • una troncal IP

El archivo de configuración de Monit se divide en tres bloques:

  • Global Section; aquí se pone la configuración general del programa
  • Services; donde se configuran los servicios
  • Includes: permite incluir a la configuración de Monit otros archivo que contienen a su vez la configuración de otros procesos.

nano /etc/monitrc

###############################################################################
## Global section
###############################################################################
##
## Start Monit in the background (run as a daemon):
#
set daemon  60         
# Indica cada cuando Monit controla los servicios (en este caso cada 60 segundos)

with start delay 30      
# Al iniciar el programa el primer ciclo se ejecutará después de 30 segundos                       

set logfile /var/log/monit.log
# Nombre del archivo donde se guardarán todos los registros de Monit

set idfile /var/.monit.id
# Nombre de la carpeta y archivo donde se guardará el numero del proceso de Monit

set mailserver localhost
# nombre del host del servidor de correo electronico que Monit utilizará para enviar las alertas

set eventqueue basedir /var/monit slots 100
# Si por algun motivo el servidor de correo electronico no esté funcionando podemos decirle a Monit de guardar
# todas las alerta en una determinada carpeta. Cuando el servidor volverá a funcionar, todas las alertas
# serán enviada siguiendo el orden cronologico en que se guardarón

set mail-format {
From: monit@voztovoice.com
Subject: monit alerta --  $EVENT $SERVICE
Message: $EVENT Servicio $SERVICE

        Fecha:      $DATE
        Acción:      $ACTION
        Host:        $HOST
        Descripción: $DESCRIPTION

Tu devoto empleado,
Monit
}
# Con el bloque aquí arriba, definimos como tienes que ser enviado el correo electronico de alerta

set alert admin@voztovoice.com
# Con esta línea definimos el correo electronico que recibirá todas las alertas

set httpd port 2812
allow admin:clave
# Monit viene con un servidor Web. En las dos lineas de arriba activamos el servidor web para el puerto 2812
# (que hay que abrir en el cortafuegos) y nombre de usuario y contraseña para ingresar a la pagina

###############################################################################
## Services
###############################################################################
# Desde aquí empieza la configuración de los servicios.

# Servidor
  check system voztovoice.com
    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 host 127.0.0.1 port 5038 then restart
 if 5 restarts within 5 cycles then timeout

# Troncal SIP
check host Eutelia with address voip.eutelia.it
  if failed port 5060 type udp protocol SIP
    and target XXXXXXXXXX@voip.eutelia.it 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

 

Guardamos los cambios y iniciamos Monit:

/etc/init.d/monit start

Ahora miramos que pasa cuando Monit controla la troncal sip de Eutelia (capturado con ngrep):

U +21.582148 69.164.XXX.XXX:35763 -> 83.211.227.21:5060
OPTIONS sip:XXXXXXXXXX@voip.eutelia.it SIP/2.0.
Via: SIP/2.0/UDP 69.164.XXX.XXX:35763;branch=z9hG4bKh40112408;rport.
Max-Forwards: 10.
To: <sip:XXXXXXXXXX@voip.eutelia.it>.
From: monit <sip:monit@69.164.XXX.XXX>;tag=1928237401.
Call-ID: 1335483039.
CSeq: 63104 OPTIONS.
Contact: <sip:69.164.XXX.XXX:35763>.
Accept: application/sdp.
Content-Length: 0.
User-Agent: monit/5.1.1.
.

###
U +0.142660 83.211.227.21:5060 -> 69.164.XXX.XXX:35763
SIP/2.0 200 OK.
Via: SIP/2.0/UDP 69.164.XXX.XXX:35763;branch=z9hG4bKh40112408;rport=35763.
To: <sip:XXXXXXXXXX@voip.eutelia.it>;tag=d7cbdeb4f107ce82ed834cadd3d6dbb2.a04a.
From: monit <sip:monit@69.164.XXX.XXX>;tag=1928237401.
Call-ID: 1335483039.
CSeq: 63104 OPTIONS.
Accept: */*.
Accept-Encoding: .
Accept-Language: en.
Support: .
Server: SPS EUT RM GW 03 (0.9.6 (i386/linux)).
Content-Length: 0.

Monit Actúa como un user agent y utilizando la sip:uri registrada con el proveedor Eutelia, controla que el servicio esté activo.

Un captura de mi pagina de administración:

Monit

Anexo el manual de Monit

Para hoy es todo.

AdjuntoTamaño
Icono PDF Monit.pdf212.88 KB

Vota el Articulo: 

Sin votos (todavía)
Evalúa la calidad del articulo

1 comentario

Hola No se porque no logra

Hola
No se porque no logra monitorear el troncal SIP con el proveedor IP
Siempre me arroja este error
connection failed to 192.168.40.251:5060XXXXXXXXXX@192.168.40.251 [SIP via UDP]

No se porque me agrega el 192.168.40.251:5060 antes de las "X".

Gracias de antemano por tu ayuda

Suscribirse a Comentarios de "Monitorización de Asterisk - Monit en CentOS" Suscribirse a VozToVoice - Todos los comentarios