Como monitorear Asterisk utilizando NRPE de Nagios
Instalando el agente NRPE
Si tenemos instalado Asterisk sobre Centos, p...
Incluyendo los siguientes datos:
proxy=http://direccionipproxy:puerto
proxy_username=usuario
proxy_password=password
Agreg...
Seleccionamos la opción “Run the Monitoring Wizard” y nos tiene que entregar una pantalla
parecida a la siguiente:
Selecci...
Presionamos next y llegamos a una pantalla similar a la siguiente que en su parte de arriba nos
pide el nombre, con que Na...
El siguiente paso nos muestra la frecuencia del monitoreo del servicio. Por defecto es cada 5
minutos y si detecta algún p...
Finalizamos presionando el botón apply. Si el agente fue correctamente instalado, el resultado
debería ser algo parecido a...
Monitoreando Asterisk con los scripts que NRPE trae por defecto.
La aplicación NRPE se instala en los equipo que se desean...
Para habilitar el uso de estos scripts debemos seguir dos pasos:
Primero ir al archivo ubicado en /usr/local/nagios/etc/nr...
Debido a que esta extensión estaba conectada nos arroja el siguiente mensaje, donde el segundo
valor lo graficará Nagios X...
En el segundo paso hacemos lo mismo en el ejemplo anterior, anotamos la dirección ip y el
sistema operativo de la maquina ...
Los pasos siguientes son los mismos del ejemplo anterior, no necesitaremos revisarlos en estos
momentos. Finalmente presio...
Creando scripts para monitorear asterisk
Asterisk puede ser monitoreado de distintas formas, puede monitorearse el log uti...
agregamos la línea:
command[check_asterisk_iax2_peers]=sudo usr/local/nagios/libexec/check_asterisk_iax2_peers.sh $ARG1$
e...
Siguiendo el ejemplo anterior agregamos el peer IAX2 al monitoreo.
Si no existen problemas, el resultado debiera ser posít...
Otros scripts con bash
Llamadas simultaneas
Este sencillo script permite conocer la cantidad de llamadas simultáneas. Se b...
if [ "$1" -gt "$2" ];then
echo "ERROR:Error de Sintaxis, umbral WARNING debe menor o igual al umbral CRITICAL"
echo "$0 $1...
Llamadas en la Cola
Parecido al ejemplo anterior pero este consulta al comando de asterisk “queue show”
#!bash
llamadas=`/...
echo "WARNING:$llamadas llamadas en cola|cola=$llamadas"
exit 2
fi
if [ "$llamadas" -ge "$3" ];then
echo "CRITICAL:$llamad...
Conexión de CDR a base de datos MySQL.
Este ejemplo es muy sencillo se consulta al comando de asterisk “cdr mysql status”
...
Conclusión
Los ejemplos que les mostré sólo son ilustrativos de las potencialidades de NRPE, si maneja otros
lenguajes com...
Upcoming SlideShare
Loading in …5
×

Como monitorear asterisk utilizando nrpe de nagios

776 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
776
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
21
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Como monitorear asterisk utilizando nrpe de nagios

  1. 1. 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 línea de comando: tar -xzvf linux-nrpe-agent.tar.gz cd linux-nrpe-agent ./fullinstall Al final de la instalación solicita la dirección IP del servidor nagios. Escribimos la dirección ip de nuestro servidor nagios y presionamos enter, de esta forma finalizamos la instalación. Observación: El servidor debe contar con acceso a internet debido que el agente descarga paquetes faltantes mediante yum. Si se encuentran detrás de un proxy deben editar el archivo /etc/yum.conf
  2. 2. Incluyendo los siguientes datos: proxy=http://direccionipproxy:puerto proxy_username=usuario proxy_password=password Agregando el servidor Linux al Monitoreo de Nagios XI Iniciamos sesión en Nagios XI, seleccionamos la opción Configure tendremos que apreciar una plantalla parecida a la siguiente:
  3. 3. Seleccionamos la opción “Run the Monitoring Wizard” y nos tiene que entregar una pantalla parecida a la siguiente: Seleccionamos la opción Linux Server, nos va aparece una ventana como que vemos a continuación, nos pide dirección ip del servidor a monitorear y la distribución de Linux que tiene instalado (este wizard permite CentOS y RHEL)
  4. 4. 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 están los parámetros a monitorear pudiendo deseleccionar los que no necesites y ajustar los parámetros que necesites, como por ejemplo agregar el servicio Asterisk o algún otros servicio para monitorear. Una vez terminado presionas next.
  5. 5. El siguiente paso nos muestra la frecuencia del monitoreo del servicio. Por defecto es cada 5 minutos y si detecta algún 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 sólo 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.
  6. 6. Finalizamos presionando el botón apply. Si el agente fue correctamente instalado, el resultado debería ser algo parecido a esto.
  7. 7. Monitoreando Asterisk con los scripts que NRPE trae por defecto. La aplicación NRPE se instala en los equipo que se desean monitorear, y acepta las conexión 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 estándar. 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 además 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 más 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 (también 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 más información 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 están obsoletas, podemos saber la cantidad de anexos logueados con anexos sip, y tiene otras funciones que ya están obsoletas, como monitoreo sobre el antiguo zaptel. El script está ahí para quien lo desee ocupar para no es muy útil.
  8. 8. 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 están 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, después un signo de igualdad, después 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 utilizarán para definir nuestra consulta, estos parámetros están representados por $ARG1$, podemos poner más 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 todavía, 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 sólo descomentamos la última línea, eliminando el símbolo gato (#) del comienzo de la línea, esta debería se la siguiente línea : #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 extensión sip (por extensión 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 parámetro el numero de un peer (si el peer posee un nombre también podemos incluirlo en lugar del número). ./check_asterisk_sip_peers.sh 6400
  9. 9. Debido a que esta extensión 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 después el host, el pluggin y el parámetro, 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 pestaña configure, aquí seleccionamos la opción NRPE.
  10. 10. En el segundo paso hacemos lo mismo en el ejemplo anterior, anotamos la dirección 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 pestañas 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.
  11. 11. Los pasos siguientes son los mismos del ejemplo anterior, no necesitaremos revisarlos en estos momentos. Finalmente presionamos el botón apply y revisamos, si todo fue hecho de la forma correcta, deberíamos poder tener algo parecido a esto. Poco a poco, el valor de registro de la extensión sip, que cuando ejecutábamos el script aparecía detrás del símbolo pipa (|) va generando un gráfico, el que se puede consulta cuando se revisa el servicio en Nagios XI.
  12. 12. Creando scripts para monitorear asterisk Asterisk puede ser monitoreado de distintas formas, puede monitorearse el log utilizando el servicio syslog y volcándolo a un servidor de Syslog, puede monitorearse por SNMP por medio del módulo 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 aplicación que interprete la información contenida en él, puede monitorearse por medio de muchas maneras… Pero sin embargo la que más me gusta a mi por la mucha información 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 fácilmente scripts que utilizará la aplicación 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
  13. 13. agregamos la línea: 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 línea: nagios ALL=NOPASSWD: /usr/local/nagios/libexec/check_asterisk_iax2_peers.sh
  14. 14. Siguiendo el ejemplo anterior agregamos el peer IAX2 al monitoreo. Si no existen problemas, el resultado debiera ser posítivo .
  15. 15. Otros scripts con bash Llamadas simultaneas Este sencillo script permite conocer la cantidad de llamadas simultáneas. Se basa en el principio anterior obteniendo del comando de asterisk “core show channels” el número de llamadas simultáneas. Se pueden definir umbrales y se puede monitorear sin ellos para sólo obtener el número 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
  16. 16. 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
  17. 17. 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
  18. 18. 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
  19. 19. Conexión 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
  20. 20. Conclusión Los ejemplos que les mostré sólo son ilustrativos de las potencialidades de NRPE, si maneja otros lenguajes como python, perl, etc… Pueden hacer mucho más.

×