Mit seinem lüfterlosen Design, den minimalen Ausmaßen und seinem geringen Stromverbrauch bringt sich der Raspberry Pi sogar als Kandidat für einen Nagios-Server in Stellung, der sich sogar selbst überwachen kann. Was dafür nötig ist, untersucht dieser Artikel.
Die typischen Linux-Versionen für den ARM-Rechner sind vergleichbar mit denen der x86-Desktop-Kollegen, sodass auch eine Nagios-Installation kein Problem darstellt. Fällt allerdings der Strom aus, fällt – zumindest ohne weitere Absicherung – auch der ARM-Zwerg ins künstliche Koma, und daran hinge dann die Überwachung einer Vielzahl anderer Rechner. Ein ähnliches Schreckensszenario wäre der Ausfall des Netzwerks. Was tun? Der Minirechner müsste sich selbst kontrollieren.
Temperatur im Blick
Auch wenn der Raspberry Pi ein genügsamer Kamerad ist, sollten doch ein paar Randbedingungen erfüllt sein, die ihm das Leben zumindest erleichtern. Eine dieser Konditionen ist die Temperatur. Mit Bordmitteln kann der Anwender auslesen, wie heiß die CPU ist.
Dabei gibt es zwei Möglichkeiten: Erstens die Datei »temp« im Pseudo-Dateisystem »debugfs« (Listing 1). Die CPU-Temperatur ist dort in Millicelsius hinterlegt. Zweitens kann der Nutzer die Videocore-Werkzeuge ([1], [2]) benutzen – genauer das Kommando »vcgencmd« . Dessen Ausgabe ist für den Normalverbraucher eher verdaulich (Listing 1).
Listing 1
Auslesen der CPU-Temperatur
01 <$ cat /sys/class/thermal/thermal_zone0/temp 02 48692 03 04 $ vcgencmd measure_temp 05 temp=48.7'C
Laut Hersteller-Spezifikation sollte der ARM-Rechner im Temperaturbereich von 0 Grad bis 70 Grad keine Probleme bekommen. Dieser Bereich ist übrigens der kleinste gemeinsame Nenner aller Chips des Raspberry-Boards [3]. Die Temperaturüberwachung ist also sinnvoll. Die Entwicklung eines entsprechenden Moduls ist keine Herausforderung. Eine Beispiel-Implementierung in Shellcode findet sich im Github-Repository des Autors [4]. Auf Nagios-Exchange gibt es etwas Ähnliches [5].
Mit »vcgencmd« lässt sich noch eine Reihe anderer Parameter auslesen. Für experimentierfreudige Pi-Benutzer sind Werte wie Spannung oder Taktfrequenz eventuell beachtenswert (Tabelle 1). Der Autor war daran weniger interessiert und hat diese Werte daher nicht in sein Nagios-Plugin »check_rpi« (Abbildung 1)integriert.
Tabelle 1
Interna des Raspberry Pi abfragen
|
Argument/Option |
Bedeutung |
|---|---|
|
measure_clock |
Taktfrequenz verschiedener Komponenten |
|
measure_volts |
Spannung von Kern oder Speicher |
|
measure_temp |
Eigentemperatur |
|
get_mem |
Speicherzuweisung für die CPU und GPU |
|
codec_enabled |
Verfügbare Multimedia-Codecs |
|
version |
Firmwareversion |
Gefahr droht auch bei der Stromversorgung. Bei komplettem Stromausfall gibt’s gleich zwei Probleme. Das offensichtliche ist, dass der ARM-Zwerg selbst handlungsunfähig ist, wenn die externe Spannungszufuhr fehlt. Abhilfe schaffen externe Batterien, Akkupacks oder am besten eine USV. Eine speziell auf den Raspberry Pi zugeschnittene Lösung stellte ein Artikel im vorigen Linux-Magazin vor. Der Einsatz der dort beschriebenen USV Upis bewirkt, dass Nagios erst mal weiterläuft, wenn kein Strom aus der Steckdose kommt.
Es gibt noch ein weiteres Problem: Die Benachrichtigung per E-Mail oder SMS über so genannte SMS-Gateways ist dann mit sehr großer Wahrscheinlichkeit auch nicht mehr möglich. Im Normalfall setzt diese Kommunikation auf einer Infrastruktur auf, die ohne Strom auch nicht mehr arbeitet. Hier kann das gute alte Mobilfunknetz helfen.
Eine Möglichkeit wäre der Anschluss eines geeigneten USB-Sticks an den Raspberry Pi. In vielen Fällen benötigen diese Geräte aber so viel Spannung, dass man einen aktiven USB-Hub benutzen muss. Fällt der Strom aus, sind hier wieder Probleme programmiert. Die Alternative ist ein einfaches Mobiltelefon.
Upis, bitte melde dich
Ist die schicke USV Upis an den Rasp-berry Pi angeschlossen, kann Nagios auch einen Blick auf die wichtigen Parameter dieses Geräts werfen. Die USV verfügt über einen I2C-Bus [6], auf den der ARM-Zwerg zugreifen kann. An dieser Stelle sei nochmal ein Firmware-Upgrade der Upis-Einheit empfohlen, da neuere Versionen zusätzliche Status-Informationen zugänglich machen.
Eine aktuelle Liste der I2C-Register und ihrer Funktionen ist unter [7] zu finden. Auf der Raspberry-Seite benötigt der Nagios-Admin noch die »i2c-tools« [8] – und schon kann es losgehen. Wer es langsam angehen will, prüft zunächst mit »i2cdetect« , ob die in der Dokumentation erwähnten Register auch tatsächlich zugänglich sind.
Das Beispiel in Listing 2 zeigt die eines aktuellen Raspberry Pi B. Die gefundenen Register sind »0x69« , »0x6a« und »06b« , das deckt sich mit den Angaben der Datei [7]. Wem ein Test nicht genügt, der kann mit »i2cdump« noch tiefer graben. Dann zeigt sich, ob tatsächlich Daten über den Datenbus gehen (Listing 2).
Listing 2
Register mit den I2C-Tools prüfen.
01 $ i2cdetect -y 1 02 0 1 2 3 4 5 6 7 8 9 a b c d e f 03 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 04 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 05 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 06 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 07 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 08 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 09 60: -- -- -- -- -- -- -- -- UU 69 6a 6b -- -- -- -- 10 70: -- -- -- -- -- -- -- -- 11 $ 12 $ i2cdump -y 1 0x69 b| head -3 13 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef 14 00: 57 53 16 07 01 11 14 00 00 ff ff ff ff ff ff ff WS?????......... 15 10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ 16 $ 17 $ i2cdump -y 1 0x6a b| head -3 18 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef 19 00: 02 11 04 84 04 96 04 40 00 47 04 39 02 01 ff ff ???????@.G?9??.. 20 10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ 21 $ 22 $ i2cdump -y 1 0x6b b| head -3 23 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef 24 00: 6d 00 ff 1e 00 ff 00 00 00 00 05 01 00 00 00 00 m..?......??.... 25 10: 00 00 00 00 ff ff ff ff ff ff ff ff ff ff ff ff ................
Ein genauer Blick in die eben erwähnte Liste zeigt, dass der Status der Stromversorgung der Upis unter der Adresse »0x6a 0x00« zu finden ist. Genau genommen steht dort, wie das Gespann aus Raspberry und Upis seinen Strom bezieht. Im Beispiel von Listing 2 steht »02« . Das bedeutet, dass die Spannung am USB-Port der USV anliegt. Fehlt die externe Stromversorgung, steht im Status-Register eine »04« . Weitere mögliche Zustände sind in Tabelle 2 aufgelistet [9].
Tabelle 2
Status der Spannungsversorgung
|
Register-Wert |
Bezeichner |
Erklärung |
|---|---|---|
|
01 |
EPR |
externe Spannungsquelle |
|
02 |
USB |
USB-Port der USV |
|
03 |
RPI |
USB-Port des Raspberry Pi |
|
04 |
BAT |
Akku der USV |
|
05 |
LPR |
wie BAT, aber Raspberry ist abgeschaltet |
Nun braucht der Admin nur noch das Nagios-Plugin, das diesen Register-Wert überwacht und auswertet. Der Autor war bei einer entsprechenden Internetrecherche nicht erfolgreich und schrieb es daher kurzerhand selbst [10]. Übrigens hat die USV ebenfalls einen Temperatursensor. Doppelt hält besser. Daher befindet sich eine entsprechende Prüfroutine im Lieferumfang des Nagios-Plugins »check_upis« (Abbildung 2).
Mit den Temperaturwerten des Raspberry Pi und seiner USV und dem Status der Stromversorgung stehen die wichtigsten Parameter unter der Aufsicht von Nagios. So kann der Wächter seinen eigenen Gesundheitszustand überprüfen und kommunizieren. Ein Aufbohren durch die Überwachung weiterer Parameter der USV ist einfach möglich. Gute Dienste leistet hier das kleine C-Programm, dessen Quelltext unter [11] zu finden ist.
Zweites Leben für ein Handy
Apropos Kommunikation: Die ist eine Herausforderung beim Totalausfall der Stromversorgung. Grob skizziert besteht die Lösung aus dem Koppeln des Raspberry Pi mit einem Handy per Bluetooth und der Verwendung geeigneter Software. Ersteres ist ausgesprochen problemlos. Linux-taugliche USB-Adapter für diesen Kurzstreckenfunk gibt es reichlich. Eine einfache Internetrecherche führt schnell zum Ziel.
Wer unsicher ist, kann das Ergebnis noch bei Raspishop [12], Adafruit [13], Modmypi [14] oder Elinux.org [15] gegenprüfen. Im vorliegenden Artikel kommt ein Gerät vom Hersteller Bigtec [16] zum Zug. Die Rolle des Mobiltelefons übernahm ein ehrwürdiges Siemens S55 (Abbildung 3).
Das Koppeln per Bluetooth erfolgt nach der Standardprozedur unter Linux. Der Raspberry verhält sich hier natürlich nicht anders als ein gewöhnliches Desktop-Linux.
Für die Kommunikation mit dem Mobiltelefon kann der Benutzer zwischen »scmxx« [17] oder »gammu« [18] wählen. Letzteres empfiehlt sich, auch wenn Scmxx auf den Datenaustausch mit Siemens-Handys spezialisiert ist. Die Entwicklung von Gammu scheint deutlich reger zu sein also die von Scmxx. Spätestens die Anzahl der unterstützten Mobiltelefone gibt den Ausschlag für die weniger spezialisierte Software. Einen einfachen Test zeigt Listing 3. Falls nicht schon vorhanden, muss der Nagios-Admin noch das SMS-Sende-Kommando in der Datei »commands.cfg« definieren. Das in Listing 3 gezeigte Kommando dient als gute Vorlage.
Listing 3
Handy koppeln
01 $ rfcomm connect rfcomm0 00:01:E3:09:F9:67 1 & 02 [1] 5281 03 $ Connected /dev/rfcomm0 to 00:01:E3:09:F9:67 on channel 1 04 Press CTRL-C for hangup 05 06 $ rfcomm -a 07 rfcomm0: 00:15:83:15:A3:10 -> 00:01:E3:09:F9:67 channel 1 connected [reuse-dlc release-on-hup tty-attached] 08 $ 09 $ 10 $ echo "Unbedingt das Linux-Magazin lesen" | /usr/bin/gammu --sendsms TEXT 01781234567 11 If you want break, press Ctrl+C... 12 Sending SMS 1/1....waiting for network answer..OK, message reference=198
In den Tests hat es sich bewährt, die Bluetooth-Verbindung zwischen Mobiltelefon und dem Raspberry Pi regelmäßig kontrolliert zu beenden und anschließend wieder aufzubauen. Ein einfacher Cronjob erledigt dies. Dem Selbstüberwachungs-Mantra entsprechend könnte der Benutzer sogar ein Nagios-Plugin schreiben, das die Bluetooth-Verbindung im Auge behält.
Damit sind alle Puzzleteile beieinander. Die Upis schützt die Nagios-Instanz auf dem Raspberry Pi vor einem Stromausfall. Die Bluetooth-Kopplung über ein Mobiltelefon erlaubt es zusätzlich, diese wichtige Information nach draußen zu schicken.
Zum Schluss
Mit der USV und einem ausgedienten Handy verwandeln Enthusiasten den Raspberry Pi recht schnell in eine autarke IT-Überwachungsinstanz. Die kann sich selbst auf Herz und Nieren prüfen. Das hier vorgestellte Setup hilft auch, wenn der Internetprovider oder das hauseigene DSL-Modem Probleme haben.
Infos
- Video Core Tools: http://github.com/nezticle/RaspberryPi-BuildRoot/wiki/VideoCore-Tools
- Vcgencmd Usage: http://elinux.org/RPI_vcgencmd_usage
- Raspberry-Hardware: http://elinux.org/RPi_Hardware
- Check_rpi: http://github.com/useidel/check_rpi
- Temperaturüberwachungs-Plugin: http://exchange.nagios.org/directory/Plugins/Others/Rasberry-Pi-Temperature-Monitor/details
- I2C-Bus: http://www.i2c-bus.org/de/i2c-bus
- Übersicht über die Upis-Register: http://app.box.com/s/23y7vwywllc10ga3pb14
- I2C-Tools: http://www.lm-sensors.org/wiki/I2CTools
- Upis User Manual: http://www.pimodules.com/_pdf/Upis_Manual_V1.10.pdf
- Check_upis: http://github.com/useidel/check_upis
- Quelltext »upis.c« : http://www.forum.pimodules.com/viewtopic.php?f=7&t=47
- Raspishop: http://www.rasppishop.de
- Adafruit: http://www.adafruit.com
- Modmypi: http://www.modmypi.com
- Elinux: http://elinux.org/RPi_USB_Bluetooth_adapters
- Bigtec: http://www.amazon.de/BIGtec-Bluetooth-Adapter-Dongle-Class2/dp/B003WJBZK0
- Scmxx: http://sourceforge.net/projects/scmxx/
- [GW]ammu: http://de.wammu.eu






