Checkmk
to checkmk.com

1. Einleitung

Das Update von Checkmk auf eine neue Version läuft etwas anders als bei anderer Software. Warum?

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:

update1

Hier verwendet die Instanz mysite1 die Version 2.0.0p3.cee, die Instanzen mysite2 und mysite3 die Version 2.0.0p1.cre. Die Checkmk-Version 2.0.0p1.cfe 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:

update2

Hier soll die Instanz mysite auf die Checkmk-Version 2.0.0p3.cee 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:

update3

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

update4

Nach dem Update können Sie die (eventuell) nicht mehr benötigte Version 2.0.0p1.cre durch das Deinstallieren des entsprechenden Pakets entfernen.

2. Vor dem Update

Falls Sie ein Update der Checkmk-Version 2.1.0 auf 2.2.0 planen, sollten Sie zuerst den Artikel Update auf Version 2.2.0 lesen, in dem wir die wichtigsten Themen zusammengetragen haben, die Sie vor und nach einem solchen Update beachten sollten.

Aber auch, wenn Sie bereits eine 2.2.0-Version installiert haben und auf eine neue stabile Patch-Version der 2.2.0 updaten wollen, können die in den folgenden Abschnitten beschriebenen Themen relevant sein.

2.1. Update der Major-Version

Bei einem Update auf eine höhere Major-Version müssen Sie immer direkt auf die nächste Version aktualisieren und können nicht einfach eine überspringen. Wenn Sie also beispielsweise von 2.0.0 auf 2.2.0 aktualisieren wollen, aktualisieren Sie zunächst auf die 2.1.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.

Der Befehl omd update ermöglicht auch die „Aktualisierung“ auf eine niedrigere Version. Diese Vorgehensweise ist nur bei Regressionen vorgesehen. 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.

2.2. Inkompatible und obsolete MKPs

Über die Checkmk-Erweiterungspakete (MKPs) lässt sich Ihr Monitoring-System recht einfach und bequem erweitern. Auf der einen Seite kommt es dabei vor, dass solche MKPs nicht weiter gepflegt werden und dann ggf. mit neuen Versionen von Checkmk nicht mehr kompatibel sind. Auf der anderen Seite nehmen wir immer wieder neue Plugins und Funktionserweiterungen in Checkmk auf, weshalb MKPs mitunter obsolet werden. Ihre Funktionalität wird schlicht von Checkmk selbst sichergestellt.

Falls Sie MKPs installiert haben, ist aus diesem Grund eine Prüfung dieser MKPs dringend geboten. So verhindern Sie, dass inkompatible Pakete das Update behindern oder im Anschluss an das Update doppelte oder zumindest sehr ähnliche Services entstehen.

Prüfen Sie hierzu Ihre installierten MKPs gegen unseren Katalog der Check-Plugins und entfernen Sie Pakete, welche inzwischen nativ von Checkmk bereitgestellt werden. Bei dieser Gelegenheit können Sie auch MKPs entfernen, die eventuell nur mal für einen Probelauf installiert worden sind. Eine Auflistung finden Sie im Setup-Menü unter Maintenance > Extension packages. Auf der Kommandozeile können Sie sich installierte Erweiterungen mit dem Befehl mkp list anzeigen lassen. Überprüfen Sie die Ausgabe dieses Befehls auf Erweiterungen, die nicht mehr benötigt werden oder die Sie gar nicht mehr zuordnen können.

Seit 2.1.0p22 unterstützt Checkmk zur Vorbereitung von Updates die Bereitstellung von MKPs für eine neuere als die aktuell laufende Version. Beim Update wird dann das Paket für die niedrigere Checkmk-Version deaktiviert und das für die höhere aktiviert. Details erklärt der Artikel zur Verwendung von MKPs.

Achtung: Wenn Sie an Dateien, die ursprünglich MKPs entstammen, lokal Änderungen vorgenommen haben, packen Sie das MKP nach Erhöhung der Versionsnummer neu. Während des Updates werden sonst geänderte Dateien durch die im MKP enthaltenen überschrieben.

2.3. Lokale Dateien

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 das folgende Kommando ausführen (bei dem die Option -L dafür sorgt, dass auch symbolischen Links gefolgt wird):

OMD[mysite]:~$ find -L ~/local -type f

In einer frischen Installation von Checkmk wird Ihnen derzeit nur eine Datei namens README.TXT aufgelistet. Alles, was darüber hinaus angezeigt wird, sollte ganz oben auf Ihrer Liste zur Fehlerdiagnose stehen, falls es beim Update Probleme geben sollte.

Im Idealfall sind lokale Dateien bereits vollständig in MKPs gebündelt. Verwenden Sie mkp find um unpaketierte Dateien zu identifizieren. Die weitere Vorgehensweise der Erstellung von Paketen zeigt unser Artikel zu Checkmk-Erweiterungspaketen. Einmal zu einem Paket zusammengefasst, kann eine Erweiterung als ganzes deaktiviert oder erneut aktiviert werden.

2.4. Backup und Probelauf

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. 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:

root@linux# omd restore newsite /path/to/backup

Alternativ können Sie Ihre Instanz auch per omd cp kopieren. Dafür muss die produktiv genutzte Instanz allerdings kurzzeitig gestoppt werden:

root@linux# omd stop mysite && omd cp mysite newsite && omd start mysite

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 stoppen wollen.

3. Update von Checkmk

3.1. Installation neuer Versionen

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 abhängigen Pakete jetzt schon installiert sind. In folgendem Beispiel installieren wir das Paket für Ubuntu 22.04 (Jammy Jellyfish):

root@linux# apt install /tmp/check-mk-enterprise-2.2.0p1_0.jammy_amd64.deb

Hinweis: Wenn Sie ein lokal vorliegendes Paket mit apt install installieren, müssen Sie den vollständigen Pfad zu der .deb-Datei angeben.

Die Liste der installierten Checkmk-Versionen können Sie jederzeit mit dem Befehl omd versions abrufen:

root@linux# omd versions
2.0.0p42.cre
2.1.0p22.cee
2.2.0p1.cee (default)

Eine dieser Versionen ist mit (default) markiert. Diese Standardversion wird automatisch beim Anlegen von neuen Instanzen verwendet, sofern Sie nicht mit omd -V myversion create mysite eine andere angeben. Die aktuelle Standardversion können Sie mit omd version abfragen und mit omd setversion ändern:

root@linux# omd version
OMD - Open Monitoring Distribution Version 2.2.0p1.cee
root@linux# omd setversion 2.1.0p22.cee
root@linux# omd version
OMD - Open Monitoring Distribution Version 2.1.0p22.cre

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:

root@linux# omd sites
SITE             VERSION          COMMENTS
mysite           2.1.0p22.cee
test             2.2.0p1.cee      default version

3.2. Durchführen des Updates

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:

root@linux# omd su mysite

Stellen Sie sicher, dass die Instanz gestoppt ist:

OMD[mysite]:~$ omd stop

Das Updaten — also eigentlich das Umschalten auf eine andere Version — geschieht nun einfach mit dem Befehl omd update:

OMD[mysite]:~$ omd update

Falls es mehr als eine mögliche Zielversion gibt, bekommen Sie diese zur Auswahl:

update omd update 2

Bestätigen Sie in der folgenden Dialogbox das gewählte Update auf die neue Version:

update omd update 3

Wenn Sie gleichzeitig zum Versions-Update ein Editions-Upgrade von einer Raw Edition auf eine der kommerziellen Editionen durchführen, werden Sie sicherheitshalber noch einmal auf diesen Umstand hingewiesen:

update raw to enterprise

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):

2023-03-10 16:49:42 - Updating site 'mysite' from version 2.1.0p23.cee to 2.2.0p1.cee...

 * Identical new  etc/omd
 * Installed file etc/mk-livestatus/livestatus.socket
 * Updated        etc/mk-livestatus/nagios.cfg
...
 * Vanished       etc/jmx4perl/config/websphere
 * Vanished       etc/jmx4perl/config
Creating temporary filesystem /omd/sites/mysite_update/tmp...OK
Executing update-pre-hooks script "01_mkp-disable-outdated"...OK
Executing update-pre-hooks script "02_cmk-update-config"...
-| Initializing application...
-| Updating Checkmk configuration...
-| ATTENTION: Some steps may take a long time depending on your installation, e.g. during major upgrades.
-|  1/24 Rewriting password store...
-|  2/24 Migrate Visuals context...
...
-|  24/24 Rewriting InfluxDB connections...
-| Done
OK
Updating core configuration...
Generating configuration for core (type cmc)...
Starting full compilation for all hosts Creating global helper config...OK
 Creating cmc protobuf configuration...OK
Finished update.

Wenn alles erfolgreich durchgelaufen ist, ist die Instanz auf die neue Version umgeschaltet:

OMD[mysite]:~$ omd version
OMD - Open Monitoring Distribution Version 2.2.0p1.cee

… und kann gestartet werden:

OMD[mysite]:~$ omd start

3.3. Inkompatible Änderungen

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 eventuell Ihre Konfiguration anpassen oder wenigstens überprüfen sollten.

Ein typisches Beispiel dafür sind neue Check-Plugins, die 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 in den Release Notes. Nachdem Sie sich an der Instanz angemeldet haben, finden Sie im Help-Menü den rot hinterlegten Link:

update help menu incompatible werks

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

update incomp werks

Sie können jedes „Werk“, d.h. jede Änderung, einzeln aufrufen, ansehen, per Mausklick bestätigen — und damit die Zahl der offenen, inkompatiblen Änderungen sukzessive verringern. Zusätzlich können Sie mit dem Filter-Knopf die Filterleiste einblenden und haben so Zugriff auf die komplette Historie der Änderungen.

3.4. Das Update im Detail

Sind Sie neugierig, was beim Update genau „unter der Haube abläuft“? Oder haben Sie beim Durchlauf von omd update Konflikte in Dateien bekommen? Dann sollten Sie hier weiterlesen.

Bei omd update geschehen drei Dinge:

  1. Aktualisieren von Standarddateien unter ~/etc/ und ~/var/, also solchen Dateien, die bei omd create erzeugt wurden.

  2. Umschalten der Version auf die Zielversion durch Ändern des symbolischen Links version, welcher sich im Instanzverzeichnis befindet.

  3. Nachbearbeitungen durch verschiedene Pakete (z.B. Checkmk). Insbesondere werden automatisch die Änderungen aktiviert, um eine valide Konfiguration für den Kern zu erzeugen.

Aktualisieren von Dateien, Zusammenführen von Änderungen

Der erste Schritt ist der bei weitem umfangreichste. Hier zeigt sich ein großer Vorteil von Checkmk gegenüber klassischen Software-Installationen: Checkmk hilft Ihnen, 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.

Zusammenführen und Konflikte

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:

omd 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" (diff -u).

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

Drücken Sie t, so wird Ihre Originaldatei  —  ohne die bereits erfolgreich zusammengeführten Änderungen  —  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

Installieren der neuen 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. Die bereits geänderten Dateien bleiben aber geändert! Sie können jederzeit einen neuen Update-Versuch starten.

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

Erklärung der 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 Datei 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 (Link, Verzeichnis) 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.

3.5. Update ohne Benutzerinteraktion

Möchten Sie das Software-Update von Checkmk 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:

  • Die Option -f oder --force direkt nach omd verhindert alle Fragen vom Typ „Sind Sie sicher…​“.

  • Die Option --conflict= direkt nach update setzt das gewünschte Verhalten bei einem Dateikonflikt.

Mögliche Werte für --conflict= sind:

--conflict=keepold

Behält im Konfliktfall Ihre eigene modifizierte Version der Datei. Eventuell ist Checkmk dann aber nicht lauffähig und ein manuelles Nacharbeiten erforderlich.

--conflict=install

Installiert im Konfliktfall die neue Standardversion der Datei. Damit gehen lokale Änderungen in der Datei zumindest teilweise verloren.

--conflict=abort

Bricht das Update im Konfliktfall ab. Das bedeutet aber nicht, dass alles auf den alten Stand zurückgerollt wird. Etliche Konfigurationsdateien sind eventuell schon umgestellt. Als Version ist aber noch die alte Version eingestellt.

--conflict=ask

Dies ist das Standardverhalten, somit ist die Option in dieser Form eigentlich wirkungslos.

Ein Beispiel für den kompletten Befehl für ein automatisches Update der Instanz mysite auf die Version 2.2.0p1.cee:

root@linux# omd stop mysite ; omd -f -V 2.2.0p1.cee update --conflict=install mysite && omd start mysite

Durch das && vor dem omd start wird ein Starten der Instanz verhindert, falls das omd update mit einem Fehler abbricht. Ersetzen Sie das && durch ein Semikolon (;), falls Sie einen Start auch in diesem Fall unbedingt versuchen wollen.

Falls Sie sicher sind, dass Sie nur eine einzige Checkmk-Instanz auf dem Server haben, können Sie deren Namen zur Verwendung in einem Shell-Skript einfach in einer Variable einfangen:

root@linux# omd sites --bare
mysite
root@linux# SITENAME=$(omd sites --bare)
root@linux# echo $SITENAME
mysite

Das ermöglicht Ihnen, obige Zeile vom Namen der Instanz unabhängig zu machen. Ein kleines Shell-Skript könnte z.B. so aussehen:

update.sh
#!/bin/bash
SITE=$(omd sites --bare)
VERSION=2.2.0p1.cee

omd stop $SITE
omd -f -V $VERSION update --conflict=install $SITE  && omd start $SITE

4. 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:

  1. Zunächst stoppen Sie alle Instanzen.

  2. Führen Sie dann das Update für alle Instanzen durch.

  3. 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 ein bestimmtes Patchlevel 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.1.0 zur 2.2.0:

Zentralinstanz Remote-Instanz Erlaubt? Hinweise

2.1.0

2.1.0

Ja

Zustand vor dem Update aller Instanzen.

2.1.0

2.2.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.2.0

2.1.0

Nein

Achtung: Bei zentraler Konfiguration besteht hier die Gefahr, Remote-Instanzen irreparabel zu beschädigen. Vermeiden Sie diesen Zustand unbedingt!

2.2.0

2.2.0

Ja

Zustand nach dem Update aller Instanzen.

4.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 zentraler Konfiguration 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 genau einer Version einhergeht. So wurde die Web-API intern bereits von Checkmk 2.1.0 nicht mehr benutzt, ihre Abschaffung erfolgte aber erst mit Version 2.2.0. Aus diesem Grund arbeitet eine 2.1.0 Zentralinstanz mit 2.2.0 Remote-Instanzen zusammen, nicht jedoch eine 2.0.0 Zentralinstanz mit 2.2.0 Remote-Instanzen.

4.2. Erweiterungspakete bei zentraler Konfiguration

Um die phasenweise Aktualisierung zu erleichtern, bietet Checkmk seit 2.1.0p22 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).

4.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 diese aktualisiert sind. Zeigt sie dagegen auch Daten der Zentralinstanz, darf ihre Aktualisierung erst als letztes stattfinden.

5. 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 --rm wurde 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 myContainer mit dem Kommando docker inspect myContainer abrufen.

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:

  1. Stoppen Sie den Container. Wenn der Checkmk-Container myContainer heißt, lautet der Befehl: docker stop myContainer.

  2. Entfernen Sie den Container. Der Befehl dazu ist: docker rm myContainer.

  3. Starten Sie einen neuen Container mit dem Befehl docker container run mit der gewünschten Version und binden Sie das bekannte Volume ein. Wenn Ihr Volume myVolume heißt, ist die entsprechende Option -v myVolume:/omd/sites. Alle Optionen des Kommandos 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.

6. Upgrades

Upgrades der CRE Checkmk Raw Edition auf eine der kommerziellen Editionen oder von einer der kommerziellen Editionen auf eine andere mit größerem Funktionsumfang sind jederzeit unkompliziert möglich. Das Vorgehen ist im wesentlichen immer gleich: Installieren Sie das gewünschte Paket und stellen Sie betroffene Instanzen mit omd update um.

6.1. Upgrade der Free Edition auf eine Vollversion

Mit Checkmk 2.2.0 ist die auf 25 Hosts limitierte CFE Checkmk Enterprise Free Edition weggefallen. An deren Stelle kann nun die CSE Checkmk Cloud Edition ohne Lizenzierung betrieben werden, sofern mit ihr maximal 750 Services in einer Instanz betrieben werden. Statt eines Upgrades muss beim Überschreiten der Schwelle lediglich ein Lizenzschlüssel hinterlegt werden.

Das Upgrade der Free Edition 2.1.0 wird daher vom Artikel Update auf Version 2.2.0 vollständig abgedeckt.

6.2. Upgrade der Raw Edition auf eine der kommerziellen Editionen

Dieses Kapitel deckt primär das Upgrade zur Standard Edition ab. Sie können in einem Schritt auch zur Cloud Edition upgraden, beachten Sie in diesem Fall jedoch auch die Hinweise im folgenden Kapitel.

Da die kommerziellen Editionen etliche zusätzliche Module und Features haben, gibt es nach der Umstellung ein paar Dinge zu beachten. Der entscheidende Punkt ist, dass beim Anlegen von neuen Instanzen der Raw Edition bzw. der kommerziellen Editionen unterschiedliche Standardeinstellungen gesetzt werden.

Nagios vs. CMC

Da die Raw Edition nur Nagios als Kern unterstützt, ist dieser bei Instanzen voreingestellt, die mit der Raw Edition erstellt wurden. Diese Einstellung bleibt beim Upgrade auf die CSE Checkmk Enterprise Standard Edition erhalten. Das bedeutet, dass Sie nach einem Upgrade zunächst weiterhin mit Nagios als Kern fahren. Eine Umstellung auf den CMC erfolgt mit omd config und wird in dem Artikel zur Migration auf den CMC beschrieben.

RRD-Format

Die kommerziellen Editionen unterstützen ein alternatives Format für die Speicherung historischer Messdaten, welches deutlich weniger Platten-I/O erzeugt. Bei neuen Instanzen der kommerziellen Editionen ist dies automatisch voreingestellt. Instanzen der Raw Edition werden auch hier beim Upgrade nicht automatisch umgestellt. Wie das Umstellen geht, beschreibt ein eigener Abschnitt im Artikel über Messwerte und Graphen.

Weitere Unterschiede

Um vollen Nutzen aus der Standard Edition ziehen zu können, beachten Sie die Übersicht der Unterschiede zwischen Raw Edition und Standard Edition.

6.3. Upgrade der Standard Edition auf die Cloud Edition

Am Monitoring-Kern und dem Benachrichtigungssystem gibt es keine Unterschiede zwischen Standard Edition und Cloud Edition. Je nach Schwerpunkt des Einsatzes werden Sie den größeren Funktionsumfang oft erst beim Hinzufügen neuer Hosts nutzen. An einigen Stellen ist dennoch die Überprüfung der vorhandenen Einstellungen angeraten.

Eine vollständige Übersicht der zusätzlichen Funktionalität bietet der Artikel zur Cloud Edition.

Check-Plugins für Cloud-Services

Wenn Sie Amazon Web Services (AWS), Microsoft Azure oder Google Cloud Platform (GCP) überwachen, sind die der Cloud Edition vorbehaltenen Services bestehender Hosts zunächst nicht aktiviert. Sie können diese in der Regel XYZ services to monitor (wobei XYZ für den Namen der Cloud-Plattform steht) aktivieren. Führen Sie anschließend eine Service-Erkennung bei diesen Hosts durch, um die nun verfügbaren Services zu finden.

Agent Controller im Push-Modus

Mit der Möglichkeit, Hosts direkt zu überwachen, welche zwar den Checkmk-Server erreichen können, aber nicht von diesem erreichbar sind, fällt in vielen Fällen die Notwendigkeit selbst gestrickter Lösungen mit Datenquellen-Programmen weg. Sie können diese Hosts auf Push-Modus umstellen und so direktes Monitoring ermöglichen.

6.4. Editions-Upgrades in verteilten Umgebungen

Beachten Sie, dass in verteilten Umgebungen immer zuerst das Update der Version durchgeführt werden muss, bevor das Upgrade der Edition folgen kann. Eine andere Reihenfolge oder ein Crossgrade (Update der Version und Upgrade der Edition in einem Schritt) ist nicht vorgesehen. Als generelles Vorgehen empfehlen wir das Offline-Upgrade, bei dem von einer beliebigen niedrigeren Edition auf eine beliebige höhere Edition gesprungen werden kann.

Bei zwei häufig nachgefragten Upgrade-Szenarien (Raw Edition nach Standard Edition und Standard Edition nach Cloud Edition) ist ein Mischbetrieb für einen eingeschränkten Zeitraum möglich. Während das Offline-Upgrade mit allen Versionen funktioniert, erfordern die beiden Online-Szenarien wenigstens Checkmk 2.2.0p23.

Offline-Upgrade (alle Kombinationen)

Da das Mischen von Editionen nur in wenigen Kombinationen möglich ist, empfehlen wir grundsätzlich, das Upgrade der Edition offline durchzuführen. Gehen Sie dafür wie folgt vor:

  1. Stoppen Sie alle Instanzen.

  2. Führen Sie das Upgrade der Zentralinstanz durch.

  3. Wenn Sie möchten (und eine Fülle von Benachrichtigungen kein Problem darstellt), können Sie die Zentralinstanz sofort wieder starten.

  4. Nun steht das Upgrade der Remote-Instanzen an. Dieses können Sie parallel durchführen und einzelne Remote-Instanzen nach dem Upgrade sofort wieder starten.

Selbstverständlich können Sie mit dem Start warten, bis alle Instanzen das Upgrade erhalten haben, was die Zahl von Benachrichtigungen etwas reduziert.

Raw Edition nach Standard Edition (online)

Checkmk erlaubt nur den Mischbetrieb von Standard Edition als Zentralinstanz mit Raw Edition oder Cloud Edition als Remote-Instanzen. Für das Upgrade nach Standard Edition bedeutet dies, dass die Zentralinstanz das Update zuerst erhält. Während des Mischbetriebes sollte keine Übertragung der Konfiguration von der Zentralinstanz zu den Remote-Instanzen durchgeführt werden, die noch kein Upgrade erhalten haben. Theoretisch kann dieser Mischbetrieb von Standard Edition als Zentralinstanz mit Raw Edition als Remote-Instanz beliebig lange währen.

Für das Upgrade ergibt sich daraus folgende Reihenfolge:

  1. Führen Sie das Upgrade der Zentralinstanz auf die Standard Edition durch.

  2. Hinterlegen Sie die Subskriptionsdaten und führen Sie eine Prüfung der Lizenzdaten durch. Die von den allen Remote-Instanzen bereitgestellten Services werden bei der Berechnung der Subskription gleich behandelt.

  3. Aktualisieren Sie nach und nach die Remote-Instanzen.

  4. Für jede Remote-Instanz, welche das Upgrade erhalten hat, können Sie die Synchronisation der Konfiguration wieder aktivieren.

Wir empfehlen, mit der Aktivierung von Standard Edition spezifischen Features zu warten, bis alle Instanzen das Upgrade auf Standard Edition erhalten haben.

Standard Edition nach Cloud Edition (online)

Wie bereits erwähnt erlaubt Checkmk nur den Mischbetrieb von Standard Edition als Zentralinstanz mit Raw Edition oder Cloud Edition als Remote-Instanzen. Für das Upgrade nach Cloud Edition bedeutet dies, dass die Zentralinstanz das Update zuletzt erhält. Das Upgrade der gesamten Umgebung muss in 30 Tagen abgeschlossen sein. Während des Mischbetriebes kann die Übertragung der Konfiguration von der Zentralinstanz zu den Remote-Instanzen durchgeführt werden.

Daraus resultiert folgende Reihenfolge für das Upgrade:

  1. Führen Sie das Upgrade der Remote-Instanzen auf die Cloud Edition durch. Wichtig: Nur im 30 Tage währenden Trial-Modus ist der Mischbetrieb mit Standard Edition als Zentralinstanz möglich, hinterlegen Sie also noch keine Subskriptionsdaten!

  2. Hinterlegen Sie in der Zentralinstanz noch unter der Standard Edition die Subskriptionsdaten für die Cloud Edition

  3. Führen Sie als letztes das Upgrade der Zentralinstanz auf Cloud Edition durch.

Soll ein Upgrade direkt von der Raw Edition auf Cloud Edition erfolgen, müssen Sie auf der Zentralinstanz als Zwischenschritt auf die Standard Edition hieven: Zuerst führen Sie das Upgrade der Zentralinstanz von Raw Edition nach Standard Edition durch, es folgt das Upgrade der Remote-Instanzen direkt von Raw Edition nach Cloud Edition. Zuletzt führen Sie noch das Upgrader der Zentralinstanz von Standard Edition nach Cloud Edition durch.

7. Downgrades

7.1. Einleitung

Auch Downgrades zwischen den Editionen sind vorgesehen. Ein Downgrade ist eine komplexere und damit zeitaufwändigere Aktion, da einige Funktionen in der Zielversion möglicherweise nicht funktionieren und manuell deaktiviert und durch eine möglicherweise weniger effiziente oder weniger komfortable Alternative ersetzt werden müssen.

7.2. Downgrade der Cloud Edition nach Standard Edition

Als Vorbereitung für das Downgrade von der Cloud Edition nach Standard Edition müssen Sie mindestens die folgenden Änderungen vornehmen:

  • Stellen Sie Hosts, die im Push-Modus arbeiten, auf Pull-Modus um. Andernfalls empfängt Checkmk von diesen keine Monitoring-Daten und betroffene Hosts werden im Regelfall stale.

  • Konfigurieren Sie die Agentenpakete für Ordner so um, dass keine Autoregistrierung mehr vorgenommen wird. Backen Sie anschließend die Agentenpakete neu.

Ferner stehen nicht mehr alle Cloud-Services und weniger Dashboards zur Verfügung. Als Folge werden Sie verschwundene Services aufräumen müssen.

Falls Sie unter der Cloud Edition das Grafana-Plugin aus dem „Grafana Store“ genutzt haben, müssen sie dieses durch ein aus dem Zip-Archiv installiertes ersetzen.

Eine Übersicht der Unterschiede zwischen Cloud Edition und Standard Edition liefert der Artikel zur Cloud Edition.

7.3. Downgrade der Standard Edition nach Raw Edition

Als Vorbereitung für das Downgrade von der Standard Edition nach Raw Edition müssen Sie mindestens die folgenden Änderungen vornehmen:

  • Änderung des RRD-Datenbankformats mit der Regel Configuration of RRD databases of hosts auf Multiple RRDs per host/service. Neben leichten Performance-Nachteilen ist hier anzumerken, dass eine Konvertierung nicht vorgesehen ist, demnach historische Monitoring-Daten nicht mehr sichtbar sind.

  • Umschalten des Monitoring-Kerns von CMC auf Nagios – von dieser Änderung sind in erster Linie Performance-Nachteile zu erwarten.

Daneben sind unter Umständen nicht mehr alle Dashboards, Graphen-Einstellungen, Benachrichtigungs-Plugins und Spezialagenten verfügbar. Mit der Standard Edition Übersicht können Sie ermitteln, wie viel Standard Edition-Funktionalität im Falle des Downgrades nach Raw Edition wegfällt und wo Sie gegebenenfalls weitere Anpassungen vornehmen müssen.

7.4. Editions-Downgrades in verteilten Umgebungen

Beachten Sie, dass in verteilten Umgebungen immer zuerst das Update der Version durchgeführt werden muss, bevor das Downgrade der Edition folgen kann. Eine andere Reihenfolge oder ein Crossgrade (Update der Version und Downgrade der Edition in einem Schritt) ist nicht vorgesehen.

In keinem Downgrade-Szenario unterstützt Checkmk den Mischbetrieb zwischen unterschiedlichen Editionen. Aus diesem Grund empfehlen wir dringend, das Downgrade der Edition offline durchzuführen. Gehen Sie dafür wie folgt vor:

  1. Stoppen Sie alle Instanzen.

  2. Führen Sie das Downgrade der Zentralinstanz durch.

  3. Wenn Sie möchten (und eine Fülle von Benachrichtigungen kein Problem darstellt), können Sie die Zentralinstanz sofort wieder starten.

  4. Nun steht das Downgrade der Remote-Instanzen an. Dieses können Sie parallel durchführen und Remote-Instanzen nach dem Downgrade sofort wieder starten.

Selbstverständlich können Sie mit dem Start warten, bis alle Instanzen das Downgrade erhalten haben, was die Zahl von Benachrichtigungen etwas reduziert.

8. Deinstallation von Checkmk

8.1. Übersicht

Das Deinstallieren von nicht mehr benötigten Checkmk-Versionen geschieht mit dem Paketmanager des Betriebssystems. Geben Sie hier den Namen des installierten Pakets an, nicht den Dateinamen der ursprünglichen RPM/DEB-Datei. Wichtig: Löschen Sie nur solche Checkmk-Versionen, die von keiner Instanz mehr verwendet werden!

Nicht mehr benötigte Checkmk-Instanzen können Sie einfach mit omd rm entfernen (und dabei alle Daten löschen!):

root@linux# omd rm mysite

8.2. SLES, RedHat, CentOS

So finden Sie bei RPM-basierten Systemen heraus, welche Checkmk-Pakete installiert sind:

root@linux# rpm -qa | grep check-mk
check-mk-enterprise-2.2.0p1-el9-38.x86_64.rpm
check-mk-raw-2.1.0p25-el9-38.x86_64.rpm
check-mk-raw-2.0.0p34-el8-38.x86_64.rpm

Das Löschen geschieht mit rpm -e:

root@linux# rpm -e check-mk-raw-2.0.0p34-el8-38.x86_64.rpm

8.3. Debian, Ubuntu

So finden Sie heraus, welche Pakete installiert sind:

root@linux# dpkg -l | grep check-mk
ii  check-mk-enterprise-2.2.0p1  0.jammy  amd64  Checkmk - Best-in-class infrastructure & application monitoring
ii  check-mk-raw-2.1.0p25        0.jammy  amd64  Checkmk - Best-in-class infrastructure & application monitoring
ii  check-mk-raw-2.0.0p34        0.jammy  amd64  Checkmk - Best-in-class infrastructure & application monitoring

Die Deinstallation geschieht mit dpkg --purge:

root@linux# dpkg --purge check-mk-raw-2.0.0p34
(Reading database ... 567850 files and directories currently installed.)
Removing check-mk-raw-2.0.0p34 (0.jammy) ...
...

9. Diagnosemöglichkeiten

Sollte es beim Update von Checkmk mal zu einem Fehler kommen, liegt diesem zumeist eine der folgenden drei Ursachen zugrunde, die bereits in den vorherigen Kapiteln angesprochen wurden:

10. 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

~/version

Symbolischer Link auf die Installation der von dieser Instanz verwendeten Checkmk-Version.

/omd/versions

In diesem Verzeichnis existiert für jede installierte Checkmk-Version ein Unterverzeichnis. Die Dateien gehören root und werden niemals geändert.

/omd/sites

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.

/usr/bin/omd

Verwaltungsbefehl für Checkmk-Instanzen. Dies ist ein symbolischer Link in das bin-Verzeichnis der Standardversion. Sobald auf eine bestimmte Instanz zugegriffen wird, ersetzt sich der omd-Befehl selbst durch denjenigen der passenden Version.

Auf dieser Seite