1. Einleitung
Checkmk ist sehr modular aufgebaut und kann an vielen Stellen mit Python-Programmierkenntnissen erweitert werden. Um diese Erweiterungen sinnvoll zu verwalten, innerhalb von verteilten Umgebungen zu verteilen und auch mit anderen Anwendern auszutauschen, stellt Checkmk ein eigenes Paketformat bereit: das Checkmk-Erweiterungspaket — kurz MKP.
Ein MKP sammelt eine beliebige Menge von Erweiterungen — z.B. einen Satz Check-Plugins inklusive zugehöriger Handbuchseiten, der Konfigurationsumgebung für Schwellwerte und zugehörigen Metrikdefinitionen. Es kann darüber hinaus Einstellungen für die Verteilung von Agentenplugins via Agentenbäckerei enthalten.
In diesem Artikel erfahren Sie, wie Sie Erweiterungen installieren und verwalten, aber auch wie Sie sicherstellen, dass auch in verteilten Umgebungen Updates reibungslos laufen. Für die Entwickler von Erweiterungen haben wir einen separaten Artikel erstellt, der sich dem Modifizieren und Packen von Erweiterungen widmet.
1.1. Die Checkmk Exchange
Auf der Checkmk Exchange können Plugin-Programmierer Pakete für andere Checkmk-Benutzer bereitstellen und untereinander austauschen. Von dort können Sie kostenlos Erweiterungen herunterladen und verwenden. Beachten Sie bei Paketen von der Exchange, dass diese durch andere Benutzer freiwillig und ohne jede Garantie bereitgestellt werden.
Unsauber programmierte Plugins können zu erhöhter Last und erhöhtem Arbeitsspeicherbedarf führen. Zudem ist es möglich, dass MKPs für ältere Versionen von Checkmk entwickelt wurden und so keine vollständige Kompatibilität vorhanden ist (von Version 1.6.0 auf 2.0.0 z.B. wechselte Checkmk von Python 2 auf Python 3). In Extremfällen droht Datenverlust. Wir empfehlen daher vor dem produktiven Einsatz fremder MKPs die Installation in einer Testinstanz.
1.2. Werkzeuge für MKPs
Zur Verwaltung von MKPs gibt es zwei Werkzeuge:
Den Befehl
mkpIn den kommerziellen Editionen haben Sie zusätzlich den Setup-Menüeintrag Extension Packages
Beide sind miteinander kompatibel, sodass Sie mal den Befehl und mal Extension Packages verwenden können, ohne dass dabei etwas „durcheinander gerät“.
2. Erweiterungspakete über das Setup-Menü verwalten
Die Möglichkeit, MKPs über die GUI zu verwalten, gibt es ausschließlich in den kommerziellen Editionen von Checkmk.
Im Setup-Menü steigen Sie in die Verwaltung der MKPs über Setup > Maintenance > Extension packages ein.
Hier können Sie MKPs hinzufügen, ändern oder neu erstellen:

Veraltete MKPs können nur über die Befehlszeile installiert werden. Im Bereich Extension packages können Sie nur MKPs installieren (freischalten und aktivieren), deren Versionsanforderungen erfüllt sind. Andere MKPs werden zwar freigeschaltet, aber nicht installiert (es wird eine entsprechende Fehlermeldung angezeigt). |
2.1. Hinzufügen eines MKPs
Ein MKP, das Sie z.B. von der Exchange heruntergeladen haben, können Sie mit dem Knopf Upload package in Checkmk hochladen und so verfügbar machen.
Dafür muss die Datei auf dem Rechner vorhanden sein, auf dem auch Ihr Webbrowser läuft.
Die Dateiendung des Pakets muss .mkp sein.

Nach der Installation ist das Erweiterungspaket zunächst verfügbar, jedoch nicht aktiv. Es befindet sich unter All packages (enabled or disabled):

2.2. Aktivierung eines MKPs
Erst mit dem Klick auf den Knopf mit dem Steckersymbol
wird ein verfügbares Paket auch aktiviert.
Bei der Aktivierung werden die Dateien in einer Ordnerhierarchie unterhalb von ~/local/ installiert und eine Paketbeschreibungsdatei in ~/var/check_mk/packages/ abgelegt.
Das Paket erscheint dann auch in der Liste der freigeschalteten und aktiven MKPs – Enabled (active on this site):

Nun führen Sie noch eine Aktivierung der Änderungen durch und alle Funktionen aus dem Paket sind im System verankert und stehen Ihnen bereit.
2.3. Pakete deaktivieren und entfernen
Auch die vollständige Löschung eines Paketes erfolgt zweistufig.
Mit dem
deaktivieren Sie es zunächst in der Liste der aktiven Pakete.
In diesem Schritt werden die installierten Dateien entfernt, aber das MKP wird weiter vorgehalten – dieser Schritt macht lediglich die Aktivierung rückgängig.
Über das Symbol
in der Liste aller Pakete können Sie installierte und nicht verwendete Pakete wieder löschen.
Beim Löschen wird das Paket gelöscht und somit die Erweiterung komplett entfernt – also das Gegenteil des Hinzufügens eines Paketes.
2.4. MKPs in verteilten Umgebungen
Bei einem verteilten Monitoring mit zentralem Setup reicht es, wenn Sie die Pakete auf der Zentralinstanz verfügbar machen.
Für jede der Zentralinstanz zugeordnete Remote-Instanz können Sie dann separat bestimmen, ob die Anpassungen an diese Instanz übertragen werden sollen.
Sie müssen dazu lediglich die Option Replicate extensions aktivieren.
Danach werden bei der Synchronisation auch die MKPs und alle anderen Änderungen unterhalb des Verzeichnisses ~/local übertragen.

Ist die Übertragung nicht gewünscht, schalten Sie die Option für diese oder alle Instanzen einfach ab.
Wichtig: Die Anpassungen für das zentrale Setup werden nur übertragen, wenn die Option Enable replication auf Push configuration to this site eingestellt ist.
2.5. Sonderfall: Freigeschaltete, aber inaktive Pakete
Einen Sonderfall stellt der Aktivierungsversuch eines Paketes dar, das nicht zur verwendeten Checkmk-Version passt. Ein solches Paket, das zwar freigeschaltet ist, aber dessen Aktivierung wegen einer inkompatiblen Checkmk-Version fehlschlägt, landet in der Liste Enabled (inactive on this site).

Warum aber sollte man Pakete installieren, die nicht zur verwendeten Checkmk-Version passen? Dafür gibt es zwei gute Gründe:
Das Update der Checkmk-Version: Sie haben die Möglichkeit, Pakete sowohl für die alte als auch für die neue Version vorzuhalten – beim Update wird dann automatisch das neuere aktiviert.
Verteiltes Monitoring: Um Updates zu erleichtern, darf die Checkmk-Major-Version von Remote-Instanzen eine höher als die der Zentralinstanz sein. Dies erschwerte jedoch bislang die Verteilung von MKPs, denn diese mussten zu beiden Major-Versionen kompatibel sein. Mit der Möglichkeit, auch unpassende Pakete freizuschalten, können Sie in der Zentralinstanz jeweils Pakete vorhalten, die zur Ausgangs- und Zielversion passen. Beim Update wird dann automatisch das neuere aktiviert.
Aus den Versionsnummern im Screenshot können Sie entnehmen, dass es sich um eine Checkmk 2.1.0 Zentralinstanz handelte, die Pakete für Remote-Instanzen bereithält, welche bereits auf 2.2.0 aktualisiert wurden.
3. Erweiterungspakete auf der Befehlszeile verwalten
Alle oben genannten Aktionen können Sie auch auf der Befehlszeile ausführen.
Dazu dient der Befehl mkp.
Ruft man ihn ohne Sub-Befehl auf, zeigt er Hinweise zur Verwendung.
Die etwa 50 Zeilen lange Ausgabe haben wir auf weniger als die Hälfte gekürzt:
In den folgenden Abschnitten stellen wir Ihnen die wichtigsten Befehle zur Verwaltung von MKPs vor. Eine Befehlsreferenz in Tabellenform finden Sie am Ende dieses Artikels.
3.1. Hinzufügen eines MKPs
Das Hinzufügen eines Pakets geschieht mit mkp add.
Dazu müssen Sie die MKP-Datei natürlich zunächst auf den Checkmk-Server bringen (z.B. mit scp).
Anschließend führen Sie den folgenden Befehl aus:
Die Liste der vorhandenen Pakete rufen Sie mit mkp list ab.
Nach der Installation ist das Erweiterungspaket zunächst verfügbar, jedoch nicht aktiv.
Es hat den Zustand State: Disabled:
3.2. Aktivierung eines MKPs
Erst mit dem Sub-Befehl enable wird ein verfügbares Paket auch aktiviert.
Die Angabe der Versionsnummer ist nur in dem Fall erforderlich, dass der Name alleine nicht eindeutig ist:
Prinzipiell können Sie — auch auf der Befehlszeile — nur MKPs aktivieren, die zur Version Ihrer Checkmk-Installation passen.
Wenn Sie die Versionsbeschränkungen übergehen und das MKP unter allen Umständen installieren (freischalten und aktivieren) wollen, nutzen Sie --force-install.
Dies ist in erster Linie für Entwickler relevant, die in verteilten Umgebungen Pakete schrittweise an neue Checkmk-Versionen anpassen müssen.
Bei der Aktivierung – egal ob mit oder ohne force-install – werden die Dateien in einer Verzeichnishierarchie unterhalb von ~/local/ installiert und die Paketbeschreibungsdatei in ~/var/check_mk/packages/ abgelegt.
Das Paket erhält dadurch den Zustand Enabled (active on this site):
Details über ein einzelnes Paket erfahren Sie mit mkp show, der Aktivierungszustand spielt dabei keine Rolle:
3.3. Pakete deaktivieren und entfernen
Die Deinstallation eines Pakets geschieht in zwei Stufen.
Zunächst wird das Paket mit mkp disable deaktiviert.
Dies löscht installierte Dateien, hält das Paket aber – beispielsweise für eine spätere erneute Aktivierung – weiterhin vor.
Die Angabe der Versionsnummer ist auch hier nur in dem Fall erforderlich, dass der Name alleine nicht eindeutig ist:
In der Paketliste sehen Sie nun den Zustand Disabled, wenn Sie ein weiteres Mal mkp list aufrufen:
Erst mkp remove löscht das Paket unwiderruflich:
3.4. Sonderfall: Freigeschaltete, aber inaktive Pakete
Einen Sonderfall stellt die Installation eines Paketes dar, das nicht zur verwendeten Checkmk-Version passt:
Ein solches Paket können Sie zwar freischalten. Dessen Aktivierung schlägt dann aber wegen der inkompatiblen Checkmk-Version fehl und erhält den Zustand Enabled (inactive on this site).
Die Gründe für die Installation inkompatibler Pakete – Updates und verteilte Umgebungen – erklären wir oben im entsprechenden Setup-Schritt.
Ebenso analog zum Vorgehen im Setup verwenden Sie mkp enable paketname version, um ein Paket freizuschalten, respektive mkp disable paketname version, um eine vorhandene Freischaltung aufzuheben.
4. Befehlsreferenz
Befehle für das Modifizieren und Erstellen von Paketen finden Sie im Artikel MKPs für Entwickelnde.
4.1. Verwaltung
| Sub-Befehl | Parameter | Verwendungszweck |
|---|---|---|
|
Dateiname des hinzuzufügenden Pakets |
Macht ein Paket verfügbar, aktiviert es aber noch nicht. |
|
Name des Pakets (und ggf. Versionsnummer) |
Aktiviert ein Paket je nach Versionskompatibilität für lokale Verwendung oder Verteilung an Remote-Instanzen. |
|
Name des Pakets (und ggf. Versionsnummer) |
Aktiviert ein Paket, auch wenn keine Versionskompatibilität gegeben ist. |
|
Name des Pakets und Versionsnummer |
Deaktiviert ein Paket, das im Dateisystem verfügbar bleibt. |
|
Name des Pakets und Versionsnummer |
Entfernt ein zuvor deaktiviertes Paket vollständig. |
|
Dateiname des hinzuzufügenden Pakets |
Dieser Sub-Befehl ist abgekündigt und wird bald entfernt werden! |
|
keine |
Listet alle verfügbaren Pakete und deren Aktivierungszustand auf. |
|
Dateiname des zu untersuchenden Pakets |
Zeigt Informationen zu einem nicht installierten MKP. |
|
Name des Pakets (und ggf. Versionsnummer) |
Zeigt Informationen zu einem verfügbaren MKP. |
|
keine |
Zeigt Informationen zu allen verfügbaren MKPs. |
|
Name des Pakets (und ggf. Versionsnummer) |
Listet alle zu einem Paket gehörenden Dateien auf. |
4.2. Updates
| Sub-Befehl | Parameter | Verwendungszweck |
|---|---|---|
|
keine |
Deaktiviert nach einem Update nicht mehr zur Checkmk-Version passende Pakete. |
|
keine |
Aktiviert nach einem Update die zur Checkmk-Version passenden Pakete. |
