SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
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
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:
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)
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.
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.
Finalizamos presionando el botón apply. Si el agente fue correctamente instalado, el resultado
debería ser algo parecido a esto.
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.
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
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.
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.
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.
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
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
Siguiendo el ejemplo anterior agregamos el peer IAX2 al monitoreo.
Si no existen problemas, el resultado debiera ser posítivo .
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
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
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
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.

Weitere ähnliche Inhalte

Was ist angesagt?

Encase Forensic
Encase ForensicEncase Forensic
Encase ForensicMegha Sahu
 
Kubernetes Installation on Ubuntu | Edureka
Kubernetes Installation on Ubuntu | EdurekaKubernetes Installation on Ubuntu | Edureka
Kubernetes Installation on Ubuntu | EdurekaEdureka!
 
Creación de tablas en SQL Server
Creación de tablas en SQL ServerCreación de tablas en SQL Server
Creación de tablas en SQL Servernarkamo3
 
Kubernetes Architecture with Components
 Kubernetes Architecture with Components Kubernetes Architecture with Components
Kubernetes Architecture with ComponentsAjeet Singh
 
System Administration DCU
System Administration DCUSystem Administration DCU
System Administration DCUKhalid Rehan
 
Windows Registry Forensics with Volatility Framework
Windows Registry Forensics with Volatility FrameworkWindows Registry Forensics with Volatility Framework
Windows Registry Forensics with Volatility FrameworkKapil Soni
 
Intrusion Detection System using Snort
Intrusion Detection System using Snort Intrusion Detection System using Snort
Intrusion Detection System using Snort webhostingguy
 
Monitoring, Logging and Tracing on Kubernetes
Monitoring, Logging and Tracing on KubernetesMonitoring, Logging and Tracing on Kubernetes
Monitoring, Logging and Tracing on KubernetesMartin Etmajer
 
Enterprise container platform verrazzano
Enterprise container platform verrazzanoEnterprise container platform verrazzano
Enterprise container platform verrazzanoMichel Schildmeijer
 
Kubernetes Secrets Management on Production with Demo
Kubernetes Secrets Management on Production with DemoKubernetes Secrets Management on Production with Demo
Kubernetes Secrets Management on Production with DemoOpsta
 
Micro-services architecture
Micro-services architectureMicro-services architecture
Micro-services architectureFarwa Ansari
 
Anti forensic
Anti forensicAnti forensic
Anti forensicMilap Oza
 

Was ist angesagt? (20)

Encase Forensic
Encase ForensicEncase Forensic
Encase Forensic
 
Windows Forensics
Windows ForensicsWindows Forensics
Windows Forensics
 
Kubernetes Installation on Ubuntu | Edureka
Kubernetes Installation on Ubuntu | EdurekaKubernetes Installation on Ubuntu | Edureka
Kubernetes Installation on Ubuntu | Edureka
 
Public key Infrastructure (PKI)
Public key Infrastructure (PKI)Public key Infrastructure (PKI)
Public key Infrastructure (PKI)
 
Creación de tablas en SQL Server
Creación de tablas en SQL ServerCreación de tablas en SQL Server
Creación de tablas en SQL Server
 
CI/CD with Github Actions
CI/CD with Github ActionsCI/CD with Github Actions
CI/CD with Github Actions
 
Kubernetes Architecture with Components
 Kubernetes Architecture with Components Kubernetes Architecture with Components
Kubernetes Architecture with Components
 
System Administration DCU
System Administration DCUSystem Administration DCU
System Administration DCU
 
Windows registry forensics
Windows registry forensicsWindows registry forensics
Windows registry forensics
 
Windows Registry Forensics with Volatility Framework
Windows Registry Forensics with Volatility FrameworkWindows Registry Forensics with Volatility Framework
Windows Registry Forensics with Volatility Framework
 
Cyber Forensics Module 2
Cyber Forensics Module 2Cyber Forensics Module 2
Cyber Forensics Module 2
 
Intrusion Detection System using Snort
Intrusion Detection System using Snort Intrusion Detection System using Snort
Intrusion Detection System using Snort
 
Monitoring, Logging and Tracing on Kubernetes
Monitoring, Logging and Tracing on KubernetesMonitoring, Logging and Tracing on Kubernetes
Monitoring, Logging and Tracing on Kubernetes
 
Intro to cyber forensics
Intro to cyber forensicsIntro to cyber forensics
Intro to cyber forensics
 
Enterprise container platform verrazzano
Enterprise container platform verrazzanoEnterprise container platform verrazzano
Enterprise container platform verrazzano
 
X lite3.0 user-guide (1)
X lite3.0 user-guide (1)X lite3.0 user-guide (1)
X lite3.0 user-guide (1)
 
Kubernetes Secrets Management on Production with Demo
Kubernetes Secrets Management on Production with DemoKubernetes Secrets Management on Production with Demo
Kubernetes Secrets Management on Production with Demo
 
Micro-services architecture
Micro-services architectureMicro-services architecture
Micro-services architecture
 
Anti forensic
Anti forensicAnti forensic
Anti forensic
 
Awx
AwxAwx
Awx
 

Ähnlich wie Monitoreo de Asterisk con NRPE y Nagios XI

Proyecto monitorización nagios_felix
Proyecto monitorización nagios_felixProyecto monitorización nagios_felix
Proyecto monitorización nagios_felixFélix Aranda Palma
 
Trabajo final seguridad ofensiva defensiva
Trabajo final seguridad ofensiva defensivaTrabajo final seguridad ofensiva defensiva
Trabajo final seguridad ofensiva defensivaarbeycardona2
 
Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016
Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016
Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016Telefónica
 
Taller Kali Linux3: Rastreando Informacion y Objetivos -HackMadrid ene13
Taller Kali Linux3: Rastreando Informacion y Objetivos -HackMadrid ene13Taller Kali Linux3: Rastreando Informacion y Objetivos -HackMadrid ene13
Taller Kali Linux3: Rastreando Informacion y Objetivos -HackMadrid ene13peter69
 
Servicio VPN con OpenVPN y Latch sobre Raspberry Pi
Servicio VPN con OpenVPN y Latch sobre Raspberry PiServicio VPN con OpenVPN y Latch sobre Raspberry Pi
Servicio VPN con OpenVPN y Latch sobre Raspberry PiTelefónica
 
Seguridad: Backtrack2
Seguridad: Backtrack2 Seguridad: Backtrack2
Seguridad: Backtrack2 Francesc Perez
 
Interesante 211356497 comandos-linux-scanning
Interesante 211356497 comandos-linux-scanningInteresante 211356497 comandos-linux-scanning
Interesante 211356497 comandos-linux-scanningxavazquez
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandboxTensor
 
Proyecto 7 - Seguridad Activa: Control de Redes
Proyecto 7 - Seguridad Activa: Control de RedesProyecto 7 - Seguridad Activa: Control de Redes
Proyecto 7 - Seguridad Activa: Control de RedesÁngel Sardinero López
 
Cuckoosandbox
CuckoosandboxCuckoosandbox
CuckoosandboxTensor
 
Secpanel ssh y scp linux freddy beltran
Secpanel ssh y scp linux freddy beltranSecpanel ssh y scp linux freddy beltran
Secpanel ssh y scp linux freddy beltranbeppo
 
Corcuera pablo gestorincidenciasocs
Corcuera pablo gestorincidenciasocsCorcuera pablo gestorincidenciasocs
Corcuera pablo gestorincidenciasocspablo2017
 
Cómo explotar EternalBlue en Windows Server 2012 R2
Cómo explotar EternalBlue en Windows Server 2012 R2Cómo explotar EternalBlue en Windows Server 2012 R2
Cómo explotar EternalBlue en Windows Server 2012 R2Telefónica
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandboxTensor
 

Ähnlich wie Monitoreo de Asterisk con NRPE y Nagios XI (20)

Starta KaliLinux
Starta KaliLinuxStarta KaliLinux
Starta KaliLinux
 
Alumno
AlumnoAlumno
Alumno
 
Nagios
NagiosNagios
Nagios
 
Proyecto monitorización nagios_felix
Proyecto monitorización nagios_felixProyecto monitorización nagios_felix
Proyecto monitorización nagios_felix
 
Trabajo final seguridad ofensiva defensiva
Trabajo final seguridad ofensiva defensivaTrabajo final seguridad ofensiva defensiva
Trabajo final seguridad ofensiva defensiva
 
Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016
Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016
Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016
 
Taller Kali Linux3: Rastreando Informacion y Objetivos -HackMadrid ene13
Taller Kali Linux3: Rastreando Informacion y Objetivos -HackMadrid ene13Taller Kali Linux3: Rastreando Informacion y Objetivos -HackMadrid ene13
Taller Kali Linux3: Rastreando Informacion y Objetivos -HackMadrid ene13
 
Servicio VPN con OpenVPN y Latch sobre Raspberry Pi
Servicio VPN con OpenVPN y Latch sobre Raspberry PiServicio VPN con OpenVPN y Latch sobre Raspberry Pi
Servicio VPN con OpenVPN y Latch sobre Raspberry Pi
 
Seguridad: Backtrack2
Seguridad: Backtrack2 Seguridad: Backtrack2
Seguridad: Backtrack2
 
Homework
HomeworkHomework
Homework
 
Interesante 211356497 comandos-linux-scanning
Interesante 211356497 comandos-linux-scanningInteresante 211356497 comandos-linux-scanning
Interesante 211356497 comandos-linux-scanning
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandbox
 
Present3
Present3Present3
Present3
 
Proyecto 7 - Seguridad Activa: Control de Redes
Proyecto 7 - Seguridad Activa: Control de RedesProyecto 7 - Seguridad Activa: Control de Redes
Proyecto 7 - Seguridad Activa: Control de Redes
 
Cuckoosandbox
CuckoosandboxCuckoosandbox
Cuckoosandbox
 
Secpanel ssh y scp linux freddy beltran
Secpanel ssh y scp linux freddy beltranSecpanel ssh y scp linux freddy beltran
Secpanel ssh y scp linux freddy beltran
 
Corcuera pablo gestorincidenciasocs
Corcuera pablo gestorincidenciasocsCorcuera pablo gestorincidenciasocs
Corcuera pablo gestorincidenciasocs
 
Cómo explotar EternalBlue en Windows Server 2012 R2
Cómo explotar EternalBlue en Windows Server 2012 R2Cómo explotar EternalBlue en Windows Server 2012 R2
Cómo explotar EternalBlue en Windows Server 2012 R2
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandbox
 
Seguridades de redes
Seguridades de redesSeguridades de redes
Seguridades de redes
 

Monitoreo de Asterisk con NRPE y Nagios XI

  • 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. 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. 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. 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. 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. Finalizamos presionando el botón apply. Si el agente fue correctamente instalado, el resultado debería ser algo parecido a esto.
  • 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. 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. 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. 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. 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. 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. 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. Siguiendo el ejemplo anterior agregamos el peer IAX2 al monitoreo. Si no existen problemas, el resultado debiera ser posítivo .
  • 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. 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. 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. 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. 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. 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.