You are on page 1of 20

Como monitorear Asterisk utilizando NRPE de Nagios

Instalando el agente NRPE Si tenemos instalado Asterisk sobre Centos, primero se debe instalar el agente de NRPE, bajando el archivo linux-nrpe-agent.tar.gz. Y ejecutando lo siguiente en la lnea de comando: tar -xzvf linux-nrpe-agent.tar.gz cd linux-nrpe-agent ./fullinstall Al final de la instalacin solicita la direccin IP del servidor nagios.

Escribimos la direccin ip de nuestro servidor nagios y presionamos enter, de esta forma finalizamos la instalacin. Observacin: El servidor debe contar con acceso a internet debido que el agente descarga paquetes faltantes mediante yum. Si se encuentran detrs de un proxy deben editar el archivo /etc/yum.conf

Incluyendo los siguientes datos: proxy=http://direccionipproxy:puerto proxy_username=usuario proxy_password=password

Agregando el servidor Linux al Monitoreo de Nagios XI

Iniciamos sesin en Nagios XI, seleccionamos la opcin Configure tendremos que apreciar una plantalla parecida a la siguiente:

Seleccionamos la opcin Run the Monitoring Wizard y nos tiene que entregar una pantalla parecida a la siguiente:

Seleccionamos la opcin Linux Server, nos va aparece una ventana como que vemos a continuacin, nos pide direccin ip del servidor a monitorear y la distribucin de Linux que tiene instalado (este wizard permite CentOS y RHEL)

Presionamos next y llegamos a una pantalla similar a la siguiente que en su parte de arriba nos pide el nombre, con que Nagios lo identificar.

Luego en la parte de abajo estn los parmetros a monitorear pudiendo deseleccionar los que no necesites y ajustar los parmetros que necesites, como por ejemplo agregar el servicio Asterisk o algn otros servicio para monitorear. Una vez terminado presionas next.

El siguiente paso nos muestra la frecuencia del monitoreo del servicio. Por defecto es cada 5 minutos y si detecta algn problema hace el chequeo cada un minuto, al quinto intento genera una alerta. Estos valores si se desea se pueden ajustar, pero en este caso slo presionaremos next.

El paso quinto nos muestra quien recibir las notificaciones de alerta, se pueden modificar dependiendo las circunstancias. Y el paso 6 se puede indicar a que Host Groups, Service Groups y Parent Host pertenece el equipo a monitorear.

Finalizamos presionando el botn apply. Si el agente fue correctamente instalado, el resultado debera ser algo parecido a esto.

Monitoreando Asterisk con los scripts que NRPE trae por defecto. La aplicacin NRPE se instala en los equipo que se desean monitorear, y acepta las conexin desde el servidor Nagios, NRPE es un agente de monitoreo, que se vale de un grupo de scripts, estos deben ejecutables desde la consola de Linux y funcionar con entrada y salida estndar. Los scripts se ubican en la ruta /usr/local/nagios/libexec/ , en esta carpeta existe muchos scripts para monitorear distintas cosas, para monitorear servicios yum, dhcp, mysql, ntp, ssh y por su supuesto el servicio asterisk. Para asterisk el sistema viene con cuatro scripts, interesantes aunque no muy utiles y estos son: check_asterisk.pl Este es un script que monitorea el estado del servicio asterisk por medio de conexiones IAX2 y AMI, personalmente no le he encontrado mucha utilidad, pero est disponible para quien lo desea utilizar. check_asterisk_sip_peers.sh Este es un script que como lo dice su nombre, revisa el sip show peers de la consola de Asterisk, si encuentra el peer y adems tiene un estado OK, devuelve un estado OK, sino devuelve un estado CRITICAL. Si deseas probarlo basta con ejecutar ./check_asterisk_sip_peers.sh XXXX (nombre o numero de peer). Ojo si utilizas un nombre que puede que hacer coincidir dos o ms anexos (por ejemplo utilizar 203 que coincide con los anexo 2031 y 2032) el script devolver un error. Este script es muy til para monitorear anexos y troncales SIP. Este script es escrito en bash y nos servir como modelo para crear nuestros propios scripts. check_sip Este script monitoreas el protocolo SIP de los servidores Asterisk (tambin puede ser de otros sistemas que utilicen este protocolo). Se puede hacer consultas a un servidor tanto local como remoto. Es interesante, aunque no lo considero muy til para ms informacin sobre su uso ejecutar en la carpeta de los scripts ./check_sip --help nagisk.pl Este script es un poco antiguo y muchas de sus funciones estn obsoletas, podemos saber la cantidad de anexos logueados con anexos sip, y tiene otras funciones que ya estn obsoletas, como monitoreo sobre el antiguo zaptel. El script est ah para quien lo desee ocupar para no es muy til.

Para habilitar el uso de estos scripts debemos seguir dos pasos: Primero ir al archivo ubicado en /usr/local/nagios/etc/nrpe/asterisk.cfg en este archivo estn los nombres de los scripts utilizados para monitorear el servicio asterisk, los nombres tienen la siguiente sintaxis: command[nombre_pluggin_remoto]=/ruta_archivo/nombre_script $ARG1$ primero va la palabra command luego entre corchetes el nombre del pluggin de NRPE que nagios consultar remotamente, despus un signo de igualdad, despus la ruta hacia el script que este caso es /usr/local/nagios/libexec/ y al final de este el nombre del script que va a responder las consultas remotas, para finalizar el o los argumentos que se utilizarn para definir nuestra consulta, estos parmetros estn representados por $ARG1$, podemos poner ms de uno de la forma $ARG1$ $ARG2$ $ARG3$ etc pero con uno basta independiente la cantidad de argumentos utilizados, ejemplo de esto es: command[check_asterisk]=/usr/local/nagios/libexec/check_asterisk.pl $ARG1$ Como este archivo viene listo ya para los scripts por defecto, no lo modificaremos todava, pero tengamos presente que existe y que el nombre que consultaremos remotamente en nuestro servidor nagios es el que aparece entre corchetes en este archivo. Segundo debemos modificar los permisos de sudo, entrando a visudo, modificamos estos permisos, en este caso como es por defecto slo descomentamos la ltima lnea, eliminando el smbolo gato (#) del comienzo de la lnea, esta debera se la siguiente lnea : #nagios ALL=NOPASSWD: /usr/local/nagios/libexec/check_asterisk_sip_peers.sh, /usr/local/nagios/libexec/nagisk.pl, /usr/sbin/asterisk

Monitoreando un anexo SIP Ahora utilizando el script check_asterisk_sip_peers.sh monitoreamos una extensin sip (por extensin me puede referir a un anexo como a una troncal), primero vamos a probar nuestro monitoreo de forma local: Primero nos dirigimos a la carpeta donde se encuentra el script cd /usr/local/nagios/libexec Luego ejecutamos el script incluyendo como parmetro el numero de un peer (si el peer posee un nombre tambin podemos incluirlo en lugar del nmero). ./check_asterisk_sip_peers.sh 6400

Debido a que esta extensin estaba conectada nos arroja el siguiente mensaje, donde el segundo valor lo graficar Nagios XI. OK: 6400/6400 10.70.29.130 D N 49190 OK (103 ms)|time=103ms Ahora probamos con otro anexo, este sabemos que esta conectado, para ver que mensaje arroja. ./check_asterisk_sip_peers.sh 6401 Debido a que no encontr con estado OK este anexo, arroja un estado CRITICAL. CRITICAL: Something is wrong with 6401 Esta misma prueba se puede hacer remota, ingresando al servidor de Nagios, a la carpeta /usr/local/nagios/libexec, y ejecutando por medio del script check_nrpe, junto al cual incluimos despus el host, el pluggin y el parmetro, como se ve en el ejemplo siguiente. ./check_nrpe -H 10.70.30.243 -c check_asterisk_sip_peers -a 6400 OK: 6400/6400 10.70.29.130 D N 49190 OK (103 ms)|time=103ms

Ahora agregamos este monitoreo a un peer sip al monitoreo de Nagios XI, ingresando a Run monitoring wizard que se encuentra en la pestaa configure, aqu seleccionamos la opcin NRPE.

En el segundo paso hacemos lo mismo en el ejemplo anterior, anotamos la direccin ip y el sistema operativo de la maquina que en este ejemplo es Centos. Luego presionamos next.

Al igual que el ejemplo anterior, la ventana siguiente en su parte de arriba nos pide el nombre que deseamos darle al servidor, y como este el mismo del ejemplo anterior, le damos el mismo nombre a la maquina.

En la parte de debajo de la pantalla, aparecen pestaas con los nombres de otros monitoreos, borramos todo y colocamos lo que deseamos monitorear, que en este caso es el anexo sip 6400. Como podemos ver en la siguiente imagen.

Los pasos siguientes son los mismos del ejemplo anterior, no necesitaremos revisarlos en estos momentos. Finalmente presionamos el botn apply y revisamos, si todo fue hecho de la forma correcta, deberamos poder tener algo parecido a esto.

Poco a poco, el valor de registro de la extensin sip, que cuando ejecutbamos el script apareca detrs del smbolo pipa (|) va generando un grfico, el que se puede consulta cuando se revisa el servicio en Nagios XI.

Creando scripts para monitorear asterisk

Asterisk puede ser monitoreado de distintas formas, puede monitorearse el log utilizando el servicio syslog y volcndolo a un servidor de Syslog, puede monitorearse por SNMP por medio del mdulo que tiene para ello, utilizando un sistema de monitoreo SNMP como SNMPc de CastleRock o SolarWinds, incluso el mismo nagios; puede monitorearse por medio de AMI de nagios, utilizando alguna aplicacin que interprete la informacin contenida en l, puede monitorearse por medio de muchas maneras Pero sin embargo la que ms me gusta a mi por la mucha informacin y por lo simple que es, consultar los comandos de la consola asterisk, que uno suele ver con asterisk -r o rasterisk, si uno puede escribir directamente sobre la consola asterisk rx comando y optener los datos que necesita. De esta forma podemos crear fcilmente scripts que utilizar la aplicacin NRPE, como vimos existen algunos scripts ya creados para Asterisk como check_asterisk_sip_peers.sh, que utilizamos en el ejemplo anterior. Utilizamos este como modelo para crear un script que nos permita monitorear un peer IAX2. Monitoreando un peer IAX2 Este script es muy sencillo y basta unos sencillos pasos para dejarlo operativo: Vamos a la carpeta de los scripts cd /usr/local/nagios/libexec Copiamos el script cp check_asterisk_sip_peers.sh en la misma carpeta pero con el nombre check_asterisk_iax2_peer.sh cp check_asterisk_sip_peers.sh check_asterisk_iax2_peers.sh Luego editamos el archivo check_asterisk_iax2_peers.sh, en mi caso utilizar vim, pero ustedes puede utilizar el editor que deseen. vim check_asterisk_iax2_peers.sh En el caso de utilice vim utilice el comando :%s/sip/iax2/g

agregamos la lnea:
command[check_asterisk_iax2_peers]=sudo usr/local/nagios/libexec/check_asterisk_iax2_peers.sh $ARG1$

en el archivo /usr/local/nagios/etc/nrpe/asterisk.cfg y en agregamos en los privilegios sudo, ingresando a visudo, la siguiente lnea: nagios ALL=NOPASSWD: /usr/local/nagios/libexec/check_asterisk_iax2_peers.sh

Siguiendo el ejemplo anterior agregamos el peer IAX2 al monitoreo.

Si no existen problemas, el resultado debiera ser postivo .

Otros scripts con bash Llamadas simultaneas Este sencillo script permite conocer la cantidad de llamadas simultneas. Se basa en el principio anterior obteniendo del comando de asterisk core show channels el nmero de llamadas simultneas. Se pueden definir umbrales y se puede monitorear sin ellos para slo obtener el nmero de llamadas simultaneas. #!bash llamadas=`/usr/sbin/asterisk -rx "core show channels" | grep active\ call|cut -d" " -f1` if [ $# == 0 ]; then echo "OK:$llamadas llamadas simultaneas|llamadas=$llamadas" exit 0 fi if [ "$1" == "-h" -o "$1" == "--help" ]; then echo "Ayuda" echo "La sintaxis correcta es:" echo "$0 [XX] [YY]" echo "XX es el valor de umbral de alerta warning" echo "YY es el valor de umbral de alerta critical" exit 3 elif [ -z "$llamadas" ]; then echo "ERROR:Existe un error, puede que la ruta de asterisk se incorrecta o la version no sea compatible" exit 3 fi

if [ -n "$2" ];then

if [ "$1" -gt "$2" ];then echo "ERROR:Error de Sintaxis, umbral WARNING debe menor o igual al umbral CRITICAL" echo "$0 $1 $2" exit 2 fi if [ "$llamadas" -ge $1 -a "$llamadas" -lt $2 ];then echo "WARNING:$llamadas llamadas simultaneas|llamadas=$llamadas" exit 2 fi if [ "$llamadas" -ge "$2" ];then echo "CRITICAL:$llamadas llamadas simultaneas|llamadas=$llamadas" exit 2 fi elif [ "$llamadas" -ge "$1" ];then echo "WARNING:$llamadas llamadas simultaneas|llamadas=$llamadas" exit 2 fi if [ "$llamadas" -lt "$1" ];then echo "OK:$llamadas simultaneas|llamadas=$llamadas" exit 0 fi

Llamadas en la Cola Parecido al ejemplo anterior pero este consulta al comando de asterisk queue show

#!bash llamadas=`/usr/sbin/asterisk -rx "queue show $1" | grep ringall | cut -d" " -f3` if [ $# == 0 -o "$1" == "-h" -o $# -gt 3 -o -z "$2" ]; then echo "ERROR:Sintaxis incorrecta" echo "La sintaxis correcta es:" echo "$0 ZZZZ XX [YY]" echo "ZZZ es el nombre de la cola" echo "XX es el valor de umbral de alerta warning" echo "YY es el valor de umbral de alerta critical" exit 3 elif [ -z "$llamadas" ]; then echo "ERROR:No se encuentra la cola buscada" exit 3 fi

if [ -n "$3" ];then if [ "$2" -gt "$3" ];then echo "ERROR:Error de Sintaxis, umbral WARNING debe menor o igual al umbral CRITICAL" echo "$0 $1 $2 $3" exit 2 fi

if [ "$llamadas" -ge $2 -a "$llamadas" -lt $3 ];then

echo "WARNING:$llamadas llamadas en cola|cola=$llamadas" exit 2 fi

if [ "$llamadas" -ge "$3" ];then echo "CRITICAL:$llamadas llamadas en cola|cola=$llamadas" exit 2 fi elif [ "$llamadas" -ge "$2" ];then echo "WARNING:$llamadas llamadas en cola|cola=$llamadas" exit 2 fi if [ "$llamadas" -lt "$2" ];then echo "OK:$llamadas llamadas en cola|cola=$llamadas" exit 0 fi

Conexin de CDR a base de datos MySQL. Este ejemplo es muy sencillo se consulta al comando de asterisk cdr mysql status

#!/bin/bash LINE=`/usr/sbin/asterisk -r -x "cdr mysql status" | grep "Connected to"` ERROR=`/usr/sbin/asterisk -r -x "cdr mysql status"` if [ "$LINE" ]; then echo -n "OK: " echo -n $LINE exit 0 elif [ -z "$LINE" ]; then echo "CRITICAL: $ERROR"; exit 2 else echo $LINE exit 2 fi

Conclusin Los ejemplos que les mostr slo son ilustrativos de las potencialidades de NRPE, si maneja otros lenguajes como python, perl, etc Pueden hacer mucho ms.

You might also like