====== Mail-Queue via NRPE checken ====== Dieses kleine HowTo soll zeigen, wie sich eine Mail-Queue auf einem entfernten Host via NRPE überwachen lässt. ===== Aufgabenstellung ===== Einrichten eines Checks zur Überwachung einer Mail-Queue auf einem Linux-Server im Netzwerk. **Problem:** Der Nagios-User hat auf die Queue keine Zugriffsrechte (was aus Sicherheitsgründen auch sinnvoll ist und nicht geändert werden sollte) ===== Lösungsansatz ===== Der Nagios-User darf mit Hilfe von **sudo** das Plugin **check_mailq** mit root-Rechten ausführen und hat somit lesenden Zugriff auf die Mail-Queue. ===== HowTo ===== ==== Voraussetzungen ==== * Funktionierende NRPE-Installation * Das Programm sudo ==== Lösungsschritte ==== 1. Mittels des Editors visudo (eine erweiterte Version des Editors vi) die Datei /etc/sudoers bearbeiten und folgende Zeile hinzufügen nagios ALL=(root) NOPASSWD: //check_mailq 2. Im Pluginverzeichnis eine Datei mit Namen **check_mailq_sudo** und folgendem Inhalt anlegen: #!/bin/bash //sudo //check_mailq $@ 3. Der eben erstellten Datei executable-Rechte geben chmod 755 check_mailq_sudo 4. In die **nrpe.cfg** muss nun noch folgende Zeile hinzugefügt werden command[check_mailq]=//check_mailq_sudo -M -w -c 5. Ebenfalls muss eine Pfadangabe in der Datei **check_mailq** angepasst werden. use lib "/" ; 6. Nun muss noch der NRPE-Daemon neu gestartet werden und der Überwachung steht nichts mehr im Wege ;-) ===== Troubleshooting ===== **NRPE unable to read output** Problem: check_mailq_sudo funktioniert lokal auf dem entfernten Host, der Service auf dem Nagios Server liefert aber "NRPE unable to read output". Lösung: Mit visudo die sudoers-Datei bearbeiten und folgenden Eintrag entfernen oder kommentieren, der sudo nur für interaktive Sessions erlaubt. Defaults requiretty ===== Ergänzung ===== Ich hatte den Fehler ERROR: is not executable by (uid *:gid(* *)) Das Problem lag daran das zur Zeit der Plugin Kompilierung, der Mailserver nicht installiert war und daher der Eintrag $PATH_TO_MAILQ = "/usr/bin/mailq"; in //utils.pm nicht eingetragen war.