Hay bastantes scripts pululando por la red para monitorizar Asterisk e
integrar esa monitorización con NAGIOS, CACTI, ZENOSS, etc.
Un buen sitio para empezar puede ser www.voip-info.org, hay una
sección completa al respecto.
Saludos
----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.
O como dijo el gran Torvalds: "Talk is cheap. Show me the code".
--
/Saúl
http://saghul.net | http://sipdoc.net
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:
El archivo de configuración de Monit se divide en tres bloques:
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: mo...@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 ad...@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 XXXXX...@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:XXXXX...@voip.eutelia.it SIP/2.0.
Via: SIP/2.0/UDP 69.164.XXX.XXX:35763;branch=z9hG4bKh40112408;rport.
Max-Forwards: 10.
To: <sip:XXXXX...@voip.eutelia.it>.
From: monit <sip:mo...@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:XXXXX...@voip.eutelia.it>;tag=d7cbdeb4f107ce82ed834cadd3d6dbb2.a04a.
From: monit <sip:mo...@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.
No envió el Printout, porque esta prohibido en el foro.
@asterisketb
Gonzalo
--
Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org)
~~~ Normas de la lista Asterisk-ES: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Para anular la suscripción: asterisk-es...@googlegroups.com