Monitorización con Grafana y Prometheus
Este curso trata sobre como monitorizar aplicaciones, servicios o procesos utilizando Grafana y Prometheus además presentaremos y probaremos...
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.
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.
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.
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.
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.
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.
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 execd complemento. 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. |
Recopila y envía todo tipo de datos:
InfluxDB
, JSON
, Graphite
, Value
, Nagios
y Collectd
.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.
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. |
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. |
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.
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
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.
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.
También te puede interesar
Este curso trata sobre como monitorizar aplicaciones, servicios o procesos utilizando Grafana y Prometheus además presentaremos y probaremos...
Conoce la respuesta a esta pregunta que tanto intriga a muchos en el sector TI y seguramente te hayas hecho alguna vez.
Si no conoces Grafana, en este artículo te proponemos aprender más sobre esta potente herramienta, así como a dar los primeros pasos...