InfluxDB mit Docker installieren
# docker-compose.yml
services:
influxdb:
image: influxdb:2.7
container_name: influxdb
ports:
- "8086:8086"
volumes:
- influxdb-data:/var/lib/influxdb2
environment:
DOCKER_INFLUXDB_INIT_MODE: setup
DOCKER_INFLUXDB_INIT_USERNAME: admin
DOCKER_INFLUXDB_INIT_PASSWORD: sicherespasswort
DOCKER_INFLUXDB_INIT_ORG: firma
DOCKER_INFLUXDB_INIT_BUCKET: metriken
DOCKER_INFLUXDB_INIT_RETENTION: 30d
restart: unless-stopped
volumes:
influxdb-data:
Telegraf – Metriken-Agent
# Telegraf installieren
apt install -y telegraf
# /etc/telegraf/telegraf.conf
# InfluxDB v2 Output
[[outputs.influxdb_v2]]
urls = ["http://influxdb:8086"]
token = "mein-api-token"
organization = "firma"
bucket = "metriken"
# CPU-Metriken
[[inputs.cpu]]
percpu = true
totalcpu = true
# RAM
[[inputs.mem]]
# Disk
[[inputs.disk]]
ignore_fs = ["tmpfs", "devtmpfs"]
# Netzwerk
[[inputs.net]]
# Docker Container
[[inputs.docker]]
endpoint = "unix:///var/run/docker.sock"
# Nginx Status
[[inputs.nginx]]
urls = ["http://localhost/nginx_status"]
# MySQL
[[inputs.mysql]]
servers = ["root:passwort@tcp(localhost:3306)/"]
# SNMP (Switches)
[[inputs.snmp]]
agents = ["192.168.1.1", "192.168.1.2"]
community = "public"
version = 2
[[inputs.snmp.field]]
name = "hostname"
oid = "RFC1213-MIB::sysName.0"
[[inputs.snmp.table]]
name = "interface"
oid = "IF-MIB::ifTable"
Flux Abfragen
// Letzte CPU-Auslastung
from(bucket: "metriken")
|> range(start: -1h)
|> filter(fn: (r) => r._measurement == "cpu")
|> filter(fn: (r) => r._field == "usage_user")
|> mean()
|> yield(name: "cpu-mean")
// Top 5 RAM-verbrauchende Container
from(bucket: "metriken")
|> range(start: -15m)
|> filter(fn: (r) => r._measurement == "docker_container_mem")
|> filter(fn: (r) => r._field == "usage_percent")
|> sort(columns: ["_value"], desc: true)
|> limit(n: 5)
InfluxDB Dashboard in Grafana
Grafana → Data Sources → Add:
Type: InfluxDB
Query Language: Flux
URL: http://influxdb:8086
Organization: firma
Token: [API-Token aus InfluxDB]
Default Bucket: metriken
Dashboard Panel:
Data Source: InfluxDB
Query: [Flux-Abfrage]
InfluxDB vs. Prometheus
InfluxDB:
+ Push-Modell (Telegraf pusht Daten)
+ Flexiblere Retention-Policies
+ Nativer IoT/Sensor-Fokus
+ Flux-Sprache mächtiger als PromQL
Prometheus:
+ Pull-Modell (besser für Service-Discovery)
+ Standard in Cloud/Kubernetes
+ Größeres Exporter-Ökosystem
FAQ
Kann InfluxDB Prometheus-Metriken empfangen?
Ja. InfluxDB 2.x hat einen nativen Prometheus Remote Write Endpoint.
Fazit
InfluxDB + Telegraf ist ideal für gemischte Umgebungen: Server, Netzwerkgeräte und IoT-Sensoren in einer einheitlichen Zeitreihendatenbank.
Metriken und IoT-Monitoring für KMU in Heidelberg, Mannheim und der Rhein-Neckar-Region. Anfragen.