InfluxDB Telegraf Installation Anleitung
InfluxDB + Telegraf Installation – Time-Series Monitoring Stack
Was ist InfluxDB?
InfluxDB ist eine hochoptimierte Zeitreihendatenbank speziell für Monitoring, Metriken und Telemetrie-Daten. InfluxDB speichert große Mengen an Daten effizient und bietet schnelle Abfragen über längere Zeiträume.
Was ist Telegraf?
Telegraf ist ein Metrics-Collection-Agent, der Daten von verschiedenen Quellen sammelt und an InfluxDB sendet. Telegraf ist lightweight und kann auf jedem Server laufen.
Use Cases
- Server-Monitoring: CPU, Memory, Disk, Network Metriken
- IoT-Daten: Sensoren und Geräte-Telemetrie
- Anwendungs-Metriken: Performance-Daten von Applikationen
- Log-Analysen: Echtzeit-Verarbeitung von Log-Daten
- Industrielle Überwachung: Maschinen- und Prozessdaten
Installation InfluxDB 2.x auf Ubuntu
Schritt 1: Repository hinzufügen
# InfluxDB Signing-Key importieren
curl -fsSL https://repos.influxdata.com/influxdata-archive_compat.key | gpg --dearmor > /usr/share/keyrings/influxdb-archive-keyring.gpg
# Repository hinzufügen
echo "deb [signed-by=/usr/share/keyrings/influxdb-archive-keyring.gpg] https://repos.influxdata.com/debian stable main" | \
tee /etc/apt/sources.list.d/influxdata.list
apt update
Schritt 2: InfluxDB installieren
apt install -y influxdb2 # Service starten systemctl enable influxdb systemctl start influxdb # Status prüfen systemctl status influxdb
Schritt 3: Web-UI Zugriff
InfluxDB Web UI ist verfügbar unter:
http://localhost:8086
Beim ersten Zugriff werden Sie aufgefordert, die initiale Konfiguration durchzuführen:
- Username: admin (beliebig)
- Password: Sicheres Passwort
- Organization: my-org (beliebig)
- Bucket: system (Standard Bucket für Daten)
- Retention: 30 days (oder eigener Wert)
Installation und Konfiguration von Telegraf
Schritt 1: Telegraf installieren
apt install -y telegraf # Service aktivieren (aber noch nicht starten) systemctl enable telegraf
Schritt 2: API Token in InfluxDB generieren
Im InfluxDB Web-UI:
- Gehen Sie zu
Settings → API Tokens - Klicken Sie
Generate Token - Wählen Sie
Read/Write Token - Wählen Sie die Bucket "system" (oder Ihre Bucket)
- Geben Sie einen Namen ein: "telegraf-token"
- Kopieren Sie den generierten Token
Schritt 3: Telegraf konfigurieren
Bearbeiten Sie /etc/telegraf/telegraf.conf:
[[outputs.influxdb_v2]] urls = ["http://localhost:8086"] token = "your-api-token-here" organization = "my-org" bucket = "system" # System-Metriken sammeln [[inputs.cpu]] percpu = true totalcpu = true collect_cpu_time = false report_per_cpu = true [[inputs.mem]] # Verwendet automatisch verfügbare Metriken [[inputs.disk]] ignore_fs = ["tmpfs", "devtmpfs", "devfs"] [[inputs.diskio]] # Keine speziellen Konfigurationen nötig [[inputs.net]] # Network Interface Metriken [[inputs.netstat]] # Network Statistiken [[inputs.processes]] # Prozess-Informationen [[inputs.systemd_units]] # Systemd-Service Status [agent] interval = "10s" round_interval = true metric_batch_size = 1000 metric_buffer_limit = 10000 collection_jitter = "0s" flush_interval = "10s" flush_jitter = "0s" precision = "" hostname = "myserver" omit_hostname = false
Schritt 4: Telegraf starten
systemctl start telegraf # Logs prüfen journalctl -u telegraf -f
Daten in InfluxDB überprüfen
Data Explorer verwenden
- Öffnen Sie InfluxDB Web-UI
- Gehen Sie zu
Explore/Data Explorer - Wählen Sie Bucket "system"
- Wählen Sie Measurement (z.B. "cpu", "mem", "disk")
- Wählen Sie Field (z.B. "usage_user", "usage_idle")
- Klicken Sie
Submit
Sie sollten jetzt Graphen mit Ihren Metriken sehen.
Dashboard in InfluxDB erstellen
Einfaches Dashboard
- Gehen Sie zu
Dashboards - Klicken Sie
Create Dashboard - Wählen Sie
From a TemplateoderBlank - Klicken Sie
Add Cell
CPU-Auslastung Chart hinzufügen
- Cell konfigurieren:
- Bucket: system
- Measurement: cpu
- Field: usage_user
- Aggregation Window: 1m
- Function: mean
Flux Query Language
InfluxDB verwendet Flux für fortgeschrittene Abfragen:
Beispiel-Queries
Durchschnittliche CPU-Auslastung der letzten Stunde:
from(bucket: "system") |> range(start: -1h) |> filter(fn: (r) => r["_measurement"] == "cpu" and r["_field"] == "usage_user") |> mean()
Memory-Verwendung in den letzten 24 Stunden:
from(bucket: "system") |> range(start: -24h) |> filter(fn: (r) => r["_measurement"] == "mem" and r["_field"] == "used_percent") |> group(columns: ["host"]) |> max()
Disk-Usage nach Gerät:
from(bucket: "system") |> range(start: -1h) |> filter(fn: (r) => r["_measurement"] == "disk" and r["_field"] == "used_percent") |> group(columns: ["device"]) |> last()
Alerts in InfluxDB einrichten
Notification Endpoint erstellen
- Gehen Sie zu
Alerts → Notification Endpoints - Klicken Sie
Create Notification Endpoint - Wählen Sie Typ (z.B. "Webhook")
- Konfigurieren Sie URL (z.B. zu Slack, ntfy, oder eigenem Webhook)
Alert Rule erstellen
- Gehen Sie zu
Alerts → Alert Rules - Klicken Sie
Create Alert Rule - Wählen Sie Bucket und Measurement
- Definieren Sie Bedingung (z.B. CPU > 80%)
- Wählen Sie Notification Endpoint
- Speichern
Beispiel Alert:
# Benachrichtigung wenn CPU > 90% für 5 Minuten from(bucket: "system") |> range(start: -5m) |> filter(fn: (r) => r["_measurement"] == "cpu" and r["_field"] == "usage_user") |> mean() |> filter(fn: (r) => r["_value"] > 90)
Grafana Integration
InfluxDB als Datenquelle in Grafana
- Öffnen Sie Grafana
- Gehen Sie zu
Configuration → Data Sources - Klicken Sie
Add data source - Wählen Sie
InfluxDB - Konfigurieren Sie:
- URL: http://localhost:8086
- Organization: my-org
- Token: Ihr API Token
- Default Bucket: system
- Klicken Sie
Save & Test
Dashboard in Grafana mit InfluxDB
- Erstellen Sie neues Dashboard in Grafana
- Fügen Sie Panel hinzu
- Wählen Sie InfluxDB als Datenquelle
- Nutzen Sie Flux Query Language oder simple UI
Performance Tuning
Telegraf Sampling-Rate anpassen
# In /etc/telegraf/telegraf.conf # Schneller sammeln für detailliertere Daten [agent] interval = "5s" # Statt 10s # Oder speichern für größere Zeiträume: interval = "30s" # Für weniger detaillierte Daten
Retention Policies
Beim Erstellen eines Buckets können Sie Retention konfigurieren:
- 30 Tage: Standard für Monitoring
- 1 Jahr: Für langfristige Trends
- Unbegrenzt: Für wichtige Metriken
Vergleich: InfluxDB vs Prometheus
| Aspekt | InfluxDB | Prometheus |
|---|---|---|
| Datenmodell | Key-Value mit Tags | Labels (Labels) |
| Query Sprache | Flux (oder InfluxQL) | PromQL |
| Datenerfassung | Push (Telegraf) oder Pull | Pull (Scraping) |
| Retention | Konfigurierbar | Lokal auf Disk |
| Clustering | InfluxDB Enterprise | Schwierig |
| Best Use Case | Long-term Metrics, Trending | Real-time Monitoring, Alerting |
Backup und Restore
InfluxDB Backup erstellen
influx backup /backup/influxdb # Mit zusätzlichen Optionen influx backup /backup/influxdb \ --org my-org \ --bucket system
Backup wiederherstellen
influx restore /backup/influxdb