OpenWebinars

Big Data

Qué es Telegraf y primeros pasos

En este artículo abordamos qué es Telegraf y sus principales características y ventajas, así como una guía para realizar su implementación básica y un glosario de su terminología básica.

Jerson Martínez

Jerson Martínez

Experto DevOps

Lectura 4 minutos

Publicado el 14 de enero de 2022

Compartir

Si aún no conoces qué es Telegraf o no sabes por donde arrancar para comprender mejor el estado de tus recursos, sobre cómo monitorizarlos por medio de esta gran herramienta, te invito a leer este artículo, en el que te mostramos los fundamentos de Telegraf, desde sus características, ventajas y cómo realizar su implementación básica, hasta un glosario de términos básicos.

Qué es Telegraf

Es un agente de servidor basado en complementos para recopilar e informar métricas, y es la primera pieza de la pila TICK (Telegraf, InfluxDB, Chronograf, Kapacitor) . Este servicio recopila datos como el uso de disco, carga del sistema, uso de la memoria RAM, carga de la CPU, entre otros recursos.

La salida de Telegraf, por norma general, se envía a una base de datos de tipo series de tiempo como InfluxDB. Cuenta con una enorme lista de plugins para aumentar sus funcionalidades.

Características de Telegraf

Estas son algunas de las características que Telegraf admite actualmente y que lo convierten en una excelente opción para la recopilación de métricas.

  • Escrito íntegramente en Go. Se compila en un solo binario sin dependencias externas.
  • El agente puede recopilar métricas de una amplia gama de entradas y escribirlas en una amplia gama de salidas.
  • Está impulsado por complementos tanto para la recopilación como para la salida de datos, por lo que es fácilmente ampliable.
  • Se puede ejecutar en cualquier sistema sin necesidad de dependencias externas, sin necesidad de npm, pip, gem u otras herramientas de administración de paquetes.
  • Tiene cubierto más de 200 complementos ya escritos por expertos en la materia sobre los datos de la comunidad, es fácil comenzar a recopilar métricas de sus puntos finales.
  • La flexibilidad que ofrece hace que la arquitectura de Telegraf sea compatible con sus procesos y no lo obliga a cambiar sus flujos de trabajo para trabajar con la tecnología, simplemente se adapta a su arquitectura en lugar de ser lo contrario. La flexibilidad de Telegraf hace que sea una decisión fácil de implementar.

Conceptos claves de Telegraf

  • Los complementos de procesador procesan las métricas a medida que pasan y emiten resultados de inmediato en función de los valores que procesan. Por ejemplo, esto podría ser imprimir todas las métricas o agregar una etiqueta a todas las métricas que pasan.

  • Los complementos de agregación , por otro lado, son un poco más complicados. Los agregadores son típicamente para emitir nuevas métricas agregadas , como una media, mínimo, máximo, cuantiles o desviación estándar. Por esta razón, todos los complementos del agregador están configurados con una extensión period. El period es el tamaño de la ventana de métricas que representa cada agregado . En otras palabras, la métrica agregada emitida será el valor agregado de los últimos period segundos. Dado que muchos usuarios solo se preocuparán por sus agregados y no por cada métrica recopilada, también hay un drop_original argumento que le dice a Telegraf que solo emita los agregados y no las métricas originales.

Complementos de procesador y agregador de Telegraf

Procesan las métricas a medida que pasan y emiten resultados de inmediato en función de los valores que procesan. Por ejemplo, esto podría ser imprimir todas las métricas o agregar una etiqueta a todas las métricas que pasan.

Glosario de términos

Término Descripción
agent Es la parte central de Telegraf que recopila métricas de los complementos de entrada declarados y envía métricas a los complementos de salida declarados, según los complementos habilitados por la configuración dada.
aggregator plugin Los complementos de agregación reciben métricas sin procesar de los complementos de entrada y crean métricas agregadas a partir de ellos. Las métricas agregadas luego se pasan a los complementos de salida configurados.
batch size El agente de Telegraf envía métricas a los complementos de salida en lotes, no individualmente. El tamaño del lote controla el tamaño de cada lote de escritura que Telegraf envía a los complementos de salida.
collection interval El intervalo global predeterminado para recopilar datos de cada complemento de entrada. El intervalo de recopilación puede ser anulado por la configuración de cada complemento de entrada individual.
collection jitter se utiliza para evitar que todos los complementos de entrada recopilen métricas simultáneamente, lo que puede tener un efecto medible en el sistema. Cada intervalo de recopilación, cada complemento de entrada dormirá durante un tiempo aleatorio entre cero y la fluctuación de la recopilación antes de recopilar las métricas.
external plugin Programas creados fuera de Telegraf que se ejecutan a través del execdcomplemento. Proporciona flexibilidad para agregar funciones que no existen en los complementos internos de Telegraf.
flush interval El intervalo global para descargar datos de cada complemento de salida a su destino. Este valor no debe establecerse por debajo del intervalo de recolección.
flush jitter Se usa para evitar que todos los complementos de salida envíen escrituras simultáneamente, lo que puede abrumar algunos sumideros de datos. Cada intervalo de descarga, cada complemento de salida dormirá durante un tiempo aleatorio entre cero y el jitter de descarga antes de emitir métricas.
input plugin Los complementos de entrada recopilan métricas de forma activa y las entregan al agente principal, donde los complementos de agregación, procesador y salida pueden operar sobre las métricas. Para activar un complemento de entrada, debe habilitarse y configurarse en el archivo de configuración de Telegraf.
metric buffer El búfer de métricas almacena en caché métricas individuales cuando fallan las escrituras para un complemento de salida. Telegraf intentará vaciar el búfer después de una escritura exitosa en la salida. Las métricas más antiguas se eliminan primero cuando se llena este búfer.
output plugin Los complementos de salida entregan métricas a su destino configurado. Para activar un complemento de salida, debe habilitarse y configurarse en el archivo de configuración de Telegraf.
precision La configuración de precisión determina cuánta precisión de marca de tiempo se retiene en los puntos recibidos de los complementos de entrada. Todas las marcas de tiempo entrantes se truncan con la precisión dada.
processor plugin Los complementos de procesador transforman, decoran y/o filtran las métricas recopiladas por los complementos de entrada, pasando las métricas transformadas a los complementos de salida.
service input plugin Los complementos de entrada de servicio son complementos de entrada que se ejecutan en un modo de recopilación pasivo mientras se ejecuta el agente de Telegraf. Escuchan en un socket las entradas de protocolo conocidas o aplican su propia lógica a las métricas ingeridas antes de entregarlas al agente de Telegraf.

Ventajas de Telegraf

Recopila y envía todo tipo de datos:

  • Puedes conectarte a diferentes fuentes de datos como MongoDB, MySQL, Redis y otras para recopilar y enviar métricas.
  • En cuanto a sensores de IoT, recopile datos de estados críticos (niveles de presión, niveles de temperatura, etc.) de los sensores y dispositivos de IoT.
  • Puede utilizarlo para analizar los formatos de datos de entrada en métricas. Estos incluyen: Protocolo de línea InfluxDB, JSON, Graphite, Value, Nagios y Collectd.
  • El sistema de complementos de Telegraf permite agregar fácilmente nuevas entradas y salidas, con muchas integraciones a una variedad de métricas, eventos y registros de contenedores y sistemas populares. Extraiga métricas de API de terceros o escuche las métricas a través de los servicios al consumidor de StatsD y Kafka.
  • Telegraf también tiene complementos de salida para enviar métricas a una variedad de almacenes de datos, servicios y colas de mensajes, incluidos InfluxDB, Graphite, OpenTSDB, Datadog, Librato, Kafka, MQTT, NSQ y muchos otros.

También encontraremos sistemas similares a Telegraf, y algunas alternativas que se pueden comparar son las siguientes:

  • Fluentd: es una herramienta de administración de registros totalmente gratuita y de código abierto que simplifica la recopilación de datos y la canalización de almacenamiento. Elimina la necesidad de mantener un conjunto de scripts ad-hoc.

  • Collectd: es un servicio que recopila estadísticas de rendimiento del sistema periódicamente y proporciona mecanismos para almacenar los valores de varias maneras, por ejemplo, en archivos RRD (Reduced Resolution Dataset Format, que en Catellano sería, Formato de conjunto de datos de resolución reducida).

  • Logstash: es una herramienta para administrar eventos y registros. Puede usarlo para recopilar registros, analizarlos y almacenarlos para su uso posterior (como, para buscar). Hablando de búsqueda, logstash viene con una interfaz web para buscar y profundizar en todos sus registros. Es totalmente gratuito y de código abierto.

Telegraf vs Fluentd

Los desarrolladores describen Fluentd como “Capa de registro unificada “. Fluentd recopila eventos de varias fuentes de datos y los escribe en archivos, RDBMS, NoSQL, IaaS, SaaS, Hadoop, etc. Fluentd te ayuda a unificar tu infraestructura de registro.

Por otro lado, Telegraf se describe como “El agente de servidor impulsado por complementos para recopilar y reportar métricas “. Los objetivos del diseño son tener una huella de memoria mínima con un sistema de complementos para que los desarrolladores de la comunidad puedan agregar fácilmente soporte para recopilar métricas.

Fluentd pertenece a la categoría “Gestión de registros” de la pila tecnológica, mientras que Telegraf se puede clasificar principalmente en “Herramientas de supervisión”.

Ventajas de Telegraf Ventajas de Fluentd
Es de código abierto. Es de código abierto.
Excelente para el reenvío de registros de contenedores de nodos de Kubernetes. Admite complementos personalizados en cualquier idioma.
Ligero y fácil de usar Tiene amplio catálogo de complementos.

Telegraf vs Collectd

En un nivel alto, collectd y Telegraf tienen como objetivo hacer exactamente lo mismo: recopilar métricas de sus sistemas y luego enviarlas a algún almacenamiento de backend.

Ventajas de Telegraf Ventajas de collectd
Se diseñó pensando en las etiquetas desde el primer día. El núcleo de collectd no tiene un concepto de etiquetas.
Tiene un diseño modular para complementos, pero es diferente en que todos sus complementos existen en el mismo repositorio y se compilan en el mismo binario. Tiene un diseño modular que admite complementos de varias formas.
Los complementos están escritos en Go y se incluyen en el binario de Telegraf. La arquitectura de complentos se diseña de forma modular, compatible con C y Python.

Telegraf vs Logstash

Ventajas de Telegraf Ventajas de Logstash
Stack a disposición para seguimiento en proyectos complejos. Filtrado sencillo, pero potente.
Un agente puede trabajar como exportador múltiple con un manejo mínimo. Es escalable
Admite complementos personalizados en cualquier idioma. Excelente documentación.

Estas fueron algunas comparaciones de herramientas similares o alternativas a Telegraf, y como pudieron observar, también son poderosas y con cualquiera de ellas no estarán equivocándose al implementarlas en sus proyectos.

Imagen 0 en Qué es Telegraf y primeros pasos

Primeros pasos con Telegraf

Realizamos la instalación de Telegraf por medio de los repositorios de InfluxData para garantizar actualizaciones sin interrupciones siempre que haya nuevas versiones.

Ejecute las siguientes instrucciones de comandos para sistemas operativos GNU/Linux basados en Debian:

wget -qO- https://repos.influxdata.com/influxdb.key | sudo tee /etc/apt/trusted.gpg.d/influxdb.asc >/dev/null
source /etc/os-release
echo "deb https://repos.influxdata.com/${ID} ${VERSION_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
sudo apt update && sudo apt install telegraf
root@openwebinars:~# systemctl status telegraf
● telegraf.service - The plugin-driven server agent for reporting metrics into InfluxDB
   Loaded: loaded (/lib/systemd/system/telegraf.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2021-02-05 18:35:08 CET; 3s ago
     Docs: https://github.com/influxdata/telegraf
 Main PID: 5480 (telegraf)
    Tasks: 6 (limit: 2318)
   Memory: 19.6M
   CGroup: /system.slice/telegraf.service
           └─5480 /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d

Algunos casos de uso del comando Telegraf

Vea el uso del comando Telegraf

telegraf --help

Generar un archivo de configuración de Telegraf

telegraf config > telegraf.conf

Genere configuración con solo complementos de entrada de cpu y salida de influxdb definidos

telegraf --section-filter agent: entradas: salidas --input-filter cpu --output-filter influxdb config

Ejecute una única colección de telegraf, generando métricas en stdout

telegraf --config telegraf.conf --test

Ejecute telegraf con todos los complementos definidos en el archivo de configuración

telegraf --config telegraf.conf

Ejecute telegraf, habilitando la entrada de cpu y memoria, y los complementos de salida influxdb

telegraf --config telegraf.conf --input-filter cpu: mem --output-filter influxdb

Instalando InfluxDB

wget https://dl.influxdata.com/influxdb/releases/influxdb_1.8.0_amd64.deb
dpkg -i influxdb_1.8.0_amd64.deb
systemctl enable --now influxdb
systemctl status influxdb

Una vez que se genera el archivo de configuración, edítelo para definir los detalles de la conexión a la base de datos de métricas de InfluxDB;

nano /etc/telegraf/telegraf.conf

En este caso, tendremos que buscar la sección de nombre [[outputs.influxdb]] dentro de Output Plugins para indicar dentro de la misma los parámetros necesarios para llevar a cabo la conexión con InfluxDB.

###############################################################################
#                            PLUGINS DE SALIDA                                #
###############################################################################

# Configuración para enviar métricas a InfluxDB
[[outputs.influxdb]]
  urls = ["http://127.0.0.1:8086"]
  database = "telegraf"
  username = "telegraf"
  password = "mi_clave"

Reiniciando el servicio telegraf luego de aplicar las configuraciones.

systemctl restart telegraf

Revisar que el servicio esté corriendo sin ningún problema.

systemctl status telegraf

Inicie Telegraf y verifique si aparecen datos

Telegraf le permite ejecutar pruebas de configuración que generan métricas en stdout. Para ejecutar una prueba general para todas las métricas definidas:

telegraf --config /etc/telegraf/telegraf.conf --test

Para ejecutar la prueba de configuración para una métrica específica, por ejemplo, complemento de entrada del sistema:

telegraf -test -config /etc/telegraf/telegraf.conf --input-filter system

Por supuesto, esto es solo una pequeña prueba, lo importante es que domines los conceptos y para qué es la herramienta.

Conclusión

El propósito de Telegraf es recopilar e informar métricas, así que ahora ya conocemos para qué sirve Telegraf, repasamos características, algunos conceptos claves, las ventajas de Telegraf y algunas comparaciones con otras herramientas similares, consiguiendo enamorar aún más para empezar a usarla, así que finalizamos con proporcionar los primeros pasos e implementar la herramienta de tal forma que podamos conseguir los fundamentos sobre la misma.

Compartir este post

También te puede interesar

Icono de la tecnología
Curso

Monitorización con Grafana y Prometheus

Intermedio
1 h. y 22 min.

Este curso trata sobre como monitorizar aplicaciones, servicios o procesos utilizando Grafana y Prometheus además presentaremos y probaremos...

Asier Gómez Akasuso
4.2
Qué es Grafana y primeros pasos
Blog

Qué es Grafana y primeros pasos

Si no conoces Grafana, en este artículo te proponemos aprender más sobre esta potente herramienta, así como a dar los primeros pasos...

Jerson Martínez