Información
Actualidad
Aquí encontraras noticias de actualidad sobre Gnu Linux y Open Source.

Además de información sobre la comunidad LiGNUx.
Distribuciones y entornos
Información ordenada sobre los diferenes sistema operativos Gnu Linux y las diferentes opciones de entornos gráficos.
Tutoriales y guías
Todos los pasos e informaciones que puedes desear para tu día a día.
Tutoriales
Tutoriales
Programación
Programación
About Us
Get to know the people behind the code and the mission behind the work
how we handle data
Privacy
Security
Legal

Guía para la monitorización de dispositivos con Telegraf, InfluxDB y Grafana

25 marzo, 2025

Hoy toca este tutorial sobre monitorización, donde hablaremos sobre Telegraf, InfluxDB y Grafana y no es para menos: cualquier administrador de sistemas que se precie querrá tener bajo control todos los hosts y extraer datos valiosos para futuras aplicaciones o decisiones.

Este tutorial está diseñado para ser útil tanto para principiantes como para usuarios avanzados. Me esforzaré por explicarlo de forma sencilla y paso a paso, para que todos puedan seguirlo sin problema.

Ten en cuenta que las configuraciones que voy a compartir pueden no ajustarse al 100% a tus necesidades, ya que cada entorno tiene sus particularidades. Por ello, será necesario que adaptes las configuraciones a tu caso específico.

En mi caso cuento con dos Raspberry (RPI) 2 y 3 respectivamente, en las cuales tengo instalados varios contenedores para diversos fines.

Los contenedores que nos ocupan van a ser tres.

Telegraf: este contenedor se encarga de “leer” los datos de los dispositivos.

InfluxDB: es el contenedor encargado de almacenar la información que le proporciona el / los contenedores Telegraf. Aquí hago un inciso… ¿Por qué Influx?. Influx es una base de datos especializada en Time Series; y esto que es… normalmente en una base de datos podemos almacenar un nombre, un numero, en definitiva un dato “fijo”, los datos que vamos a almacenar nosotros son datos que van variando en el tiempo, y para esto Influx está mejor preparada que otras BBDD.

Grafana: este programa (que lo haremos funcionar en un contenedor) es el encargado de coger los datos de Influx y hacer la representación gráfica de los mismos.

A continuación expongo un esquema de cual es mi estructura, que es la que vamos a monitorizar.

Creo que está claro, pero si hay alguna duda, extiendo la explicación. A grandes rasgos tenemos en la RPI2 un contenedor Telegraf especializado en SNMP para leer los OID de mi router Mikrotik (Esto lo explicaré más adelante). En cada RPI tenemos otros dos contenedores Telegraf especializados en leer los datos de las Raspberry. Quiero destacar el contenedor Telegraf MQTT. Muchos se preguntarán por que este contenedor, cuando podemos mandar los datos desde el contenedor Mqtt a Homeassistant (HA) y que HA nos lo mande a Influx. Pues la respuesta es por lo siguiente; observé cuando trabajaba con HA que cada vez que reiniciaba HA, se me producía un corte en las gráficas del PZEM que tengo monitorizando mi red eléctrica de casa. Para evitar esto se me ocurrió crear un contenedor Telegraf que le pregunte directamente al contenedor Broker de Mqtt, así no tengo que pasar por HA.

Entrando en harina, vamos a empezar con la instalación de los contenedores. Decir que tengo la estructura de directorios igual que se ha realizado en otros muchos tutoriales (/Docker/(Lista de Contenedores). Cada uno tendrá que adaptar la configuración de los contenedores en base a su estructura. Como la RPI 3 ya la tengo entretenida con HA, le dejé el trabajo de monitorización a la RPI2.

Instalación de InfluxDB 

Enlace del contenedor para más info: https://hub.docker.com/_/influxdb

También tenemos la opción de crear el contenedor desde la raíz:

Una vez creado el contenedor tenemos que proceder a crear las bases de datos que vayamos a necesitar.

(el que tenga Portainer también puede acceder al contenedor mediante la consola).

Una vez dentro del contenedor teclearemos:

Creamos el usuario:

Siguiendo estos pasos crearemos todas las bases de datos necesarias. Entrar en cada base de datos y crear también sus usuarios.

Instalación de Grafana

Enlace del contenedor para más info: https://hub.docker.com/r/grafana/grafana

Yo personalmente Grafana no siempre la tengo ejecutándose, así que le hice un switch en HA para arrancarla cuando sea necesario. La instalación de Grafana la hice en la RPI3, pero cada uno que la haga donde más le guste. No preocuparse por que luego en la configuración interna de Grafana declararemos la ruta donde está o están ubicadas las bases de datos.

Podremos comprobar si funciona entrando la http://(iphost:3000) y poniendo “admin” en usuario y password. Una vez dentro podremos crear nuestro usuario.

Instalación de Telegraf

Telegraf para lectura de Host y Contenedores.

Ahora con Telegraf, empezamos a entrar ya en harina… comenzaremos monitorizando las RPI’s o la RPI según tengamos una o varias.

Antes de crear el contenedor, comentar que con Telegraf podemos monitorizar tanto nuestras raspberrys como los contenedores docker que en ellas tengamos funcionando. Para ello tendremos que declarar la ubicación del docker.sock en la variable de creación del contenedor.

Instalaremos un contenedor de Telegraf en cada host que queramos monitorizar. La instalación es igual en todos los host, teniendo que cambiar los parámetros de configuración en el archivo telegraf.conf que veremos más adelante.

Enlace del contenedor para más info: https://hub.docker.com/_/telegraf

Para instalar Telegraf  interesa primero que el contenedor nos cree el archivo de configuración. Para crear este archivo teclearemos:

Ahora cogeremos el archivo telegraf.conf . Normalmente este archivo lo deberemos de dejar en el directorio persistente, quedando su ruta como:

Este fichero es muy extenso por que tiene un montón de opciones de configuración, pero a nosotros de momento sólo nos interesa monitorizar nuestra RPI. Yo voy a pegar mi fichero de configuración donde declaro únicamente las variables que he necesitado. No obstante el que quiera puede trabajar con el fichero que nos ha creado el contenedor y ver todas sus variables. Con el mismo fichero podremos hacer que Télegraf nos monitorice el host o también el contenedor.

Si queremos monitorizar sólo los host, el fichero llegará a los parámetros “Input Plugins”, si queremos monitorizar también los contenedores, crearemos el fichero completo tal y como se muestra a continuación.

telegraf.conf (para leer Host y Dockers)

Una vez que hemos terminado de configurar el fichero telegraf.conf procedemos a levantar el contenedor.

Dos observaciones:

  • En la primera variable indicamos donde está el fichero telegraf.conf pero después hay que declararlo dentro del contenedor en su posición normal. Este punto lo veremos más en detalle en los otros contenedores.
  • La segunda variable es la que nos permitirá que el contenedor pueda leer los parámetros de Docker para sacar información de ellos.

Si todo ha ido bien, en la consola de Telegraf debe salirnos algo así:

Y si entramos en el contenedor de InfluxDB deben haberse creado las tablas y los datos que estamos extrayendo con Telegraf. Adjunto una captura de mi BBDD de la RPI3 (observar los comandos usados)

Podemos ver como Telegraf ha creado automáticamente todas las tablas de datos tanto de la RPI como del docker que hay en ella. Luego veremos en Grafana que los datos de las tablas son más extensos de lo que aquí aparecen.

Telegraf para lectura del Broker Mqtt

Siguiendo con la instalación de nuestros contenedores Telegraf, vamos a configurar ahora el que nos va a leer directamente del broker de mqtt, el cual también es un contenedor.

Este contenedor lo llamaremos ahora mqtttelegraf para diferenciarlo del otro. Yo en cuestión lo tengo instalado en la RPI2 y lee del brocker mqtt que está en la RPI3. La instalación del contenedor es exactamente igual que el anterior con la salvedad de la ruda del fichero telegraf.conf, pero primero si no queremos liarnos, cogemos el telegraf.conf que habíamos editado antes y lo modificamos.

Aquí lo característico de este fichero es la parte de mqtt. Habrá que sacar el topic que queremos extraer; para ello podemos usar programas como mqtt.fx (del cual hay un tuto al respecto). Y luego hay que sacar las “keys” que queremos leer. Observar que los datos se sacan preformateados a “JSON”, cuidado no sacarlos en formato Influx por que no los entiende. Yo lo probé y daba error en la base de datos.

telegraf.conf (para leer broker de mqtt, en este caso un pzem)

El comando para su instalación sería:

Observar que el fichero telegraf.conf está en el directorio mqtttelegraf, pero dentro del contenedor la ruta tenemos que dejar la suya, de no hacerse así, al arrancar Telegraf nos daría un fallo.

Con esto ya tenemos monitorizando el broker…Para guardar sus datos si veis arriba cuando hemos sacado las bases de datos de influxdb, tengo una que se llama mqtt. Con los mismos comandos podemos ver las tablas que nos ha creado Telegraf. Con estos datos he creado la monitorización de mi PZEM con los consumos eléctricos.

Esta pantalla es una unión entre datos recolectados de HA y del PZEM

Telegraf para lectura SNMP de dispositivos.

Para aquellos que no lo sepan, SNMP es un protocolo simple de administración de dispositivos, que nos permite extraer información de estos.

Este protocolo lo tienen infinidad de dispositivos como switches, routers, tarjetas de red, PC’s etc, etc. Para poder leer los datos, el dispositivo tiene que tener activado el servicio SNMP. De no tenerlo, en muchas ocasiones, sobre todo si tienen sistemas linux embebidos, se les puede instalar, dígase el caso por ejemplo de OpenWRT u otros…

No quiero hacerme muy extenso en el tema así que voy a comentarlo muy por encima; si alguien necesita más información puede dejarme un comentario. Cada dato de un dispositivo está representado por una serie de números organizados de forma jerárquica, estableciéndose muchos de ellos por reglas RF y el resto más específicos los proporciona el fabricante. Estos números son los OID; así por ejemplo un OID tiene esta forma: “.1.3.6.1.4.1.14988.1.1.3.14.0” este en cuestión muestra la información de la CPU de mi router. Toda esta información la recopilan los fabricantes de cada dispositivo en un fichero llamado MIB. Estos MIB pueden ser vistos con programas como el “ManageEngine MIBBrowser” que es el que yo uso. Podemos cargar el fichero MIB y sacar información mediante en SNMPWalk de todos los OID que tiene el dispositivo.

Imagen del programa para gestionar los MIB donde podemos ver los OID de un dispositivo.

Bueno, pues una vez que tenemos el listado de los OID que nos interesan, del dispositivo en cuestión, procederemos a modificar nuestro telegraf.conf. Mi consejo es crear un contenedor telegraf por cada dispositivo que queramos monitorizar, de lo contrario se nos puede hacer muy extenso el fichero de configuración y podríamos tener conflictos. También decir que si son muchos los dispositivos a monitorizar hay otras herramientas para tal fin como “LibreNMS” que hacen mejor esta función; pero bueno aquí se trata de monitorizar uno o dos dispositivos que tengamos en casa (router, Nas, etc).

Pues los pasos son los mismos… editar el telegraf.conf de la siguiente manera (NOTA: este fichero es para monitorizar un router Mikrotik, para otros dispositivos hay que cambiar los OID y resto de parámetros).

Yo he creado una base de datos llamada mikrotik en mi InfluxDB, y de la misma forma que las anteriores cuando tenga en funcionamiento el contenedor, podré ver los datos que extraemos.

Para crear el contenedor (el mio está en la PI2) lo haremos igual que el anterior.

Observar que aquí telegraf.conf esta en el directorio mktttelegraf, así tengo cada configuración en su correspondiente directorio.

Con el contenedor ya funcionando podemos tener datos interesantes de nuestros dispositivos.

Datos del router Mikrotik

Escrito por Noel

Buenas, me llamo Noel, soy un divulgador y amante del software libre y Gnu Linux.
Usuario inquieto por ver las novedades y dar a conocer a todos las grandes ventajas del software libre y Gnu Linux.

Suscribirse
Notificarme las
guest
0 Comentarios
Los más recientes
Los más antiguos Más votados
Feedbacks en línea
Ver todos los comentarios
LiGNUx trabaja sobre una licencia de Creative Commons Reconocimiento 4.0 Internacional.
cloudflagpaperclipprinterfile-emptyfilm-playcamera-videopicturelaptop-phonebriefcasecrossmenu
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram