check_by_ssh mit Icinga 2

tips and tricksAb und zu stehe ich vor dem Problem, dass ich auf einem zu überwachenden System den Icinga 2 Agent nicht benutzen kann.
Anstatt irgendwie das alte (und teils unsichere) NRPE zu benutzen, greife ich dann oft gerne auf check_by_ssh zurück.
Ein Remote-Check funktioniert relativ einfach:

.../check_by_ssh -H web1.example.com -l monitoring -i /etc/icinga2/secure/id_rsa -C '/usr/lib/nagios/plugins/check_users -w 3 -c 5'

Wie man an der Kommandozeile erahnen kann, rufen wir hier einfach per SSH ein Nagios Plugin auf.
Nun habe ich in der Icinga 2 Welt den Vorteil, dass ich saubere Kommandozeilen bauen kann, d.h. Icinga 2 kümmert sich darum, einen Befehl zu bauen, in dem alle Parameter sauber formatiert, und auch “escaped” sind.
Das by_ssh CheckCommand in der Icinga 2 ITL bietet ein kleines Hilfsmittel dafür an, hier ein einfacher Service als Beispiel:
(mehr …)

Markus Frosch
Markus Frosch
Principal Consultant

Markus arbeitet bei NETWAYS als Principal Consultant und unterstützt Kunden bei der Implementierung von Nagios, Icinga und anderen Open Source Systems Management Tools. Neben seiner beruflichen Tätigkeit ist Markus aktiver Mitarbeiter im Debian Projekt.

Heute Solaris mit Icinga 2 überwacht

OpenSolarisLogo2Auch heute sind immer noch einige Solaris Kisten im Einsatz und wollen mit Icinga überwacht werden, wie heute beim Kunden in der schönen Stadt Leipzig. Da vom Icinga Projekt keine Pakete für Soalris zur Verfügung gestellt werden und ein Übersetzen für einige Hosts zu aufwendig scheint, bleibt neben NRPE nur noch die Überprüfung per SSH. Die benötigten Plugins gibt es mit Installationsanleitung auf OpenCSW.

template CheckCommand "by_ssh_base" {
  import "by_ssh"
  vars.by_ssh_plugindir = PluginDir
}
object CheckCommand "by_ssh_load" {
        import "load"
        vars.by_ssh_arguments = arguments
        arguments = null
        vars.by_ssh_command = "$by_ssh_plugindir$/check_load"
        import "by_ssh_base"
}

Seit Icinga 2 2.3.11 können mit dem CheckCommand by_ssh in Kombination mit weiteren, neue Commands zusammengeschraubt werden, die auf den bekannten, wie z.B. load basieren. Damit lassen sich dann auch die Custom Attribute von load und by_ssh für die eigenen Zwecke benutzen, um auf einem Host den sshd auf Port 222 anzusprechen und die Schwellwerte für den Load zu setzen.

object Host "solaris-kiste" {
  import "generic-host"
  vars.by_ssh_port = 222
  vars.load_wload1 = 2
  vars.load_cload2 = 4
  vars.by_ssh_plugindir = "/opt/csw/libexec/nagios/plugins"
}

Wer sich Tipparbeit sparen möchte, sind hier einige CheckCommands im obigen Stiel hinterlegt. Und natürlich lässt sich alles auch für andere Unix-Derivate adaptieren.

Lennart Betz
Lennart Betz
Senior Consultant

Der diplomierte Mathematiker arbeitet bei NETWAYS im Bereich Consulting und bereichert seine Kunden mit seinem Wissen zu Icinga, Nagios und anderen Open Source Administrationstools. Im Büro erleuchtet Lennart seine Kollegen mit fundierten geschichtlichen Vorträgen die seinesgleichen suchen.