Nagios MongoDB Check mit check_mongodb und Pymongo

Läuft auf einem Server MongoDB bietet es sich an, den Dienst mit Nagios zu überwachen. Hierfür gibt es einen simplen Plugin namens check_mongodb.py der auf pymongo basiert. 

Im Prinzip funktioniert das Installiere genauso wie bei allen anderen Plugins auch. Man muss nur zuerst sicherstellen, dass der MongoDB Python Treiber pymongo installiert ist. Vorausgesetzt Python Skripte können ausgeführt werden (auf Debian standardmäßig möglich) lässt sich dieser einfach herunterladen und einrichten.

wget --no-check-certificate https://github.com/mongodb/mongo-python-driver/archive/master.zip
unzip master.zip
cd mongo-python-driver-master
python setup.py install

Danach kann check_mongodb.py runtergeladen und in das Plugin-Verzeichnis verschoben werden.

wget --no-check-certificate https://github.com/mzupan/nagios-plugin-mongodb/archive/master.zip
unzip master.zip
cd nagios-plugin-mongodb-master
mv check_mongodb.py /usr/lib/nagios/plugins/

Dann bearbeiten wir die Datei /etc/nagios/nrpe.cfg und fügen dort folgendes Kommando hinzu:

command[check_mongodb]=/usr/lib/nagios/plugins/check_mongodb.py -A databases -W 200 -C 300

über den Parameter -A kann definiert werden, welcher Befehl ausgeführt werden soll. Meiner Erfahrung funktioniert der connect Befehl nicht erwartungsgemäß, sondern returniert immer OK, auch wenn der MongoDB Service gestoppt ist. Deshalb nutze ich den databases Befehl, der die Anzahl der Datenbanken zählt. Fällt der Service aus, wirft dieser richtigerweise einen Verbindungsfehler. Hier muss jetzt nur ein Warning- und Critical-Threshhold definiert werden, sonst erscheint jede beliebige Anzahl an gefundenen Datenbanken als Critical. Also Werte für -W und -C eingeben, die für den eigenen Fall unrealistisch zu erreichen sind (in meinem Fall alles über 200).

Danach den Service neustarten mit

service nagios-nrpe-server restart

und dann zum Monitor wechseln um die Überwachung zu aktivieren. Das geht über die serverspezifische Konfig-Datei /etc/nagios3/conf.d/server1_nagios2.cfg mit einem neuen Dienst:

define service{
        use                     generic-service
        host_name               server1
        service_description     RAM
        check_command           check_nrpe_1arg!check_mongodb
}

Jetzt noch Nagios neustarten (service nagios3 restart) und schon kanns losgehen mit der RAM Überwachung.