{{ icinga_macosx_passive.jpg?100|Mac passiv überwachen}}
Auch Macintosh-Geräte lassen sich mit einigen Handgriffen an ein Nagios-/Icinga-Monitoringsystem anbinden.
Dank der durch Freiwillige liebevoll gepflegten MacPorts können speziell für Mac OS X angepasste Pakete der OpenSource-Software NSCA (//und deren Abhängigkeiten//) installiert werden.
======Voraussetzungen======
Eine für das Release passende Version der MacPorts muss installiert werden - hierüber gibt es eine sehr ausführliche Dokumentation auf der MacPorts-Präsenz: [[http://guide.macports.org/#installing.macports]]
Die Installation ist recht unkompliziert - es muss lediglich das richtige DMG-Paket heruntergeladen und durch einen Doppelklick installiert werden.
======Installation======
NSCA benötigt libmcrypt, sofern eine Verschlüsselung verwendet werden soll (//empfohlen//). Ferner empfiehlt es sich die Nagios-Plugins zu installieren, um Checks durchzuführen.
Die Installation erfolgt mithilfe des Port-Tools:
# sudo port install libmcrypt
# sudo port install nagios-plugins
# sudo port install nsca
======Konfiguration======
Damit man **send_nsca** verwenden kann, wird die mitgelieferte Beispiel-Konfigurationsdatei kopiert und angepasst - insbesondere die Passwort- und Verschlüsselungsangaben müssen angepasst werden. Die Parameter müssen die gleichen wie im NSCA-Server sein:
# sudo mv /opt/local/etc/nsca/send_nsca.cfg.sample /opt/local/etc/nsca/send_nsca.cfg
# sudo vim /opt/local/etc/send_nsca.cfg
...
password=...
encryption_method=...
...
======Skript-Wrapper======
Um nachher Ereignisse an Nagios/Icinga zu senden, kann man im Prinzip das Skript **submit_check_result** [[http://docs.icinga.org/latest/de/distributed.html|aus der Icinga-Dokumentation]] adaptieren und anpassen (//da die Pfade für Mac OS X nicht stimmen//):
#!/bin/sh
# Arguments:
# $1 = host_name (Short name of host that the service is
# associated with)
# $2 = svc_description (Description of the service)
# $3 = state_string (A string representing the status of
# the given service - "OK", "WARNING", "CRITICAL"
# or "UNKNOWN")
# $4 = plugin_output (A text string that should be used
# as the plugin output for the service checks)
#
# Convert the state string to the corresponding return code
return_code=-1
case "$3" in
OK)
return_code=0
;;
WARNING)
return_code=1
;;
CRITICAL)
return_code=2
;;
UNKNOWN)
return_code=-1
;;
esac
# pipe the service check info into the send_nsca program, which
# in turn transmits the data to the nsca daemon on the central
# monitoring server
/usr/bin/printf "%s\t%s\t%s\t%s\n" "$1" "$2" "$return_code" "$4" | /opt/local/sbin/send_nsca -H central_server -c /opt/local/etc/nsca/send_nsca.cfg
======Inventory beim Boot======
Man kann sich natürlich auch einfach ein kleines Skript basteln, welches beispielsweise direkt nach dem Boot einen Check durchführt und diesen passiv an Nagios/Icinga weitergibt.
Mit dem folgenden Skript überprüfe ich den freien Speicherplatz meines Macs und gebe das Ergebnis an Nagios/Icinga weiter:
#!/bin/sh
WARNING=20
CRITICAL=10
HOSTNAME="mymac"
NAGIOS="192.168....."
SEND_NSCA="/opt/local/sbin/send_nsca"
SEND_NSCA_CONF="/opt/local/etc/nsca/send_nsca.cfg"
NAGIOS_PLUGINS="/opt/local/libexec/nagios"
#*** CHECK DISK***
RESULT="$($NAGIOS_PLUGINS/check_disk -c $CRITICAL -w WARNING -p /)"
/usr/bin/printf "%s\t%s\t%s\t%s\n" "$HOSTNAME" "FS: /" "$?" "$RESULT" | "$SEND_NSCA" -H "$NAGIOS" -c "$SEND_NSCA_CONF"
Getestet wurde das Ganze unter Mac OS X Lion - sollte auch auf anderen Versionen so funktionieren, sofern die Nagios-Plugins und NSCA über die MacPorts installiert wurden.
Das Skript verwendet einige Variablen, die an die eigenen Bedürftnisse angepasst werden können:
* **WARNING** und **CRITICAL** sind Variablen für die Schwellwerte der Festplattenbelegung in Prozent - hier entsprechen 20% freier Speicherplatz einer Warnung und 10% einem kritischen Hinweis
* **HOSTNAME** bezeichnet den Hostname der zu überwachenden Systems - für diesen Host wird das Ereigbnis an NSCA und somit an Nagios/Icinga übertragen
* **NAGIOS** steht für die IP-Adresse des Nagios-/Icinga-Systems.
* **SEND_NSCA** zeigt auf den Pfad, unter dem das **send_nsca**-Programm erreichbar ist
* **SEND_NSCA_CONF** zeigt auf den Pfad der **send_nsca**-Konfigurationsdatei einzusehen ist
* **NAGIOS_PLUGINS** steht für den Pfad, in welchem sich die Nagios-Plugins befinden
Die Ausführung des Skripts kann beispielsweise mit einem Cronjob gesteuert werden - für den Start nach dem (//Re//)boot steht der Alias **@reboot** zur Verfügung.
Alternativ kann man sich auch einen Cronjob für root bauen, der alle 2 Stunden dieses Skript ausführt:
# sudo crontab -e
* */2 * * * /opt/icinga_inventory.sh