Check_MK Erweiterungspakete (MKPs)

Letzte Aktualisierung: 09. März 2016


1. Einleitung

Check_MK ist sehr modular aufgebaut und kann an vielen Stellen mit etwas Python-Programmier­kenntnissen erweitert werden. Unter anderem können Sie Check_MK um folgende Elemente ausbauen:

  • Eigene Checks und Agentenplugins inklusive Eingabemasken für WATO
  • Eigene Plugins für Check_MK 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 Check_MK-Instanz realisiert. Um diese Erweiterungen sinnvoll zu verwalten, innerhalb von verteilten Umgebungen auszurollen und auch mit anderen Anwendern auszutauschen, stellt Check_MK ein eigenes Paketformat bereit: das Check_MK 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 Check_MK Exchange

Auf der Check_MK Exchange können Benutzer Pakete für die Allgemeinheit bereitstellen und unter­einander austauschen. Von dort können Sie kostenlos Erweiterungen herunterladen und verwenden. Bitte beachten Sie bei Paketen von der Exchange, dass diese von andere Benutzern freiwillig und ohne jede Garantie bereitgestellt werden. Es kann sein, dass diese unsauber programmiert sind und mit Ihrer Check_MK-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 )

Beide werden stellen wir Ihnen nun näher vor. Sie sind kompatibel, so dass Sie mal das eine und mal das andere verwenden können, ohne dass dabei etwas „durcheinandergerät“.

2. Erweiterungspakete über WATO verwalten

Seit der Version 1.2.8 bietet WATO das neue 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 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 Erweiterunge 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 Paket­beschreibung. 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.2.8
Required Check_MK Version:     1.2.6
Title:                         My own check plugin that checks my stuff
Author:                        Alfred E. Neumann
Download-URL:                  http://www.example.com
Files:                         checkman(1) checks(1)
Description:
  This package contains a check plugin that checks my stuff

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:

var/check_mk/packages/mypackage
{'author': u'Alfred E. Neumann',
 'description': u'This package contains a check plugin that checks my stuff',
 '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 that checks my stuff',
 'version': '1.0',
 'version.min_required': '1.2.6',
 'version.packaged': '1.2.8'}

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 Check_MK 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 Replication method auf Slave: push configuration to this site eingestellt ist.