Enviado por admin el
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:
Anexo el manual de Monit
Para hoy es todo.
Adjunto | Tamaño |
---|---|
Monit.pdf | 212.88 KB |
1 comentario
Hola No se porque no logra
Enviado por Anónimo (no verificado) el
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