Grafana: Monitoring-Stack mit Prometheus, Alloy und Loki

Aus maxTechCorner

Auf einen Blick

Gilt fürPrometheus 3.15, Grafana Alloy 1.20, Loki 3.7, node_exporter, windows_exporter, SNMP Exporter; Grafana 13.x; Docker Compose auf Linux
BereichServer-Software
DauerGrundaufbau ca. 2–3 Stunden; Anbindung weiterer Systeme je ca. 15–30 Minuten
RechteRoot auf dem Monitoring-Server; Administratorrechte auf den überwachten Systemen; SNMP-Lesezugriff auf Netzwerkgeräte
StandOktober 2026

Ein Monitoring-Stack mit Prometheus, Alloy und Loki liefert Grafana die Daten: Prometheus speichert Messwerte wie CPU-Last, Speicher, Plattenplatz oder Port-Auslastung, Loki speichert Logs, und Grafana Alloy sammelt beides auf den Servern ein. Netzwerkgeräte wie Switches und Firewalls werden per SNMP abgefragt. Diese Anleitung baut den Stack mit Docker Compose auf, bindet Linux- und Windows-Server, Docker-Hosts und Netzwerkgeräte an und zeigt, worauf bei Speicherbedarf und Aufbewahrung zu achten ist.

Monitoring-Stack für Grafana: Grafana Alloy auf Linux-Servern sammelt Systemmetriken (eingebauter node_exporter) und Logs aus Dateien und dem systemd-Journal; windows_exporter auf Windows-Servern; SNMP Exporter fragt Switches, Firewalls und USV ab; Prometheus speichert Metriken (PromQL, Aufbewahrung z. B. 90 Tage), Loki speichert Logs (LogQL, Aufbewahrung z. B. 30 Tage); Grafana fragt beide ab; Promtail ist seit März 2026 abgekündigt und wird durch Alloy ersetzt.

Die Bausteine

Baustein Version (Okt. 2026) Aufgabe
Prometheus 3.15 holt Metriken per HTTP ab („Scrape“) und speichert sie; Abfragesprache PromQL; nimmt auch Daten per Remote Write an
Grafana Alloy 1.20 Sammler für Metriken, Logs und Traces; Nachfolger von Grafana Agent und Promtail (Promtail ist seit 2. März 2026 abgekündigt)
Loki 3.7 speichert Logs platzsparend, indiziert nur Labels; Abfragesprache LogQL
Exporter – stellen Messwerte bereit: node_exporter (Linux), windows_exporter, SNMP Exporter, Blackbox Exporter (Erreichbarkeit, Zertifikate)

Grundlagen: Prometheus, Loki, PromQL, Exporter.

Schritt 1: Prometheus und Loki bereitstellen

Auf dem Grafana-Server (oder einem eigenen Monitoring-Server) die Compose-Datei ergänzen:

  prometheus:
    image: prom/prometheus:v3.15.0
    restart: unless-stopped
    command:
      - --config.file=/etc/prometheus/prometheus.yml
      - --storage.tsdb.retention.time=90d
      - --web.enable-remote-write-receiver
    volumes:
      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
      - prom-data:/prometheus
    ports:
      - "9090:9090"

  loki:
    image: grafana/loki:3.7.8
    restart: unless-stopped
    command: -config.file=/etc/loki/local-config.yaml
    volumes:
      - loki-data:/loki
    ports:
      - "3100:3100"

  snmp-exporter:
    image: prom/snmp-exporter
    restart: unless-stopped
  • Die Ports 9090 und 3100 nur für die Server freigeben, die Daten liefern – per Host-Firewall; Prometheus und Loki haben ohne Zusatzmaßnahmen keine Anmeldung.
  • Aufbewahrung: Prometheus über --storage.tsdb.retention.time; Loki über retention_period und den Compactor in einer eigenen Konfigurationsdatei (die mitgelieferte Beispielkonfiguration ist für Tests gedacht).
  • Speicherbedarf grob: wenige Bytes je Messwert; 50 Server mit Standard-Metriken im 30-Sekunden-Takt brauchen für 90 Tage einige 10 GB. Logs wachsen deutlich schneller – Aufbewahrung bewusst wählen.

Schritt 2: Linux-Server mit Alloy anbinden

Alloy auf jedem Linux-Server aus dem Grafana-Paketrepository installieren (apt install alloy) und /etc/alloy/config.alloy anlegen:

// Systemmetriken (eingebauter node_exporter)
prometheus.exporter.unix "node" { }

prometheus.scrape "node" {
  targets    = prometheus.exporter.unix.node.targets
  forward_to = [prometheus.remote_write.zentral.receiver]
}

prometheus.remote_write "zentral" {
  endpoint { url = "http://monitor.firma.lan:9090/api/v1/write" }
}

// Logs aus dem systemd-Journal
loki.source.journal "journal" {
  labels     = { job = "journal", host = constants.hostname }
  forward_to = [loki.write.zentral.receiver]
}

loki.write "zentral" {
  endpoint { url = "http://monitor.firma.lan:3100/loki/api/v1/push" }
}
sudo systemctl enable --now alloy
  • Damit Alloy das Journal und Logdateien lesen darf, den Dienstbenutzer alloy in die Gruppen systemd-journal und adm aufnehmen.
  • Alloy hat eine eigene Weboberfläche (Standard Port 12345, nur lokal), die den Datenfluss der Komponenten zeigt – hilfreich bei der Fehlersuche.
  • Bestehende Promtail-Konfigurationen lassen sich mit alloy convert --source-format=promtail umwandeln. Die von Alloy gelieferten Metriken unterscheiden sich von denen von Promtail; Dashboards und Alarme darauf prüfen.
  • Docker-Hosts: Container-Logs mit discovery.docker und loki.source.docker einsammeln, Container-Metriken mit prometheus.exporter.cadvisor.

Schritt 3: Windows-Server

  • windows_exporter (MSI-Paket) installieren; er stellt Metriken auf Port 9182 bereit. Alternativ Alloy für Windows mit prometheus.exporter.windows, der auch Ereignisprotokolle an Loki senden kann (loki.source.windowsevent).
  • In prometheus.yml als Ziel eintragen:
scrape_configs:
  - job_name: windows
    static_configs:
      - targets: ['dc01.firma.lan:9182', 'fs01.firma.lan:9182']

Schritt 4: Switches, Firewalls und USV per SNMP

Der SNMP Exporter übersetzt SNMP-Abfragen in Prometheus-Metriken. Das mitgelieferte snmp.yml enthält Module wie if_mib (Schnittstellen-Traffic, Fehler, Status):

  - job_name: snmp-switches
    metrics_path: /snmp
    params:
      module: [if_mib]
      auth: [public_v2]
    static_configs:
      - targets: ['sw-core01.firma.lan', 'sw-etage1.firma.lan', 'fw01.firma.lan']
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: snmp-exporter:9116
  • SNMPv3 mit Authentifizierung und Verschlüsselung verwenden, wo die Geräte es unterstützen; Zugangsdaten werden im Bereich auths der snmp.yml hinterlegt (eigene Datei mit dem Generator erzeugen).
  • SNMP-Zugriff auf den Geräten nur für die IP des Monitoring-Servers erlauben, siehe SNMP.
  • Für UniFi, Cisco und OPNsense gibt es fertige Module bzw. Dashboards; alternativ sammelt Alloy die Syslog-Meldungen der Geräte (loki.source.syslog).

Schritt 5: In Grafana einbinden

Hinweise

  • Vorhandenes Monitoring: Läuft bereits Zabbix oder InfluxDB/Telegraf, kann Grafana diese Daten zusätzlich darstellen – ein Neuaufbau ist nicht nötig, siehe Installation von InfluxDB und Grafana auf Debian 13.
  • Logs mit Sicherheitsbezug (Anmeldungen, Firewall-Verbindungen) gehören zusätzlich ins SIEM; Loki ersetzt keine Korrelation und keine Nachweisführung.
  • Größere Umgebungen: Für viele hundert Systeme oder lange Aufbewahrung skalieren Mimir (Metriken) und Loki im verteilten Betrieb mit Objektspeicher.
  • Bei Konzeption und Betrieb von Monitoring- und SIEM-Lösungen mit Open Source unterstützt Sie das Team SIEM & Monitoring mit Open Source von m.a.x. it.

Siehe auch

Links und Quellen


Über m.a.x. it Die m.a.x. Informationstechnologie AG ist seit über 30 Jahren IT-Partner mittelständischer und großer Unternehmen in München und bietet maßgeschneiderte Lösungen und Services in den Bereichen Cloud, Cybersecurity, Netzwerk, Windows, Linux und Softwareentwicklung. Sie haben eine Frage zu diesem Artikel oder brauchen Unterstützung? Kontakt aufnehmen