SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
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.

Más contenido relacionado

La actualidad más candente

The linux networking architecture
The linux networking architectureThe linux networking architecture
The linux networking architecture
hugo lu
 
LTM essentials
LTM essentialsLTM essentials
LTM essentials
bharadwajv
 

La actualidad más candente (20)

Linux Networking Explained
Linux Networking ExplainedLinux Networking Explained
Linux Networking Explained
 
XDP in Practice: DDoS Mitigation @Cloudflare
XDP in Practice: DDoS Mitigation @CloudflareXDP in Practice: DDoS Mitigation @Cloudflare
XDP in Practice: DDoS Mitigation @Cloudflare
 
BPF & Cilium - Turning Linux into a Microservices-aware Operating System
BPF  & Cilium - Turning Linux into a Microservices-aware Operating SystemBPF  & Cilium - Turning Linux into a Microservices-aware Operating System
BPF & Cilium - Turning Linux into a Microservices-aware Operating System
 
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDP
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDPDockerCon 2017 - Cilium - Network and Application Security with BPF and XDP
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDP
 
BPF Hardware Offload Deep Dive
BPF Hardware Offload Deep DiveBPF Hardware Offload Deep Dive
BPF Hardware Offload Deep Dive
 
Linux Network Stack
Linux Network StackLinux Network Stack
Linux Network Stack
 
The linux networking architecture
The linux networking architectureThe linux networking architecture
The linux networking architecture
 
Expanding Asterisk with Kamailio
Expanding Asterisk with KamailioExpanding Asterisk with Kamailio
Expanding Asterisk with Kamailio
 
Wireshark, Tcpdump and Network Performance tools
Wireshark, Tcpdump and Network Performance toolsWireshark, Tcpdump and Network Performance tools
Wireshark, Tcpdump and Network Performance tools
 
Cloud Native Networking & Security with Cilium & eBPF
Cloud Native Networking & Security with Cilium & eBPFCloud Native Networking & Security with Cilium & eBPF
Cloud Native Networking & Security with Cilium & eBPF
 
Netconf et Yang
Netconf et YangNetconf et Yang
Netconf et Yang
 
A very good introduction to IPv6
A very good introduction to IPv6A very good introduction to IPv6
A very good introduction to IPv6
 
Using eBPF to Measure the k8s Cluster Health
Using eBPF to Measure the k8s Cluster HealthUsing eBPF to Measure the k8s Cluster Health
Using eBPF to Measure the k8s Cluster Health
 
Howto createOpenFlow Switchusing FPGA (at FPGAX#6)
Howto createOpenFlow Switchusing FPGA (at FPGAX#6)Howto createOpenFlow Switchusing FPGA (at FPGAX#6)
Howto createOpenFlow Switchusing FPGA (at FPGAX#6)
 
The TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux KernelThe TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux Kernel
 
Understanding DPDK
Understanding DPDKUnderstanding DPDK
Understanding DPDK
 
eBPF - Rethinking the Linux Kernel
eBPF - Rethinking the Linux KerneleBPF - Rethinking the Linux Kernel
eBPF - Rethinking the Linux Kernel
 
EBPF and Linux Networking
EBPF and Linux NetworkingEBPF and Linux Networking
EBPF and Linux Networking
 
LTM essentials
LTM essentialsLTM essentials
LTM essentials
 
ccna networking ppt
ccna networking pptccna networking ppt
ccna networking ppt
 

Destacado

Kick Off de Analisis de Implementacion de Sistemas de Seguridad NAGOS
Kick Off de Analisis de Implementacion de Sistemas de Seguridad NAGOSKick Off de Analisis de Implementacion de Sistemas de Seguridad NAGOS
Kick Off de Analisis de Implementacion de Sistemas de Seguridad NAGOS
erck sanchez
 
Proyectos: Sistema de monitorización Nagios aplicado al centro de Estudios St...
Proyectos: Sistema de monitorización Nagios aplicado al centro de Estudios St...Proyectos: Sistema de monitorización Nagios aplicado al centro de Estudios St...
Proyectos: Sistema de monitorización Nagios aplicado al centro de Estudios St...
Francesc Perez
 
Presentacion De Nagios
Presentacion De NagiosPresentacion De Nagios
Presentacion De Nagios
magicdrums
 
Porqué un acontecimiento se convierte en una
Porqué un acontecimiento se convierte en unaPorqué un acontecimiento se convierte en una
Porqué un acontecimiento se convierte en una
Noelia Castañon Saldivar
 

Destacado (20)

Kick Off de Analisis de Implementacion de Sistemas de Seguridad NAGOS
Kick Off de Analisis de Implementacion de Sistemas de Seguridad NAGOSKick Off de Analisis de Implementacion de Sistemas de Seguridad NAGOS
Kick Off de Analisis de Implementacion de Sistemas de Seguridad NAGOS
 
Proyectos: Sistema de monitorización Nagios aplicado al centro de Estudios St...
Proyectos: Sistema de monitorización Nagios aplicado al centro de Estudios St...Proyectos: Sistema de monitorización Nagios aplicado al centro de Estudios St...
Proyectos: Sistema de monitorización Nagios aplicado al centro de Estudios St...
 
Investigacion de nagios evruyco
Investigacion de nagios evruycoInvestigacion de nagios evruyco
Investigacion de nagios evruyco
 
Introducción al curso Nagios Core Plus
Introducción al curso Nagios Core PlusIntroducción al curso Nagios Core Plus
Introducción al curso Nagios Core Plus
 
Nagios
NagiosNagios
Nagios
 
Presentacion De Nagios
Presentacion De NagiosPresentacion De Nagios
Presentacion De Nagios
 
Kick off
Kick offKick off
Kick off
 
Proyecto monitorización nagios_felix
Proyecto monitorización nagios_felixProyecto monitorización nagios_felix
Proyecto monitorización nagios_felix
 
Nagios
NagiosNagios
Nagios
 
Informe nagios proyecto | Operación y Monitoreo de Redes
Informe nagios proyecto | Operación y Monitoreo de RedesInforme nagios proyecto | Operación y Monitoreo de Redes
Informe nagios proyecto | Operación y Monitoreo de Redes
 
Sistema de Monitoreo Nagios Core
Sistema de Monitoreo Nagios CoreSistema de Monitoreo Nagios Core
Sistema de Monitoreo Nagios Core
 
Homework
HomeworkHomework
Homework
 
Jesse Olson - Nagios Log Server Architecture Overview
Jesse Olson - Nagios Log Server Architecture OverviewJesse Olson - Nagios Log Server Architecture Overview
Jesse Olson - Nagios Log Server Architecture Overview
 
Guia instalacion y configuracion nagios
Guia instalacion y configuracion nagiosGuia instalacion y configuracion nagios
Guia instalacion y configuracion nagios
 
Gestion de redes por JMCabrera
Gestion de redes por JMCabreraGestion de redes por JMCabrera
Gestion de redes por JMCabrera
 
Nagios XI Best Practices
Nagios XI Best PracticesNagios XI Best Practices
Nagios XI Best Practices
 
Netiquetas
NetiquetasNetiquetas
Netiquetas
 
Presentación piaget
Presentación piagetPresentación piaget
Presentación piaget
 
Porqué un acontecimiento se convierte en una
Porqué un acontecimiento se convierte en unaPorqué un acontecimiento se convierte en una
Porqué un acontecimiento se convierte en una
 
Pnl
PnlPnl
Pnl
 

Similar a Como monitorear asterisk utilizando nrpe de nagios

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-scanning
xavazquez
 
Requerimientos de instalación
Requerimientos de instalaciónRequerimientos de instalación
Requerimientos de instalación
Princezitha Ruiz
 

Similar a Como monitorear asterisk utilizando nrpe de nagios (20)

Starta KaliLinux
Starta KaliLinuxStarta KaliLinux
Starta KaliLinux
 
Alumno
AlumnoAlumno
Alumno
 
Nagios
NagiosNagios
Nagios
 
Trabajo final seguridad ofensiva defensiva
Trabajo final seguridad ofensiva defensivaTrabajo final seguridad ofensiva defensiva
Trabajo final seguridad ofensiva defensiva
 
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
 
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
 
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
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandbox
 
Interesante 211356497 comandos-linux-scanning
Interesante 211356497 comandos-linux-scanningInteresante 211356497 comandos-linux-scanning
Interesante 211356497 comandos-linux-scanning
 
Present3
Present3Present3
Present3
 
Cuckoosandbox
CuckoosandboxCuckoosandbox
Cuckoosandbox
 
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
 
Corcuera pablo gestorincidenciasocs
Corcuera pablo gestorincidenciasocsCorcuera pablo gestorincidenciasocs
Corcuera pablo gestorincidenciasocs
 
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
 
Debian Lenny Asterisk
Debian Lenny AsteriskDebian Lenny Asterisk
Debian Lenny Asterisk
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandbox
 
Requerimientos de instalación
Requerimientos de instalaciónRequerimientos de instalación
Requerimientos de instalación
 
Seguridades de redes
Seguridades de redesSeguridades de redes
Seguridades de redes
 
Instalación KOHA: desarrollo, requerimientos y configuración
Instalación KOHA: desarrollo, requerimientos y configuraciónInstalación KOHA: desarrollo, requerimientos y configuración
Instalación KOHA: desarrollo, requerimientos y configuración
 

Como monitorear asterisk utilizando nrpe de nagios

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