{{ 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