Monitorizando nuestras métricas de infraestructura con TICK y Grafana 2da Parte – SNMP

Anteriormente vimos cómo es que se instalaba TICK y Grafana, ahora vamos a ver como monitorizar dispositivos que brindad servicios de SNMP, el cual no es más que un protocolo ideado para la administración de dispositivos de red. No es objetivo del documento brindar toda una explicación acerca de cómo trabaja el protocolo, nos centraremos en como configurar nuestro agente Telegraf para que pueda realizar los pedidos por SNMP al dispositivo y enviar las respuestas a InfluxDB, para luego verlas en Grafana.

Me basaré en obtener la información de transferencia de datos que tiene nuestro router externo. Aunque a veces monitorizamos la transferencia de datos que sucede en nuestro Firewall de frontera (ya sea pfSense, OPNSense, Untangle, etc.), es mejor ver directamente desde el router cuantos paquetes se están transmitiendo. Además de que podemos obtener directamente el estado de la línea, estado del router, entre otros detalles brindados en la respuesta de SNMP.

Manos a la obra

Lo primero que hay que hacer es instalar Telegraf en el servidor que se encargará de realizar los pedidos SNMP al router, mientras más cerca del router mejor, en mi caso lo pongo en el Firewall de frontera con un PfSense (el cual trae telegraf en su repositorio de paquetes):

Para distribuciones basadas en Debian:

Para pfSense:

Luego toca adicionar la configuración para el SNMP dentro de los ficheros de Telegraf, hay varias maneras, expondré la que uso que trata de respetar la configuración de los paquetes:

Distribuciones de Debian

En este caso Telegraf crea una carpeta  /etc/telegraf/telegraf.d/ que todos los ficheros  .conf que pongas serán extensiones a la configuración. Es preferible esta manera, puesto que alguna futura actualización del paquete que modificara el fichero principal de configuración  /etc/telegraf/telegraf.conf no tendría que venir acompañados al típico error de dpkg al intentar instalar un nuevo fichero de configuración sobre uno modificado. Por tanto crearemos en esa carpeta un fichero llamado  snmp.conf que contendrá la configuración que más adelante se expone para obtener los datos.

pfSense

Para este caso no existe la carpeta como en Debian, pero tampoco deberíamos modificar directamente el fichero de configuración que se encuentra en  /usr/local/etc/telegraf.conf debido a que pfSense utiliza un sistema para las configuraciones con un XML que se representa en su administración web y es el que genera la configuración final, por lo que debemos modificar directamente el fichero “template” con PHP que se encuentra en  /usr/local/pkg/telegraf.inc De esta manera cualquier reconfiguración o reiniciado del servicio mantendría nuestra configuración, no siendo así en el caso de una actualización de versión del paquete, por lo que deberían guardar las configuraciones adicionales.

Configuración de Telegraf

Para poder configurar el Telegraf deberíamos conocer un poco de cómo es que trabaja SNMP, sin dar grandes argumentos SNMP trabaja parecido a una Base de Datos de llave-valor, donde la llave es un OID (un identificador único para la métrica) y el valor correspondiente, además de que un valor puede ser a manera de tabla, es decir, incluir sub-llaves. Los OID se pueden especificar tanto numéricamente como por su nombre (lo cual es más cómodo) y su especificación podemos encontrarla en varios sitios, como OID-Info. En estos sitios puedes buscar el OID correspondiente a nuestro dispositivo y luego especificarle a Telegraf que obtenga el valor.

En nuestro ejemplo utilizaremos la OID específica a las interfaces de red, que es la IF-MIB (.1.3.6.1.2.1.2.) donde se encuentra todo lo relacionado con las interfaces del dispositivo. Pueden obtener más información aquí. Los que más uso de ahí son:

Cada uno de ellos representa las métricas que comentaba. Pudieran incluso agregar el OID que representa el nivel de tinta en una impresora HP que soporte red (por ejemplo OID para HP LaserJet).

La otra parte interesante es saber a que interfaz es que queremos obtener las métricas (partiendo de mi método que quiero extraer solo los datos que necesito, no toda la tabla informativa). Para esta tarea nos ayudamos de  snmpwalk del paquete  snmp en Debian, con el cual se puede recorrer todo el arbol SNMP del dispositivo:

Eso te genera el árbol completo de OID del router, teniendo una salida parecida a:

En caso de que no salgan los nombres y te salgan solo los números OID, en debian podrías instalar el paquete  snmp-mibs-downloader y ejecutar  download-mibs como administrador para actualizar los MIBs que no son más que la definición de los OID en nombre y descripción.

En la salida anterior podemos ver como obtener el ID de la interfaz o interfaces que queremos monitorizar, en mi caso la  1286 que es de tipo ATM. Cada router puede dar esta información dependiente de marca, modelo, firmware, etc. les toca ir probando cuál es la que realmente quieren.

El plugin de SNMP de Telegraf permite la consulta completa de una tabla dentro de los SNMP, es decir que podríamos pedirle la consulta de todos los datos de todas las interfaces del router, por lo que no tendríamos que definir que interfaz monitorizar, pero en este caso solo requiero los datos de una en específico. Esto no es solo cuestión de minimizar datos, sino que los routers dedican gran parte de esfuerzo en generar la respuesta de SNMP, por lo que mientras menos datos pidamos, menos tardará el router en responder y menos carga le exigiremos.

Para el caso de querer obtener la tabla (a manera de ejemplo, pues no abarco sus gráficas en el grafana, aunque sería muy parecido) sería así:

Ahora, continuando y configurando Telegraf para que obtenga solo los datos necesarios:

Ahora en cuanto reiniciemos el Telegraf estará enviando los datos de las interfaces a nuestro Grafana y por tanto a configurarlo, mejor con una animación:

(Visited 511 times, 1 visits today)
Sobre Luis Felipe Domínguez Vega 9 Artículos
Administrador de Sistemas y Programador entusiasta de tecnologías libres.

Sé el primero en comentar

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*