Nagios: check_by_ssh mit nrpe kombinieren für DMZ

Das Problem: $KUNDE hat einen Nagios welcher außerhalb einer DMZ steht. Um diese zu erreichen zu können, gibt es ein Tor, welches nur SSH durchlässt, nach innen, wie nach außen.
Damit er die Rechner innerhalb der DMZ prüfen kann, wird derzeit ein Sammelsurium aus Skripten und NSCA verwendet, für passive Checks.
Dieses Konstrukt lässt sich vereinfachen, wenn die Rechner innerhalb der DMZ Ports verwenden dürfen. Das folgendende, neben- stehende und spontan entstandene Bild, soll dies verdeutlichen:

Nagios und Rechner in einer DMZ

Das Wunderbare an den Nagios Plugins besteht darin, dass sie kein Nagios benötigen. Genau dieses Verhalten machen wir uns zu nutze. Nagios setzt einen aktiven Check mittels

check_by_ssh

ab und führt als Befehl eben den

check_nrpe

mit den entsprechenden Parametern ab, welcher wiederum einen NRPE Deamon abfragt, der auf den Rechner innerhalb der DMZ installiert wurde. Damit haben wir vieles vereinfacht:

  • Aktive Checks sind besser als passive ;-)
  • Der »freshness« Parameter muss nicht bemüht werden, da die Checks immer dem aktuellen Stand entsprechen
  • Es wunderbar erweiterbar und dank SSH sowie SSL sicher.
  • Es ließen sich auch nicht definierte Argumente vom Nagios aus mitgeben, sofern NRPE mit der Option übersetzt wurde
  • … und bestimmt noch viele mehr

Wie sieht nun eine entsprechende Konfiguration aus?

In der commands.cfg definieren wir zuerst zwei neue Kommandos:

[...]

define command{
   command_name ssh_check_dmz_icmp
   command_line $USER1$/check_by_ssh -H ssh-tor  \
   -C "$USER1$/check_icmp  -H $ARG1$"
}

define command{
   command_name ssh_check_dmz_rootdisk
   command_line $USER1$/check_by_ssh -H ssh-tor \
   -C "$USER1$/check_nrpe  -H $ARG1$ -c check_hda5"
}

Ersterer sorgt ohne noch NRPE dafür, dass wir einen Ping absetzen können, mittels

check_icmp

, dem Nachfolger des alten

check_ping

und zwar von unserem (SSH)Tor zu einem der Rechner in der Burg DMZ. Als Argument wird einfach der Rechnername/IP mitgegeben.

Zweites Kommando prüft den Datenträger »/dev/hda5« und zwar mittels

check_nrpe

. Das bedeutet,

check_hda5

ist also ein Kommando, welches in der nrpe.cfg Daemon Konfig definiert wurde. Ich hätte es also auch genauso gut

check_rootdisk

nennen können.

Nun folgt die host.cfg, in der der DMZ Rechner definiert wird:

define host{
  use linux-server
  host_name dmzpc01
  address 192.168.198.101
  check_command ssh_check_dmz_icmp!dmzpc01
}

define service{
  use generic-service
  host_name dmzpc01
  service_description Check rootdisk
  check_command ssh_check_dmz_rootdisk!dmzpc01
}

Unser Rechner innerhalb der DMZ hat hier also den Namen »dmzpc01«. Um den Status des jeweiligen zu überprüfen, loggt sich Nagios über SSH ein und ruft von dort das NRPE Plugin auf und schon erhält Nagios einen frischen Status.
Statt »dmzpc01« als Argument, täte es auch eine IP Adresse (was im allgemeinen besser wäre) od. vermutlich auch

$HOSTADDRESS$

. Dann holt er sich die IP direkt aus der Hostconfig.

Überhaupt, ob die Wahl von IP oder Hostname ist nicht so einfach zu lösen, wenn die Systeme Redundant ausgelegt sind. Verlässt sich der Admin auf DNS, kann man die IP schnell per DNS umschalten, auf unser Ersatz Tor. Fällt DNS aus, hat Admin ein Problem, wobei sich dies mit einer /etc/hosts lösen ließe, dann aber wiederum statisch wäre (eventuell in der nsswitch die Reihenfolge ändern »dhcp file«).
Wird dagegen die IP umgezogen, ist IP definitiv zu bevorzugen.

Deine IP ist:
38.107.179.206

1 Trackback

  • von Tom Schimana am Februar 27, 2008 um 9:45 Uhr

    Nagios-Cecks über SSH…

    Bei Denny Schierz findet ihr einen Beitrag darüber, wie mit Nagios über SSH Abfragen, z.B. in ein DMZ, durchgeführt werden.
    Popularity: unranked [?]……