Check_mk um (lokale) Tests erweitern

23. März 2010 | Von | Kategorie: Monitoring | Availability

Bei check_mk handelt es sich um eine Erweiterung für Nagios, die von Mathias Kettner entwickelt wird. Das Prinzip hinter check_mk ist einfach zu verstehen. Zunächst werden nicht mehr alle Checks gegen ein System separat durchgeführt, sondern durch check_mk im Block. Die Ergebnisse der Tests werden dann als passive Testergebnisse an Nagios oder auch Icinga übergeben. Für den Aufbau dieser Architektur ist auf dem Client ein check_mk_agent einzurichten – dieser lauscht standardmäßig auf dem Port 6556. Für den Nagios-Server wird dann nur noch das entsprechende check_mk-Plugin benötigt.

Soweit so gut, jedoch geht check_mk  noch einige Schritte weiter. Die Konfiguration für Nagios entfällt beim Einsatz von check_mk, weil sich das AddOn selbst um die Konfiguration und den Neustart von Nagios sorgt. Zusätzlich kann check_mk die verarbeiteten Performancedaten automatisch in Round-Robin-Datenbanken ablegen, so dass Nagios auch von diesem Arbeitsschritt entlastet wird. Die Ansicht der Performancedaten erfolgt dann mittels des AddON PNP4Nagios.

Nagios führt mittels check_mk für einen Host jeweils nur noch einen check_mk-Plugin-Aufruf aus, der Rest wird dann durch check_mk als passives Ergebniss an Nagios übermittelt. Die Überwachung von netzwerkbasierten Diensten kann dann separat wie gehabt realisiert werden. Alle lokalen Ressourcen oder Systemdaten werden mittels check_mk erfasst. Für die Installation von check_mk schaust du dir am Besten die Installationsanleitungen auf der Projektseite an.

Kommen wir nun zur Konfiguration von check_mk und damit zur Erweitung von Tests. Zunächsten können wir uns mittel einen einfachen Aufruf von check_mk einen Überblick über die Verzeichnisstrktur machen:

>./check_mk --path
Files copied or created during installation
Main components of check_mk                    : /usr/local/nagios/libexec/check_mk_modules/
Checks                                         : /usr/local/nagios/libexec/check_mk/
Check_MK's web pages                           : /usr/share/check_mk/web/
Check manpages (for check_mk -M)               : /usr/share/doc/check_mk/checks/
Binary plugins (architecture specific)         : /usr/lib/check_mk/
Startscript for Nagios daemon                  : /etc/init.d/nagios3
Path to Nagios executable                      : /usr/sbin/nagios3

Configuration files edited by you
Directory that contains main.mk                : /usr/local/nagios/etc/
Directory containing further *.mk files        : /usr/local/nagios/etc/conf.d/
Main configuration file of Nagios              : /etc/nagios3/nagios.cfg
Directory where Nagios reads all *.cfg files   : /etc/nagios3/conf.d/
Directory where Apache reads all config files  : /etc/apache2/mods-enabled/
Users/Passwords for HTTP basic authentication  : /etc/nagios3/htpasswd.users

Data created by Nagios/Check_MK at runtime
Base working directory for variable data       : /var/lib/check_mk/
Checks found by inventory                      : /var/lib/check_mk/autochecks/
Precompiled host checks                        : /var/lib/check_mk/precompiled/
Current state of performance counters          : /var/lib/check_mk/counters/
Cached output from agents                      : /var/lib/check_mk/cache/
Unacknowledged logfiles of logwatch extension  : /var/lib/check_mk/logwatch/
File into which Nagios configuration is written: /etc/nagios3/conf.d/check_mk_objects.cfg
Base directory of round robin databases        : /usr/local/pnp4nagios/var/perfdata/
Path to Nagios status.dat                      : /var/cache/nagios3/status.dat

Sockets and pipes
Nagios command pipe                            : /var/lib/nagios3/rw/nagios.cmd
Socket of Check_MK's livestatus module         : /var/log/nagios/rw/live

Diese Auflistung kann bei dir völlig anders aussehen, weil ich deine manuelle Installation vorgenommen haben und hierzu einige Verzeichnisse nicht Standardverzeichnisse sind. Nun haben wir die Liste der Verzeichnisse, wo was zu finden ist.

Anpassungen der Standardtests

Nun will ich dir zeigen, wie du die Standardtests, die mittels check_mk durchgeführt werden, an deine Bedürfnisse anpassen kannst. In meinem Beispiel möchte ich auf meinem Remote-System überwachen, ob dort ein sshd-Prozess läuft und zwar soll nur der Zustand okay rückgegeben werden, wenn genau eine Instanz  von /usr/sbin/sshd exisitiert.

Für das Monitoring bringt check_mk eine Vielzahl an Plugins mit, die alle über eine separate Manpage zur Dokumentation von Aufrufen und Konfigurationsparametern mitbringen.

>./check_mk -M ps

Bei ps handelt es sich um eines der check_mk-Plugins, mit deren Hilfe eine Prozessüberwachung erfolgen kann. Die Pugins liegen bei mir im Verzeichnis /usr/local/nagios/libexec/check_mk/. Bei diesen Dateien handelt es sich um Plugins, die ausschließlich mit check_mk funktionieren. Sie sollten auch niemals mit anderen Dateien in einem gemeinsamen Unterverzeichnis abgelegt werden, weil dies zu Fehlfunktionen von check_mk führen könnte.

Es gibt zwei Möglichkeiten check_mk an die eigenen Bedürfnisse anzupassen. Der eine Weg ist die direkte Konfiguration der jeweiligen Checks. Hierzu gibt es ein separates Verzeichnis in dem die userspezifischen Anpassungen vorgenommen werden können. In meinem Falle ist dies /usr/local/nagios/etc/conf.d. Alle Dateien, die in diesem Verzeichnis abgelegt werden und auf .mk enden werden durch check_mk automatisch ausgewertet.

Die manuelle Konfiguration für die Prüfung auf eine SSHD-Instanz würde daher wie folgt ausschauen:

checks += [
   ( "ssh.spenneberg.net", "ps", "SSHD", ("/usr/sbin/sshd",1,1,1,1) ),
]

Nach der Konfiguration des Checks können durch einen manuellen Aufruf von check_mk für das entsprechende Remote-System die neuen Checks und deren Ergebnisse direkt angezeigt werden.

./check_mk -v ssh.spenneberg.net
Reading default settings from /usr/local/nagios/libexec/check_mk_modules/defaults
Reading config file /usr/local/nagios/etc/main.mk...
Reading config file /usr/local/nagios/etc/conf.d/ssh.mk...
Check_mk version 1.1.2
...
proc_SSHD            OK - 1 processes
OK - Agent Version 1.1.2, processed 12 host infos

Nun muss für diesen Host noch eine entpsrechende Nagios-Konfiguration erstellt und Nagios neugestartet werden. Hierbei ist uns check_mk ebenfalls behilflich.

> ./check_mk -U
Generating Nagios configuration for hosts...OK
Generating Nagios configuration for services...OK
Precompiling host checks...OK
Successfully created Nagios configuration file /etc/nagios3/conf.d/check_mk_objects.cfg.

Please make sure that file will be read by Nagios.
You need to restart Nagios in order to activate the changes.
> ./check_mk -R
Generating Nagios configuration for hosts...OK
Generating Nagios configuration for services...OK
Validating Nagios configuration...OK
Precompiling host checks...OK
Restarting Nagios...OK

Mein Test auf den SSHD-Prozess wird nun für das konfigurierte System automatisch mit durchgeführt. Ein Blick auf das Nagios-Webinterface wird hier nach kurzer Zeit den Status des Checks anzeigen.

Nun habe ich einen neuen angepassten Check konfiguriert und in das Monitoring mit aufgenommen. Soweit so gut, jedoch wird dieser nicht für neue Systeme automatisch mit durchgeführt. Hierfür müssen inventarisierbare Checks erstellt werden. Wenn wir auf das Vorkommen bestimmter Prozesse automatisch testen wollen, dann ist dies mit check_mk schnell realisiert. Trage einfach die folgenden Zeilen in die zuvor erstellte Konfigurationsdatei ein und löschen den bisherigen Eintrag für das Testen des SSHD-Prozesses.

inventory_processes += [
   ( "SSH-Process", "/usr/sbin/sshd", "root", 1, 1, 1, 1),
 ]

Der Aufbau der Zeile, in dem der konkrete Prozess definiert wird, erklärt die check_mk-Manpage für ps:

Since Check_MK  cannot know  which processes  are of  relevance  to you, some configuration is needed.  The configuration is done via inventory_processes.  The  structure of that variable is a list of seven-tuples. It is similar but not completely the same  as  the  configuration of  manual checks.  The seven  components of  each entry  are: (1)  a service  description,  (2) a pattern (just as the first parameter of the check), (3) a user specification and  (4) - (7) the warning and critical levels for the number of processes.

Nun werden die entsprechenden Service-Definitionen für Nagios nur angelegt, wenn die Process-Definition in der check_mk-Konfiguration einmalig zutraf. Die Inventarisierung der Checks zeigt dieses direkt für das betreffenden System an.

./check_mk -I ssh.spenneberg.net
No such check type 'ssh.spenneberg.net'. Try check_mk -I list.
demo:/usr/local/nagios/bin# ./check_mk -I alltcp ssh.spenneberg.net
...
oracle_tbs            nothing new
ps                    1 new checks
services              nothing new
...

Anschließend ist die Nagios-Konfiguration wie breits zuvor beschrieben upzudaten und Nagios neuzustarten.

Das war es schon – so einfach kann dieses Nagios-AddOn an eigene Bedürfnisse angepasst werden. Ich werde in Zukunft sicherlich noch den einen oder anderen Post über check_mk verfassen. Ich habe hier nur einen sehr kleinen Teilbereich der Möglichkeiten von check_mk betrachtet  – Du darfst dich daher sicherlich schon jetzt über weitere Beiträge zum Thema freuen.

Dies kann auch in unserem neuen Demo-Server fürs Monitoring eingesehen werden.
Server: demo.monitoring.spenneberg.net/nagios3/
User: demo
Passwort: demo

Post to Twitter Post to Yahoo Buzz Post to Delicious Post to Digg Post to Facebook Post to Ping.fm Post to Reddit

Tags: | | |

Schreibe einen Kommentar

Fühle dich ermuntert einen Kommentar, Anmerkungen, Hinweise oder deine Ideen zum Thema zu hinterlassen. Wir freuen uns über deine Rückmeldung.