NetBox + Checkmk: Monitoring-Sync | nsconverge
Integrations-Guide · NetBox + Checkmk

NetBox und Checkmk: Source of Truth trifft Monitoring

NetBox führt als Source of Truth den Soll-Zustand deines Netzwerks: jedes Gerät, jede IP, jeder Standort ist dort dokumentiert. Checkmk überwacht den Ist-Zustand und bekommt seine Host-Liste im Idealfall direkt aus NetBox, damit Doku und Monitoring nie auseinanderlaufen.

  • 3 Sync-Wege im Vergleich
  • Code-Beispiel REST-API
  • Betriebstipps aus der Praxis
  • Vom NetBox Labs DACH-Partner
NetBox live sehen
# Architektur-Prinzip: Soll/Ist-Abgleich NetBox (Soll · Source of Truth) │ Geräte · IPs · Sites · Tags · Custom Fields ▼ Sync CMDBsyncer · eigenes Skript · Webhook │ Checkmk-REST-API: host_config + activate ▼ Checkmk (Ist · Monitoring) └─ überwacht genau das, was dokumentiert ist
40+Erfolgreiche Migrationen
51+Expert Zertifizierungen
NetBox Labs DACH-Partner
Warum koppeln?

Zwei Systeme, eine Wahrheit. Sonst driftet es.

Wer NetBox und Checkmk getrennt pflegt, betreibt zwei Inventare parallel. Diese drei Probleme sehen wir dabei immer wieder.

01

Doppelte Datenpflege

Jede Änderung wird zweimal eingetragen: einmal in der Doku, einmal im Monitoring. Das kostet Zeit, und irgendwann vergisst jemand eine der beiden Seiten. Ab da lügen beide Systeme ein bisschen.

02

Vergessene Hosts

Das neue Gerät ist produktiv, dokumentiert, verkabelt. Nur ins Monitoring hat es niemand eingetragen. Das fällt genau dann auf, wenn es ausfällt und kein Alarm kommt.

03

Drift zwischen Doku und Realität

Checkmk kennt Hosts, die in NetBox fehlen, und umgekehrt. Niemand weiß, welche Liste stimmt. Spätestens im Audit wird aus der Unschärfe ein Befund.

Checkmk im Kurzprofil

Was du über Checkmk wissen musst.

Checkmk ist ein Monitoring-System der Checkmk GmbH und im DACH-Raum weit verbreitet. Für die NetBox-Integration zählt vor allem eines: die REST-API.

01

Hersteller

Checkmk GmbH mit Hauptsitz in München, dazu US-Standorte in Atlanta und Minneapolis. Support und Doku sind auch auf Deutsch verfügbar.

02

Editionen

Community (self-hosted, kostenlos), Pro und Ultimate (self-hosted, kommerziell) sowie Cloud als SaaS mit 99,5 % Verfügbarkeit und EU/US-Datenresidenz.

03

Neue Namen

Aus Raw wurde Community, aus Enterprise Pro, aus Cloud Ultimate. In Checkmk 2.3 und 2.4 ändern sich nur die Titel, ab 2.5 auch interne Identifier. Das betrifft Skripte und Integrationen.

04

REST-API

Die Integrationsbasis: Hosts anlegen per POST auf host_config, authentifiziert über einen Automation-User mit Bearer-Header. Änderungen werden erst nach Activate Changes wirksam.

Drei Sync-Wege

CMDBsyncer, eigenes Skript oder Webhooks?

Alle drei Wege nutzen dieselbe Basis: die NetBox-API als Quelle und die Checkmk-REST-API als Ziel. Sie unterscheiden sich in Betriebsaufwand, Flexibilität und Robustheit.

Eigenbau

Eigenes Skript

NetBox-API zu Checkmk-REST-API

Ein Python-Skript liest Geräte aus NetBox und schreibt sie per REST-API nach Checkmk. Läuft periodisch per Cron oder aus der CI.

  • Volle Kontrolle über die Mapping-Logik
  • Bedingte Label-Logik im Code vorverarbeiten
  • Kaum Abhängigkeiten, aber Wartung liegt bei dir
  • Dry-Run und Löschschutz musst du selbst bauen

Passt, wenn dein Anforderungsset klein und stabil ist.

Fast-Echtzeit

Webhook-getriggert

NetBox Event Rules

NetBox-Webhooks feuern bei created-, updated- und deleted-Ereignissen, senden eine JSON-Payload inklusive Vorher/Nachher-Snapshots und laufen über eine Redis-Queue.

  • Änderungen landen in Sekunden im Monitoring
  • Jinja2-Templating für URL, Header und Body
  • Verpasste Events sind weg: Voll-Sync als Fallback nötig
  • Empfänger-Endpoint musst du selbst betreiben

Passt als Ergänzung zu einem periodischen Sync, selten allein.

  • Einordnung · Checkmk-DCD

    Was der Dynamic Configuration Daemon kann und was nicht

    Der DCD (dynamische Host-Verwaltung) ist den kommerziellen Checkmk-Editionen vorbehalten und bringt Konnektoren für Piggyback (etwa AWS, Azure, VMware, Proxmox) und OpenTelemetry mit. Einen generischen NetBox- oder REST-Konnektor gibt es nicht: Für den NetBox-Sync brauchst du in jedem Fall den CMDBsyncer oder ein eigenes Skript. Sein eingebauter Löschschutz taugt trotzdem als Vorbild für deine eigene Sync-Logik. Welche Erweiterungen auf der NetBox-Seite helfen, zeigt unser Guide zu NetBox-Plugins.

Host-Lifecycle

Anlegen, ändern, austragen: sauber im Takt.

Ein Sync ist mehr als ein Import. Er muss den kompletten Lebenszyklus eines Hosts abbilden, inklusive des Schrittes, den fast jeder beim ersten Mal vergisst.

  • CREATE · Host anlegen

    Neues Gerät in NetBox, neuer Host in Checkmk

    Ein Gerät mit Status Active und primärer IP wird per POST auf host_config im passenden Folder angelegt. Praxis-Detail aus dem verbreiteten Community-Bauplan: Ein eigener Create-Trigger ist oft unnötig, denn monitorbar ist ein Gerät erst, wenn es eine IP-Adresse hat. Der Update-Trigger reicht.

  • UPDATE · Änderungen nachziehen

    IP geändert, Site gewechselt, Tag ergänzt

    Der Sync aktualisiert Attribute und Labels und verschiebt den Host bei Bedarf in einen anderen Folder. Konvention hilft: Wenn Region und Site die Folder-Hierarchie bestimmen, ist jeder Umzug in NetBox automatisch auch ein Umzug im Monitoring.

  • DELETE · Austragen mit Netz

    Nicht sofort hart löschen

    Verschwindet ein Gerät aus NetBox, sollte der Host nicht in derselben Sekunde aus dem Monitoring fliegen. Der CMDBsyncer entfernt Hosts erst nach einer Grace Period, der DCD löscht in den ersten 10 Minuten nach einem Serverneustart standardmäßig gar nicht. Beides sind gute Muster.

  • ACTIVATE · Der Pflichtschritt

    Ohne Activate Changes passiert nichts

    Checkmk übernimmt API-Änderungen erst nach einem separaten Activate: pending Changes abrufen, dann den activate-changes-Endpoint aufrufen, der ETag-Header ist dafür nötig. Wer diesen Schritt im Sync vergisst, wundert sich über eine wachsende Liste offener Änderungen.

Mapping-Cheatsheet: NetBox-Felder zu Checkmk-Strukturen

# Bewährtes Mapping (anpassbar an deine Konventionen) NetBox → Checkmk ───────────────────────────── ────────────────────────────────── Region / Site → Folder-Hierarchie (/network/...) Status "Active" → Host wird angelegt und überwacht Primäre IPv4/IPv6 → Attribut ipaddress Tags → Host-Labels (z. B. netbox/prod) Custom Fields → Host-Attribute oder Labels Tenant → Label oder Kontaktgruppe

Wichtig für alle Label-Ideen: Bedingte Logik ("wenn Tag X, dann Label Y, außer ...") gehört in deinen Sync-Code, nicht in die API-Payload. Die Checkmk-API wertet keine if-Bedingungen aus und quittiert solche Versuche mit einem 400-Fehler.

Schritt für Schritt

In fünf Schritten zur laufenden Integration.

Die Reihenfolge ist bewusst gewählt: Erst die Daten, dann die Technik, dann die Automatisierung.

1
Vorbereitung

Datenqualität in NetBox prüfen

Der Sync ist nur so gut wie die Quelle. Ohne saubere Status-Werte und primäre IPs synchronisierst du Chaos.

  • Status-Konventionen klären
  • Primäre IPs pflegen
  • Duplikate bereinigen
2
Zugänge

Automation-User anlegen

In Checkmk ein eigener Automation-User für die API, in NetBox ein Token mit Leserechten.

  • Minimalrechte vergeben
  • Kein Personen-Account
  • Token-Rotation planen
3
Konzept

Mapping definieren

Sites zu Foldern, Tags zu Labels, Custom Fields zu Attributen. Einmal aufschreiben, dann umsetzen.

  • Folder-Hierarchie festlegen
  • Label-Namensschema wählen
  • Sonderfälle dokumentieren
4
Test

Erst-Sync im Dry-Run

Erst rechnen lassen, was passieren würde, dann schreiben. Beim CMDBsyncer per CLI inspizierbar.

  • Stichproben je Site
  • Delta-Report prüfen
  • Abbruchkriterien festlegen
5
Betrieb

Automatisierung scharf schalten

Zeitplan oder Webhooks aktivieren, Activate Changes automatisieren, den Sync-Job überwachen.

  • Periodischer Voll-Sync
  • Alerting auf Sync-Fehler
  • Runbook fürs Team

Der Sync ist meist der Einstieg in ein größeres Thema: NetBox als Datenbasis für Ansible, Terraform und Co. Wie das zusammenhängt, liest du im Guide zur NetBox-Automatisierung.

Code-Beispiel

Host anlegen per Checkmk-REST-API.

Das Grundmuster jedes eigenen Sync-Skripts: Host anlegen, dann aktivieren. Python mit requests, authentifiziert als Automation-User.

Schritt 1 · Host anlegen

POST auf host_config

Ein NetBox-Device wird mit Hostname, Folder und IP-Adresse als Host angelegt. Tags aus NetBox landen als Labels.

# NetBox-Device in Checkmk anlegen import requests CMK = "https://cmk.example.de/prod/check_mk/api/1.0" HEADERS = { "Authorization": "Bearer automation SECRET", "Content-Type": "application/json", } resp = requests.post( CMK + "/domain-types/host_config/collections/all", headers=HEADERS, json={ "host_name": "sw-core-01", "folder": "/network/berlin", "attributes": { "ipaddress": "10.20.30.41", "labels": {"netbox/role": "core-switch"}, }, }, ) resp.raise_for_status()
Vorher

Host manuell in Checkmk anlegen, Folder suchen, IP abtippen

Nachher

Sync legt den Host aus NetBox an, Attribute und Labels inklusive

Schritt 2 · Pflichtschritt

Activate Changes

Erst das Activate macht die Änderung wirksam. Der ETag aus den pending Changes wandert in den If-Match-Header.

# 1) Pending Changes abrufen (liefert ETag) pending = requests.get( CMK + "/domain-types/activation_run" "/collections/pending_changes", headers=HEADERS, ) etag = pending.headers["ETag"] # 2) Aktivieren requests.post( CMK + "/domain-types/activation_run" "/actions/activate-changes/invoke", headers={**HEADERS, "If-Match": etag}, json={"redirect": False}, )
Ohne Activate

Änderungen stapeln sich als pending, das Monitoring bleibt beim alten Stand

Mit Activate

Host ist aktiv, Services werden erkannt und überwacht

Betriebstipps

Drei Regeln für den Dauerbetrieb.

Der Erst-Sync ist der einfache Teil. Diese drei Punkte entscheiden, ob die Integration nach einem Jahr noch Vertrauen genießt.

01

Dry-Run vor jedem Rollout

Nicht nur beim Erst-Sync: Nach jeder Mapping- oder Regeländerung erst berechnen lassen, was passieren würde. Der CMDBsyncer zeigt alle berechneten Ergebnisse vor dem Export per CLI, ein eigenes Skript braucht einen expliziten Dry-Run-Modus.

02

Löschschutz und Grace Periods

Ein Host, der aus der Quelle verschwindet, darf nicht sofort aus dem Monitoring fliegen. Grace Periods und Schwellwerte gegen Massenlöschung schützen dich vor einem fehlerhaften Export oder einer leeren API-Antwort.

03

Den Sync-Job selbst überwachen

Der Sync ist Infrastruktur: Alter des letzten Laufs, Fehlerquote und offene Activates gehören selbst ins Monitoring. Für die Gegenrichtung existiert eine frühe Checkmk-Extension, die NetBox selbst überwacht.

FAQ · NetBox + Checkmk

Häufige Fragen zur Integration.

Was andere zum Thema NetBox und Checkmk wissen wollen.

Nicht von Haus aus: Der Dynamic Configuration Daemon (DCD) bringt Konnektoren für Piggyback und OpenTelemetry mit, aber keinen NetBox-Konnektor. Automatisch anlegen lassen sich Hosts trotzdem, und zwar über die Checkmk-REST-API: entweder mit dem CMDBsyncer oder mit einem eigenen Skript. Danach ist ein Activate Changes nötig, damit die Hosts aktiv werden.
Faustregel: CMDBsyncer, wenn du ein fertiges, regelbasiertes Tool mit vollem Host-Lifecycle, Grace Periods und mehreren Quellen willst. Ein eigenes Skript, wenn dein Mapping klein und stabil ist und du volle Kontrolle über die Logik brauchst. Webhooks sind eine Ergänzung für schnelle Updates, kein Ersatz für einen periodischen Voll-Sync.
Für den Sync per REST-API reicht die kostenlose Community Edition. Der DCD (dynamische Host-Verwaltung) ist zwar den kommerziellen Editionen vorbehalten, für den NetBox-Sync brauchst du ihn aber ohnehin nicht, weil er keinen NetBox-Konnektor mitbringt. Beachte die Umbenennung der Editionen: Ab Checkmk 2.5 ändern sich auch interne Identifier, was Skripte betreffen kann.
Das entscheidet deine Sync-Logik. Sauber ist ein gestuftes Vorgehen: Der Host verschwindet nicht sofort, sondern erst nach einer Grace Period, wie es der CMDBsyncer macht. So überlebt das Monitoring auch ein versehentliches Löschen in NetBox. Nach dem Entfernen ist wie bei jeder Änderung ein Activate Changes nötig.
Vier Schutzschichten haben sich bewährt: erstens Dry-Run vor jedem Rollout, zweitens Grace Periods und Löschschutz, drittens Schwellwerte, die den Lauf abbrechen, wenn ungewöhnlich viele Löschungen berechnet werden, viertens Monitoring des Sync-Jobs selbst. In der Checkmk-Community gilt ein periodischer Voll-Sync zudem als robuster als eine reine Webhook-Kette.
Ja, genau dafür sind Host-Labels da: Tags und Custom Fields lassen sich beim Sync auf Labels und Host-Attribute abbilden und stehen dann für Regeln und Ansichten bereit. Wichtig: Bedingte Logik gehört in deinen Sync-Code, nicht in die API-Payload, denn die Checkmk-API wertet keine if-Bedingungen aus.
Teilweise. Der CMDBsyncer unterstützt NetBox bidirektional, und es existiert eine frühe Checkmk-Extension, die NetBox selbst überwacht. Als Architektur-Prinzip empfehlen wir trotzdem eine klare Richtung: NetBox bleibt das Soll, Checkmk das Ist. Wer das Monitoring in die Doku zurückschreiben lässt, verwässert die Source of Truth.
Nächster Schritt

Soll und Ist verbinden? Lass uns 30 Minuten reden.

Wir schauen gemeinsam auf deine NetBox-Datenqualität, dein Checkmk-Setup und den passenden Sync-Weg. Kostenfrei, unverbindlich, Praktiker zu Praktiker.

NetBox live in der Produktdemo Guide: NetBox-Automatisierung Guide: NetBox-Plugins