Cómo monitorizar tu Asterisk con «monit»
Monit es una herramienta muy utilizada por los administradores de sistemas y es bastante útil en un sistema Asterisk donde podemos chequear si Asterisk está funcionando, o por lo contrario enviarnos un aviso en el caso de que se apague repentinamente.
De hecho, en la lista de Asterisk-ES hay bastantes personas que lo utilizan como podeis comprobar en el archivo de temas.
Hace unos días, Bret McDanel (Trixter), uno de los desarrolladores de FreeSwitch publicó un parche para Monit para que, además de monitorizar si Asterisk estaba funcionando, la red funciona corréctamente, el procesador está en su correcta medida, también podamos monitorizar el estado de las peticiones SIP.
«I had used monit for some other things, and even used it for testing SIP but was dissatisfied with the fact that it did not do a real SIP test. To that end I added a SIP protocol handler, which sends an OPTIONS packet, and verifies that it gets a 200 OK back. This indicates that the message was received, parsed, and a response could be generated. With the optional timeout capabilities of monit you can have something that is fairly robust for ensuring that your SIP stack is indeed working, and restart it if it isnt.»
Por esto, os recomiendo probar esta aplicación si no la conoceis, e incluso su nuevo parche para SIP:
cd /usr/src cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/monit co monit cd monitwget -O protocols/sip.c http://www.0xdecafbad.com/wp-content/uploads/2008/01/sip.c wget http://www.0xdecafbad.com/wp-content/uploads/2008/01/sip.cvsdiff patch -p0 < sip.cvsdiff./autogen.sh make all install
Un ejemplo de configuración para esta aplicación, sería algo así:
check process asterisk with pidfile /var/run/asterisk/asterisk.pid
start program = “/usr/sbin/asterisk”
stop program = “/usr/sbin/asterisk -r -x ’shutdown now’”
if totalmem > 1000.0 MB for 5 cycles then alert
if totalmem > 1500.0 MB for 5 cycles then alert
if totalmem > 2000.0 MB for 5 cycles then restart
if cpu > 60% for 5 cycles then alert
if failed host MY.SIPSERVER.TLD port 5060 type udp protocol SIP target me@foo.bar maxforward 10 then restart
if 5 restarts within 5 cycles then timeout
¿Conoceis más herramientas de este tipo?
*Actualización*
El propio Bret McDanel nos anuncia en los comentarios de este artículo que el parche ya se encuentra en el CVS, por lo que no haría falta parchear. 🙂
«This is in CVS now! A combination of Grasland Pierrick and my patch.«