Infrastruktursichtbarkeit mit Prometheus und Grafana

Monitoring ist keine Dekoration: Prometheus und Grafana liefern echte Sichtbarkeit über Server, Container und Apps – ohne SaaS-Preis pro Host.

Infrastruktursichtbarkeit mit Prometheus und Grafana

Infrastruktursichtbarkeit mit Prometheus und Grafana

„Der Server ist langsam." – „Seit wann?" – „Keine Ahnung." Ohne belastbare Metriken bleibt Debuggen Raten. Oder es gibt ein Tool, das niemand öffnet, weil die Dashboards nichts sagen.

Prometheus und Grafana: Open Source, breit eingesetzt, in einem Nachmittag grundlegend nutzbar.

Warum diese Kombination?

Prometheus: Daten sammeln

Prometheus ist eine Zeitreihen-Datenbank, die Metriken sammelt. Statt dass Ihre Systeme Daten an einen zentralen Server schicken (Push), fragt Prometheus aktiv bei Ihren Services an (Pull). Das klingt nach einem Detail, hat aber praktische Vorteile:

  • Service Discovery: Prometheus findet neue Container oder Server automatisch.
  • Zuverlässigkeit: Wenn ein Service nicht antwortet, ist das selbst eine wertvolle Information.
  • Einfachheit: Jeder Service muss nur einen HTTP-Endpoint bereitstellen, der Metriken im Textformat liefert.

Grafana: Daten verstehen

Grafana macht aus Zeitreihen lesbare Dashboards. Nicht die Art von Dashboard, die beeindruckend aussieht und niemand versteht – sondern Ansichten, die in drei Sekunden die Frage beantworten: „Läuft alles normal?"

Was Sie monitoren sollten

Die vier goldenen Signale

Google hat in seinem SRE-Buch vier Metriken definiert, die für jeden Service relevant sind:

  1. Latenz – Wie lange dauern Anfragen? Nicht nur der Durchschnitt, sondern auch P95 und P99.
  2. Traffic – Wie viele Anfragen pro Sekunde verarbeitet der Service?
  3. Fehlerrate – Welcher Anteil der Anfragen schlägt fehl?
  4. Sättigung – Wie ausgelastet sind CPU, RAM und Disk?

Wenn Sie diese vier Metriken für jeden Service haben, erkennen Sie 90 % aller Probleme, bevor Ihre Kunden sie bemerken.

Server-Metriken mit Node Exporter

Der Node Exporter ist ein kleines Programm, das auf jedem Linux-Server läuft und Systemmetriken bereitstellt:

# docker-compose.yml
services:
  node-exporter:
    image: prom/node-exporter:latest
    ports:
      - "9100:9100"
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev)($$|/)'

Damit sehen Sie CPU-Auslastung, RAM-Verbrauch, Disk-I/O, Netzwerk-Traffic und hunderte weitere Metriken – pro Server, über die Zeit.

Container-Metriken mit cAdvisor

Wenn Sie Docker oder Kubernetes nutzen, liefert cAdvisor Metriken pro Container: CPU, Memory, Netzwerk und Dateisystem-Nutzung. In Kombination mit Node Exporter sehen Sie sowohl die Host- als auch die Container-Ebene.

Anwendungs-Metriken

Das Wertvollste sind oft die Metriken aus Ihrer eigenen Anwendung. In Node.js mit der prom-client-Bibliothek:

const client = require('prom-client')

const httpDuration = new client.Histogram({
  name: 'http_request_duration_seconds',
  help: 'Duration of HTTP requests in seconds',
  labelNames: ['method', 'route', 'status'],
  buckets: [0.01, 0.05, 0.1, 0.5, 1, 5]
})

app.use((req, res, next) => {
  const end = httpDuration.startTimer()
  res.on('finish', () => {
    end({ method: req.method, route: req.route?.path || req.path, status: res.statusCode })
  })
  next()
})

Damit sehen Sie in Grafana nicht nur, dass der Server läuft, sondern wie schnell Ihre API antwortet – aufgeschlüsselt nach Endpunkt und Status-Code.

Alerting: Probleme erkennen, bevor Kunden anrufen

Monitoring ohne Alerts ist ein Hobby. Prometheus hat ein eingebautes Alerting-System, das Regeln auswertet und Benachrichtigungen über den Alertmanager verschickt.

groups:
  - name: critical
    rules:
      - alert: HighErrorRate
        expr: rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m]) > 0.05
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: "Fehlerrate über 5% auf {{ $labels.instance }}"

Diese Regel feuert, wenn mehr als 5 % aller HTTP-Anfragen mit einem 5xx-Status enden – und das länger als 5 Minuten anhält. Der Alertmanager kann das an Slack, E-Mail, PagerDuty oder einen Webhook weiterleiten.

Ein realistisches Setup

Für die meisten mittelständischen Projekte reicht folgendes Setup:

| Komponente | Zweck | Ressourcen | |-----------|-------|------------| | Prometheus | Metriken sammeln und speichern | 2 GB RAM, 50 GB Disk | | Grafana | Dashboards und Visualisierung | 512 MB RAM | | Node Exporter | Server-Metriken (pro Host) | minimal | | Alertmanager | Benachrichtigungen | 256 MB RAM |

Das Ganze läuft problemlos auf einem einzelnen Server mit Docker Compose. Für größere Setups gibt es Thanos oder Cortex als Skalierungsschicht über Prometheus.

Was das kostet – im Vergleich

Ein SaaS-Monitoring wie Datadog kostet ab ca. 15 € pro Host pro Monat – bei 10 Servern und Custom Metrics sind Sie schnell bei 300–500 € monatlich. Prometheus und Grafana laufen auf einem 10-€-VPS und monitoren beliebig viele Hosts.

Der Trade-off: Sie müssen es selbst betreiben. Aber wenn Sie sowieso DevOps-Kompetenz im Team haben (oder einkaufen), ist das ein klarer Gewinn.

Fazit

Sichtbarkeit ist kein Luxus für Konzerne. Prometheus und Grafana liefern Setup-Niveau, das mit Enterprise mithält – zu Kosten eines kleinen VPS, wenn Sie betreiben können. Basis-Setup: ein Nachmittag; Gewinn: Probleme sehen, bevor Kunden sie spüren.


Infrastruktur ohne klare Metriken? 30 Minuten, kostenlos – wie ein sinnvolles Setup bei Ihnen aussehen kann.