Skip to content

Systemwerte des Raspberry Pi (allg. Linux) in einer Datenbank aufzeichnen

Linux

Um meinen Raspberry Pi virtuell im Blick zu haben bzw. allgemein beobachten zu können wie er sich verhält wenn ich ihm neue Aufgaben gebe lasse ich ihn alle 5 Minuten diverse Systemwerte in eine externe Datenbank schreiben.Raspberry Pi
Ursprünglich hatte ich an eine lokale sqlite Datenbank gedacht, das dürfte die SD-Karte aber sehr stressen und letztlich zerstören. Also habe ich mich für eine Datenbank bei meinem Webhoster entschieden. Ein zufällig generiertes Kennwort mit 28 Stellen sollte dafür sicher genug sein eek
Was ich hier beschreibe ist zwar auf den Raspberry Pi bezogen, letztlich aber Linux-Universell. Auf einem “richtigen” Linuxsystem könnte man es genauso machen wenn man wollte, nur die Temperatur müsste anders abgefragt werden.

Zur Vorbereitung muss natürlich erstmal die Datenbank angelegt werden. Das habe ich vom Pi aus gemacht um die Verbindung zu testen und damit es hier im Blog auch universeller ist smile
Auf der Befehlszeile schickt folgende Zeile (es gehört alles in eine Zeile!) den SQL Befehl zum anlegen der Datenbank an den MySQL/MariaDB Server:

echo "USE [datenbankname]; CREATE TABLE systemwerte (id int auto_increment primary key, host varchar (32), date int unsigned, temp float unsigned, powerontime timestamp, load1 float unsigned, load5 float unsigned, load15 float unsigned, freq float unsigned, memtot int unsigned, memuse int unsigned, memfree int unsigned, numproc int unsigned, conntrack int unsigned, numloguser smallint unsigned, loggedinuser varchar(100));" | mysql -u[benutzername] -p[kennwort] -h[server]

Um die Systemwerte nun automatisch in die Datenbank zu schreiben habe ich das Verzeichnis /root/bin/ angelegt und darin ein kleines Script systemwerte_mysql.sh gepackt:

#!/bin/bash
echo "USE [datenbankname]; INSERT INTO systemwerte (host,date,temp,powerontime,load1,load5,load15,freq,memtot,memuse,memfree,numproc,conntrack,numloguser,loggedinuser) VALUES ('`hostname`',`date +"%s"`,`awk '{print $1/1000}' /sys/class/thermal/thermal_zone0/temp`,'`uptime -s`',`awk '{print $1,\",\",$2\",\",$3 }' /proc/loadavg`,`awk '{print $1/1000}' /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq`,`free|head -2|tail -1|awk '{print $2\",\"$3\",\"$4}'`,`ps aux|wc -l`,`cat /proc/sys/net/ipv4/netfilter/ip_conntrack_count`,`who|wc -l`, '`who -q|head -1`')" | mysql -u[benutzername] -p[kennwort] -h[server]
(Das sind zwei Zeilen, das “echo…” ist eine Zeile)
Das Script wird mit einem chmod 700 nur noch für root lesbar gemacht (es enthält die Zugangsdaten für die Datenbank im Klartext!) und alle 5 Minuten per cron aufgerufen. Als root1 ruft man dafür crontab auf und gibt folgende Zeile ein:
*/5 /root/bin/systemwerte_mysql.sh
Das ruft nun alle 5 Minuten das Script auf das diverse Systemwerte in die Datenbank schreibt. Bei einem Problem oder wenn ich dem Pi neue Aufgaben gebe kann ich so nachvollziehen ob ihn etwas belastet.
Als Tabelle sieht das dann so aus:
idhostdatetemppowerontimeload1load5load15freqmemtotmemusememfreenumprocconntracknumloguserloggedinuser
3050raspi1139125540148.6922014-01-28 19:40:010.060.070.06700473864325920147944962001rowi
3049raspi1139125510148.1542014-01-28 19:40:0100.030.05700473864326004147860951471rowi
3048raspi1139125480248.1542014-01-28 19:40:010.030.040.05700473864325508148356951671rowi
3047raspi1139125450148.6922014-01-28 19:40:0100.030.05700473864325176148688961421rowi
3046raspi1139125420148.1542014-01-28 19:40:010.120.090.07700473864325144148720963641rowi
Die Uhrzeit ist ein Unix Timestamp, das ist praktisch für eine maschinelle Verarbeitung, für menschliche Auswertung will man das vielleicht mit FROM_UNIXTIME() abfragen eek Die Zeit des Systemstarts (powerontime) hab ich aber als menschenlesbaren Timestamp gespeichert. Ansonsten wird die CPU-Temperatur, die Systemlast (load), die Taktfrequenz, Speicherwerte, Anzahl der IP Verbindungen und Anzahl und Namen der angemeldeten User gespeichert.

Bisher hatte ich noch keinen Problemfall, falls der mal eintritt und mir etwas fehlt werde ich die Tabelle entsprechend erweitern. Freier Plattenplatz oder die letzten Zeilen von dmesg vielleicht. Aber das kommt wenn es so weit ist.

________

1 mein Pi läuft mit Arch Linux, da habe ich noch einen klassischen root User. Unter Raspbian entsprechend mit sudo ausführen.

Idee für den Raspberry Pi (I) - Umsetzung 1

Meine erste Idee die ich hier im Blog gepostet hatte war ja den Drucker an den Pi anzuschliessen und nur bei Bedarf über die Steckdose einzuschalten.
Wie von demaya in den Kommentaren vorgeschlagen mache ich das über eine Funksteckdose nach dieser Anleitung.

Der Hardwareteil funktioniert auch schon:

Raspberry Pi 433MHz Testaufbau

Für den Sender überlege ich mir noch eine hübsche Verpackung, eine Streichholzschachtel zum Beispiel cool. Die Steckplatine war jetzt nur zum testen.
Nun kommt die softwareseitige Ansteuerung. Ich denke ich werde einfach das Spoolverzeichnis von Cups überwachen und sobald da was drinliegt den Drucker starten und eine Statusdatei anlegen. Ist diese Datei mindestens eine halbe Stunde alt kann der Drucker wieder ausgeschaltet werden.
Das ist ein primitiver Mechanismus, müsste aber universell funktionieren. Ich hoffe nur, dass Cups es mir nicht übel nimmt wenn der Drucker erst nachträglich eingeschaltet wird.

Idee für den Raspberry Pi (II)

Raspberry Pi

Für meine erste Idee habe ich mich wie von demaya in den Kommentaren vorgeschlagen für Funksteckdosen entschieden, mittlerweile habe ich dafür auch alle Teile besammen und werde das demnächst angehen.
Die Ansteuerung der Funksteckdosen werde ich nach dieser Anleitung vornehmen.

Die nötigen Einzelteile gibt es für kleines Geld bei DealExtreme in China, dort habe ich ja auch schon oft bestellt. Das genutzte Funkmodul ist eigentlich für den Arduino gedacht und wenn ich mir ansehe was für Module es bei DealExtreme für den Arduino gibt kommt man auf viele lustige Ideen laugh
Insbesondere dieses Nokia 5110 Display für den Arduino für nur 2,91€ ist mir ins Auge gesprungen. Damit muss man etwas lustiges machen können. Nur was?

Also brauch ich mal DEIN Hirn für ein Brainstorming: Was könnte man für lustige Dinge damit tun?
Wetterdaten anzeigen? Den Inhalt irgendeiner Webseite (welcher?)? Ein Spiel (das aber wohl erst programmiert werden müsste)?

Was für eine Idee hast DU dafür?

Der Flensburger Linux Einsteiger Abend widmet sich dem Raspbery Pi

Linux

Immer am 4. Freitag des Monats findet der Linux Einsteiger Abend (LEA) der LUG Flensburg statt.

Er richtet sich nicht nur an Einsteiger sondern an Alle die an Linux interessiert sind.
Rechner können mitgebracht werden um Probleme direkt vor Ort anzugehen oder Fragen zu beantworten. Und beginnend mit dem Dezember-LEA wollen wir uns als Programmpunkt dem Raspberry Pi widmen.

Raspberry PiIm Dezember soll es um die Hardware des Pi gehen und wie darauf Linux installiert wird. Auch sollen einige Einsatzmöglichkeiten gezeigt werden.
In den nächsten Monaten werden wir uns den Pi dann genauer ansehen und einzelne Projekte vorstellen.

Der LEA im Dezember findet am 27. Dezember im St. Knudsburg statt und wie erwähnt generell am 4. (nicht zwangsläufig der Letzte!) Freitag im Monat.

Idee für den Raspberry Pi (I)

Raspberry Pi

Mein Himbeercomputer ist ein tolles Spielzeug und ich habe beschlossen, meine vielleicht manchmal etwas abwegigen Ideen hier zu bloggen damit ich sie nicht vergesse und Du auch deinen Senf dazu geben kannst.
Alles von “was für ein Schwachsinn!” bis “Coole Sache, Parker!” ist gern gesehen, am liebsten natürlich konstruktives wie “das müsste man soundso machen” oder “hab hier eine Anleitung dazu gefunden/geschrieben”.


Hier nun also eine spontane Idee:
Den Raspberry als Druckserver zu verwenden ist keine neue Idee, er würde bei mir einen Laserdrucker verwalten der normalerweise ausgeschaltet ist. Wenn ein Druckauftrag reinkommt müsste der Pi also über einen GPIO Port die Steckdose des Druckers einschalten, vielleicht 30 Sekunden warten und dann drucken. Danach den Drucker nicht sofort wieder ausschalten falls noch mehr kommt, aber nach einer halben oder ganzen Stunde ohne Druckauftrag könnte der Drucker dann auch wieder ausgeschaltet werden.

Meinung, Lösungsansätze dazu?

Himbeercomputer

Seit ein paar Tagen habe ich einen neuen Computer im Hause, einen Server gar:

Raspberry Pi

Ein Serverchen, zugegeben.
Der Raspberry Pi basiert auf einem 700MHz ARM-Prozessor (auf 1GHz übertaktbar ohne Garantierverlust), sowas was heutzutage in Smartphones steckt. Bzw. steckte, Smartphones sind mittlerweile bei Quadcores mit 2,5GHz…
Egal, denn schon vor über 4 Jahren hatte ich zu meinem ersten (Android) Smartphone angemerkt:

ein Smartphone ist ein kleiner Computer und dementsprechend vielseitig einsetzbar
Hier wird halt Smartphonehardware konsequent als Computer eingesetzt.

"Himbeercomputer" vollständig lesen