Icinga2: Ein NAS4Free mit NRPE überwachen

Als NAS verwende ich bei uns zu Hause NAS4Free. Um dies mit Icinga2 zu überwachen scheint mir aktuell das NRPE verfahren das einfachste zu sein. Die Installation ist wie immer “ganz” einfach. Hier die Dokumentation meiner Schritte.

Auf dem Icinga2 Server zuerst das NRPE Plugin installiert:

apt install nagios-nrpe-plugin

Dann auf dem NAS4Free Server wie hier beschrieben das NRPE Paket installiert:

pkg update
pkg install nrpe-2.15_6
Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.
The following 5 package(s) will be affected (of 0 checked):    
New packages to be INSTALLED:
    nrpe: 2.15_6
    nagios-plugins: 2.2.0_2,1
    perl5: 5.24.1
    gettext-runtime: 0.19.8.1_1
    indexinfo: 0.2.6
....
.....

Message from nrpe-2.15_6:
**********************************************************************

 Enable NRPE in /etc/rc.conf with the following line:

   nrpe2_enable="YES"

 A sample configuration is available in /usr/local/etc/nrpe.cfg.sample.
 Copy to nrpe.cfg where required and edit to suit your needs.

**********************************************************************

vi /etc/rc.conf
    nrpe2_enable="YES"

und den Icinga2 Monitoring Server zulassen:

vi /usr/local/etc/nrpe.cfg
    allowed_hosts=127.0.0.1, <icinga2 ip>

Welche Kommandos aufgerufen werden wird auch in der Datei /usr/local/etc/nrpe.cfg festgelegt. Standardmäßig sind dort nur “fest verdrahtete” Befehle festgelegt. Das hier habe ich eingetragen um eine angeschlossene USV testen zu können:

    command[check_usv]=/usr/local/libexec/nagios/check_ups -u caseriousv
/usr/local/etc/rc.d/nrpe2 restart

und kann das vom Icinga Server testen. (ohne -n ging es nicht da SSL nicht richtig eingerichtet war. Das brauche ich hier intern erst mal nicht).

/usr/lib/nagios/plugins/check_nrpe -n -H nas -c check_usv

Auf dem Icinga2 Server habe ich dann in der Host Definition des NAS Services die zu überwachenden Services eingetragen

 object Service "USV" {
 import "generic-service"
 host_name = "nas"
 check_command = "nrpe"
 vars.remote_nrpe_command = "check_usv"
 vars.nrpe_no_ssl = true
 }
 
 object Service "Firstpool" {
 import "generic-service"
 host_name = "nas"
 check_command = "nrpe"
 vars.remote_nrpe_command = "check_Firstpool"
 vars.nrpe_no_ssl = true
 }

Dann sieht das Ergebnis so aus: