Inicio > Manuales y tutoriales > Estadísticas de llamadas de Asterisk con Grafana. ( Asterisk + Zabbix + Grafana)

Estadísticas de llamadas de Asterisk con Grafana. ( Asterisk + Zabbix + Grafana)

Es increible como Docker ha cambiado todo, sobre todo la forma como ha reducido los tiempos de configuracion y despliegue en las instalaciones, a continuacion veremos como desplegar una arquitectura de monitoreo grafico con Grafana para las troncales SIP de Asterisk. para ello usaremos como intermediario a Zabbix que nos ayudara a extraer los datos de Asterisk con ayuda de Algunos scripts personalizados. 

El Entorno

Maquinas virtuales con Centos 7
01 Maquina virtual de Asterisk / IP 192.168.0.252
01 Maquina virtual para Zabbix y Grafana / IP  192.168.0.251

El Escenario de trabajo.

 

1.- Instalacion Docker y Docker Compose

yum install -y yum-utils device-mapper-persistent-data lvm2 nano vim net-tools
yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce -y
systemctl enable –now docker
docker –version
docker-compose –version



2.- Instalacion de Zabbix en contenedor Docker.

yum install -y git
git clone https://github.com/zabbix/zabbix-docker.git
cd zabbix-docker/
git checkout 5.2
/usr/local/bin/docker-compose -f docker-compose_v3_alpine_mysql_latest.yaml up -d

 

Luego ingresar a Zabbix : http://192.168.0.251

 

 

3.- Instalacion de Grafana en contenedor Docker

3.1.- Crear el archivo para crear el contenedor de Grafana.

mkdir grafana ; cd grafana
nano docker-compose.yml

# docker-compose.yml
version: ‘2’

#Define volumes variables
volumes:
                  grafana_data: {}

#Define services
services:

    grafana:
         image: grafana/grafana
         volumes:
                – grafana_data:/root/grafana:rw  
          environment:
                – GF_SECURITY_ADMIN_PASSWORD=admin
          ports:
                – «3000:3000» 

3.2.- Iniciar el contenedor.
docker-compose up -d

3.3.- Instalar el plug-in de Zabbix en el contenedor de Grafana.

docker exec -it grafana_grafana_1 bash
grafana-cli plugins install alexanderzobnin-zabbix-app
exit

Finalmente reiniciar el contenedor.
docker restart grafana_grafana_1

 

Finalmente ingresar a Grafana y activar el Plug-in de Zabbix : 

 

 

4.- Integrar Asterisk con Zabbix

4.1.- Dialplan de Asterisk.

Ahora que tenemos todo el entorno, es necesario empezar a integrar todos los componentes lo primero es necesario trabajar en el servidor Asterisk, para conseguir las llamadas totales y simultaneas de una troncal SIP. para este ejemplo la troncal que vamos a monitorear y posteriormente generar graficas es la troncal SIP 7973430 la cual ingresa por el contexto trunkinbound

En el extensions.conf vamos a modificar 

####################################

[trunkinbound]
exten=>_7973430,1,Set(GROUP(trunkinbound)=7973430)
same => n,Set(COUNT=${GROUP_COUNT(7973430@trunkinbound)})
same => n,NoOp(Hay ${COUNT} llamadas simultaneas en la trocal 7973430.)
same => n,System(/bin/echo ${COUNT} > /etc/asterisk/trunksip-7973430-llamadas-simultaneas.txt)
same => n,System(/bin/bash /etc/asterisk/trunksip-7973430-prog-llamadas-totales.sh)
same => n,Playback(demo-congrats)

##################################

Esto lo que va hacer es :

  • Guardar las llamadas simultaneas en la variable ${COUNT} y luego la guardara en el archivo trunksip-7973430-llamadas-simultaneas.txt
  • Luego para el conteo de las llamadas totales de la troncal va ejecurar el script en bash trunksip-7973430-prog-llamadas-totales.sh

4.2.- Crear scripts.

Script para guardar llamadas totales
vim trunksip-7973430-prog-llamadas-totales.sh

#!/bin/bash
                while read linea; do
                declare -i linea
                linea=$((linea + 1))
                echo -e «Línea: $linea»
                echo $linea > /etc/asterisk/trunksip-7973430-llamadas-totales.txt
done < /etc/asterisk/trunksip-7973430-llamadas-totales.txt

El script lo que hace es leer la linea actual , declararlo como integer , sumar 1 al a la variable $linea , finalmente agregarlo al archivo trunksip-7973430-llamadas-totales.txt

4.3.- Instalar el agente de Zabbix y configurar los parametros de lectura.

Instalar el agente
rpm -ivh https://repo.zabbix.com/zabbix/5.2/rhel/7/x86_64/zabbix-release-5.2-1.el7.noarch.rpm
yum -y install zabbix-agent

Configurar la direccion IP del servidor Zabbix
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.0.251
ServerActive=192.168.0.251
Hostname=Zabbix server

Activar el servicio.
systemctl start zabbix-agent
systemctl enable zabbix-agent
systemctl status zabbix-agent

Configurar los parametros para leer la informacion de llamadas guardadas en los archivos TXT.

cd /etc/zabbix/zabbix_agentd.d/
vim asterisk.conf
UserParameter=ast.trunksip1simultaneas,cat /etc/asterisk/trunksip-7973430-llamadas-simultaneas.txt
UserParameter=ast.trunksip1totales,cat /etc/asterisk/trunksip-7973430-llamadas-totales.txt

Validar que el agente de Zabbix puede leer los datos correctamente es necesario ejecurar los siguiente :
zabbix_agentd -t ast.trunksip1simultaneas
zabbix_agentd -t ast.trunksip1totales

Si hasta este punto todo salio bien, el agente sera capas de leer los datos almacenados en  los TXT de la siguiente forma :


5.- Integrar Zabbix con Asterisk.

5.1.- Agregar el «host» de Asterisk en Zabbix 


5.2.- Agregar los parametros definidos en el agente , Para ello sera necesario agregar un nuevo «item» en Zabbix de la siguiente forma.

Donde «ast.trunksip1totales» es el parametro definido en el agente instalado en el servidor Asterisk



Donde «ast.trunksip1simultaneas» es el parametro definido en el agente instalado en el servidor Asterisk.

 

Finalmente tendremos la informacion de Asterisk en Zabbix de la siguiente forma

 

6.- Integrar Grafana con Zabbix

Una vez que hemos conseguidor mostrar los datos de Asterisk en Zabbix ahora es necesario graficarlo con Grafana.

6.1.- Enlazar Grafana para que pueda consumir la API de Zabbix.

 

Finalmente al realizar el test de conexion tendremos el siguiente resultado:

 

6.2.- Crear los Panel de Graficas consumiendo la API de Zabbix.

 

7.- Notas y consideraciones Finales

  • Realizar todas las conexiones via HTTPS
  • Crear un usuario individual en Zabbix para que se conecte Grafana.
  • Ejecutar los conenedores Docker con un usuario sin privilegios.
  • En Asterisk en vez de usar archivos TXT usar una API que almacene y consulte los datos.
  • Existe un sin numero de informacion que es posible recabar usando SNMP de Asterisk , Agente de Zabbix y el plug-in en Zabbix Asterisk by HTTP : https://www.zabbix.com/la/integrations/asterisk 

Espero les sirva
@jroliva

Anuncio publicitario
Categorías: Manuales y tutoriales
  1. muchikon
    febrero 7, 2021 a las 5:03 pm

    Excelente tutorial Juan 😀

  2. Alejandro
    febrero 10, 2021 a las 7:50 pm

    Excelente Juan.. muchas gracias.

  3. febrero 24, 2022 a las 2:44 pm

    Juan, sabes estaba probando articulo, pero al llegar a este paso ya no avanzo mas, me tira siempre error como este:

    ERROR: yaml.scanner.ScannerError: mapping values are not allowed here
    in «./docker-compose.yml», line 5, column 8

    y modifico y modifico, no logro pasar…

    #################################
    mkdir grafana ; cd grafana
    nano docker-compose.yml

    # docker-compose.yml
    version: ‘2’

    #Define volumes variables
    volumes:
    grafana_data: {}

    #Define services
    services:

    grafana:
    image: grafana/grafana
    volumes:
    – grafana_data:/root/grafana:rw
    environment:
    – GF_SECURITY_ADMIN_PASSWORD=admin
    ports:
    – «3000:3000»

  1. No trackbacks yet.

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: