CPU und GPU Temperatur Statistiken vom Server auf FHEM darstellen

Bereits vor einer Weile habe ich auf „The Linux Terminal“ folgenden Artikel gefunden: http://www.thelinuxterminal.com/raspberry-pi-b-cpu-gpu-temperature-monitor-bash-script-source-code/

Zwischenzeitlich habe ich das Beispielskript etwas angepasst:

#!/bin/bash
#Raspberry Pi Temperature Monitor
#Built by Zeus-www.thelinuxterminal.com
#For more info, drop a mail: office@thelinuxterminal.com
# http://www.thelinuxterminal.com/raspberry-pi-b-cpu-gpu-temperature-monitor-bash-script-source-code/
cpugpu_logfile="/var/log/`hostname`_cpugpuTemp-$(date "+%Y-%m").log"
get_date=$(date +%d/%m/%y)
get_time=$(date +%H:%M)
cpuTemp0=$(cat /sys/class/thermal/thermal_zone0/temp | cut -d '=' -f2)
cpuTemp1=$(($cpuTemp0/1000))
cpuTemp2=$(($cpuTemp0/100))
cpuTempM=$((cpuTemp2 % $cpuTemp1))
gpuTemp=$(/opt/vc/bin/vcgencmd measure_temp | cut -d '=' -f2)
gpuTemp=`echo ${gpuTemp} | sed -e "s/'C//"`
get_date_time=$(date "+%Y-%m-%d_%H:%M:%S")
echo "${get_date_time} cpuTemp: ${cpuTemp1}.${cpuTempM}" >> $cpugpu_logfile
echo "${get_date_time} gpuTemp: ${gpuTemp}" >> $cpugpu_logfile

Das script wird nun via Crontab aufgerufen und schreibt die Daten in die Datei.

Mir rsync hole ich das geschriebene Logfile von meinem FHEM Server ab und kann es nun mit folgender gplot Datei den Temperaturverlauf grafisch darstellen.

############################
# Display the measured temp of CPU and GPU
# Corresponding FileLog definition:
# Example Log
#2015-09-18_09:09:44 cpuTemp: 43.3
#2015-09-18_09:09:44 gpuTemp: 43.3
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set ytics nomirror
#set y2tics
set ytics
#set yrange [:60]
#set y2range [30:50]
set title '<L1>'
set grid xtics ytics
set y2label "Temperatur in °C"
set ylabel "Temperatur in °C"
#FileLog 3:cpuTemp:0:
#FileLog 3:gpuTemp:0:
plot \
  "< awk '/cpuTemp/{print $1, $3}' <IN>"\
     using 1:2 axes x1y1 title 'CPU Temperatur' with lines lw 1,\
  "< awk '/gpuTemp/{print $1, $3}' <IN>"\
     using 1:2 axes x1y1 title 'GPU Temperatur' with lines lw 1

Das Ergebnis:

cpu_gpu_temperatur

Ziel ist es nun herauszufinden wie sich der Server bei geschlossenen Gehäuse verhält und ob ich noch Kühlkörper für den Raspberry besorgen und/oder einen Lüfter in das Gehäuse einbauen muss.

5 Gedanken zu „CPU und GPU Temperatur Statistiken vom Server auf FHEM darstellen

  1. Hallo,
    vielen Dank für das Script, war genau das was ich suchte 🙂
    Es hat auch soweit alles funktioniert, nur wie holst du mit rsync die Daten vom Fhem-Server ab? Ich habe jetzt einfach den Pfad der Log-Datei geändert und in /opt/fhem/log abgelegt. Hier muss ich aber bei jedem Monat die rechte der neuen Datei vergeben… Kannst du mir hierbei noch weiterhelfen?
    Gruß
    Sascha

    • Hallo Sascha,

      vielen Dank für Deinen Kommentar. Mein rsync-Skript sieht so aus:

      #!/bin/bash
      local_rsync_bin='/usr/bin/rsync'
      remote_rsync_bin='/usr/bin/rsync'
      remote_host='1.2.3.4'
      remote_user='fhem'
      rsync_flags="-t --timeout=60 --rsh=ssh --rsync-path=${remote_rsync_bin}"
      logfile_name='servername_*'
      remote_source="/path/to/log/${logfile_name}"
      local_target='/var/log/fhem'
      ${local_rsync_bin} ${rsync_flags} ${remote_user}@${remote_host}:${remote_source} ${local_target}
      chown fhem:fhem ${local_target}/${logfile_name}

      Das Skript geht davon aus, dass die SSH Verbindung bereits eingerichtet ist und funktioniert.

      Wie du siehst ändere ich am Ende die Rechte der übertragenen Dateien.
      Das ganze ist Quick n Dirty.

      Man kann natürlich das rsync-Skript auch direkt auf dem Rechner mit dem Unix-User laufen lassen, dann sollte die Übertragung gleich mit den passenden Rechten erfolgen, dann umgehst du das chown. Auch könnte man sich vorstellen mit einem anderen, nicht priviligierten Benutzer zu arbeiten und das Tool, dass Deine Logs auswertet teilen sich die gleiche Unix-Gruppe.
      Lösungen gibt es hier sicherlich einige. Fragt sich immer nur was gerade zu Deiner Umgebung am besten passt.

      Ich hoffe ich konnte Dir damit weiterhelfen.

      • Hallo,
        vielen Dank für die schnelle Antwort 🙂 Super!
        Leider bin ich in Linux/Scripte noch nicht so ganz firm, deshalb muss ich mir das Script erst einmal auf der Zunge zergehen lassen :-). Insbesondere die Rechtevergabe im Script interessieren mich, da hast du mir, ohne zu wissen wies genau funktioniert, bestimmt schon sehr viel weiter geholfen. Ich werde versuchen das morgen mal zu testen.
        Viele Grüße 🙂

        • Hallo Sascha,
          öhm, wenn Du auf der gleichen Maschine bist brauchst Du weder rsync noch ein Script drum herum.
          Da reicht es das Logfile gleich an die Stelle zu schreiben wo Dein FHEM danach sucht:

          cpugpu_logfile=“/opt/fhem/log/cpugpuTemp-$(date „+%Y-%m“).log“

          Dein FHEM sollte auch sofort in der Lage sein das Log zu lesen. Wenn dem nicht so ist, bau in Dein Script gleich unter die Zeile
          #!/bin/bash
          folgendes ein
          umask 0033
          Das sollte dann den Dateien Leserechte für others geben.

          Viele Grüße,
          Micha

  2. Hallo,

    ich habe mir dein Script mal angesehen, verstehen tu ich’s aber nicht 🙁 Habs auch ausprobiert, aber leider läuft es bei mir nicht. Bekomme immer den Fehler „fhem@/var/log/fhem/cpugputemp*.* No such file or directory
    chown: invalid group: ‘fhem:fhem’ Was ich auch nicht verstehe, ist das ich doch eigentlich keinen Benutzer „Fhem“ habe, ich habe doch nur „pi“. Wenn ich mir zum Beispiel die Rechte einer Log-Datei von Fhem anschaue, steht dort als Benutzer und Gruppe fhem:dialout
    Bei mir läuft Fhem auf dem gleichen System was ich logge. Deshalb benötige ich doch eigentlich keinen remote_host, oder?
    Ich habe hier mal aufgeschrieben wie ichs gemacht habe:

    #!bin/bash
    local_rsync_bin=’/usr/bin/rsync‘
    remote_rsync_bin=’/usr/bin/rsync‘
    #remote_host=’1.2.3.4′
    remote_user=’fhem‘
    rsync_flags=“-t –timeout=60 –rsh=ssh –rsync-path=${remote_rsync_bin}“
    logfile_name=’cpugputemp*.*‘
    remote_source=“/var/log/fhem/${logfile_name}“
    local_target=’/opt/fhem‘
    ${local_rsync_bin} ${rsync_flags}
    ${remote_user}@${remote_source} ${local_target}
    chown fhem:fhem ${local_target}/${logfile_name}

    Kann ich nicht vielleicht schon beim Erstellen der Log-Datei (script ganz oben) die Rechte vergeben? Ich denke ich habe irgendein Problem mit den Rechten, komme aber einfach nicht dahinter… Vielleicht kannst du mir nochmal weiter helfen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.