1. OMD — Die Open Monitoring Distribution
Das Checkmk Monitoring System baut auf der Open Monitoring Distribution (OMD) auf. Diese ist ein von Mathias Kettner gegründetes Open-Source-Projekt, das sich rund um komfortable und flexible Installation einer Monitoringlösung aus diversen Komponenten dreht. Die Abkürzung OMD haben Sie bereits als Teil der Namen der installierten RPM/DEB-Pakete kennengelernt.
Eine OMD-basierte Installation zeichnet sich durch einige Eigenschaften aus:
die Möglichkeit mehrere Instanzen parallel zu betreiben,
die Möglichkeit, dies in unterschiedlichen Versionen der Monitoringsoftware zu tun,
einen intelligenten und komfortablen Upgrade/Downgrade-Mechanismus,
einheitliche Dateipfade — egal welche Linux-Plattform Sie einsetzen,
eine saubere Trennung von Daten und Software,
eine sehr einfache Installation — ohne Abhängigkeit von Drittsoftware,
eine perfekte Vorkonfiguration aller Komponenten.
2. Erzeugen von Instanzen (Sites)
Das vielleicht Tollste an OMD ist, dass es auf einem Server beliebig viele Monitoringinstanzen verwalten kann. Diese heißen auf Englisch Sites. Jede Instanz ist ein in sich geschlossenes Monitoringsystem, welches von den anderen getrennt läuft.
Eine Instanz hat immer einen eindeutigen Namen, den Sie beim Anlegen vergeben. Dieser ist gleichzeitig der Name eines Linux-Benutzers, der dabei angelegt wird. Der Name folgt also den gleichen Konventionen wie Benutzernamen unter Linux.
Das Anlegen geschieht mit dem Befehl omd create
. Dieser muss als root
ausgeführt werden:
root@linux# omd create mysite
Adding /opt/omd/sites/mysite/tmp to /etc/fstab.
Restarting Apache...OK
Creating temporary filesystem /omd/sites/mysite/tmp...OK
Created new site mysite with version 2014.11.17.mmk.
The site can be started with omd start mysite.
The default web UI is available at Klappfisch/mysite/
The admin user for the web applications is omdadmin with password omd.
Please do a su - mysite for administration of this site.
Ab Version 1.4.0 wird bei der Erstellung des Benutzers cmkadmin
und ein zufällig generiertes Passwort angelegt und ausgegeben.
Was geschieht beim Anlegen einer Instanz mysite
?
Ein Betriebssystembenutzer
mysite
und eine Gruppemysite
werden angelegt.Dessen neues Homevereichnis
/omd/sites/mysite
wird angelegt und diesem übereignet.Dieses Verzeichnis wird mit Konfigurationsdateien und Verzeichnissen bevölkert.
Für die neue Instanz wird eine Grundkonfiguration erstellt.
Wichtig: Vermeiden Sie einen Namen, welcher bereits von einem anderen Dienst belegt ist. Eine doppelte Belegung kann hier zu Problemen führen.
2.1. Benutzer- und Gruppen-IDs
In manchen Fällen möchte man die User-/Gruppen-ID des neu anzulegenden Benutzers festlegen.
Dies geschieht mit den Optionen -u
und -g
, z.B.:
root@linux# omd create -u 6100 -g 180 mysite
Eine Übersicht über weitere Optionen erhalten Sie mit omd create --help
. Die wichtigsten
Optionen sind:
-u UID | Der neue Benutzer wird mit der User-ID UID angelegt. |
-g GID | Die Gruppe des neuen Benutzers wird mit der Group-ID GID angelegt. |
--reuse | OMD geht davon aus, dass der neue Benutzer bereits existiert und legt ihn nicht an. |
-t SIZE | Das |
3. Instanz-Benutzer (Site-User)
Die weitere Verwaltung der Instanz erfolgt nun am besten immer mit den
Rechten des neu angelegten Benutzers. Der Benutzerwechsel geschieht
mit su
:
root@linux# su - mysite
Beachten Sie bitte unbedingt das Minuszeichen nach dem su
. Es
sorgt dafür, dass der Benutzerwechsel alle Operationen durchläuft,
die auch bei einer normalen Anmeldung ablaufen. Insbesondere werden
alle Umgebungsvariablen korrekt gesetzt und Sie starten Ihr Leben als
mysite
im Homeverzeichnis der Instanz: in /omd/sites/mysite
.
Als Instanz-Benutzer können Sie alle wichtigen Operationen durchführen, die
diese Site betreffen. Bei allen entsprechenden omd
-Befehlen entfällt
dann natürlich die Angabe der Instanz.
4. Starten und Stoppen von Instanzen
Ihre Instanz ist jetzt bereit, gestartet zu werden. Sie können das als
root
mit omd start mysite
machen. Besser ist aber, wenn
Sie das Arbeiten mit der Instanz grundsätzlich als Instanz-Benutzer
(Site-User) erledigen:
OMD[mysite]:~$ omd start
Starting Livestatus Proxy-Daemon...OK
Starting rrdcached...OK
Starting CMC Rushing Ahead Daemon...OK
Starting Check_MK Micro Core...OK
Starting dedicated Apache for site mysite...OK
Initializing Crontab...OK
Wenig verwunderlich geht das Anhalten mit omd stop
:
OMD[mysite]:~$ omd stop
Removing Crontab...
Stopping dedicated Apache for site mysite....OK
Stopping Check_MK Micro Core...killing 15085...OK
Stopping CMC Rushing Ahead Daemon...killing 15071....OK
Stopping rrdcached...waiting for termination...OK
Stopping Livestatus Proxy-Daemon...killing 15049....OK
Das Starten und Stoppen einer Instanz ist nichts anderes als das Starten bzw. Stoppen einer Reihe von Diensten. Diese können auch einzeln verwaltet werden, indem Sie den Namen des Diensts mit angeben, z.B.:
OMD[mysite]:~$ omd start apache
Starting dedicated Apache for site mysite...OK
Wie die einzelnen Dienste heißen, erfahren Sie im Verzeichnis ~/etc/init.d
.
Bitte beachten Sie die Tilde am Anfang. Diese steht für das Homeverzeichnis des
Instanz-Benutzers (das Site-Verzeichnis). Das ist nicht das Gleiche wie /etc/init.d
!
Neben start
und stop
gibt es noch die Befehle
restart
, reload
und status
. Das Neuladen von
Apache ist z.B. immer nach einer manuellen Änderung der Apache-Konfiguration
notwendig. Bitte beachten Sie, dass hier nicht der globale Apache-Prozess
des Linux-Servers gemeint ist, sondern ein eigener dedizierter Apache-Prozess
in der Site selbst:
OMD[mysite]:~$ omd reload apache
Reloading dedicated Apache for site mysite....OK
Um nach den ganzen Starts und Stops einen Überblick vom Zustand der Site
zu erhalten, verwenden Sie einfach omd status
:
OMD[mysite]:~$ omd status
liveproxyd: stopped
rrdcached: running
cmcrushd: running
cmc: stopped
apache: running
crontab: running
-----------------------
Overall state: partially running
5. Löschen von Instanzen
Das Löschen einer Instanz geht ebenso einfach wie das Erzeugen — mit dem Befehl omd rm
. Dabei
wird die Instanz vorher automatisch gestoppt.
root@linux# omd rm mysite
omd rm mysite
omd rm mysite
PLEASE NOTE: This action removes all configuration files
and variable data of the site.
In detail the following steps will be done:
- Stop all processes of the site
- Unmount tmpfs of the site
- Remove tmpfs of the site from fstab
- Remove the system user
- Remove the system group
- Remove the site home directory
- Restart the system wide apache daemon
(yes/NO): yes
Man muss wohl nicht extra dazusagen, dass hierbei alle Daten der Instanz gelöscht werden!
Wenn Sie kein Freund von Sicherheitsabfragen sind oder das Löschen in einem
Skriptkontext machen wollen, können Sie mit der Option -f
das Löschen
erzwingen. Achtung: -f
muss hier vor dem rm
stehen:
root@linux# omd -f rm mysite
6. Konfiguration der Komponenten
Wie bereits erwähnt ist OMD ein System, das mehrere Softwarekomponenten zu einem
Monitoringsystem integriert. Dabei sind manche Komponenten optional und für manche
gibt es Alternativen oder verschiedene Betriebseinstellungen. Dies alles kann
komfortabel mit omd config
konfiguriert werden. Dabei gibt es einen
Modus für Scripting und einen interaktiven Modus. Letzterer wird als Site-User
einfach wie folgt aufgerufen:
OMD[mysite]:~$ omd config

Sobald Sie eine Einstellung ändern, wird Sie OMD darauf hinweisen, dass dazu Ihre Site angehalten sein muss (falls das nicht der Fall ist) und sie bei Bedarf anhalten:

Bitte vergessen Sie nicht, nach getaner Arbeit die Site wieder zu starten.
omd config
wird das auf jeden Fall nicht für Sie tun.
6.1. Skript-Schnittstelle
Wer den interaktiven Modus nicht liebt oder mit Skripten arbeiten will,
kann die einzelnen Variablen auch per Befehl setzen. Dafür gibt es
den Befehl omd config set
. Folgendes Beispiel setzte die Variable
CORE
auf cmc
:
OMD[mysite]:~$ omd config set CORE cmc
Wie immer können Sie das auch als root
aufrufen, wenn Sie den
Namen der Site als Argument mit angeben:
root@linux# omd config mysite set CORE cmc
Die aktuelle Belegung aller Variablen bekommen Sie mit omd config show
:
OMD[mysite]:~$ omd config show
APACHE_MODE: own
APACHE_TCP_ADDR: 127.0.0.1
APACHE_TCP_PORT: 5000
AUTOSTART: off
CMCRUSHD: on
CORE: cmc
[...]
6.2. Häufig benötigte Einstellungen
In omd config
gibt es zahlreiche Einstellungen. Die Wichtigsten sind:
Variable | Standard | Bedeutung |
---|---|---|
CORE | cmc | Auswahl des Monitoringkerns. Neben dem Checkmk Micro Core (cmc) wird auch noch der klassische Nagios-Kern angeboten. In früheren Version war dieser per Default eingestellt. |
MKEVENTD | on | Aktiviert die Checkmk Event Console, mit der Sie Syslog-Meldungen, SNMP-Traps und andere Events verarbeiten können. |
MKNOTIFYD | on | Enterprise Editions: Aktiviert den Notification-Spooler. Dieser dient zum einen zur Weiterleitung von dezentral erzeugten Alarmen an ein zentrales System. Hier wird dann auf der zentralen und auf der dezentralen Seite jeweils der mknotifyd benötigt. Zum anderen kann damit ein asynchrones Zustellen von Benachrichtungen erreicht werden. |
AUTOSTART | on | Stellen Sie dies auf |
LIVESTATUS_TCP | off | Hiermit erlauben Sie Zugriff auf die Statusdaten dieser Site von außen. Damit kann ein verteiltes Monitoring aufgebaut werden. Auf der zentralen Instanz kann dann der Status dieser Instanz eingebunden werden. Bitte aktivieren Sie dies nur in einem abgesicherten Netzwerk. |
7. Kopieren und Umbenennen von Instanzen
Manchmal ist es zu Testzwecken oder für die Vorbereitung eines Updates
nützlich, wenn man eine Kopie einer Instanz erzeugt. Natürlich
könnte man jetzt einfach das Verzeichnis /omd/sites/alt
nach
/omd/sites/neu
kopieren. Das würde aber so nicht funktionieren,
denn:
In vielen Konfigurationsdateien ist der Name der Site enthalten.
Auch tauchen an etlichen Stellen absolute Pfade auf, die mit
/omd/sites/alt
beginnen.Nicht zuletzt muss es einen Benutzer samt zugehöriger Gruppe mit dem Namen der Site geben, dem alles gehört.
Um das Kopieren einer Instanz zu vereinfachen, gibt es daher den Befehl
omd cp
, welcher all das berücksichtigt. Die Verwendung ist denkbar
einfach. Geben Sie als Argumente einfach den Namen der bestehenden Site
und dann den Namen der neuen an, z.B.:
root@linux# omd cp alt neu
Das Kopieren geht nur, wenn
die Site gestoppt ist und
keine Prozesse mehr laufen, die dem Instanz-Benutzer gehören.
Beides stellt sicher, dass die Instanz zum Zeitpunkt des Kopierens in einem konsistenten Zustand ist und sich auch während des Vorgangs nicht ändert.
7.1. Datenmengen einschränken
Wenn Sie eine größere Zahl von Hosts überwachen, können die Datenmengen,
die kopiert werden müssen, schon ganz erheblich sein. Der Großteil wird dabei
durch die Performancedaten verursacht, die in RRD-Dateien gespeichert sind.
Aber auch die Logdateien mit historischen Ereignissen können größere Datenmengen
erzeugen. Wenn Sie die Historie nicht benötigen (z.B. weil Sie einfach etwas
testen möchten), können Sie diese beim Kopieren auslassen. Dazu dienen
folgende Optionen, die Sie bei omd cp
angeben können:
--no-rrds | Lässt beim Kopieren die Performancedaten (RRDs) wegl |
--no-logs | Lässt alle Logfiles und übrige historische Daten weg. |
-N | Dies ist eine Abkürzung für |
Die Position der Optionen ist dabei wichtig:
root@linux# omd cp --no-rrds alt neu
7.2. Instanzen umbenennen
Das Umbenennen einer Instanz geht mit dem Befehl omd mv
. Dies geschieht analog
zum Kopieren und hat die gleichen Vorbedingungen. Die Optionen zum Beschränken der
Datenmengen existieren hier nicht, weil die Dateien ja einfach nur in ein
anderes Verzeichnis verschoben und nicht dupliziert werden. Beispiel:
root@linux# omd mv alt neu
7.3. Weitere Optionen von cp und mv
Bei beiden Operationen werden genauso wie bei create
neue Linux-Benutzer
angelegt. Deswegen gibt es hier auch einige der Optionen von omd create
:
-u UID | Der neue Benutzer wird mit der User-ID UID angelegt. |
-g GID | Die Gruppe des neuen Benutzers wird mit der Group-ID GID angelegt. |
--reuse | OMD geht davon aus, dass der neue Benutzer bereits existiert und legt ihn nicht an. |
-t SIZE | Das |
8. Änderungen anzeigen mit omd diff
Beim Erzeugen einer neuen Checkmk-Instanz bevölkert der Befehl omd
create
das Verzeichnis etc
mit vielen vordefinierten
Konfigurationsdateien. Auch unter var
und local
werden
etliche Verzeichnisse angelegt.
Nun ist es wahrscheinlich so, dass Sie im Laufe der Zeit einige der Dateien
anpassen werden. Wenn Sie nach einiger Zeit feststellen möchten, welche
Dateien nicht mehr dem Auslieferungszustand entsprechen, können Sie das
mit dem Befehl omd diff
herausfinden. Nützlich ist dies unter
anderem vor einem Update von Checkmk, da hier Ihre Änderungen
möglicherweise mit Änderungen der Defaultdateien im Konflikt stehen.
Bei einem Aufruf ohne weitere Argumente sehen Sie alle geänderten Dateien:
OMD[mysite]:~$ omd diff
* Deleted var/log/nagios.log
* Changed content var/check_mk/wato/auth/auth.php
* Changed content etc/htpasswd
! Changed permissions etc/htpasswd
* Changed content etc/diskspace.conf
* Changed content etc/auth.secret
* Changed content etc/apache/apache.conf
Sie können beim Aufruf auch ein Verzeichnis angeben:
OMD[mysite]:~$ omd diff etc/apache
* Changed content etc/apache/apache.conf
Wenn Sie die Änderungen in der Datei im Detail sehen möchten, geben Sie einfach den kompletten Namen der Datei an:
OMD[mysite]:~$ omd diff etc/apache/apache.conf
--- /dev/fd/63 2017-01-24 09:14:46.248968199 0100#
[green]#++ /omd/sites/mysite/etc/apache/apache.conf 2017-01-24 09:12:37.705355164 +0100
@@ -66,8 +66,8 @@
StartServers 1
MinSpareServers 1
MaxSpareServers 5
-ServerLimit 128
-MaxClients 128
+ServerLimit 64
+MaxClients 64
MaxRequestsPerChild 4000
###
9. Instanzen sichern und wiederherstellen
9.1. Instanzen sichern mit omd backup
Die Instanzverwaltung von Checkmk hat einen eingebauten Mechanismus zum
Sichern und Wiederherstellen von Checkmk-Instanzen. Die Grundlage davon
sind die Befehle omd backup
und omd restore
, welche
alle Daten einer Instanz in ein tar-Archiv einpacken bzw. wieder
auspacken.
Ab Version 1.4.0 verfügt Checkmk zusätzlich über das WATO-Modul Backup, welches Backup und Restore ohne Kommandozeile möglicht macht und auch das Einrichten von regelmäßigen Backupjobs erlaubt.
Das Sichern einer Instanz mit omd backup
erfordet keine root
-Rechte.
Sie können es als Instanz-Benutzer ausführen. Geben Sie einfach als Argument den
Namen einer zu erzeugenden Backupdatei an:
OMD[mysite]:~$ omd backup /tmp/mysite.tar.gz
Bitte beachten Sie dabei:
Der erzeugte Dateityp ist ein gzip-komprimiertes tar-Archiv. Verwenden Sie daher
.tar.gz
oder.tgz
als Dateiendung.Legen Sie die Sicherung nicht in das Instanzverzeichnis. Denn dieses wird ja komplett gesichert. So würde jedes weitere Backup alle bisherigen als Kopie enthalten!
Wenn das Zielverzeichnis der Sicherung nicht als Instanz-Benutzer schreibbar
ist, können Sie die Sicherung auch als root
-Benutzer durchführen.
Dazu benötigen Sie wie immer als zusätzliches Argument den Namen der
zu sichernden Instanz:
root@linux# omd backup mysite /var/backups/mysite.tar.gz
Die Sicherung enthält alle Daten der Instanz — außer den flüchtigen Daten
unterhalb von tmp/
. Sie können mit dem Befehl tar tzf
einfach einen Blick in die Datei werfen:
OMD[mysite]:~$ tar tvzf /tmp/mysite.tar.gz | less
lrwxrwxrwx mysite/mysite 0 2017-01-24 09:02 mysite/version -> ../../versions/2017.01.16.cee
drwxr-xr-x mysite/mysite 0 2017-01-24 09:12 mysite/
drwxr-xr-x mysite/mysite 0 2017-01-24 09:02 mysite/local/
drwxr-xr-x mysite/mysite 0 2017-01-24 09:02 mysite/local/share/
drwxr-xr-x mysite/mysite 0 2017-01-24 09:02 mysite/local/share/nagvis/
drwxr-xr-x mysite/mysite 0 2017-01-24 09:02 mysite/local/share/nagvis/htdocs/
drwxr-xr-x mysite/mysite 0 2017-01-24 09:02 mysite/local/share/nagvis/htdocs/userfiles/
drwxr-xr-x mysite/mysite 0 2017-01-24 09:02 mysite/local/share/nagvis/htdocs/userfiles/styles/
drwxr-xr-x mysite/mysite 0 2017-01-24 09:02 mysite/local/share/nagvis/htdocs/userfiles/scripts/
drwxr-xr-x mysite/mysite 0 2017-01-24 09:02 mysite/local/share/nagvis/htdocs/userfiles/templates/
drwxr-xr-x mysite/mysite 0 2017-01-24 09:02 mysite/local/share/nagvis/htdocs/userfiles/gadgets/
9.2. Backup ohne Historie
Der Löwenanteil der Daten einer Instanzsicherung sind die in den RRDs
aufgezeichneten Messdaten. Auch die Monitoringhistorie kann
sehr groß werden. Wenn Sie beides nicht zwingend benötigen, können Sie
mit folgenden Optionen auf historische Daten
verzichten und so die Sicherung deutlich kleiner und schneller machen.
Die Optionen müssen jeweils hinter das Wort backup
gestellt werden:
--no-rrds | Verzichtet auf die Sicherung der RRD-Datenbanken (Messdaten). |
--no-logs | Verzichtet auf die in den Logdateien gespeicherte Monitoringhistorie. |
-N | Ist eine Abkürzung für |
Beispiel:
OMD[mysite]:~$ omd backup -N /tmp/mysite.tar.gz
9.3. Backup bei laufender Instanz
Die Sicherung ist nicht darauf angewiesen, dass die Instanz gestoppt ist
und kann auch bei einem laufenden System durchgeführt werden. Um einen
konsistenten Stand der für das Aufzeichnen der Messdaten
verwendeten RRDs zu gewährleisten, versetzt der Befehl omd
backup
den Round-Robin-Cache automatisch in einen Modus, bei dem
laufende Updates nur noch in das Journal und nicht mehr in die RRDs geschrieben
werden. Die Journaldateien werden zu allerletzt gesichert. Damit wird erreicht,
dass möglichst viele der Messdaten, die während der Sicherung angefallen
sind, noch mitgesichert werden.
9.4. Restore
Das Zurückspielen einer Sicherung ist ebenso einfach wie das Sichern selbst.
Der Befehl omd restore
stellt eine Instanz aus einer Sicherung
wieder her. Dies ist sogar als Instanz-Benutzer möglich. Die Instanz muss
dabei gestoppt sein. Die Instanz wird dabei nicht neu angelegt (was
root
-Rechte erfordern würde), sondern komplett geleert und
neu befüllt:
OMD[mysite]:~$ omd stop
OMD[mysite]:~$ omd restore /tmp/mysite.tar.gz
Nach dem Restore muss die Instanz noch gestartet werden:
OMD[mysite]:~$ omd start
Auch als root
-Benutzer ist ein Wiederherstellen möglich. Falls noch
eine Instanz mit dem gleichen Namen exisitert, müssen Sie diese allerdings
vorher entfernen. Das können Sie entweder mit einem omd rm
erledigen
oder einfach die Option --reuse
mit angeben. Ein --kill
sorgt
zusätzlich dafür, dass die noch bestehende Instanz vorher gestopp wird.
Den Namen der Instanz brauchen Sie beim restore
nicht anzugeben,
da dieser in der Sicherung enthalten ist:
root@linux# omd restore --reuse --kill /var/backup/mysite.tar.gz
root@linux# omd start mysite
Bei Verwendung als root
können Sie Instanzen auch mit einem anderen
Namen als dem in der Sicherung wiederherstellen. Geben Sie dazu den gewünschten
Namen als Argument hinter dem Wort restore
an:
root@linux# omd restore mysite2 /var/backup/mysite.tar.gz
Restoring site mysite2 from /tmp/mysite.tar.gz...
* Converted ./.modulebuildrc
* Converted ./.profile
* Converted .pip/pip.conf
* Converted etc/logrotate.conf
Die lange Liste der Konvertierungen, die hier stattfinden, hat den gleichen Grund wie bei dem weiter oben beschriebenen Umbenennen von Instanzen: Der Name der Instanz kommt in etlichen Konfigurationsdateien vor und wird hier automatisch durch den neuen Namen ersetzt.
9.5. Livemigration von Instanzen mit Backup & Restore
Die Befehle omd backup
und omd restore
können — in guter alter
Unix-Tradition — anstelle von Dateien auch über die Standard-Ein-/Ausgabe arbeiten.
Geben Sie hierzu anstelle eines Pfads für die tar-Datei einfach einen Bindestrich
an (-
).
Auf diese Art können Sie eine Pipe aufbauen und die Daten ohne Zwischendatei direkt auf einen anderen Rechner „streamen“. Je größer die Sicherung ist, desto nützlicher ist das, denn so wird kein temporärer Platz im Dateisystem des gesicherten Servers benötigt.
Folgender Befehl sichert eine Instanz per SSH auf einen anderen Rechner:
root@linux# omd backup mysite - | ssh user@otherserver "cat > /var/backup/mysite.tar.gz"
Wenn Sie den SSH-Zugriff umdrehen, sich also lieber vom Sicherungsserver auf die Checkmk-Instanz verbinden möchten, so geht auch das, wie folgendes Beispiel zeigt. Dazu muss zuvor ein SSH-Login als Instanz-Benutzer erlaubt werden:
root@otherserver# ssh mysite@checkmkserver "omd backup -" > /var/backup/mysite.tar.gz
Wenn Sie das geschickt mit einem omd restore
kombinieren, das die Daten von der
Standardeingabe liest, können Sie eine komplette Instanz im laufenden Betrieb von
einem Server auf einen anderen kopieren — und das ohne irgendeinen zusätzlichen Platz
für eine Sicherungsdatei:
root@otherserver# *ssh mysite@checkmkserver "omd backup -" | omd restore - *
Und jetzt nochmal das Ganze mit umgedrehtem SSH-Zugriff — diesmal wieder vom Quellsystem auf das Zielsystem:
root@linux# omd backup mysite - | ssh root@otherserver "omd restore -"