Telegraf: Metrics Collection Agent (Artikel 047)
Installation und Konfiguration des Telegraf-Agenten zur Sammlung von System- und Applikationsmetriken. Erfahren Sie, wie Sie Daten an InfluxDB, Prometheus oder andere backends senden.
# Telegraf: Das Schweizer Taschenmesser für Metriken
TL;DR / Management Summary Während der Prometheus Node Exporter spezialisiert ist, ist Telegraf der Alleskönner. Er kann Daten von fast allem sammeln: Hardware-Sensoren, Logdateien, Docker-Stats, SNMP von Switches oder sogar SQL-Queries. Er transformiert diese Daten und sendet sie an beliebige Ziele. Empfehlung: Ideal, wenn Sie gemischte Backends (z.B. InfluxDB für Logs und Prometheus für Alerts) betreiben oder Legacy-Hardware via SNMP einbinden müssen.
# 1. Einführung & Architektur
Input, Processor, Aggregator, Output.
Telegraf arbeitet in einer Pipeline. Jede Stufe ist durch Plugins erweiterbar.
graph LR
A[Inputs: CPU, Disk, SNMP, MQTT] --> B[Processors: Tags, Filtering]
B --> C[Aggregators: Min/Max/Avg]
C --> D[Outputs: InfluxDB, Prometheus, File]
subgraph "Telegraf Engine"
B
C
end
# 2. Installation & Grundsetup
Schnell konfiguriert.
# Installation via Repository
wget -q https://repos.influxdata.com/influxdata-archive_compat.key
echo '393e8779c89451d468b9b433b5e17ff2a3258da18a3a05b871f0bc7596a030c9 influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/keyrings/influxdata-archive_compat.gpg > /dev/null
echo 'deb [signed-by=/etc/apt/keyrings/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list
sudo apt update && sudo apt install telegraf
# 3. Die Konfiguration: telegraf.conf
Metriken definieren.
Datei: /etc/telegraf/telegraf.conf
# Beispiel: System-Metriken an InfluxDB senden
[agent]
interval = "10s"
round_interval = true
[[outputs.influxdb_v2]]
urls = ["http://localhost:8086"]
token = "your-token"
organization = "company"
bucket = "server_metrics"
[[inputs.cpu]]
percpu = true
totalcpu = true
collect_cpu_time = false
report_active = false
[[inputs.mem]]
[[inputs.disk]]
ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]
# 4. Telegraf als Prometheus-Exporter
Hybride Nutzung.
Telegraf kann sich wie ein Node Exporter verhalten. Anstatt Daten zu pushen, stellt er sie unter /metrics bereit.
[[outputs.prometheus_client]]
listen = ":9273"
path = "/metrics"
# 5. Troubleshooting & “War Stories”
Wenn der Agent schweigt.
# Story 1: “Der CPU-Dieb”
Symptom: Der Telegraf-Dienst verbraucht selbst 20-30% CPU.
Ursache: Zu viele inputs.tail Plugins auf sehr aktiven Logfiles mit komplexen Regex-Filtern.
Lösung: Nutzen Sie spezialisierte Shipper wie Filebeat für Logs oder optimieren Sie den flush_interval in der [agent] Sektion.
# Story 2: “Das SNMP-Loch”
Symptom: Metriken von Netzwerk-Switches fehlen sporadisch.
Ursache: Der SNMP-Timeout ist zu niedrig für langsame Management-Prozessoren der Switches.
Lösung: Erhöhen Sie den timeout im SNMP-Plugin und nutzen Sie agent_host Listen, um parallele Scans zu ermöglichen.
# 6. Sicherheit & Hardening
- Berechtigungen: Telegraf sollte unter dem User
telegraflaufen. Wenn er Docker-Metriken lesen soll, fügen Sie ihn der Gruppedockerhinzu. - Secrets: Nutzen Sie Umgebungsvariablen für Token/Passwörter in der Konfig:
token = "$INFLUX_TOKEN" - Filtering: Senden Sie nur, was Sie brauchen. Jede Metrik kostet Storage und Geld (in der Cloud). Nutzen Sie
fieldpassundtagdrop.
# Anhang: Cheatsheet
| Aufgabe | Befehl |
|---|---|
| Config testen (einmalig) | telegraf --test |
| Spezifische Config laden | telegraf --config custom.conf |
| Liste aller Plugins | telegraf --inputs |
| Version prüfen | telegraf version |
| Dienst-Status | systemctl status telegraf |