1. Einleitung
Checkmk ist sehr modular aufgebaut und kann an vielen Stellen mit etwas Python-Programmierkenntnissen erweitert werden. Unter anderem können Sie Checkmk um folgende Elemente ausbauen:
Eigene Checks und Agentenplugins inklusive Eingabemasken für WATO
Eigene Plugins für Checkmk Inventory
Erweiterungen für die GUI (Ansichten, Dashboards, Spalten, Icons, etc.)
Definitionen von Graphen oder Perf-O-Metern
Alarmierungs- und Alerthandlerskripte (auch in Shell oder anderen Skriptsprachen)
All diese Erweiterungen werden durch Ablage von eigenen Dateien unterhalb
des Verzeichnisses ~/local
innerhalb einer Checkmk-Instanz realisiert. Um diese
Erweiterungen sinnvoll zu verwalten, innerhalb von verteilten Umgebungen auszurollen
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 der Handbuchseiten, WATO-Masken und Metrikdefinitionen dazu. Es hat einen Namen, eine Version und kann mit einer einfachen Aktion installiert oder auch wieder entfernt werden.
1.1. Die Checkmk Exchange
Auf der Checkmk Exchange können Benutzer Pakete für die Allgemeinheit bereitstellen und untereinander austauschen. Von dort können Sie kostenlos Erweiterungen herunterladen und verwenden. Bitte beachten Sie bei Paketen von der Exchange, dass diese durch andere Benutzern freiwillig und ohne jede Garantie bereitgestellt werden. Es kann sein, dass diese unsauber programmiert sind und mit Ihrer Checkmk-Version Probleme verursachen können. Natürlich können MKPs auch allgemeine Fehler enthalten, die zu allen möglichen weiteren Fehlern oder sogar Datenverlust führen können. Zum Ausprobieren fremder Pakete empfiehlt sich daher auf jeden Fall zuerst eine Installation auf einem Testsystem.
1.2. Werkzeuge für MKPs
Zur Verwaltung von MKPs gibt es zwei Werkzeuge:
Den Kommandozeilenbefehl
mkp
Das WATO-Modul
Extension Packages (nur
Checkmk Enterprise Editions)
Beide Befehle stellen wir Ihnen nun näher vor. Sie sind miteinander kompatibel, so dass Sie mal den Kommandozeilenbefehl und mal das WATO-Modul verwenden können, ohne dass dabei etwas „durcheinandergerät“.
2. Erweiterungspakete über WATO verwalten
Im WATO finden Sie das Modul
Extension Packages,
mit dem Sie MKPs verwalten und sogar ändern oder neu erstellen können. Sie
erreichen das Modul wie üblich über das WATO-Element in der Seitenleiste:

2.1. Installation 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 installieren. Dazu benötigen
Sie die Datei auf dem Rechner, auf dem auch Ihr Webbrowser läuft. Die
Dateiendung des Pakets muss .mkp
sein.

Bei der Installation werden die Dateien an die richtigen Stellen unterhalb
von ~/local/
installiert. Außerdem wird eine Paketbeschreibungsdatei
in ~/var/check_mk/packages/
abgelegt. Nach dem Hochladen erscheint
das Paket dann in der Liste der installierten MKPs:

Nun benötigen Sie nur noch ein Activate Changes und alle Funktionen aus dem Paket sind im System verankert und stehen Ihnen bereit.
2.2. Pakete deinstallieren oder auflösen
Über die entsprechenden Symbole in der Liste der Pakete, können
Sie installierte Pakete entweder löschen oder
auflösen. Beim Löschen wird das Paket mitsamt
den installierten Dateien gelöscht und somit die Erweiterung entfernt.
Das ist also das Gegenteil vom Installieren. Das Auflösen hingegen entlässt
die paketierten Dateien unter
~/local/
quasi in die Freiheit und
entfernt nur die Paketbeschreibung. Als Ergebnis sind die Dateien dann
unpaketiert und die Erweiterungen weiterhin aktiv. Dies ist das Gegenteil
vom Erzeugen eines Pakets.
2.3. Pakete erstellen
Das Erstellen eines eigenen MKPs ist sehr einfach (wenn man mal von
der Kleinigkeit absieht, dass die Erweiterungen natürlich vorher
programmiert werden müssen). Ausgangspunkt ist, dass Sie unter
~/local/
in den entsprechenden Verzeichnissen eigene Dateien
angelegt haben. Für eigene Check-Plugins ist das richtige Verzeichnis
z.B. ~/local/share/check_mk/checks
. Diese Dateien gehören zunächst
zu keinem Paket und werden daher unter Unpackaged Files aufgelistet:

Über das Symbol gelangen Sie zum Dialog zum Erstellen
eines neuen Pakets:

Neben den offensichtlichen Angaben ist es wichtig, dass Sie mindestens eine
Datei auswählen, die eingepackt werden soll. Durch das Erstellen wird
eine Paketbeschreibung unter ~/var/check_mk/packages/
angelegt,
welche neben den allgemeinen Angaben auch die Liste der enthaltenen Dateien
beinhaltet.
Dieses Paket können Sie — z.B. um es auf ein anderes System zu übertragen
oder auf die Exchange hochzuladen — in der Paketliste mit dem Symbol
als MKP-Datei herunterladen.
Beachten Sie, dass bei späteren Änderungen an den paketierten Dateien, das Paket nicht neu erstellt werden muss. Ein einfaches Herunterladen der MKP-Datei genügt. Auf der anderen Seite kann es natürlich nicht schaden, dem Paket nach einer Änderung eine neue Versionsnummer zu geben.
3. MKP auf der Kommandozeile
Alle oben genannten Aktionen können Sie auch auf der Kommandozeile ausführen.
Dazu dient der Befehl mkp
(der eigentlich eine Abkürzung für
cmk -P
ist):
OMD[mysite]:~$ mkp
Usage: check_mk [-v] -P|--package COMMAND [ARGS]
Available commands are:
create NAME ... Collect unpackaged files into new package NAME
pack NAME ... Create package file from installed package
release NAME ... Drop installed package NAME, release packaged files
find ... Find and display unpackaged files
list ... List all installed packages
list NAME ... List files of installed package
list PACK.mkp ... List files of uninstalled package file
show NAME ... Show information about installed package
show PACK.mkp ... Show information about uninstalled package file
install PACK.mkp ... Install or update package from file PACK.mkp
remove NAME ... Uninstall package NAME
-v enables verbose output
Package files are located in /omd/sites/mysite/var/check_mk/packages/.
3.1. Installation eines MKPs
Die Installation eines Pakets geschieht mit mkp install
. Dazu müssen
Sie die MKP-Datei natürlich zunächst auf den Monitoringserver bringen
(z.B. mit scp
). Anschließend geht die Installation mit einem Befehl:
OMD[mysite]:~$ mkp install /tmp/mypackage-1.0.mkp
Die Liste der installierten Pakete rufen Sie mit mkp list
ab:
OMD[mysite]:~$ mkp list
mypackage
Details über ein einzelnes Paket erfahren Sie mit mkp show
:
OMD[mysite]:~$ mkp show myPackage
Package file: /omd/sites/mysite/var/check_mk/packages/myPackage
Name: myPackage
Version: 1.0
Packaged on Check_MK Version: 1.6.0
Required Check_MK Version: 1.6.0
Title: My own check plugin
Author: myName
Download-URL: www.example.com
Files: checkman(1) checks(1)
Description:
This package contains a cool check plugin
3.2. Pakete deinstallieren oder auflösen
Die Deinstallation eines Pakets geschieht mit mkp remove
. Dieser
Befehl löscht sowohl die Paketbeschreibung, als auch alle enthaltenen Dateien!
OMD[mysite]:~$ mkp remove mypackage
Und auflösen können Sie ein Paket mit mkp release
. Dabei bleiben die
Erweiterungsdateien erhalten und nur die Paketbeschreibung wird gelöscht:
OMD[mysite]:~$ mkp release mypackage
3.3. Pakete erstellen
Das Erstellen von MKPs auf der Kommandozeile geht analog zum WATO-Modul, nur
vielleicht nicht ganz so komfortabel. Zunächst erzeugen Sie Ihre Erweiterungen
in den passenden Verzeichnissen unterhalb von ~/local/
. Alle
unpaketierten Dateien finden Sie mit mkp find
:
OMD[mysite]:~$ mkp find
/omd/sites/mysite/local/share/check_mk/checks/mycheck
/omd/sites/mysite/local/share/check_mk/checkman/mycheck
Sie erzeugen jetzt mit dem Befehl mkp create
ein neues Paket, welches
(vorerst) all diese Dateien beinhaltet. Geben Sie dabei den gewünschten
Namen des neuen Pakets an:
OMD[mysite]:~$ mkp create mypackage
Die Eigenschaften des Pakets editieren Sie nun mit einem Texteditor.
Die Datei dazu liegt in var/check_mk/packages/mypackage
:
{'author': u'*myName*',
'description': u'*This package contains a check plugin*',
'download_url': 'http://www.example.com',
'files': {'agents': [],
'checkman': ['mycheck'],
'checks': ['mycheck'],
'doc': [],
'inventory': [],
'notifications': [],
'pnp-templates': [],
'web': []},
'name': 'myPackage',
'title': u'*My own check plugin*',
'version': '1.0',
'version.min_required': '*1.6.0*',
'version.packaged': '1.6.0'}
Bearbeiten Sie diese Datei nach Ihren Wünschen. Achten Sie auf korrekte
Python-Syntax. Texte, die nicht-Ascii-Zeichen enthalten (z.B. Umlaute)
müssen mit einem kleinen u
gekennzeichnet werden.
Unter dem Eintrag files
können Sie Dateien entfernen, welche nicht
paketiert werden sollen. Tragen Sie unter version.min_required
die
Mindestversion von Checkmk ein, die erforderlich ist, um das Paket zu verwenden.
Anschließend können Sie mit mkp pack
eine MKP-Datei erzeugen:
OMD[mysite]:~$ mkp pack mypackage
OMD[mysite]:~$ ll *.mkp
-rw-rw-r-- 1 mysite mysite 495 Dez 22 13:36 mypackage-1.0.mkp
4. MKPs in verteilten Umgebungen
Bei einem verteilten Monitoring reicht
es, wenn Sie die Pakete auf dem Master installieren. Bei jeder Verbindung zu
einer Slavesite können Sie dann bestimmen, ob die Anpassungen an diese Site
übertragen werden sollen. Sie müssen dazu lediglich die Option 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 Sites einfach ab.
Wichtig: Die Anpassungen werden nur übertragen, wenn die Option Enable replication auf Push configuration to this site eingestellt ist.
5. Feature Packs installieren
Ab 1.6.0p9 gibt es in Checkmk Feature-Packs. Diese Erweiterungen
stellen Funktionalitäten bereit, welche eigentlich erst in der nächsten
stabilen Version enthalten wären. Solche Funktionalitäten können zum
Beispiel Erweiterungen bestehender Checks oder
Spezialagenten sein. Sie sind in der
jeweiligen Version direkt enthalten und müssen lediglich aktiviert — oder
wieder deaktiviert werden. Um ein solches optionales MKP in der Checkmk Enterprise Editions zu
aktivieren, klicken Sie in dem Modul Extension Packages auf den Stecker
links von dem Paket:

Um ein Paket in der Checkmk Raw Edition zu installieren, können Sie wie
gewohnt die Kommandozeile nutzen. Sie finden die MKPs unter
~share/check_mk/optional_packages/
. Um zum Beispiel das Paket
azure_ad zu installieren, führen Sie folgendes Kommando aus:
OMD[mysite]:~$ mkp install ~/share/check_mk/optional_packages/azure_ad-1.0.mkp