1. Einleitung
Keine nichttriviale Software ist fehlerfrei — das gilt auch für Checkmk. Dementsprechend müssen Sie Checkmk regelmäßig aktualisieren. Während den ersten Monaten nach der Freigabe einer neuen Major-Version versuchen wir im Wochenrhythmus Fehlerbehebungen, Funktionsverbesserungen, Performance-Optimierungen und Sicherheitskorrekturen auszuliefern. Im späteren Produkt-Lifecycle können Sie mit monatlichen Updates rechnen. Und etwa im Jahresrhythmus erscheint eine neue Major-Version, welche den Funktionsumfang von Checkmk erweitert.
Durch die Besonderheiten der Instanzverwaltung mit omd ist es mit der Installation eines neuen Checkmk-Pakets mit dem Paketmanager nicht getan.
Was allgemein bei Updates – egal ob Patch-Version oder Major-Version – genau zu tun ist, und wie Konfliktfälle aufzulösen sind, erklärt dieser Artikel.
Falls Sie ein Update der Checkmk-Version 2.4.0 auf 2.5.0 planen, sollten Sie zudem den Artikel Update auf Version 2.5.0 lesen, der viele Details speziell dieses Updates abdeckt.
Dieser Artikel behandelt das Update der Checkmk-Version und den grundlegenden Umgang mit dem Befehl |
2. Hintergrund
Das Update von Checkmk auf eine neue Version läuft etwas anders als bei anderer Software. Warum?
Der Grund ist, dass Checkmk nicht nur mehrere unabhängige Instanzen (sites) auf einem Server erlaubt, sondern auch mehrere gleichzeitig installierte Software-Versionen. Dabei ist jede Instanz einer installierten Version zugeordnet. Nehmen Sie als Beispiel folgende Situation auf einem fiktiven Server:

Hier verwenden die Instanzen mysite1 und mysite2 die Version 2.5.0p3.pro und die Instanz mysite3 die Version 2.5.0p1.community.
Die Checkmk-Version 2.5.0p3.ultimate ist zwar installiert, wird aber aktuell nicht verwendet.
Dieses Beispiel macht klar, dass ein Update nicht einfach nur die Installation eines neuen RPM/DEB-Pakets von Checkmk auf dem Server bedeuten kann. Vielmehr braucht es dazu noch einen weiteren Schritt. Nehmen Sie nun als Beispiel folgende Situation:

Hier soll die Instanz mysite3 auf die Checkmk-Version 2.5.0p3.community aktualisiert werden.
Der erste Schritt ist das Herunterladen und Installieren des passenden RPM/DEB-Pakets.
Dies geschieht genauso wie bei der ersten Installation.
Die neu installierte Version wird zunächst noch von keiner Instanz verwendet und das sieht dann so aus:

Als zweiter Schritt erfolgt nun ein Update der Instanz von 2.5.0p1.community auf 2.5.0p3.community.
Dies geschieht durch den Befehl omd update, welchen Sie weiter unten im Detail kennenlernen:

Nach dem Update können Sie die (eventuell) nicht mehr benötigte Version 2.5.0p1.community entfernen.
3. Vorbereitungen
Die in den folgenden Abschnitten beschriebenen Themen sind bei jedem Update relevant, egal ob innerhalb einer Major-Version von einer niedrigeren auf eine höhere Patch-Version oder von einer Major-Version auf die nächste. Der separate Artikel Update auf Version 2.5.0 behandelt zusätzliche Details beim Update der Major-Version.
Immer gleich sind die vorbereitenden Schritte:
Ermitteln Sie den Update-Pfad und laden Sie die benötigten Installationspakete und Erweiterungen herunter.
Dann ist es Zeit, aufzuräumen: Im lokalen Verzeichnis sollten keine Dateien mehr vorliegen, die keinem Paket mehr zugeordnet sind.
Es folgt die Kompatibilitätsprüfung installierter Erweiterungen.
Schließlich erstellen und testen Sie das Backup.
3.1. Update-Pfad ermitteln
Der Update-Pfad bestimmt, welche Pakete Sie herunterladen müssen und gegebenenfalls, ob eine Aktualisierung der Linux-Distribution vor dem Checkmk-Update notwendig oder nach dem Checkmk-Update möglich ist.
Update der Major-Version
Bei einem Update auf eine höhere Major-Version müssen Sie immer auf die nächste Major-Version aktualisieren und können nicht einfach eine überspringen. Wenn Sie von 2.3.0 auf 2.5.0 aktualisieren wollen, aktualisieren Sie zunächst auf 2.4.0. Der Grund ist simpel: Zwischen zwei Major-Versionen gibt es bisweilen schlicht so viele Änderungen, dass es beim Überspringen zu Problemen kommen würde. Beim Update ist immer die jeweils höchste Patch-Version zu verwenden.
Dies gilt auch für die Ausgangsversion. Ein Update von 2.3.0p42 nach 2.5.0p8 folgt daher diesem Pfad:
2.3.0p42 2.3.0p48 2.4.0p33 2.5.0p8
Mit welcher Checkmk-Major-Version die Unterstützung für welche Linux-Distributionsversionen weggefallen ist, zeigt die Update-Matrix. So erfahren Sie, ob eine Aktualisierung der Linux-Distribution vor einem Major-Update von Checkmk erforderlich ist.
Update der Patch-Version
Ein Update der Patch-Version ist in der Regel ab der ersten stabilen Major-Version möglich. Abweichungen, die Zwischenschritte erfordern, werden auf der Download-Seite angezeigt. Das Update von 2.5.0p1 nach 2.5.0p8 folgt daher diesem Pfad:
2.5.0p1 2.5.0p8
Dementsprechend ist nur das Installationspaket für Checkmk 2.5.0p8 herunterzuladen.
Die Update-Matrix zeigt auch mit welcher Patch-Version von Checkmk die Unterstützung für eine neue Linux-Distributionsversionen hinzugekommen ist. So erfahren Sie, ob mit der vorliegenden Patch-Version eine anschließende Aktualisierung der Linux-Distribution auf die heiß ersehnte neueste Version möglich ist.
3.2. Lokale Dateien prüfen
Mit lokalen Dateien können Sie die von Checkmk bereitgestellte Funktionalität anpassen und erweitern.
Diese Dateien befinden sich im lokalen Teil der Instanzverzeichnisstruktur, d. h. in ~/local.
Lokale Dateien können bei einem Update Probleme bereiten, da sie eventuell nicht mehr zur neuen Checkmk-Version passen.
Da es für Checkmk bei einem Update nicht möglich ist, die lokalen Anpassungen und jede von einem Drittanbieter hergestellte Erweiterung abzufangen und zu behandeln, sollten Sie Ihre Checkmk-Instanz vor einem Update daraufhin überprüfen, ob lokale Dateien bei Ihnen verwendet werden und gegebenenfalls welche.
Verschaffen Sie sich einen Überblick über die lokalen Dateien Ihrer Checkmk-Instanz, indem Sie als Instanzbenutzer den folgenden Befehl ausführen (bei dem die Option -L dafür sorgt, dass auch symbolischen Links gefolgt wird):
In einer frischen Checkmk-Installation ist die Ausgabe leer.
Werden Dateien gefunden, gleichen Sie die Liste mit der Ausgabe von mkp find ab.
Im Idealfall sind lokale Dateien bereits vollständig in MKPs gebündelt.
Ist dies nicht der Fall, bündeln Sie zusammengehörende Dateien jeweils in Checkmk-Erweiterungspaketen (MKPs). Einmal zu einem Paket zusammengefasst, kann eine Erweiterung als ganzes deaktiviert oder erneut aktiviert werden.
3.3. MKPs auf Kompatibilität prüfen
Beim Update auf eine höheres Patch-Version innerhalb einer Major-Version sind bezüglich der Kompatibilität von MKPs selten Überraschungen zu erwarten. Auszuschließen sind Inkompatibilitäten jedoch nie. Beispielsweise setzen manche Entwickler von Erweiterungen die höchste Kompatibilität auf eine bestimmte Patch-Version von Checkmk, wenn ein Anbieter einer REST-API eine Version zu einem bestimmten Datum abkündigt.
Größer ist die Wahrscheinlichkeit von Inkompatibilitäten bei Updates der Major-Version. Prüfen Sie bei inkompatiblen Erweiterungen, die Sie von Dritten (beispielsweise aus der Checkmk Exchange) bezogen haben, ob eine neue Version vorliegt. Ist das nicht der Fall – oder die Erweiterung selbst entwickelt –, finden Sie im Artikel Erweiterungen für Checkmk entwickeln alle nötigen Informationen, um Ihre Erweiterungen anzupassen.
3.4. Backup erstellen
Die Selbstverständlichkeit, ein Backup unmittelbar vor dem Update zu erstellen, um im Falle eines Fehlschlags nicht allzu viel Ihrer Monitoring-Historie zu verlieren, müssen wir Ihnen nicht erklären.
Detaillierte Beispiele zum Backup mit omd backup finden Sie im Artikel zur Instanzverwaltung mit omd.
Zusätzlich zum dateibasierten Backup ist es sinnvoll, die Versionierung der Konfiguration mit Git in den Global settings zu aktivieren. Diese erlaubt es, im Falle der Notwendigkeit eines Rollback keine Lücken in den Monitoring-Daten zu haben.
Test des Backups
An dieser Stelle relevant ist, dass ein reguläres Backup auch gute Dienste für den Probelauf eines Updates leisten kann.
So können Sie das Backup unter einem anderen Namen wiederherstellen – und anschließend mit der Instanz newsite das Update testen:
Probelauf des Updates
Führen Sie das Update im Anschluss erst einmal auf dieser neuen, geklonten Instanz durch, um hier beispielsweise die oben angesprochenen lokalen Änderungen in der neuen Umgebung zu prüfen.
Waren die Tests mit der geklonten Instanz erfolgreich, werden Sie diese aus Platz- und Performance-Gründen meist vor dem eigentlichen Update der Produktivinstanz löschen oder zumindest deaktivieren (omd disable newsite) wollen.
4. Das Update durchführen
Das Update besteht im Wesentlichen aus zwei Schritten:
Als erstes wird mit dem Paketmanager der Linux-Distribution das neue Checkmk-Paket installiert – oder die neuen Pakete, wenn vor dem Update der Major-Version die letzte Patch-Version der vorhandenen Major-Version installiert werden soll.
Es folgt die Aktivierung der neuen Checkmk-Version für die zu aktualisierende Instanz mittels
omd update. Gegebenenfalls ist der Vorgang für jeden Schritt des Update-Pfades zu wiederholen.
4.1. Neue Checkmk-Versionen installieren
Wie in der Einleitung beschrieben, ist der erste Schritt beim Update die Installation der gewünschten neuen Version von Checkmk. Dies erfolgt genau wie bei der ersten Installation — allerdings wird es wohl etwas schneller gehen, weil die meisten benötigten Pakete jetzt schon installiert sind. Im folgenden Beispiel wird ein Paket für Ubuntu 24.04 (Noble Numbat) installiert:
Ist ein Update der Major-Version geplant, die zu aktualisierende Instanz aber noch nicht auf der letzten Patch-Version, müssen Sie zudem das entsprechende Paket installieren:
Die Liste der installierten Checkmk-Versionen können Sie jederzeit mit dem Befehl omd versions abrufen:
Eine dieser Versionen ist mit (default) markiert.
Diese Standardversion wird automatisch beim Anlegen von neuen Instanzen verwendet.
Beim Verwalten bestehender Instanzen spielt die Standardversion keine Rolle.
Der omd-Befehl startet immer mit der Version, die zur Instanz passt, für die der Befehl aufgerufen wird.
Eine Auflistung der aktuellen Instanzen und welche Versionen diese verwenden liefert der Befehl omd sites:
4.2. Update für die Instanz durchführen
Wenn Sie ein Update der Major-Version durchführen und Ihre Instanz noch nicht auf der letzten Patch-Version der letzten Major-Version ist (Update-Pfad beispielsweise 2.4.0p23 2.4.0p33 2.5.0p8) führen Sie die hier beschriebenen Schritte zuerst für 2.4.0p33, dann für 2.5.0p8 durch. Ein Neustart der Instanz zwischen beiden Durchläufen ist nicht nötig. |
Nachdem die gewünschte neue Version installiert ist, können Sie das Update der Instanz durchführen.
Dazu sind keine root-Rechte erforderlich.
Machen Sie das Update am besten als Instanzbenutzer:
Stellen Sie sicher, dass die Instanz gestoppt ist:
Das Aktualisieren — also eigentlich das Umschalten auf eine andere Version — geschieht nun einfach mit dem Befehl omd update:
Falls es mehr als eine mögliche Zielversion gibt, bekommen Sie diese zur Auswahl:
┌───────────────Choose target version──────────────────┐ │ Please choose the version this site should be │ │ updated to │ │ ┌──────────────────────────────────────────────────┐ │ │ │ 2.5.0p5.community Version 2.5.0p5.community │ │ │ │ 2.5.0p5.pro Version 2.5.0p5.pro │ │ │ │ │ │ │ │ │ │ │ └──────────────────────────────────────────────────┘ │ ├──────────────────────────────────────────────────────┤ │ <Update now> < Cancel > │ └──────────────────────────────────────────────────────┘
Bestätigen Sie in der folgenden Dialogbox das gewählte Update auf die neue Version:
┌──────────────────────────────────────────────────┐ │ You are going to update the site mysite from │ │ version 2.4.0p31.cre to version │ │ 2.5.0p5.community. This will include updating │ │ all of your configuration files and merging │ │ changes in the default files with changes made │ │ by you. In case of conflicts your help will be │ │ needed. │ ├──────────────────────────────────────────────────┤ │ <Update!> < Abort > │ └──────────────────────────────────────────────────┘
Wenn Sie gleichzeitig zum Versions-Update ein Editions-Upgrade von Checkmk Community auf eine der kommerziellen Editionen durchführen, werden Sie sicherheitshalber noch einmal auf diesen Umstand hingewiesen:
┌───────────────────────────┐ │ You are updating from │ │ Community to Pro. Is this │ │ intended? │ ├───────────────────────────┤ │ < yes > < no > │ └───────────────────────────┘
Ein wichtiger Teil des Updates ist das Aktualisieren von mitausgelieferten Konfigurationsdateien. Dabei werden von Ihnen eventuell vorgenommene Änderungen in diesen Dateien nicht einfach verworfen, sondern zusammengeführt. Dies funktioniert sehr ähnlich zu Versionskontrollsystemen, die versuchen, gleichzeitige Änderungen mehrerer Entwickler in der gleichen Datei automatisch zusammenzuführen.
Manchmal — wenn die Änderungen die gleiche Stelle der Datei betreffen — funktioniert das nicht und es kommt zu einem Konflikt. Wie Sie diesen lösen können, zeigen wir weiter unten.
Das Update zeigt eine Liste aller angepassten Dateien und Verzeichnisse (im folgenden Beispiel gekürzt):
2026-02-19 13:47:54 - Updating site 'mysite' from version 2.4.0p33.cre to 2.5.0p8.community...
* Updated .profile
* Installed dir var/check_mk/packages_local
...
Installed default file of version 2.5.0p8.community.
* Installed link etc/rc.d/60-ui-job-scheduler
* Installed link etc/rc.d/85-rabbitmq
...
Creating temporary filesystem /omd/sites/mysite/tmp...OK
Executing 'cmk-update-config --conflict ask --dry-run'
-| ATTENTION
-| Some steps may take a long time depending on your installation.
-| Please be patient.
-|
-| Cleanup precompiled host and folder files
-| Verifying Checkmk configuration...
-| 01/08 Legacy check plug-ins...
-| 02/08 Rulesets...
...
-| 07/08 Invalid hosts labels...
-| 08/08 Deprecated .mk configuration of plugins...
-| Done (success)
-|
Completed verifying site configuration. Your site now has version 2.5.0p8.community.
Executing update-pre-hooks script "01_mkp-disable-outdated"...OK
Executing update-pre-hooks script "02_cmk-update-config"...
-| ATTENTION
-| Some steps may take a long time depending on your installation.
-| Please be patient.
-|
-| Cleanup precompiled host and folder files
-| Verifying Checkmk configuration...
-| 01/08 Legacy check plug-ins...
-| 02/08 Rulesets...
...
-| 29/30 Validating configuration files...
-| 30/30 Update core config...
-| Generating configuration for core (type nagios)...
-| Precompiling host checks...OK
-| Done (success)
OK
Finished update.Wenn die in der obigen Ausgabe hervorgehobene Zeile Completed verifying site configuration angezeigt wird, ist die Instanz auf die neue Version umgeschaltet:
… und kann gestartet werden:
5. Nachbereitungen
Software-Entwicklung bedeutet Änderung. Und da wir immer daran arbeiten, Checkmk modern zu halten, kommen wir manchmal nicht drumherum, alte Zöpfe abzuschneiden und Änderungen zu machen, die inkompatibel sind. Das bedeutet, dass Sie nach einem Update Ihre Konfiguration anpassen oder wenigstens überprüfen sollten. In der Regel versuchen wir, für neue Optionen sinnvolle Standardwerte zu verwenden, doch auch dies resultiert oft darin, dass es zumindest sinnvoll ist, die neuen Einstellungen zu überprüfen.
5.1. Inkompatible Änderungen prüfen
Während inkompatible Änderungen bei Patch-Versionen seltener sind und meist nur kleinere Nacharbeiten erfordern, kommt es bei Major-Updates häufiger vor, dass neue Check-Plugins bestehende Plugins ersetzen. Falls Sie eines der betroffenen Plugins einsetzen, ist nach dem Update eine erneute Service-Erkennung auf den betroffenen Hosts notwendig.
Eine Übersicht über alle Änderungen in Checkmk, inklusive einer Suchfunktion, finden Sie online in unseren Werks.
Noch praktischer ist aber die in Checkmk eingebaute Funktion zur Recherche. Nachdem Sie sich an der Instanz angemeldet haben, finden Sie oben im Help-Menü einen rot hinterlegten Link mit der Zahl inkompatibler und noch nicht bestätigter Änderungen:

Checkmk verfolgt die beim Update zur aktuellen Version angefallenen inkompatiblen Änderungen und fordert Sie auf, diese zu überprüfen und dann zu bestätigen (acknowledge):

Wenn Sie diese Seite über den rot hinterlegten Link im Help-Menü öffnen, werden Ihnen nur die „Werks“ (d.h. die Änderungen) angezeigt, bei denen etwas zu tun ist, und die daher mit Incompatible - TODO gekennzeichnet sind. Sie können jedes Werk einzeln aufrufen, ansehen, per Mausklick bestätigen — und damit die Zahl der offenen, inkompatiblen Änderungen sukzessive verringern. Zusätzlich haben Sie mit dem Menüeintrag Help > About Checkmk > Change log (Werks) Zugriff auf die komplette Historie der Änderungen in der aktuellen Major-Version.
6. Update in verteilten Umgebungen
Es gibt zwei unterschiedliche Vorgehensweisen, um das Update aller in einem verteilten Monitoring beteiligten Instanzen – d.h. der Zentralinstanz und der Remote-Instanzen – durchzuführen.
Wichtig: Für welches Vorgehen Sie sich auch entscheiden, Sie sollten auch in diesem Szenario vorher Backups aller Instanzen anlegen.
Das bevorzugte, sichere Vorgehen ist das Update in einem Rutsch, bei dem Sie folgende Schritte ausführen:
Stoppen Sie alle Instanzen.
Führen Sie das Update für alle Instanzen durch.
Starten Sie die aktualisierten Instanzen wieder.
Ist dies nicht möglich – beispielsweise, weil die Umgebung auf Instanzen in verschiedenen Zeitzonen und betreuenden Teams verteilt ist – kann unter strengen Auflagen ein vorübergehender Mischbetrieb erfolgen.
Der Versionsunterschied darf bei Major-Updates exakt eine Version betragen und setzt immer eine bestimmte Patch-Version der Ausgangsversion voraus.
Diese Reihenfolge muss dafür unbedingt eingehalten werden: Zunächst nehmen Sie die Aktualisierung aller Remote-Instanzen vor, erst als letztes führen Sie das Update der Zentralinstanz durch. So ist sichergestellt, dass zu keinem Zeitpunkt eine von einer neueren Checkmk-Version erzeugte Konfiguration bei einer älteren Checkmk-Version landet.
Die folgende Tabelle zeigt die möglichen Kombinationen beim Update von 2.4.0 zur 2.5.0:
| Zentralinstanz | Remote-Instanz | Erlaubt? | Hinweise |
|---|---|---|---|
2.4.0 |
2.4.0 |
Ja |
Zustand vor dem Update aller Instanzen. |
2.4.0 |
2.5.0 |
Ja |
Während des Updates sind kleinere Funktionseinbußen zu erwarten, halten Sie den Mischbetrieb daher kurz. Es besteht keine Gefahr für Daten und Konfiguration. |
2.5.0 |
2.4.0 |
Nein |
Achtung: Bei einem zentralem Setup besteht hier die Gefahr, Remote-Instanzen irreparabel zu beschädigen. Vermeiden Sie diesen Zustand unbedingt! |
2.5.0 |
2.5.0 |
Ja |
Zustand nach dem Update aller Instanzen. |
6.1. Technische Hintergründe
Der technische Grund für die Vorgehensweise liegt in den verwendeten Protokollen: Die Zentralinstanz greift auf die Daten der Remote-Instanzen primär lesend via Livestatus zu, bei zentralem Setup zudem schreibend über eine nicht-öffentliche HTTP-API. In beiden Fällen gilt, dass neue Versionen echte Obermengen der verwendeten Protokolle einführen. So nutzt eine ältere Zentralinstanz nur eine echte Teilmenge der Funktionalität der neueren Remote-Instanzen. Würde man die Zentralinstanz zuerst aktualisieren, würde sie bei den Remote-Instanzen möglicherweise API-Aufrufe oder Livestatus-Anfragen verwenden, welche diese noch nicht verstehen.
Der maximale Versionsunterschied einer Major-Version resultiert wiederum daraus, dass die Entfernung von Schnittstellen mit einer Schonfrist von genau einer Version einhergeht.
6.2. Erweiterungspakete in zentralem Setup
Um die phasenweise Aktualisierung zu erleichtern, bietet Checkmk die Möglichkeit, gleichnamige Erweiterungspakete in verschiedenen Versionen – eines passend zur älteren Zentralinstanz, eines passend zu den neueren Remote-Instanzen – zu hinterlegen. Aktiviert wird das jeweils passende. Details beschreibt der Artikel zu Erweiterungspaketen (MKPs).
6.3. Cascading Livestatus
Bei der Verwendung von Viewer-Instanzen dürfen die Viewer-Instanzen erst nach den Instanzen aktualisiert werden, deren Daten sie anzeigen. Zeigt eine Viewer-Instanz nur Daten von Remote-Instanzen, kann deren Aktualisierung erfolgen, sobald die Remote-Instanzen aktualisiert sind. Zeigt die Viewer-Instanz dagegen auch Daten der Zentralinstanz, darf sie erst als letztes aktualisiert werden.
7. Update eines Docker-Containers
Der Update-Prozess für eine Checkmk-Instanz im Docker-Container ist sehr einfach. Es gibt lediglich die folgenden Voraussetzungen:
Der Container wird nicht gelöscht, wenn er gestoppt wird. Das heißt, die Option
--rmwurde beim Starten nicht benutzt.Sie kennen die ID des Datenspeichers (volume) zum Container. Normalerweise sollten Sie beim Start des Containers seinem Speicher eine eindeutige ID gegeben haben. Wenn Sie sich unsicher sind, wie die ID Ihres Volumes ist, können Sie Informationen zum Container namens
myContainermit dem Befehldocker inspect myContainerabrufen.
Wenn Sie der Installationsanleitung für Checkmk in Docker gefolgt sind, sollten Sie die Voraussetzungen automatisch erfüllt haben.
Die Aktualisierung selbst ist in 3 Schritten erledigt:
Stoppen Sie den Container.
Wenn der Checkmk-ContainermyContainerheißt, lautet der Befehl:docker stop myContainer.Entfernen Sie den Container.
Der Befehl dazu ist:docker rm myContainer.Starten Sie einen neuen Container mit der gewünschten Version und binden Sie das bekannte Volume ein.
Hinweise zum Einbinden von Volumes finden Sie in der Installationsanleitung für Checkmk in Docker.
Danach wird Checkmk automatisch den Rest erledigen und Ihre Checkmk-Instanz aktualisieren und starten. Sie können sich danach wie gewohnt anmelden.
8. Rollback auf eine niedrigere Version
Der Befehl omd update ermöglicht auch die „Aktualisierung“ auf eine niedrigere Version („Downdate“).
Diese Vorgehensweise ist nur bei Regressionen vorgesehen.
Ein Rollback sollte nur vorgenommen werden, wenn eine Sicherung der Konfiguration von unmittelbar vor dem Update vorliegt (beispielsweise mit der globalen Einstellung zur Versionierung mit Git).
Nach einem solchen Update in die Rückwärtsrichtung sind viele Anpassungen nötig, um Konfiguration und Laufzeitumgebung wieder kompatibel zu machen – insbesondere, aber nicht nur, bei einem „Update“ auf eine niedrigere Major-Version. Daher raten wir von diesem Vorgehen dringend ab – und können auch bei einem „Update“ auf eine niedrigere Version keinen Support mehr bieten. |
Prinzipiell ist die Wiederherstellung eines Backups dem Rollback per „Downdate“ gegenüber immer zu bevorzugen. Es gibt jedoch Situationen, in denen der Versuch eines Rollbacks Vorteile verspricht. Das können beispielsweise sein:
Das Backup-Archiv ist sehr groß, das Zurückspielen würde sehr lange dauern.
Checkmk lief bereits einen gewissen Zeitraum bevor Probleme zu Tage traten, und die resultierende Lücke in den Monitoring-Daten würde stören.
Wenn nicht all zu viele Änderungen an Hosts und Services vorgenommen wurden (so dass RRDs weitgehend zum alten Konfigurationsstand passen) und es ist eine Version der Konfiguration von unmittelbar vor dem Update verfügbar, kann der Versuch unternommen werden. Prüfen Sie nach dem Rollback intensiv, ob alles wie erwartet funktioniert.
9. Aktualisierung von Konfigurationsdateien
Checkmk versucht, beim Update alle Standard-Konfigurationsdateien an die Erfordernisse der neuen Version anzupassen. Dies ähnelt dem Vorgang beim Update einer Linux-Distribution, geht aber in der Umsetzung darüber hinaus. So behandelt Checkmk eine Vielzahl von Fällen, zum Beispiel:
Zusammenführen von Dateiänderungen mit lokalen Änderungen des Benutzers.
Dateien, Verzeichnisse und symbolische Links, die in der neuen Version obsolet sind oder vom Benutzer gelöscht wurden.
Änderungen an den Berechtigungen.
Änderungen des Dateityps (aus Verzeichnis oder Datei wird symbolischer Link oder umgekehrt).
Änderungen des Ziels von symbolischen Links.
Dabei achtet Checkmk stets darauf, dass Ihre lokalen Änderungen erhalten bleiben, gleichzeitig aber alle für die neue Version notwendigen Änderungen umgesetzt werden. In vielen Fällen läuft die Aktualisierung einfach durch und es ist kein Nutzereingriff erforderlich.
9.1. Konflikte mit interaktiver Lösung
Falls die neue Version eine Änderung an einer Konfigurationsdatei vorsieht, an der Sie inzwischen selbst Änderungen vorgenommen haben, versucht Checkmk, beide Änderungen automatisch zusammenzuführen (merge). Dies geschieht mit den gleichen Methoden, die auch Versionskontrollsysteme verwenden.
Am wenigsten Probleme gibt es immer dann, wenn Ihre und Checkmks Änderungen räumlich weit genug auseinander liegen (mindestens ein paar Zeilen). Dann erfolgt die Zusammenführung automatisch und ohne Ihre Hilfe.
Wenn zwei Änderungen kollidieren, weil sie die gleiche Stelle der Datei betreffen, kann und will Checkmk nicht entscheiden, welche der beiden Änderungen wichtiger ist. In diesem Fall werden Sie als Benutzer eingeschaltet und können den Konflikt interaktiv auflösen:
Conflicts in etc/mk-livestatus/nagios.cfg! I've tried to merge the changes from version 2.4.0p22.cre to 2.5.0p1.community into etc/mk-livestatus/nagios.cfg. Unfortunately there are conflicts with your changes. You have the following options: diff Show differences between the new default and your version you Show your changes compared with the old default version new Show what has changed from 2.4.0p22.cre to 2.5.0p1.community edit Edit half-merged file (watch out for >>>>> and <<<<<) try again Edit your original file and try again keep Keep half-merged version of the file restore Restore your original version of the file install Install the new default version shell Open a shell for looking around abort Stop here and abort update!
Sie haben nun folgende Möglichkeiten:
d |
Dies zeigt Ihnen die Unterschiede zwischen der neuen Standardversion der Datei und Ihrer Version in Form eines „unified diff“ ( |
y |
Dies ist ähnlich der vorherigen Funktion, zeigt aber ausgehend von der früheren Standardversion, welche Änderungen Sie an der Datei gemacht haben. |
n |
Diese dritte Option schließt quasi das Dreieck und zeigt die Änderungen, welche Checkmk an der Datei vornehmen möchte. |
e |
Lösen Sie den Konflikt manuell im Editor auf. |
t |
Ihre Originaldatei — ohne die bereits erfolgreich zusammengeführten Änderungen — wird in einem Editor geöffnet. Editieren Sie nun die Datei, um eventuellen Konflikten aus dem Weg zu gehen. Nach dem Schließen des Editors probiert Checkmk die Zusammenführung erneut. |
k |
Hier entscheiden Sie sich dafür, die Datei so zu übernehmen, wie sie jetzt ist. Die erfolgreich eingebauten Änderungen bleiben. Ansonsten bleibt die Datei so, wie von Ihnen angepasst. |
r |
So stellen Sie Ihre Datei im Ausgangszustand wieder her und verzichten auf das Update von Checkmk für diese Datei. Möglicherweise notwendige Anpassungen müssen Sie selbst vornehmen. |
i |
Installiert die neue Standardversion der Datei: Ihre Änderungen an der Datei gehen verloren. |
s |
Wenn Sie unsicher sind, können Sie mit s eine Shell öffnen. Sie befinden sich im Verzeichnis, in dem die betroffene Datei liegt, und können sich ein Bild von der Lage machen. Beenden Sie die Shell mit Ctrl+D, um das Update fortzusetzen. |
a |
Abbruch des Updates. Die Instanz bleibt auf der alten Version und deren vorherige Konfiguration wird wiederhergestellt. Sie können jederzeit einen neuen Update-Versuch starten. |
9.2. Weitere Konfliktsituationen
Neben dem inhaltlichen Zusammenführen von Dateien gibt es noch eine ganze Reihe weiterer Fälle, in denen Checkmk Ihre Entscheidung braucht. Dies sind teils sehr ungewöhnliche Situationen, die aber trotzdem korrekte Behandlung brauchen. Checkmk wird Ihnen in diesen Fällen stets die Auswahl geben, Ihre Version beizubehalten oder die neue Standardversion zu übernehmen. Außerdem haben Sie immer die Möglichkeit eines Abbruchs oder können eine Shell öffnen. Beispiele für solche Fälle sind:
Kollidierende Änderungen des Dateityps (z.B. wenn eine Datei durch einen symbolischen Link ersetzt wird)
Kollidierende Änderungen an den Dateirechten
Geänderte Dateien, die in der neuen Version entfallen
Von Ihnen angelegte Dateien, Verzeichnisse oder Links, die mit neuen Dateien/Verzeichnissen/Links kollidieren
Migrationen von Regeln oder anderen Konfigurationen schlagen fehl
Bei einem Fehlschlag des Updates lohnt es sich, zuerst selbst vorgenommene Änderungen an Konfigurationsdateien zu überprüfen. Des weiteren sollten Sie überprüfen, ob möglicherweise eine unsauber programmierte Erweiterung das Problem verursacht und diese gegebenenfalls deaktivieren. Natürlich ist es nicht ausgeschlossen, dass sich ein Fehler in eine Update-Routine eingeschlichen hat. In diesem Fall bitten wir um Hinweise in einem Support-Ticket (wenn Sie einen Support-Vertrag abgeschlossen haben) oder im Checkmk-Forum.
Seit Checkmk 2.3.0 wird bei einem fehlgeschlagenen Update der vor dem Update vorhandene Zustand der Konfiguration wiederhergestellt.
Fehlschlagen kann ein Update durch einen unerwarteten internen Fehler, aber auch durch Benutzereingaben während des Update-Prozesses, zum Beispiel durch Auswahl der Menüoption |
10. Update per Skript
Möchten Sie das Software-Update von Checkmk teilweise oder ganz automatisieren?
Dann werden Sie vielleicht erstmal an den interaktiven Rückfragen von omd update gescheitert sein.
Dafür gibt es eine einfache Lösung.
Der Befehl kennt nämlich Optionen, die speziell für den Einsatz in Skripten gedacht sind.
Für mit vielen Subkommandos von omd verwendbare Parameter werfen Sie einen Blick in den Artikel zur Instanzverwaltung mit omd.
Die im Kontext von Updates wichtigsten sind:
Der Parameter
--force(kurz-f) schaltet viele Prüfungen ab, weshalb wir von seiner Verwendung abraten. Verwenden Sie stattdessen die mit--confirmoder--ignorebeginnenden Parameter.Der Parameter
-V, gefolgt von einer Versionskennung, gibt das Ziel des Updates an.
Die hier gezeigten Optionen werden ab omd in Version 2.5.0 unterstützt und künftig noch ergänzt werden.
Beachten Sie, dass diese Optionen bereits nach der Installation eines Checkmk-Paketes in Version 2.5.0 verfügbar sind und demnach schon beim Update von 2.4.0 auf 2.5.0 benutzt werden können.
Wollen Sie sichergehen, dass Ihre Skripte auch auf Servern funktionieren, auf denen Checkmk 2.4.0 das Standard-omd bereitstellt, schauen Sie in diesen Artikel im Handbuch von Checkmk 2.4.0.
Die dort vorgestellten Legacy-Optionen funktionieren mit dem von Checkmk 2.5.0 bereitgestellten omd noch, werden aber bei Version 3.0.0 nicht mehr akzeptiert werden.
10.1. Bestätigungsdialoge unterdrücken
Die folgenden Optionen steuern das Verhalten der Vorabüberprüfungen und sollten gegenüber --force (kurz -f) bevorzugt benutzt werden:
|
Unterdrückt den Bestätigungsdialog für die gewählte Version. |
|
Unterdrückt den Bestätigungsdialog für die gewählte Edition beim Upgrade. |
|
Unterdrückt den Abbruch bei Versionsinkompatibilitäten (beispielsweise wenn 2.4.0p22 installiert ist, eigentlich aber 2.4.0p23 vorausgesetzt wird). |
|
Unterdrückt den Abbruch bei Editions-Inkompatibilitäten (beispielsweise beim Downgrade ausgehend von Checkmk Ultimate mit Multi-Tenancy). |
10.2. Optionen für dateibasierte Aktualisierung
Die folgenden Optionen steuern das Verhalten beim ersten Schritt der Aktualisierung der Konfiguration, der dateibasierten Aktualisierung:
|
Das Standardverhalten, es erfolgt die Nachfrage, wie vorzugehen ist. |
|
Sofortiger Abbruch im Falle eines Konfliktes. |
|
Zuletzt durch den Anwender vorgenommene Änderungen werden verworfen und die Standardversion der Konfigurationsdatei wird installiert. |
|
Zuletzt durch den Anwender vorgenommene Änderungen werden behalten, die Standardversion der Konfigurationsdatei ignoriert. |
10.3. Optionen für Konfigurationsaktualisierung
Die folgenden Optionen werden an das Programm cmk-update-config weitergegeben und steuern das Verhalten beim zweiten Schritt der Aktualisierung der Konfiguration, wo Formatänderungen oder Umstellungen von Listen auf Objekte vorgenommen werden.
|
Das Standardverhalten, es erfolgt die Nachfrage, wie vorzugehen ist. |
|
Ignoriert jeglichen Konflikt. Eventuell ist Checkmk dann aber nicht lauffähig und ein manuelles Nacharbeiten erforderlich. Erwähnten wir bereits die Relevanz eines aktuellen Backups? |
|
Sofortiger Abbruch im Falle eines Konfliktes. |
Ein Beispiel für den kompletten Befehl für ein automatisches Update der Instanz mysite auf die Version 2.5.0p8.community:
Durch das && vor dem omd start wird ein Starten der Instanz verhindert, falls das omd update bei der Aktualisierung der Konfiguration mit einem Fehler abbricht.
Ersetzen Sie das && durch ein Semikolon (;), falls Sie einen Start auch in diesem Fall unbedingt versuchen wollen.
11. Ausgaben beim Update
Immer, wenn der Update-Vorgang automatisch Änderungen an Dateien macht, gibt er eine Zeile zur Erklärung aus. Dabei gibt es folgende Möglichkeiten (wenn von Dateien die Rede ist, gilt dies analog auch für Links und Verzeichnisse):
Updated |
Eine Datei hat sich in der neuen Version geändert. Da Sie keine Änderungen an der Datei gemacht haben, setzt Checkmk einfach die neue Standardversion der Datei ein. |
Merged |
Eine Datei hat sich in der neuen Version geändert, während Sie gleichzeitig andere Änderungen an der Datei gemacht haben. Beide konnten konfliktfrei zusammengeführt werden. |
Identical |
Eine Datei hat sich in der neuen Version geändert. Gleichzeitig haben Sie die Datei selbst schon in genau der gleichen Art geändert. Checkmk muss nichts unternehmen. |
Installed |
Die neue Version bringt eine neue Konfigurationsdatei mit, welche soeben installiert wurde. |
Identical new |
Die neue Version bringt eine Datei mit, inzwischen haben Sie selbst die gleiche Datei mit dem gleichen Inhalt angelegt. |
Obsolete |
In der neuen Version ist eine Datei weggefallen. Sie haben diese Datei sowieso schon gelöscht. Nichts passiert. |
Vanished |
Auch hier ist eine Datei weggefallen, welche Sie aber weder gelöscht noch verändert haben. Checkmk entfernt diese Datei automatisch. |
Unwanted |
Sie haben eine Datei gelöscht, die normalerweise vorhanden ist. Da sich in der neuen Version keine Änderung in der Datei ergeben hat, belässt es Checkmk dabei, dass die Datei fehlt. |
Missing |
Sie haben eine Datei gelöscht, an der sich in der neuen Version Änderungen ergeben haben. Checkmk legt die Datei nicht neu an, warnt Sie aber durch diese Ausgabe. |
Permissions |
Checkmk hat die Berechtigungen einer Datei aktualisiert, da in der neuen Version andere Rechte gesetzt sind. |
12. Dateien und Verzeichnisse
Hier finden Sie für diesen Artikel relevante Dateien und Verzeichnisse.
Pfade, die nicht mit einem / beginnen, gelten wie immer ab dem Home-Verzeichnis der Instanz (/omd/sites/mysite).
| Pfad | Bedeutung |
|---|---|
|
Symbolischer Link auf die Installation der von dieser Instanz verwendeten Checkmk-Version. |
|
In diesem Verzeichnis existiert für jede installierte Checkmk-Version ein Unterverzeichnis. Die Dateien gehören |
|
In diesem Verzeichnis liegt für jede Instanz deren Home-Verzeichnis mit den Konfigurationsdateien und den variablen Daten. Die Dateien gehören dem Instanzbenutzer und werden durch Konfiguration und Betrieb geändert. |
|
Verwaltungsbefehl für Checkmk-Instanzen. Dies ist ein symbolischer Link in das |
