Como monitorear asterisk utilizando nrpe de nagios

4,901 views

Published on

Como monitorear asterisk utilizando nrpe de nagios

  • Be the first to comment

Como monitorear asterisk utilizando nrpe de nagios

  1. 1. Como monitorear Asterisk utilizando NRPE de NagiosInstalando el agente NRPESi tenemos instalado Asterisk sobre Centos, primero se debe instalar el agente de NRPE, bajandoel archivo linux-nrpe-agent.tar.gz. Y ejecutando lo siguiente en la línea de comando: tar -xzvf linux-nrpe-agent.tar.gzcd linux-nrpe-agent./fullinstallAl 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 formafinalizamos la instalación.Observación: El servidor debe contar con acceso a internet debido que el agente descargapaquetes 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:puertoproxy_username=usuarioproxy_password=passwordAgregando el servidor Linux al Monitoreo de Nagios XIIniciamos sesión en Nagios XI, seleccionamos la opción Configure tendremos que apreciar unaplantalla parecida a la siguiente:
  3. 3. Seleccionamos la opción “Run the Monitoring Wizard” y nos tiene que entregar una pantallaparecida a la siguiente:Seleccionamos la opción Linux Server, nos va aparece una ventana como que vemos acontinuación, nos pide dirección ip del servidor a monitorear y la distribución de Linux que tieneinstalado (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 nospide el nombre, con que Nagios lo identificará.Luego en la parte de abajo están los parámetros a monitorear pudiendo deseleccionar los que nonecesites y ajustar los parámetros que necesites, como por ejemplo agregar el servicio Asterisk oalgú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 5minutos y si detecta algún problema hace el chequeo cada un minuto, al quinto intento generauna 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 modificardependiendo las circunstancias. Y el paso 6 se puede indicar a que Host Groups, Service Groups yParent Host pertenece el equipo a monitorear.
  6. 6. Finalizamos presionando el botón apply. Si el agente fue correctamente instalado, el resultadodeberí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óndesde 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 scriptspara monitorear distintas cosas, para monitorear servicios yum, dhcp, mysql, ntp, ssh… y por susupuesto el servicio asterisk.Para asterisk el sistema viene con cuatro scripts, interesantes aunque no muy utiles y estos son:check_asterisk.plEste es un script que monitorea el estado del servicio asterisk por medio de conexiones IAX2 yAMI, personalmente no le he encontrado mucha utilidad, pero está disponible para quien lodesea utilizar.check_asterisk_sip_peers.shEste es un script que como lo dice su nombre, revisa el sip show peers de la consola de Asterisk, siencuentra el peer y además tiene un estado OK, devuelve un estado OK, sino devuelve un estadoCRITICAL. Si deseas probarlo basta con ejecutar ./check_asterisk_sip_peers.sh XXXX (nombre onumero de peer). Ojo si utilizas un nombre que puede que hacer coincidir dos o más anexos (porejemplo utilizar 203 que coincide con los anexo 2031 y 2032) el script devolverá un error. Estescript es muy útil para monitorear anexos y troncales SIP. Este script es escrito en bash y nosservirá como modelo para crear nuestros propios scripts.check_sipEste script monitoreas el protocolo SIP de los servidores Asterisk (también puede ser de otrossistemas que utilicen este protocolo). Se puede hacer consultas a un servidor tanto local comoremoto. Es interesante, aunque no lo considero muy útil para más información sobre su usoejecutar en la carpeta de los scripts ./check_sip --helpnagisk.plEste script es un poco antiguo y muchas de sus funciones están obsoletas, podemos saber lacantidad 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 esmuy ú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 losnombres de los scripts utilizados para monitorear el servicio asterisk, los nombres tienen lasiguiente 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 nagiosconsultará remotamente, después un signo de igualdad, después la ruta hacia el script que estecaso es /usr/local/nagios/libexec/ y al final de este el nombre del script que va a responder lasconsultas remotas, para finalizar el o los argumentos que se utilizarán para definir nuestraconsulta, estos parámetros están representados por $ARG1$, podemos poner más de uno de laforma $ARG1$ $ARG2$ $ARG3$ etc… pero con uno basta independiente la cantidad deargumentos 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, perotengamos presente que existe y que el nombre que consultaremos remotamente en nuestroservidor nagios es el que aparece entre corchetes en este archivo.Segundo debemos modificar los permisos de sudo, entrando a visudo, modificamos estospermisos, en este caso como es por defecto sólo descomentamos la última línea, eliminando elsí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/asteriskMonitoreando un anexo SIPAhora utilizando el script check_asterisk_sip_peers.sh monitoreamos una extensión sip (porextensión me puede referir a un anexo como a una troncal), primero vamos a probar nuestromonitoreo de forma local:Primero nos dirigimos a la carpeta donde se encuentra el scriptcd /usr/local/nagios/libexecLuego ejecutamos el script incluyendo como parámetro el numero de un peer (si el peer posee unnombre 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 segundovalor lo graficará Nagios XI.OK: 6400/6400 10.70.29.130 D N 49190 OK (103 ms)|time=103msAhora probamos con otro anexo, este sabemos que esta conectado, para ver que mensaje arroja../check_asterisk_sip_peers.sh 6401Debido a que no encontró con estado OK este anexo, arroja un estado CRITICAL.CRITICAL: Something is wrong with 6401Esta 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 incluimosdespué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 6400OK: 6400/6400 10.70.29.130 D N 49190 OK (103 ms)|time=103msAhora agregamos este monitoreo a un peer sip al monitoreo de Nagios XI, ingresando a “Runmonitoring 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 elsistema 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 quedeseamos darle al servidor, y como este el mismo del ejemplo anterior, le damos el mismonombre 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 estosmomentos. Finalmente presionamos el botón apply y revisamos, si todo fue hecho de la formacorrecta, 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íadetrás del símbolo pipa (|) va generando un gráfico, el que se puede consulta cuando se revisa elservicio en Nagios XI.
  12. 12. Creando scripts para monitorear asteriskAsterisk puede ser monitoreado de distintas formas, puede monitorearse el log utilizando elservicio syslog y volcándolo a un servidor de Syslog, puede monitorearse por SNMP por medio delmódulo que tiene para ello, utilizando un sistema de monitoreo SNMP como SNMPc deCastleRock o SolarWinds, incluso el mismo nagios; puede monitorearse por medio de AMI denagios, utilizando alguna aplicación que interprete la información contenida en él, puedemonitorearse por medio de muchas maneras… Pero sin embargo la que más me gusta a mi por lamucha información y por lo simple que es, consultar los comandos de la consola asterisk, que unosuele 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 vimosexisten algunos scripts ya creados para Asterisk como check_asterisk_sip_peers.sh, que utilizamosen el ejemplo anterior. Utilizamos este como modelo para crear un script que nos permitamonitorear un peer IAX2.Monitoreando un peer IAX2Este script es muy sencillo y basta unos sencillos pasos para dejarlo operativo:Vamos a la carpeta de los scriptscd /usr/local/nagios/libexecCopiamos el script cp check_asterisk_sip_peers.sh en la misma carpeta pero con el nombrecheck_asterisk_iax2_peer.shcp check_asterisk_sip_peers.sh check_asterisk_iax2_peers.shLuego editamos el archivo check_asterisk_iax2_peers.sh, en mi caso utilizaré vim, pero ustedespuede utilizar el editor que deseen.vim check_asterisk_iax2_peers.shEn 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 bashLlamadas simultaneasEste sencillo script permite conocer la cantidad de llamadas simultáneas. Se basa en el principioanterior obteniendo del comando de asterisk “core show channels” el número de llamadassimultáneas. Se pueden definir umbrales y se puede monitorear sin ellos para sólo obtener elnúmero de llamadas simultaneas.#!bashllamadas=`/usr/sbin/asterisk -rx "core show channels" | grep active call|cut -d" " -f1`if [ $# == 0 ]; then echo "OK:$llamadas llamadas simultaneas|llamadas=$llamadas" exit 0fiif [ "$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 3elif [ -z "$llamadas" ]; then echo "ERROR:Existe un error, puede que la ruta de asterisk se incorrecta o la version no seacompatible" exit 3fiif [ -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 fielif [ "$llamadas" -ge "$1" ];then echo "WARNING:$llamadas llamadas simultaneas|llamadas=$llamadas" exit 2fiif [ "$llamadas" -lt "$1" ];then echo "OK:$llamadas simultaneas|llamadas=$llamadas" exit 0fi
  17. 17. Llamadas en la ColaParecido al ejemplo anterior pero este consulta al comando de asterisk “queue show”#!bashllamadas=`/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 3elif [ -z "$llamadas" ]; then echo "ERROR:No se encuentra la cola buscada" exit 3fiif [ -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 fielif [ "$llamadas" -ge "$2" ];then echo "WARNING:$llamadas llamadas en cola|cola=$llamadas" exit 2fiif [ "$llamadas" -lt "$2" ];then echo "OK:$llamadas llamadas en cola|cola=$llamadas" exit 0fi
  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/bashLINE=`/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 0elif [ -z "$LINE" ]; then echo "CRITICAL: $ERROR"; exit 2else echo $LINE exit 2fi
  20. 20. ConclusiónLos ejemplos que les mostré sólo son ilustrativos de las potencialidades de NRPE, si maneja otroslenguajes como python, perl, etc… Pueden hacer mucho más.

×