Telegraf¶
Què és?¶
Telegraf és un agent de col·lecció de mètriques open source, part de l'stack TICK (Telegraf, InfluxDB, Chronograf, Kapacitor). Permet recollir, processar i enviar mètriques a diverses destinacions.
Característiques principals¶
- Més de 300 plugins d'entrada (inputs)
- Múltiples sortides (outputs): InfluxDB, Prometheus, Kafka, etc.
- Baix consum de recursos
- Configuració basada en fitxers TOML
- Suport per MQTT, SNMP, HTTP, i molts altres protocols
Instal·lació amb Docker¶
1. Crear xarxa Docker (si no existeix)¶
docker network create xarxa_IOT
2. Crear carpetes i configuració base¶
mkdir -p /opt/docker/telegraf/conf/telegraf.d
# Generar configuració per defecte
docker run --rm telegraf telegraf config > /opt/docker/telegraf/conf/telegraf.conf
3. Configurar sortida a InfluxDB¶
Editar /opt/docker/telegraf/conf/telegraf.conf i afegir/modificar la secció outputs.influxdb_v2:
[[outputs.influxdb_v2]]
urls = ["http://influxdb:8086"]
## Token d'autenticació
token = "EL_TEU_TOKEN"
## Organització (ha d'existir)
organization = "La_Teva_Org"
## Bucket de destinació
bucket = "telegraf"
Per a InfluxDB 3, utilitzar:
[[outputs.influxdb_v2]]
urls = ["http://influxdb3:8181"]
token = "apiv3_EL_TEU_TOKEN"
organization = ""
bucket = "IoT"
4. Configurar entrada MQTT (opcional)¶
Afegir a la configuració per rebre dades de MQTT:
[[inputs.mqtt_consumer]]
servers = ["tcp://mqtt:1883"]
topics = [
"sensors/#",
"devices/#"
]
username = "telegraf"
password = "password"
data_format = "json"
5. Docker Compose¶
services:
telegraf:
image: telegraf:latest
container_name: telegraf
restart: unless-stopped
volumes:
- /opt/docker/telegraf/conf/telegraf.conf:/etc/telegraf/telegraf.conf:ro
- /opt/docker/telegraf/conf/telegraf.d:/etc/telegraf/telegraf.d:ro
depends_on:
- influxdb3
networks:
- xarxa_IOT
networks:
xarxa_IOT:
external: true
6. Iniciar el servei¶
docker compose up -d
Exemples de configuració¶
Input: Mètriques del sistema¶
[[inputs.cpu]]
percpu = true
totalcpu = true
collect_cpu_time = false
[[inputs.mem]]
[[inputs.disk]]
ignore_fs = ["tmpfs", "devtmpfs"]
Input: HTTP Listener (rebre dades via HTTP)¶
[[inputs.http_listener_v2]]
service_address = ":8080"
paths = ["/telegraf"]
data_format = "json"
Processador: Afegir tags¶
[[processors.override]]
[processors.override.tags]
environment = "production"
location = "barcelona"
Verificar configuració¶
# Testejar la configuració
docker exec -it telegraf telegraf --config /etc/telegraf/telegraf.conf --test
# Veure logs
docker logs -f telegraf
Plugins més utilitzats en IoT¶
| Plugin | Tipus | Descripció |
|---|---|---|
mqtt_consumer |
Input | Subscriure's a topics MQTT |
http_listener_v2 |
Input | Rebre dades via HTTP POST |
modbus |
Input | Llegir dispositius Modbus |
snmp |
Input | Consultar dispositius SNMP |
influxdb_v2 |
Output | Enviar a InfluxDB 2.x/3.x |
mqtt |
Output | Publicar a MQTT |