Monitoring & Betrieb

Monitoring Tools im Vergleich: Welches Open-Source-Werkzeug passt zu deiner Infrastruktur?

Prometheus, wenn du Metriken und dynamische Umgebungen hast. Checkmk oder Zabbix, wenn du klassische Hosts und schnelle Einsatzbereitschaft brauchst. Icinga, wenn du aus Nagios kommst und deine Checks behalten willst.

5 Kapitel mit allen Befehlen
Betriebsingenieur beobachtet mehrere Monitoring-Bildschirme im Leitstand
KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
Seit 1997 am Markt Präsenz & Live-Online 4,9 aus 503 Google-Bewertungen Auch Inhouse für dein Team
Worum es geht

Warum die Werkzeugwahl über den Betrieb entscheidet

Monitoring wird selten auf der grünen Wiese eingeführt. In den meisten Umgebungen liegt bereits etwas: eine gewachsene Nagios- oder Icinga-Installation mit handgepflegten Host-Definitionen, daneben ein Prometheus, den ein Team für seinen Kubernetes-Cluster aufgesetzt hat, und irgendwo noch SNMP-Abfragen für Switches und USVs. Die Frage lautet deshalb fast nie "welches Tool ist das beste", sondern welches Werkzeug den Großteil der eigenen Objekte mit vertretbarem Aufwand abdeckt.

Die technische Trennlinie verläuft am Datenmodell. Prometheus ist ein Pull-basiertes Time-Series-System mit dimensionalen Labels und Service Discovery, das für dynamische, kurzlebige Workloads gebaut wurde. Zabbix, Checkmk, Icinga und Naemon stammen aus der Host- und Service-Welt: Ein Objekt hat einen Namen, einen Check und einen Status. Für Server mit fester Identität, für SNMP-Geräte und für Hardware-Sensorik ist dieses Modell nach wie vor die pragmatischere Wahl, für Pods hinter einem Autoscaler ist es die falsche.

Typische Fehler sind absehbar. Prometheus wird als Universalmonitoring gewählt und dann mit Blackbox- und SNMP-Exportern zu etwas umgebaut, wofür Zabbix ab Werk Vorlagen mitbringt. Oder ein klassisches System bekommt Container-Checks aufgesetzt, deren Hosts nach jedem Deployment neu heißen. Ebenso häufig unterschätzt wird die Alarmierung: Wer erst nach dem Rollout klärt, wie Alerts korreliert, unterdrückt und eskaliert werden, erzeugt Rauschen, das nach wenigen Wochen niemand mehr liest.

Miniatur-Szene: Leitstand mit drei Dashboard-Bildschirmen, Alarmglocke und rotierender Radarschüssel
KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt

Entscheidungskriterien für dein Monitoring

  1. 01 Objekte und Umgebung
  2. 02 Datenmodell: Metrik oder Host-Service
  3. 03 Discovery und Konfigurationsaufwand
  4. 04 Datenhaltung und Aufbewahrung
  5. 05 Alarmierung und Eskalation
  6. 06 Betriebs- und Upgrade-Aufwand
Was du mitnimmst

So triffst du die Entscheidung nachvollziehbar

Statt Feature-Listen zu vergleichen, gehst du besser die Eigenschaften deiner Umgebung durch. Diese sechs Punkte führen in der Praxis zu einer belastbaren Auswahl, und in vielen Fällen zu einer bewussten Kombination aus zwei Systemen statt zu einem Kompromiss.

Objekte zählen, bevor du Tools bewertest

Zähle, was tatsächlich überwacht werden muss: physische und virtuelle Server, Netzwerkgeräte per SNMP, Datenbanken, Applikationen mit eigenen Metrik-Endpunkten, Container-Workloads. Das Verhältnis dieser Gruppen bestimmt die Auswahl stärker als jedes Einzelfeature.

Prometheus bei dynamischen Workloads

Sobald Kubernetes, Autoscaling oder kurzlebige Instanzen im Spiel sind, spielt Prometheus seine Stärken aus: Service Discovery über die Kubernetes-API, dimensionale Labels, PromQL für Aggregationen über ganze Deployments und Alertmanager für Routing und Silencing. Grafana liefert die Visualisierung, Loki ergänzt Logs auf demselben Label-Schema.

Zabbix bei gemischten Umgebungen mit Netzwerktechnik

Zabbix deckt Agent, SNMP, IPMI, JMX und Datenbank-Checks in einem Produkt ab, bringt Templates für gängige Hardware mit und speichert Historie samt Trends direkt in einer relationalen Datenbank. Für Rechenzentren mit Switches, Storage-Systemen und klassischen Servern ist das der kürzeste Weg zu vollständiger Abdeckung.

Checkmk und Icinga bei Auto-Discovery und Nagios-Erbe

Checkmk erkennt Dienste auf einem Host automatisch und reduziert den Konfigurationsaufwand deutlich, wenn viele gleichartige Systeme dazukommen. Icinga oder Naemon mit OMD sind die naheliegende Wahl, wenn bestehende Nagios-Plugins und Check-Logik weiterlaufen sollen, statt sie neu zu schreiben.

Betriebsaufwand und Datenhaltung realistisch ansetzen

Kläre früh, wie lange Messwerte vorgehalten werden und wo sie liegen: lokaler TSDB-Speicher bei Prometheus mit Remote-Write für Langzeitdaten, relationale Datenbank mit Housekeeping bei Zabbix, RRD oder eigene Formate bei den Nagios-Nachfolgern. Backup, Upgrade-Pfad und Hochverfügbarkeit gehören in dieselbe Bewertung.

Alarmierung und Zuständigkeit vor dem Rollout klären

Lege fest, welcher Alert wen erreicht, wie Abhängigkeiten unterdrückt werden und welche Schwellwerte überhaupt eine Reaktion auslösen. Ein Monitoring, dessen Meldungen niemand mehr ernst nimmt, ist teurer als gar keines.

Tutorial

Testaufbau statt Featureliste: so bewertest du die Kandidaten

Feature-Tabellen entscheiden nichts, Zahlen schon. Du zählst zuerst Objekte und Zeitreihen, stellst dann eine Prometheus- und eine Agent-Strecke nebeneinander, klärst die Alarmierung, bevor der erste Alarm rausgeht, und rechnest zum Schluss Speicherbedarf und Kardinalität durch. Danach steht die Entscheidung mit Messwerten dahinter.

01

Objekte und Zeitreihen zählen

Die Werkzeugfrage hängt an zwei Zahlen: wie viele Objekte du überwachen willst und wie viele Zeitreihen daraus entstehen. Beides misst du, statt es zu schätzen.

Wie viele Serien liefert ein einzelner Host?
# Gesamtzahl der ausgelieferten Zeitreihen
curl -s http://localhost:9100/metrics | grep -c '^[a-zA-Z]'

# Verteilung auf die einzelnen Collectors
curl -s http://localhost:9100/metrics | grep '^[a-zA-Z]' \
  | cut -d'{' -f1 | cut -d' ' -f1 | sort | uniq -c | sort -rn | head -20

Der zweite Befehl zeigt dir, welche Collectors den Löwenanteil ausmachen. Ein Host mit vielen Mountpoints, Netzwerkkarten oder systemd-Units liefert ein Vielfaches eines Standardservers, und genau diese Hosts bestimmen deine Dimensionierung.

Plattenbedarf ausrechnen
# Faustformel aus der Prometheus-Dokumentation:
# Plattenbedarf = Aufbewahrungsdauer(s) x Samples/s x Bytes pro Sample
# Nach Kompression liegt ein Sample bei etwa 1 bis 2 Byte.
# Beispiel: 300 Hosts, 900 Serien je Host, Scrape alle 15 s, 180 Tage
python3 -c 'print(round(180*86400 * (300*900/15) * 2 / 1024**3), "GiB")'

# Am laufenden System nachmessen statt schätzen
promtool tsdb analyze /var/lib/prometheus/data | head -30

Die Rechnung ist die Obergrenze mit zwei Byte je Sample. Wichtiger als das Ergebnis ist die Erkenntnis, welcher Faktor dich umbringt: Halbierst du das Scrape-Intervall, verdoppelt sich der Bedarf, und ein einziges schlecht gewähltes Label kann alle drei Faktoren gleichzeitig sprengen.

Was die Werkzeuge im Kern unterscheidet

WerkzeugDatenmodellErfassungDiscoveryPasst, wenn
PrometheusZeitreihen mit LabelsPull über HTTPKubernetes, Consul, Dateien, Cloud-APIsWorkloads kommen und gehen, du willst Kennzahlen und PromQL
ZabbixItems je Host, relationale DatenbankAgent, SNMP, IPMI, agentenlosNetzwerk- und Low-Level-DiscoveryServer, Switches und USV gehören ins selbe Werkzeug
CheckmkServices je HostAgent, SNMP, Spezial-Agentsautomatische Service-Discovery je Hostviele gleichartige Hosts, wenig Betriebspersonal
Icinga 2Hosts und Services, Nagios-Plugin-APIPlugins lokal, per Agent oder über SSHregelbasiert über Apply-Rulesvorhandene Nagios-Checks sollen weiterlaufen
Grafana LokiLogzeilen mit LabelsPush über Alloy oder Promtailkeine eigeneErgänzung für Logs, kein Ersatz für Metriken
02

Prometheus-Teststrecke in einer Stunde

Du brauchst keine Installation auf einem Produktivsystem, um das Datenmodell zu bewerten. Zwei Container und eine Konfigurationsdatei reichen.

/etc/prometheus/prometheus.yml
global:
  scrape_interval: 15s
  evaluation_interval: 15s

rule_files:
  - /etc/prometheus/rules/*.yml

alerting:
  alertmanagers:
    - static_configs:
        - targets: ['localhost:9093']

scrape_configs:
  - job_name: node
    file_sd_configs:
      - files: ['/etc/prometheus/targets/*.yml']
        refresh_interval: 30s

Nimm gleich file_sd_configs statt static_configs. Die Zieldatei kann jedes Konfigurationsmanagement schreiben, und Prometheus liest sie ohne Neustart neu ein. Genau daran entscheidet sich später, ob Monitoring Handarbeit bleibt oder mitwächst.

Aufbau und Prüfschritt
podman run -d --name node-exporter --network host \
  -v /:/host:ro,rslave \
  quay.io/prometheus/node-exporter:latest --path.rootfs=/host

podman run -d --name prometheus --network host \
  -v /etc/prometheus:/etc/prometheus:Z \
  quay.io/prometheus/prometheus:latest \
  --config.file=/etc/prometheus/prometheus.yml \
  --storage.tsdb.retention.time=30d

# Prüfen, bevor du irgendetwas interpretierst
promtool check config /etc/prometheus/prometheus.yml
curl -s 'http://localhost:9090/api/v1/targets?state=active' \
  | jq -r '.data.activeTargets[] | "\(.labels.instance) \(.health) \(.lastError)"'

Der letzte Befehl ist der wichtigste beim Einstieg: Er zeigt dir für jedes Ziel den Zustand und die letzte Fehlermeldung. Ein Ziel im Zustand down mit leerer Fehlermeldung gibt es nicht, dort steht immer, ob es an DNS, Firewall oder TLS lag.

Vier Abfragen, die den Unterschied zeigen
up == 0

100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

node_filesystem_avail_bytes{fstype!~"tmpfs|overlay"}
  / node_filesystem_size_bytes < 0.10

predict_linear(node_filesystem_avail_bytes{mountpoint="/"}[6h], 4*24*3600) < 0

Die letzte Abfrage ist das Argument für ein Zeitreihensystem: Der Alarm meldet nicht, dass die Platte voll ist, sondern dass sie in vier Tagen voll sein wird. Ein schwellwertbasiertes Werkzeug kann das nur mit einem eigens gebauten Check, hier ist es eine Zeile.

03

Die Agentenwelt gegentesten

Stell die klassische Strecke daneben, statt sie aus der Dokumentation zu bewerten. Der Aufwand ist gering, der Erkenntnisgewinn hoch.

Zabbix-Agent 2 aufsetzen und prüfen
sudo dnf install -y zabbix-agent2     # RHEL/Rocky/Alma, Repo vom Hersteller
sudo apt install -y zabbix-agent2     # Debian/Ubuntu

sudo sed -i 's/^Server=.*/Server=10.0.0.5/' /etc/zabbix/zabbix_agent2.conf
sudo systemctl enable --now zabbix-agent2

# Vom Monitoring-Server aus prüfen, nicht lokal
zabbix_get -s web01 -k agent.ping
zabbix_get -s web01 -k system.cpu.load[all,avg1]

zabbix_get ist das Gegenstück zum curl auf den Exporter: Es beantwortet die Frage, ob das Problem beim Agenten oder beim Server liegt, bevor du in der Oberfläche suchst.

Firewall und SELinux auf dem überwachten Host
# Port nur für den Monitoring-Server öffnen, nicht für das ganze Netz
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.5/32" port port="10050" protocol="tcp" accept'
sudo firewall-cmd --reload
sudo firewall-cmd --list-rich-rules

# SELinux: eigene Prüfskripte des Agenten dürfen ins Netz
sudo setsebool -P zabbix_can_network on
sudo ausearch -m AVC -ts recent          # Was hat SELinux tatsächlich geblockt?

Auf Debian und Ubuntu entfällt der SELinux-Teil, dort begrenzt du den Zugriff über ufw allow from 10.0.0.5 to any port 10050 oder direkt in nftables. Der Punkt bleibt derselbe: Ein Monitoring-Port, der für das gesamte Netz offen steht, verrät jedem die halbe Systemkonfiguration.

04

Alarmierung klären, bevor der erste Alarm rausgeht

Die Werkzeugwahl scheitert selten an der Erfassung und fast immer an der Alarmierung. Leg Routing, Gruppierung und Stummschaltung fest, solange noch niemand geweckt wird.

/etc/alertmanager/alertmanager.yml (Auszug)
route:
  group_by: ['alertname', 'umgebung']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 4h
  receiver: team-plattform
  routes:
    - matchers: ['umgebung="test"']
      receiver: nur-ticket

inhibit_rules:
  - source_matchers: ['alertname="HostAntwortetNicht"']
    target_matchers: ['schwere="warnung"']
    equal: ['instance']

Die inhibit_rules sind der Unterschied zwischen brauchbarem und ignoriertem Monitoring: Fällt ein Host komplett aus, unterdrückt die Regel alle Folgemeldungen desselben Hosts. Sonst bekommst du für einen ausgefallenen Server dreißig Mails und liest keine davon.

Regeln prüfen und Wartungsfenster setzen
promtool check rules /etc/prometheus/rules/*.yml
amtool check-config /etc/alertmanager/alertmanager.yml

# Stummschaltung für ein geplantes Wartungsfenster
amtool --alertmanager.url=http://localhost:9093 silence add \
  alertname=HostAntwortetNicht instance=web01 \
  -d 2h -c 'Wartung Ticket 4711'

amtool --alertmanager.url=http://localhost:9093 silence query

promtool test rules geht noch einen Schritt weiter und prüft Alarmregeln gegen künstliche Zeitreihen. Damit testest du, ob eine Regel bei genau dem Verlauf feuert, den du dir vorgestellt hast, und zwar bevor sie produktiv läuft.

Bevor der erste Alarm einen Menschen erreicht

  • Jeder Alarm hat einen benannten Empfänger, keine SammeladresseAlarme an eine Verteilerliste ohne Zuständigkeit werden von allen gelesen und von niemandem bearbeitet. Nach zwei Wochen filtert das erste Postfach sie in einen Unterordner.
  • Jeder Alarm hat ein for und damit eine MindestdauerOhne Wartezeit feuert jede kurze Lastspitze. Flatternde Alarme trainieren dem Team an, Meldungen wegzuklicken, und dann geht auch die echte unter.
  • Es gibt eine dokumentierte Stummschaltung für WartungsfensterOhne Stummschaltung schalten Menschen bei jedem Wartungsfenster den Empfänger ab, und sie vergessen, ihn wieder einzuschalten. Das fällt erst beim nächsten echten Ausfall auf.
  • Ein Alarm, der nachts zugestellt wird, ist nachts auch behebbarMeldungen, auf die man erst am Morgen reagieren kann, gehören in ein Ticket, nicht auf ein Telefon. Sonst verlierst du die Bereitschaft für die Fälle, die wirklich zählen.
  • Der Ausfall des Monitorings selbst wird bemerktEin Monitoring, das schweigt, sieht aus wie ein gesundes System. Ein Alarm, der dauerhaft feuert und dessen Ausbleiben auffällt, oder eine externe Prüfung schließen genau diese Lücke.
05

Datenhaltung und Kardinalität im Griff behalten

Metrik-Systeme sterben nicht an der Menge der Hosts, sondern an der Menge der Label-Kombinationen. Miss das regelmäßig, nicht erst nach dem ersten Ausfall.

Wo die Zeitreihen herkommen
# Die zehn Metriken mit den meisten Zeitreihen
topk(10, count by (__name__)({__name__=~".+"}))

# Serien je Job
count by (job) ({__name__=~".+"})

# Gesamtzahl der Serien im Speicher
prometheus_tsdb_head_series

Die erste Abfrage ist auf großen Servern selbst teuer, führ sie in einer ruhigen Phase aus. Auf der Kommandozeile liefert promtool tsdb analyze /var/lib/prometheus/data dieselbe Information aus den Blöcken auf der Platte, ohne den laufenden Prozess zu belasten.

Gut zu wissen

Häufige Fragen zu Monitoring-Tools im Vergleich

Noch etwas offen? Wir sind ohne Warteschleife für dich da.

Frag uns direkt
Prometheus oder Zabbix: Was ist besser?
Die Frage lässt sich nur mit Blick auf die überwachten Objekte beantworten. Prometheus passt zu dynamischen, containerisierten Workloads mit Service Discovery und dimensionalen Metriken, Zabbix zu gemischten Umgebungen aus Servern, Netzwerkgeräten und Appliances, die per Agent, SNMP oder IPMI abgefragt werden. Viele Organisationen betreiben beides parallel und trennen sauber nach Zuständigkeitsbereich.
Ist Nagios noch zeitgemäss?
Der Kern von Nagios ist alt, aber das Plugin-Ökosystem und die Check-Logik sind weiterhin im Einsatz und werden von Forks und Distributionen wie Naemon mit OMD oder Icinga gepflegt. Wenn du eine bestehende Installation hast, ist der Umstieg auf einen dieser Nachfolger meist deutlich günstiger als ein kompletter Neuaufbau. Für neue, containerlastige Umgebungen würde man heute nicht mehr mit Nagios beginnen.
Ist Checkmk komplett Open Source?
Nein, nur teilweise. Die Raw Edition steht unter der GPL, die Enterprise- und Cloud-Editionen sind kommerzielle Produkte mit zusätzlichen Funktionen wie dem Micro Core, verteiltem Monitoring in grösserem Umfang und Support. Wer eine rein quelloffene Lösung braucht, sollte das vor der Auswahl prüfen.
Kann ich Prometheus und ein klassisches Monitoring parallel betreiben?
Ja, und in der Praxis ist das häufig die sauberste Lösung. Prometheus übernimmt die Plattform- und Applikationsmetriken, das klassische System bleibt für Infrastruktur, Hardware und Netzwerk zuständig. Wichtig ist, dass die Alarmierung zusammenläuft, damit nicht zwei Systeme unabhängig voneinander eskalieren.
Wie aufwendig ist die Migration von Nagios auf ein anderes Werkzeug?
Der Aufwand hängt davon ab, wie viel eigene Check-Logik existiert. Beim Wechsel auf Naemon, OMD oder Icinga laufen bestehende Nagios-Plugins in der Regel weiter, sodass vor allem die Konfiguration umgezogen wird. Beim Wechsel auf Prometheus oder Zabbix musst du Checks konzeptionell neu abbilden, weil sich Datenmodell und Schwellwertlogik unterscheiden.

Zuletzt geprüft am 26. Juli 2026.

Das sagen Teilnehmer

Echte Stimmen aus unseren IT-Kursen

Sehr intensiver Lehrgang, hat mich für meine Arbeit ein gutes Stück voran gebracht.
Rückmeldung aus dem Kurs „Monitoring mit Prometheus und Grafana - Grundkurs“
Erwartungen wurden erfüllt. Angekündigte Themen in hinreichender Tiefe bearbeitet. Zudem gutes Zeitmanagement.
Rückmeldung aus dem Kurs „Source Code Management und CI / CD (DO4)“
Persönlich für dich da

Deine Ansprechpartner

Du bist dir nicht sicher, welcher Kurs oder welches Level zu dir passt? Wir beraten dich persönlich und kostenlos.

Yves Hoppe

Yves Hoppe

Weiterbildung & Beratung

Hilft dir, aus dem Linux-Programm den passenden Kurs oder Lernpfad zu finden.

Norbert Jansen

Norbert Jansen

Beratung & Inhouse

Plant mit dir Inhouse-Trainings, die exakt auf eure Systemlandschaft und Distributionen zugeschnitten sind.

Nächster Schritt

Monitoring mit dem passenden Werkzeug aufsetzen

Bei cmt lernst du die Werkzeuge dort, wo du sie einsetzen willst: im Grundkurs Monitoring mit Prometheus und Grafana, im Zabbix Administration Komplettkurs oder im Kurs Monitoring mit Naemon, Nagios und OMD. Wenn du noch unsicher bist, welche Kombination zu deiner Umgebung passt, sprich uns an. Wir gehen deine Infrastruktur mit dir durch und sagen dir ehrlich, welcher Kurs sich lohnt. Alle Termine finden als Präsenzschulung oder Live-Online statt.