Passwort vergessen?

Benutzername vergessen?

Alles rund um IT, Web und Entwicklung.
Von Nutzern für Nutzer.

Raspberry Pi - Temperatur per NRPE überwachen



Wird ein Raspberry Pi in produktiven Umgebungen eingesetzt, sollte auf jeden Fall auch eine Temperaturüberwachung über NRPE konfiguriert werden.



Hier bietet es sich an das System direkt in Nagios oder Icinga aufzunehmen. Die Abfrage erfolgt über NRPE (= Nagios Remote Plugin Executor).


Voraussetzungen


Zunächst muss auf dem Raspberry Pi NRPE installiert werden.

sudo apt-get install nagios-nrpe-server

Um zukünftig auch weitere Parameter wie z.B. CPU Last, Speicherplatz, RAM, etc. überwachen zu können, empfiehlt es sich auch die Standardplugins von NRPE zu installieren.

sudo apt-get install nagios-plugins-basic


CPU Temperatursensor


Das Raspberry Pi besitzt eine Reihe interner Sensoren, mit welchen sich z.B. auch die CPU Temperatur des SoC abfragen lässt.

Hierzu greifen wir auf /sys/class/thermal/thermal_zone0/temp zurück, welches uns die aktuelle Temperatur zurückgibt.

cat /sys/class/thermal/thermal_zone0/temp


Check Skript


Im nächsten Schritt legen wir das Check Skript check_pi_temp im Verzeichnis /usr/lib/nagios/plugins an.


Anschließen wird die Datei noch ausführbar gemacht.

chmod +x /usr/lib/nagios/plugins/check_pi_temp


Konfiguration


Nun können wir die NRPE Konfiguration anpassen. Diese befindet sich unter /etc/nagios/nrpe.cfg.

Hier muss der prüfende Nagios / Icinga Server zu den allowed_hosts hinzugefügt (in unserem Fall 192.168.1.100) und die Parameterübergabe aktiviert werden.

allowed_hosts=192.168.1.100
dont_blame_nrpe=1


Weiter unten in der Konfiguration fügen wir den neuen Check hinzu.

command[check_temp]=/usr/lib/nagios/plugins/check_pi_temp -w $ARG1$ -c $ARG2$

Abschließend den NRPE Dienst einmal neustarten und dem Autostart hinzufügen.

sudo service nagios-nrpe-server restart
update-rc.d nagios-nrpe-server defaults



Einbindung in Nagios / Icinga


Im letzten Schritt kann der Service im Nagios bzw. Icinga Server definiert werden. In nachfolgendem Beispiel wird der Service bei 60 °C auf Warning und bei 70 °C auf Critical gesetzt.


Nagios / Icinga 1


define service {
   use                     generic-service
   host_name               raspberrypi
   service_description     CPU Temp
   check_command           check_nrpe!check_temp!60!70
}


Icinga 2


Für Icinga 2 muss zunächst das CheckCommand für NRPE in der Datei /etc/icinga2/conf.d/commands.conf hinzugefügt werden.

object CheckCommand "check_nrpe" {
   import "plugin-check-command"
   command = [ PluginDir + "/check_nrpe" ]
   arguments = {
      "-H" = "$nrpe_address$"
      "-p" = "$nrpe_port$"
      "-c" = "$nrpe_command$"
      "-a" = {
         value = "$nrpe_args$"
         repeat_key = false
         order = 1
     }
   }

   vars.nrpe_address = "$address$"
   vars.nrpe_port = 5666
}


Bei der Definition des Hosts fügen wir nun den neuen Service an.

object Service "CPU Temp" {
   import "generic-service"
   host_name = "raspberrypi"
   check_command = "check_nrpe"
   vars.nrpe_command = "check_temp"
   vars.nrpe_args = [ "60", "70" ]
}


Zum Abschluss Nagios bzw. Icinga Konfiguration neu einlesen.

sudo service nagios reload


Fazit


Dank des eingebauten Temperatursensors auf der CPU lässt sich das Raspberry Pi sehr leicht mittels NRPE überwachen. Je nach Betriebsumgebung sollten die Schwellenwerte natürlich angepasst werden. In klimatisierten Umgebungen bleibt die CPU meist unter 50 °C.

Quellen: Raspberry Pi Logo

Michael Kostka

Fachinformatiker / Systemintegration
Ich schreibe hier regelmäßig zu den Themen Android, Web, Linux und Hardware.

Raspberry Pi Starter Kit
DataCloud

Hinterlasse einen Kommentar

Ich habe die Datenschutzerklärung zur Kenntnis genommen und stimme einer elektronischen Speicherung und Verarbeitung meiner eingegebenen Daten zur Beantwortung der Anfrage zu.

Christian Piazzi

30.07.2017 13:12

Moin Michael,

du hast einen kleinen Fehler in der Command Definition:

command [ PluginDir + "/check_nrpe" ]

Hier muss noch ein = dazwischen.

command = [ PluginDir + "/check_nrpe" ]

Ansonsten super =)

Gruß
Christian