Como Monitorear Asterisk Utilizando NRPE de Nagios

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 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

description

Como Monitorear Asterisk Utilizando NRPE de Nagios

Transcript of Como Monitorear Asterisk Utilizando NRPE de Nagios

Page 1: Como Monitorear Asterisk Utilizando NRPE de Nagios

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

Page 2: Como Monitorear Asterisk Utilizando NRPE de Nagios

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:

Page 3: Como Monitorear Asterisk Utilizando NRPE de Nagios

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)

Page 4: Como Monitorear Asterisk Utilizando NRPE de Nagios

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.

Page 5: Como Monitorear Asterisk Utilizando NRPE de Nagios

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.

Page 6: Como Monitorear Asterisk Utilizando NRPE de Nagios

Finalizamos presionando el botón apply. Si el agente fue correctamente instalado, el resultado

debería ser algo parecido a esto.

Page 7: Como Monitorear Asterisk Utilizando NRPE de Nagios

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.

Page 8: Como Monitorear Asterisk Utilizando NRPE de Nagios

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

Page 9: Como Monitorear Asterisk Utilizando NRPE de Nagios

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.

Page 10: Como Monitorear Asterisk Utilizando NRPE de Nagios

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.

Page 11: Como Monitorear Asterisk Utilizando NRPE de Nagios

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.

Page 12: Como Monitorear Asterisk Utilizando NRPE de Nagios

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

Page 13: Como Monitorear Asterisk Utilizando NRPE de Nagios

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

Page 14: Como Monitorear Asterisk Utilizando NRPE de Nagios

Siguiendo el ejemplo anterior agregamos el peer IAX2 al monitoreo.

Si no existen problemas, el resultado debiera ser posítivo .

Page 15: Como Monitorear Asterisk Utilizando NRPE de Nagios

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

Page 16: Como Monitorear Asterisk Utilizando NRPE de Nagios

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

Page 17: Como Monitorear Asterisk Utilizando NRPE de Nagios

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

Page 18: Como Monitorear Asterisk Utilizando NRPE de Nagios

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

Page 19: Como Monitorear Asterisk Utilizando NRPE de Nagios

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

Page 20: Como Monitorear Asterisk Utilizando NRPE de Nagios

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.