[Tutorial] CPU, RAM & Temperatur Monitoring mit dem Raspberry Pi, einem DS18S20 und MRTG

Hallo zusammen,

vor einiger Zeit habe ich ein Tutorial geschrieben, wie man MRTG auf dem Raspberry zum laufen bekommt. Allerdings habe ich nur beschrieben, wie man seine LAN-Schnittstelle monitored – nun wird es Zeit für mehr!

Diesmal erzeugen wir hübsche Grafiken für die CPU Auslastung & Temperatur, RAM Auslastung & freier RAM und wer dann noch nicht genug hat und bereits einen DS18S20 Temperatur Sensor sein eigen nennt, bekommt gezeigt wie man auch die Temperaturwerte mit MRTG erfasst. Ein eigenes Tutorial zum Anschluss und Inbetriebnahme des Sensors gibt es hier:
DS18S20 Temperatur Sensor an einem Raspberry Pi

Genug der Worte, los gehts!

Voraussetzung ist natürlich, dass MRTG bereits läuft. Sollte dies nicht der Fall sein, gibt es HIER mein erstes Tutorial dazu.

Um es etwas einfacher zu machen, installieren wir zuerst das Paket snmp-mibs-downloader, außerdem brauchen wir das Paket bc für die Berechnung der CPU Temperatur und des Temp-Sensors:

sudo aptitude update
sudo aptitude install snmp-mibs-downloader bc

Um das Mibs Paket zu nutzen, müssen wir noch die Datei /etc/default/snmpd in Zeile 5 ergänzen.

Aus

export MIBS=

wird

export MIBS=UCD-SNMP-MIB

Außerdem ergänzen wir /etc/snmp/snmpd.conf am Ende um

# Don’t log incoming connections, denied connections are still send to syslog.
dontLogTCPWrappersConnects true

da unser syslog sonst jede Minute mit ca. 20 Meldungen a la Connection from UDP: [127.0.0.1]:45123->[127.0.0.1] zugespamt wird. Weitere Infos zu den (Logging-)Parametern von snmpd gibt es HIER und HIER.

Nun noch den Dienst neu starten
sudo /etc/init.d/snmpd restart

Los gehts! Neue Ziele die wir monitoren wollen, müssen wir in /etc/mrtg.cfg eintragen. Am komfortabelsten öffnen wir die Datei unter Windows mit WinSCP (eigenes kleines Tutorial HIER).

In der Reihenfolge, in der wir die neuen Ziele eintragen, werden sie später auf der MRTG Index Seite angezeigt. Falls ihr also lieber die CPU Temperatur als erste Grafik haben möchtet, so muss diese auch am Anfang aller Ziele stehen.

[INFO] Die Werte sind für den Raspberry Pi mit 256MB Ram, wovon 16MB der Grafikeinheit zugeordnet wurden. Für die 512MB Version mit gleicher Ramaufteilung ist der Wert 509485056 anstatt 242565120. Lässt sich mit
free -b
leicht herausfinden. Der Wert unter Total entspricht dem verwendbaren Ram. Mit -m kann man übrigens den Wert auch in Megabyte ausgeben lassen.
Hier übrigens nicht errschrecken, der angezeigte, freie Ram ist nicht wirklich so wenig wie es auf den ersten Blick scheint. Den „echten“ Wert findet ihr in der zweiten Zeile -/+ buffers/cache unter free. Linux cached mit der Zeit Dateien die häufig genutzt werden im Ram und kann diesen, falls mehr Ram benötigt, wieder schnell frei räumen. Eine detaillierte Beschreibung auf Englisch gibt es hier: www.linuxatemyram.com/.

 

1. CPU Auslastung

### CPU Usage

LoadMIBs: /usr/share/mibs/netsnmp/UCD-SNMP-MIB,/var/lib/mibs/ietf/HOST-RESOURCES-MIB
Target[localhost.cpu]: ssCpuRawUser.0&ssCpuRawUser.0:public@127.0.0.1+ssCpuRawSystem.0&ssCpuRawSystem.0:public@127.0.0.1+ssCpuRawNice.0&ssCpuRawNice.0:public@127.0.0.1
RouterUptime[localhost.cpu]: public@127.0.0.1
MaxBytes[localhost.cpu]: 100
Title[localhost.cpu]: Raspberry Pi Server – CPU Load
PageTop[localhost.cpu]:<h1>Raspberry Pi Server – Active CPU Load %</h1>
Unscaled[localhost.cpu]: ymwd
ShortLegend[localhost.cpu]: %
YLegend[localhost.cpu]: CPU Utilization
Legend1[localhost.cpu]: Active CPU in % (Load)
Legend2[localhost.cpu]:
Legend3[localhost.cpu]:
Legend4[localhost.cpu]:
LegendI[localhost.cpu]: Active
LegendO[localhost.cpu]:
Options[localhost.cpu]: growright,nopercent

 

2. RAM Auslastung

### Memory Usage

LoadMIBs: /usr/share/mibs/netsnmp/UCD-SNMP-MIB,/var/lib/mibs/ietf/HOST-RESOURCES-MIB
Target[localhost.mem_used]: 242565120 – ((memAvailReal.0&memAvailReal.0:public@localhost) * 1024)
Title[localhost.mem_used]: Raspberry Pi Server – Used Memory
PageTop[localhost.mem_used]:<h1>Raspberry Pi Server – Used Memory</h1>
Options[localhost.mem_used]: growright,gauge,nopercent,transparent,noo,nolegend
MaxBytes[localhost.mem_used]: 242565120
Unscaled[localhost.mem_used]: dwmy
kilo[localhost.mem_used]: 1024
ShortLegend[localhost.mem_used]: MegaBytes
YLegend[localhost.mem_used]: Mem Used
LegendI[localhost.mem_used]: Used Memory:

 

3. Freier RAM (ohne Swap)

### Memory Free, not including swap

LoadMIBs: /usr/share/mibs/netsnmp/UCD-SNMP-MIB,/var/lib/mibs/ietf/HOST-RESOURCES-MIB
Target[localhost.mem_free]: (1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.6.0:public@localhost) * 1024
PageTop[localhost.mem_free]:<h1>Raspberry Pi Server – Free Memory (without Swap)</h1>
Title[localhost.mem_free]: Raspberry Pi Server – Free Memory (without Swap)
Options[localhost.mem_free]: growright,gauge,nopercent,transparent,noo,nolegend
MaxBytes[localhost.mem_free]: 242565120
kilo[localhost.mem_free]: 1024
Unscaled[localhost.mem_free]: dwmy
YLegend[localhost.mem_free]: Mem Free
ShortLegend[localhost.mem_free]: MegaBytes
LegendI[localhost.mem_free]: Free Memory:
LegendO[localhost.mem_free]:
Legend1[localhost.mem_free]: Free memory, not including swap, in MegaBytes

 

4. Wirklich freier RAM (Freier Ram + Buffer + Cache, ohne Swap)

### Total Memory Free (Free memory + Buffer + Cache, not including swap)

LoadMIBs: /usr/share/mibs/netsnmp/UCD-SNMP-MIB,/var/lib/mibs/ietf/HOST-RESOURCES-MIB
Target[localhost.mem_total_free]: ((1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.6.0:public@localhost)+(1.3.6.1.4.1.2021.4.14.0&.1.3.6.1.4.1.2021.4.14.0:public@localhost)+(1.3.6.1.4.1.2021.4.15.0&.1.3.6.1.4.1.2021.4.15.0:public@localhost)) * 1024
PageTop[localhost.mem_total_free]:<h1>Raspberry Pi Server – Total Free Memory (without Swap)</h1>
Title[localhost.mem_total_free]: Raspberry Pi Server – Total Free Memory (without Swap)
Options[localhost.mem_total_free]: growright,gauge,nopercent,transparent,noo,nolegend
MaxBytes[localhost.mem_total_free]: 242565120
kilo[localhost.mem_total_free]: 1024
Unscaled[localhost.mem_total_free]: dwmy
YLegend[localhost.mem_total_free]: Mem Free
ShortLegend[localhost.mem_total_free]: MegaBytes
LegendI[localhost.mem_total_free]: Free Memory:
LegendO[localhost.mem_total_free]:
Legend1[localhost.mem_total_free]: Free memory + Buffer + Cache, not including swap, in MegaBytes

 

5. CPU Temperatur
Hierzu benötigen wir ein extra Skript. In meinem Fall liegt es unter /home/pi/skripte/mrtg/. Dazu eine neue Datei namens cpu_temp_auslesen.sh anlegen und den folgende Skript-Schnipsel hineinkopieren.

1
2
3
4
5
6
7
8
9
#!/bin/bash
# Read cpu temperature
tempread=`cat /sys/class/thermal/thermal_zone0/temp`
temp=`echo "scale=2; $tempread / 1000" | bc`
# Wert ausgeben
echo $temp
echo 0
echo 0
echo temperature

Wichtig: Die Datei muss ausführbar sein:
chmod 750 /home/pi/skripte/mrtg/cpu_temp_auslesen.sh

Der folgende Teil kommt nun wieder in die mrtg.cfg:

### CPU Temperature Raspberry

TimeStrPos[localhost.cpu_temp]: RU
Target[localhost.cpu_temp]: `/home/pi/skripte/mrtg/cpu_temp_auslesen.sh`
Options[localhost.cpu_temp]: gauge,growright,nopercent,expscale,transparent
Title[localhost.cpu_temp]: Raspberry Pi Server – CPU Temperatur
PageTop[localhost.cpu_temp]:
<h1>Raspberry Pi Server – CPU Temperatur</h1>
MaxBytes[localhost.cpu_temp]: 125
Step[localhost.cpu_temp]: 60
Legend1[localhost.cpu_temp]: CPU Temperatur Raspberry Pi Server
LegendI[localhost.cpu_temp]: CPU Temperatur
LegendO[localhost.cpu_temp]:
YLegend[localhost.cpu_temp]: Grad Celsius
ShortLegend[localhost.cpu_temp]: Grad °C

 

6. DS18S20 Temperatur Sensor
Hierzu benötigen wir wieder ein extra Skript. Es liegt wieder unter /home/pi/skripte/mrtg/. Diesmal eine neue Datei namens update_mrtg_temp.sh anlegen und den folgende Skript-Schnipsel hineinkopieren. 10-0000008a5c35 ist die ID meines Sensors und muss natürlich durch die ID von eurem ersetzt werden!

Wie man den Sensor anschließt seht ihr in diesem Tutorial: DS18S20 Temperatur Sensor an einem Raspberry Pi

Hier nun das Script:

1
2
3
4
5
6
7
8
9
10
#!/bin/bash
# Read temperature from sensor
tempread=`cat /sys/bus/w1/devices/10-0000008a5c35/w1_slave`
temp=`echo $tempread | egrep -o '.{5}$'`
temp2=`echo "scale=2; $temp / 1000" | bc`
# Update database
echo $temp2
echo 0
echo 0
echo temperature

Wichtig: Die Datei muss wieder ausführbar sein:
chmod 750 /home/pi/skripte/mrtg/cpu_temp_auslesen.sh

Der folgende Teil kommt nun wieder in die mrtg.cfg:

######################################################################
# System: DS18S20 Temperatur Sensor
# Contact: root
# Location: attached to Raspberry Pi
######################################################################

### DS18S20 Temperatur SensorWohnzimmer

TimeStrPos[temp_wohnzimmer]: RU
Target[temp_wohnzimmer]: `/home/pi/skripte/mrtg/update_mrtg_temp.sh`
Options[temp_wohnzimmer]: gauge,growright,nopercent,expscale,transparent
Title[temp_wohnzimmer]: Temperatur Wohnzimmer
PageTop[temp_wohnzimmer]:
<h1>Temperatur Wohnzimmer</h1>
MaxBytes[temp_wohnzimmer]: 125
Step[temp_wohnzimmer]: 60
Legend1[temp_wohnzimmer]: Gemessene Temperatur im Wohnzimmer
LegendI[temp_wohnzimmer]: Innentemperatur
LegendO[temp_wohnzimmer]:
YLegend[temp_wohnzimmer]: Grad Celsius
ShortLegend[temp_wohnzimmer]: Grad °C

 

Wie immer gilt, falls das Tutorial gefallen hat würde ich mich über einen kleinen Kommentar freuen – das gleiche gilt natürlich auch für Kritik oder Verbesserungsvorschläge 😀 Natürlich dürft ihr auch gerne euren Adblocker auf Kopfkino deaktivieren und den kleinen Banner am Ende des Posts klicken – ist aber natürlich absolut freiwillig 😉 Die Werbung ist dezent gehalten und es gibt keine nervigen Flashbanner oder ähnliches 🙂 Einnahmen kommen vollständig der Finanzierung unseres Servers zu Gute 😀

Gruß iro

 

[Last Edit: 07.05.2014]

105 Kommentare zu „[Tutorial] CPU, RAM & Temperatur Monitoring mit dem Raspberry Pi, einem DS18S20 und MRTG

  1. Ich habe die Schritte oben soweit durchgeführt.
    Jedoch werden die RRD s nicht Verzeichnis /var/www/mrtg angelegt noch gibt mir die /cgi-bin/mrtg-rrd.cgi bringt keine Änderung zu den schritten auf deiner Seite welche ich im Vorfeld ausgeführt habe.
    Grüße
    Marc

    • Hey Marc,
      bitte zuerst fastCGI deaktivieren und nochmal probieren. Gibt es Fehler in Logs? Wie sieht deine mrtg.cfg genau aus? Läuft MRTG überhaupt noch? -> ps -Af | grep mrtg
      Ist immer etwas schwierig mit so wenigen Infos 😉
      Gruß iro

      • Da ich von der Windowsseite komme habe ich so meine Probleme die richtigen Logs zu finden und diese zu interpretieren.
        ps -Af | grep mrtg ergiebt
        root 2212 1 0 18:45 ? 00:00:00 /usr/bin/perl -w /usr/bin/mrtg /etc/mrtg.cfg
        pi 2363 2325 0 19:03 pts/0 00:00:00 grep –color=auto mrtg
        und meine mrtg.cfg

        # Created by
        # /usr/bin/cfgmaker –global „Options[_]: growright“ –global „IconDir: /mrtg“ –global „WriteExpires: Yes“ –global „Language: german“ –global „RunAsDaemon: yes“ –global „EnableIPv6: no“ –global „LogFormat: rrdtool“ –global „Interval: 1“ „–if-filter=$if_admin && $default_iftype“ –output /etc/mrtg.cfg public@localhost

        EnableIPv6: no
        Options[_]: growright
        IconDir: /mrtg
        WriteExpires: Yes
        Language: german
        RunAsDaemon: yes
        EnableIPv6: no
        LogFormat: rrdtool
        Interval: 1
        ### CPU Usage

        LoadMIBs: /usr/share/mibs/netsnmp/UCD-SNMP-MIB,/var/lib/mibs/ietf/HOST-RESOURCES-MIB
        Target[localhost.cpu]: ssCpuRawUser.0&ssCpuRawUser.0:public@127.0.0.1+ssCpuRawSystem.0&ssCpuRawSystem.0:public@127.0.0.1+ssCpuRawNice.0&ssCpuRawNice.0:public@127.0.0.1
        RouterUptime[localhost.cpu]: public@127.0.0.1
        MaxBytes[localhost.cpu]: 100
        Title[localhost.cpu]: Raspberry Pi Server CPU Load
        PageTop[localhost.cpu]:
        Raspberry Pi Server Active CPU Load %
        Unscaled[localhost.cpu]: ymwd
        ShortLegend[localhost.cpu]: %
        YLegend[localhost.cpu]: CPU Utilization
        Legend1[localhost.cpu]: Active CPU in % (Load)
        Legend2[localhost.cpu]:
        Legend3[localhost.cpu]:
        Legend4[localhost.cpu]:
        LegendI[localhost.cpu]: Active
        LegendO[localhost.cpu]:
        Options[localhost.cpu]: growright,nopercent

        ### Memory Usage

        LoadMIBs: /usr/share/mibs/netsnmp/UCD-SNMP-MIB,/var/lib/mibs/ietf/HOST-RESOURCES-MIB
        Target[localhost.mem_used]: 242565120 ((memAvailReal.0&memAvailReal.0:public@localhost) * 1024)
        Title[localhost.mem_used]: Raspberry Pi Server Used Memory
        PageTop[localhost.mem_used]:
        Raspberry Pi Server Used Memory
        Options[localhost.mem_used]: growright,gauge,nopercent,transparent,noo,nolegend
        MaxBytes[localhost.mem_used]: 242565120
        Unscaled[localhost.mem_used]: dwmy
        kilo[localhost.mem_used]: 1024
        ShortLegend[localhost.mem_used]: Bytes
        YLegend[localhost.mem_used]: Mem Used
        LegendI[localhost.mem_used]: Used Memory:

        ### Memory Free

        LoadMIBs: /usr/share/mibs/netsnmp/UCD-SNMP-MIB,/var/lib/mibs/ietf/HOST-RESOURCES-MIB
        Target[localhost.mem_free]: (1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.6.0:public@localhost) * 1024
        PageTop[localhost.mem_free]:
        Raspberry Pi Server Free Memory
        Title[localhost.mem_free]: Raspberry Pi Server Free Memory
        Options[localhost.mem_free]: growright,gauge,nopercent,transparent,noo,nolegend
        MaxBytes[localhost.mem_free]: 242565120
        kilo[localhost.mem_free]: 1024
        Unscaled[localhost.mem_free]: dwmy
        YLegend[localhost.mem_free]: Mem Free
        ShortLegend[localhost.mem_free]: Bytes
        LegendI[localhost.mem_free]: Free Memory:
        LegendO[localhost.mem_free]:
        Legend1[localhost.mem_free]: Free memory, not including swap, in bytes
        ### Memory Free

        LoadMIBs: /usr/share/mibs/netsnmp/UCD-SNMP-MIB,/var/lib/mibs/ietf/HOST-RESOURCES-MIB
        Target[localhost.mem_free]: (1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.6.0:public@localhost) * 1024
        PageTop[localhost.mem_free]:
        Raspberry Pi Server Free Memory
        Title[localhost.mem_free]: Raspberry Pi Server Free Memory
        Options[localhost.mem_free]: growright,gauge,nopercent,transparent,noo,nolegend
        MaxBytes[localhost.mem_free]: 242565120
        kilo[localhost.mem_free]: 1024
        Unscaled[localhost.mem_free]: dwmy
        YLegend[localhost.mem_free]: Mem Free
        ShortLegend[localhost.mem_free]: Bytes
        LegendI[localhost.mem_free]: Free Memory:
        LegendO[localhost.mem_free]:
        Legend1[localhost.mem_free]: Free memory, not including swap, in bytes

        ### Interface 2 >> Descr: ‚eth0‘ | Name: ‚eth0‘ | Ip: ‚152.143.91.80‘ | Eth: ‚b8-27-eb-c9-f4-c5‘ ###

        Target[raspi1]: 2:public@localhost:
        SetEnv[raspi1]: MRTG_INT_IP=“152.143.91.80″ MRTG_INT_DESCR=“eth0″
        MaxBytes[raspi1]: 12500000
        Title[raspi1]: Traffic Analysis raspi1
        PageTop[raspi1]: Traffic Analysis raspi1

        System:
        raspi1

        NIC:
        eth0

        Max Speed:
        12.5 MBytes/s

        Ip:
        DHCP 152.143.91.80 (raspi1)

        Grüße
        Marc

        • Ok, mrtg scheint zu laufen. ### Memory Free hast du 2x drin und komischweiße fehlt das WorkDir. Füg mal bitte am Anfang, vor IconDir, noch folgendes ein
          WorkDir: /var/www/mrtg
          Das gibt an, wo die rrd-DBs und die Grafiken gespeichert werden.
          MRTG muss nicht neu gestartet werden, spätestens nach einer Minute wird die Konfig von selbst neu eingelesen.
          Gruß Iro

          • Sorry für die späte Meldung.
            Raspberry musste für ein anderes Projekt einspringen und somit bin ich mitten drin stehen geblieben. Sobald mein neuer eintrifft fange ich wieder von vorne an.
            Marc

  2. Hi bei mir kommt immer der Fehler :
    Error: Parse error in /etc/mrtg.cfg near Raspberry Pi Server – Active CPU Load %
    wenn ich den browser öffne
    bei dir im text steht drin
    „Raspberry Pi Server – Active CPU Load %“
    und wenn ich die zeile auskommtiere funktioniert es ausser das die grad zahlen nicht stimmern es steht hier immer nur 2 grad

    • Hey blubbs,
      das hört sich eigentlich danach an, als würde es Probleme mit den HTML Tags geben, evtl. nur ein Copy&Paste Fehler. Allerdings sollte die Ausgabe auch nicht in Grad Celsius, sondern in Prozent erfolgen, schließlich geht es hier nicht um die Temperatur, sondern die Auslastung der CPU.
      Poste doch bitte deine Konfig hier oder schick sie mir per Email (siehe Impressum), dass macht das ganze gleich viel einfacher 🙂
      Gruß iro

  3. Sind die Werte für die RAM Memory Statistik schon auf das neue 512MB Model berechnet.
    Der max Wert 242565120 zeugt eher von 256 MB ?
    Die RAM Memory OIDs bekanntermaßen:
    Total RAM in machine: .1.3.6.1.4.1.2021.4.5.0
    Total RAM used: .1.3.6.1.4.1.2021.4.6.0
    Total RAM Free: .1.3.6.1.4.1.2021.4.11.0
    Total RAM Shared: .1.3.6.1.4.1.2021.4.13.0
    Total RAM Buffered: .1.3.6.1.4.1.2021.4.14.0
    Total Cached Memory: .1.3.6.1.4.1.2021.4.15.0
    Wieso wird dann bei FreeMem die 1.3.6.1.4.1.2021.4.6.0 abgefragt ??
    Das wäre doch eigentlich die 1.3.6.1.4.1.2021.4.11.0 und führt in der Grafik dann auch zu falschen Werten 🙁
    snmpwalk localhost -c public -v1 1.3.6.1.4.1.2021.4.6.0
    bzw.
    snmpwalk localhost -c public -v1 1.3.6.1.4.1.2021.4.11.0
    gibt die realen Werte raus die mit der Grafik nicht übereinstimmen.
    Alle anderen Werte sind realistisch.

    • Moin wwinzig,
      stimmt, die Werte sind noch für die 256MB Ram Version des Pi. Die Werte für die 512MB Version werde ich demnächst anpassen. Bei den OIDs scheinst du recht zu haben, ich denke mal das war ein Copy&Paste Fehler aus einer alten mrtg.cfg. Schließlich sollten wir dank Mibs auch nicht mehr mit OIDs arbeiten, bei Zahlen bringt man viel eher dreher rein 😉
      Ich denke memTotalFree.0 sollte der richtige Wert sein, ergo sollte die Zeile dann
      Target[localhost.mem_free]: (memTotalFree.0&memTotalFree.0:public@localhost) * 1024
      heißen. Ich werde das allerdings nochmal testen bevor ich das TUT update.
      Gruß iro

      • Moin,
        gerade eben die Zeit gefunden die Werte noch einmal zu überprüfen und die RAM Werte für die 512er Version ergänzt.

        @wwinzig: 1.3.6.1.4.1.2021.4.11.0 zeigt den freien Ram inkl. Swap an, was meiner Meinung nach nicht sehr hilfreich ist.
        1.3.6.1.4.1.2021.4.6.0 zeigt zumindest bei dem Pi den tatsächlichen freien Ram an. Lässt sich leicht mit free -k überprüfen. Ram free und Swap free zusammen addiert ergibt den Wert den die OID 1.3.6.1.4.1.2021.4.11.0 ausspuckt. Demnach war das Tut also doch richtig 😉
        Die in meinem letzten Beitrag gepostete Zeile gibt den selben Wert wie OID 1.3.6.1.4.1.2021.4.11.0 zurück.
        Allerdings ist der Wert nur bedingt nützlich, da Linux innerhalb kürzester Zeit Dateien im freien Ram cached und der Wert somit innerhalb kürzester Zeit relativ klein wird. Der logische Wert wäre eigentlich freies Ram + Buffer + Cache. Deshalb hab ich das Tutorial noch um Punkt 4 ergänzt, dass man sich auch diesen Wert anzeigen lassen kann.

        Gruß iro

  4. Servus, ich bekomm das Auslesen des DS18b20 nicht hin 🙁
    Es wird einfach keine Temperatur aufgezeichnet.
    Bei der Installation hab ich nur eine Fehlermeldung mit dem „dontlogtcpwrapper“, den hab ich wieder rausgelöscht. Aber Temp. wird trotzdem keine angezeigt. Was kann ich noch probieren??

    • Hallo Wolfgang,
      da kommen natürlich viele Fehlerquellen in Frage 🙂 Zu aller erst ist die Frage, ob der Sensor richtig angeschlossen ist und erkannt wird. Dazu schaust du unter /sys/bus/w1/devices/ ob du dort die ID deines Sensors siehst. Falls das wi Verzeichnis nicht existiert, dann wurde kein 1-Wire Device erkannt. Falls das der Fall ist, postest du am besten die Anleitung nach der du vorgegangen bist um Verkablungsfehler ausschließen zu können. Bei meinem DS18S20 musste ich z.B. zwischen zwei Beinchen einen Widerstand einlöten. Danach sehen wir weiter 😉
      Gruß iro

  5. Hallo,

    die Konfiguration passt dank Dir soweit, aber es werden nur die Grafiken für den Netzwerktraffic korrekt angezeigt, die anderen Werte „spukt“ er nur in Textform aus … in der Original mrtg.cfg sind bei den Netzwerk HTML Tags für Tabellen eingebunden, wo könnte der Fehler liegen?

    Vielen Dank

    • Hallo Marcel,
      Wenn Daten angezeigt werden, dann scheint immerhin das logging schon zu funktionieren. Schau doch mal ob die Grafiken überhaupt alle erstellt werden. Könnte an einem Rechte Problem liegen. Das mit den Tags verstehe ich allerdings nicht ganz, am besten postest du hier einfach mal deine Konfig und ein Screenshot bei einem externen Hoster schadet natürlich auch nie 😉
      Am besten immer so viel Infos posten wie möglich, dann muss man weniger in der Luft stochern 😀
      Gruß iro

      • Hallo irosuarus,

        habe mal ein Bildschirmfoto von der Ausgabe erstellt … zu finden unter error.schoenliegen.de.

        Hier die config:

        # Created by
        # /usr/bin/cfgmaker –global „Options[_]: growright“ –global „IconDir: /mrtg“ –global „WriteExpires: Yes“ –global „Language: german“ –global „RunAsDaemon: yes“ –global „EnableIPv6: no“ –global „LogFormat: rrdtool“ –global „Interval: 1“ „–if-filter=$if_admin && $default_iftype“ –output /etc/mrtg.cfg public@localhost

        ### Global Config Options

        # for UNIX
        # WorkDir: /home/http/mrtg

        # for Debian
        WorkDir: /var/www/mrtg

        # or for NT
        # WorkDir: c:mrtgdata

        ### Global Defaults

        # to get bits instead of bytes and graphs growing to the right
        # Options[_]: growright, bits

        EnableIPv6: no
        Options[_]: growright
        IconDir: /mrtg
        WriteExpires: Yes
        Language: german
        RunAsDaemon: yes
        EnableIPv6: no
        LogFormat: rrdtool
        Interval: 1

        ######################################################################
        # System: raspberrypi
        # Description: Linux raspberrypi 3.6.11+ #524 PREEMPT Thu Aug 15 15:48:48 BST 2013 armv6l
        # Contact: Me
        # Location: Sitting on the Dock of the Bay
        ######################################################################

        ### Interface 1 >> Descr: ‚lo‘ | Name: ‚lo‘ | Ip: ‚127.0.0.1‘ | Eth: ‚No Ethernet Id‘ ###
        ### The following interface is commented out because:
        ### * it is a Software Loopback interface
        ### * filter specified by –if-filter rejected the interface
        #
        # Target[localhost_1]: 1:public@localhost:
        # SetEnv[localhost_1]: MRTG_INT_IP=“127.0.0.1″ MRTG_INT_DESCR=“lo“
        # MaxBytes[localhost_1]: 1250000
        # Title[localhost_1]: Traffic Analysis for 1 — raspberrypi
        # PageTop[localhost_1]: Traffic Analysis for 1 — raspberrypi
        #
        #
        #
        # System:
        # raspberrypi in Sitting on the Dock of the Bay
        #
        #
        # Maintainer:
        # Me <me@example.org>
        #
        #
        # Description:
        # lo
        #
        #
        # ifType:
        # softwareLoopback (24)
        #
        #
        # ifName:
        # lo
        #
        #
        # Max Speed:
        # 1250.0 kBytes/s
        #
        #
        # Ip:
        # 127.0.0.1 (localhost)
        #
        #
        #

        …. Auszug

        dies ist der vom Tool erstellte Teil, darunter habe ich dann den entsprechenden Part von Deiner config eingefügt.

        Eine Idee?

        gruss_marcel

          • Auf den ersten Blick scheint an der Konfig alles zu passen. Sowas hab ich bislang auch noch nicht gesehen 😉 Hilft es evtl. wenn du den Teil für die CPU Auslastung nicht einrückst? Also sprich auch komplett linksbündig machst. Evtl. achtet mrtg da drauf. Falls das nicht hilft schauen wir weiter 😉
            Gruß iro

            • Hallo Iro,

              das war es … werde die Konfig noch einmal „durchjagen“ weil die Graphen noch nicht korrekt dargestellt werden … falls es dann noch Probleme gibt werde ich mich melden.

              Vielen Dank

              Die config und den Screenshot lasse ich online, falls jemand das gleiche Problem haben sollte.

              gruss_marcel

              • Hey Marcel,
                schön dass es nun läuft 😀 Haben wir ja beide wieder was gelernt, war mir auch nicht bewusst dass MRTG auch darauf achtet 😉
                Gruß iro

  6. Blöde Frage aber wo genau muss ich die Konfigs in der MRTG-RRD.cgi einfügen ?

    Ich erkenne in meiner vorhandenen irgendwie gar keine Struktur 😀

    Danke!

    • Hey Marvin,

      die mrtg-rrd.cgi muss gar nicht bearbeitet werden, außer du benutzt meine Version die ich zum Download anbiete und möchtest fastCGI abstellen. Generell werden alle Änderungen (z.B. um weitere Graphen anzuzeigen) in der mrtg.cfg gemacht.
      Hoffe ich konnte dir weiterhelfen 😀

      Gruß

  7. Hallo ich bins nochmal.
    Da das mit dem WLAN jetzt klappt hab ich mich noch an die CPU Temp. gemacht. Nachdem ich es eingebunden hatte in der cfg bekomme ich diese Meldung in der MRTG-Anzeige

    tempread=`cat /sys/class/thermal/thermal_zone0/temp` temp=`echo “scale=2; $tempread / 1000? | bc` echo $temp echo 0 echo 0 echo temperature

    Wenn ich das Temp script manuell ausführe liefert es mir aber den Wert 38470 zurück. Sagt Dir die Fehlermeldung was ?
    Gruß
    Torsten

    • Hey Torsten,
      das ist das Script, welches die Temperatur abfragt 😉 Wenns auf der HTML Seite mit angezeigt wird, dann ist es nicht richtig in der mrtg.cfg eingetragen. Bitte nochmal die Konfig prüfen.
      Gruß iro

  8. Hi iro,
    Ich hab meine Config nochmal geprüft und hatte doch tatsächlich den Inhalt des Scripts in die mrtg.cfg gepackt. Naja Anfängerfehler …
    Das hab ich jetzt bereinigt. Die mrtg.cfg ist jetz so wie du beschrieben hast.
    Leider kommt jetzt dieser Fehler schon beim Starten der mrtg-Anwendung:

    pi@raspberrypi ~ $ sudo env LANG=C /usr/bin/mrtg /etc/mrtg.cfg
    ERROR: Line 192 (Raspberry Pi Server CPU Temperatur) in CFG file (/etc/mrtg.cfg) does not make sense

    Ich denke mal das hängt iregendwie mit der Tastaturbelegung zusammen ?
    Hier nochmal meine mrtg.cfg

    Übrigens, die CPU Usage hab ich in die cfg auch eingetragen und die taucht in der Webübersicht nicht auf ?!

    # Created by
    # /usr/bin/cfgmaker –global „Options[_]: growright“ –global „IconDir: /mrtg“ –global „WriteExpires: Yes“ –global „Language: german“ –global „RunAsDaemon: yes“ –global „EnableIPv6: no“ –global „LogFormat: rrdtool“ –global „Interval: 1“ „–if-filter=$if_admin && $default_iftype“ –output /etc/mrtg.cfg public@localhost

    ### Global Config Options

    # for UNIX
    # WorkDir: /home/http/mrtg

    # for Debian
    WorkDir: /var/www/mrtg

    # or for NT
    # WorkDir: c:mrtgdata

    ### Global Defaults

    # to get bits instead of bytes and graphs growing to the right
    # Options[_]: growright, bits

    EnableIPv6: no
    Options[_]: growright
    WorkDir: /var/www/mrtg
    IconDir: /mrtg
    WriteExpires: Yes
    Language: german
    RunAsDaemon: yes
    EnableIPv6: no
    LogFormat: rrdtool
    Interval: 1

    ######################################################################
    # System: Rasperry Pi Ver.B
    # Description: Linux raspberrypi 3.6.11+ #538 PREEMPT Fri Aug 30 20:42:08 BST 2013 armv6l
    # Contact: Me
    # Location: Reichstaedt / Thueringen
    ######################################################################

    ### Interface 1 >> Descr: ‚lo‘ | Name: ‚lo‘ | Ip: ‚127.0.0.1‘ | Eth: ‚No Ethernet Id‘ ###
    ### The following interface is commented out because:
    ### * it is a Software Loopback interface
    ### * filter specified by –if-filter rejected the interface
    #
    # Target[localhost_1]: 1:public@localhost:
    # SetEnv[localhost_1]: MRTG_INT_IP=“127.0.0.1″ MRTG_INT_DESCR=“lo“
    # MaxBytes[localhost_1]: 1250000
    # Title[localhost_1]: Traffic Analysis for 1 — raspberrypi
    # PageTop[localhost_1]: Traffic Analysis for 1 — raspberrypi
    #
    #
    #
    # System:
    # raspberrypi in Sitting on the Dock of the Bay
    #
    #
    # Maintainer:
    # Me <me@example.org>
    #
    #
    # Description:
    # lo
    #
    #
    # ifType:
    # softwareLoopback (24)
    #
    #
    # ifName:
    # lo
    #
    #
    # Max Speed:
    # 1250.0 kBytes/s
    #
    #
    # Ip:
    # 127.0.0.1 (localhost)
    #
    #
    #

    ### Interface 2 >> Descr: ‚eth0‘ | Name: ‚eth0‘ | Ip: ‚No Ip‘ | Eth: ‚b8-27-eb-0c-58-69‘ ###

    #Target[localhost_2]: 2:public@localhost:
    #SetEnv[localhost_2]: MRTG_INT_IP=“No Ip“ MRTG_INT_DESCR=“eth0″
    #MaxBytes[localhost_2]: 1250000
    #Title[localhost_2]: Traffic Analysis for 2 — raspberrypi
    #PageTop[localhost_2]: Traffic Analysis for 2 — raspberrypi
    #
    #
    #
    # System:
    # raspberrypi in Sitting on the Dock of the Bay
    #
    #
    # Maintainer:
    # Me <me@example.org>
    #
    #
    # Description:
    # eth0
    #
    #
    # ifType:
    # ethernetCsmacd (6)
    #
    #
    # ifName:
    # eth0
    #
    #
    # Max Speed:
    # 1250.0 kBytes/s
    #
    #
    # Ip:
    # No Ip (No DNS name)
    #
    #
    #

    ### CPU Usage

    LoadMIBs: /usr/share/mibs/netsnmp/UCD-SNMP-MIB,/var/lib/mibs/ietf/HOST-RESOURCES-MIB
    Target[localhost.cpu]: ssCpuRawUser.0&ssCpuRawUser.0:public@127.0.0.1+ssCpuRawSystem.0&ssCpuRawSystem.0:public@127.0.0.1+ssCpuRawNice.0&ssCpuRawNice.0:public@127.0.0.1
    RouterUptime[localhost.cpu]: public@127.0.0.1
    MaxBytes[localhost.cpu]: 100
    Title[localhost.cpu]: Raspberry Pi Server – CPU Load
    PageTop[localhost.cpu]:Raspberry Pi Server – Active CPU Load %
    Unscaled[localhost.cpu]: ymwd
    ShortLegend[localhost.cpu]: %
    YLegend[localhost.cpu]: CPU Utilization
    Legend1[localhost.cpu]: Active CPU in % (Load)
    Legend2[localhost.cpu]:
    Legend3[localhost.cpu]:
    Legend4[localhost.cpu]:
    LegendI[localhost.cpu]: Active
    LegendO[localhost.cpu]:
    Options[localhost.cpu]: growright,nopercent

    ##Interface 3 >> Descr: ‚wlan0‘ | Name: ‚wlan0‘ | Ip: ‚192.168.1.104‘ | Eth: ’80-1f-02-af-0f-78′ ###

    Target[localhost_3]: 3:public@localhost:
    SetEnv[localhost_3]: MRTG_INT_IP=“192.168.1.104″ MRTG_INT_DESCR=“wlan0″
    MaxBytes[localhost_3]: 1875000
    Title[localhost_3]: Traffic Analysis for my raspberrypi
    PageTop[localhost_3]: Traffic Analysis for Raspberry Pi Nr.1

    System:
    raspberrypi in Sitting on the Dock of the Bay

    Maintainer:
    Me <me@example.org>

    Description:
    wlan0

    ifType:
    ethernetCsmacd (6)

    ifName:
    wlan0

    Max Speed:
    0.0 Bytes/s

    Ip:
    192.168.1.104 (localhost)

    ### CPU Temperature Raspberry

    TimeStrPos[localhost.cpu_temp]: RU
    Target[localhost.cpu_temp]: `/home/pi/skripte/mrtg/cpu_temp_auslesen.sh`
    Options[localhost.cpu_temp]: gauge,growright,nopercent,expscale,transparent
    Title[localhost.cpu_temp]: Raspberry Pi Server – CPU Temperatur
    PageTop[localhost.cpu_temp]:
    Raspberry Pi Server – CPU Temperatur
    MaxBytes[localhost.cpu_temp]: 125
    Step[localhost.cpu_temp]: 60
    Legend1[localhost.cpu_temp]: CPU Temperatur Raspberry Pi Server
    LegendI[localhost.cpu_temp]: CPU Temperatur
    LegendO[localhost.cpu_temp]:
    YLegend[localhost.cpu_temp]: Grad Celsius
    ShortLegend[localhost.cpu_temp]: Grad °C

    • Hi Iro,

      Das Problem mit der Fehlermeldung habe ich in den Griff bekommen. Es lag an den falschen Formatierungen /Absätzen in der mrtg.cfg. Die Diagramme werden jetzt zwar dargestellt – auch von meinem (bislang) ersten Temperatursenssor. Sie enthalten jedoch keine Daten … 🙁
      Fehlermeldung kommt aber keine mehr. Manuell kann ich den Sensor abfragen.
      Help ?

      Gruß Torsten

      • Moin Thorsten,

        überprüf noch einmal die Rechte, evtl. darf mrtg das Script zum Temperatur auslesen nicht aufrufen. Du kannst auch einmal testweise die RRD Datenbank löschen, evtl. ist diese falsch formatiert. Mrtg erstellt dann automatisch eine neue. Falls das auch nichts hilft, dann prüfe mit „ps -Af | grep mrtg“ ob mrtg auch wirklich läuft. Danch könntest du die RRD Datenbank auch noch manuell auslesen. Mit „rrdtool fetch /var/www/mrtg/localhost.cpu_temp.rrd AVERAGE“ (Pfad evtl. anpassen) bekommst du die Durchschnittswerte der DB, sollte ungefähr so aussehen:

        pi@Raspberry ~ $ rrdtool fetch /var/www/mrtg/localhost.cpu_temp.rrd AVERAGE
        […]
        1382948580: 5,3683000000e+01 0,0000000000e+00
        1382948640: 5,3917000000e+01 0,0000000000e+00
        1382948700: 5,4070000000e+01 0,0000000000e+00
        1382948760: 5,4070000000e+01 0,0000000000e+00
        1382948820: nan nan
        1382948880: nan nan

        Gruß iro

  9. Hallo,
    leider startet er nicht nach einem mrtg /etc/mrtg.cfg kommt ein Fehler: ERROR: CFG Error in „timestrpos[localhost.cpu_temp]“, file /etc/mrtg.cfg line 180: Must be a string of NO, LU, RU, LL, RL

    Hier noch meine Config:
    ### CPU Temperature Raspberry

    TimeStrPos[localhost.cpu_temp]: RU
    Target[localhost.cpu_temp]: `/home/root/scripte/mrtg/cpu_temp_auslesen.sh`
    Options[localhost.cpu_temp]: gauge,growright,nopercent,expscale,transparent
    Title[localhost.cpu_temp]: Raspberry Pi Server ~@~S CPU Temperatur
    PageTop[localhost.cpu_temp]:
    Raspberry Pi Server ~@~S CPU Temperatur
    MaxBytes[localhost.cpu_temp]: 125
    Step[localhost.cpu_temp]: 60
    Legend1[localhost.cpu_temp]: CPU Temperatur Raspberry Pi Server
    LegendI[localhost.cpu_temp]: CPU Temperatur
    LegendO[localhost.cpu_temp]:
    YLegend[localhost.cpu_temp]: Grad Celsius
    ShortLegend[localhost.cpu_temp]: Grad °C

    Hätte jemand einen Rat.

    Gruß
    Frank

    • Moin Frank,
      du hast garantiert etwas eingerückt 😉 Überprüfe noch einmal, dass der komplette CPU-Block linksbündig ist, sonst interpretiert mrtg das falsch. Siehe dazu auch die anderen Kommentare hier.
      Gruß iro

      • Hallo Iro,
        Das Problem mit der nichtstartenden cfg ist behoben. Ich habe jetzt einen Temp. Sensor angeschlossen und bekomme aber keine Graphen angezeigt.
        Meine mrtg.cfg u. die beiden Scripte liegen hier:
        Dabei ist aber z. Z. nur eins aktiv (update_mrtg_temp.sh)

        https://drive.google.com/folderview?id=0B_liXBiUpqFdWUNpNjFONFpPRW8&usp=sharing

        MRTG startet ohne Fehlermeldungen u. in der Log-Datei ist auch nichts zu finden.

        Hast Du eine Idee warum der Temp-Graph nicht angezeigt wird ?

        • Hey Torsten,
          hast du denn mal testweise die rrd DB gelöscht? Und was für Werte kommen beim manuellen auslesen der rrd DB? Bitte immer alles lesen und testen 😉 Du darfst übrigens auch gerne mal auf das Werbebanner unterhalb des Posts klicken, in den letzten 2 Wochen gab es sage und schreibe einen Klick… Motiviert doch auch etwas mehr wenn man sieht, dass die Arbeit die man hier macht auch honoriert wird – auch wenns nur Cent-Beträge sind freut man sich 😉
          Gruß iro

          • Hallo Iro,

            Leider hab ich mir die Anleitung v. Tobi Oettiker schon zig-mal vorgenommen, habe aber keine Infos gefunden wo die rrd-tools DB liegt und wie man manuelle abfragen macht.
            Hast Du nen Link zu ner Anleitung für Anfänger – kann auch in Deutsch sein. 😉

            Gruß
            Torsten

      • Hallo,

        so nach etwas basteln habe ich jetzt fast alles laufen auch 5 Tmp. Sensoren laufen gut. Leider läuft der freie Ram nicht.
        „LoadMIBs: /usr/share/mibs/netsnmp/UCD-SNMP-MIB“ gibt es nicht und die NET-SNMP-MIB“ geht nicht. Hast du vielleicht noch einen Tipp.
        Zudem wird der Ras. nun recht langsam ich greife über den vnc zu. Nun wird’s lahm.

        Gruß

        Frank

        • Hey Frank,
          hast du denn das Paket snmp-mibs-downloader installiert? Das brauch man auf jeden Fall 😀 Dass der Raspberry langsamer wird wenn du mit VNC connectest ist normal. Am besten den X-Server deaktieren (raspi-config -> Option zum Desktop booten deaktivieren). Wie das genau geht findest du in dem Tutorial Raspberry Pi sauber aufsetzen.
          Würde ich dir auf jeden Fall empfehlen. Danach nur noch Zugriff per Putty und WinSCP. Am Anfang sicherlich eine Umgewöhnung, aber das gibt sich schnell 😉 Danach kann man dem Raspberry auch einiges mehr zutrauen. Z.B. läuft der Blog darauf und noch einige andere Seiten und Services 😀 Allerdings habe ich mein root Verzeichnis auf eine externe HDD ausgelagert, die SD-Karte ist mir einfach zu oft abgeschmiert.
          Gruß iro

            • Hallo,

              eine kleine Ergänzung noch :
              ein sudo snmpwalk -v1 -c public localhost | less
              bringt unter iso.3.6.1.2.1.25.2.3.1.6.1 keine Memoryausgabe sondern dort steht bei mir nur ein „“ habe nur ich das Problem ?
              Gruß
              Frank

              • Hey Frank,
                der Befehl spukt bei mir folgendes aus:
                […]
                iso.3.6.1.2.1.25.2.3.1.6.1 = INTEGER: 465404
                […]
                Überprüfe noch einmal, dass wirklich alle benötigten Pakete installiert sind und installiere alle installierten Pakete noch einmal neu -> aptitude reinstall
                Gruß iro

        • Hallo Frank,

          Da Deine Temp-Sensoren Graphen anzeigen, kannst Du mir deine mrtg.cfg und deine Scripte mal schicken. Ich habe meine immer noch nicht soweit das sie in mrtg angezeigt werden. Die Scripte von Hand laufen jedoch
          Danke und Gruß
          Torsten

    • Hey Muhkuh,
      funktioniert denn die Ausgabe wenn du das Script direkt von Hand aufrufst? Falls nicht tippe ich mal darauf dass du das Paket „bc“ nicht installiert hast.
      Gruß iro

      • Hi.

        Doch, BC ist installiert. Noch einmal geprüft.

        Bei der manuellen Ausführung passiert aber nicht viel mehr als das dort:

        Das er ein Command in der Zeile nicht finden kann.

        temp=`echo “scale=2; $tempread / 1000″ | bc`

        Nunja, BC ist da, ich denke eher ein hat ein Problem mit temp

      • Hi.

        Hat sich erledigt. Es war ein Problem im sh Script.

        Jetzt habe ich zwar noch ein Problem mit dem Indexmaker, aber über das cgi File direkt geht es ja.

        Gruß

  10. In deinem Tutorial zur Temperaturmessung mit dem DS18S20 schreibst du, Der folgende Teil kommt nun wieder in die mrtg.cfg:

    #System: DS18S20 Temperatur Sensor
    #Contact: root
    #Location: attached to Raspberry Pi

    aber bei ich finde bei mir nicht die Datei mrtg.cfg

    Wehre schon wenn du mir dabei weiter Helfen könntest.
    Gruß
    Andreas

    • Hallo Jan,
      zwei Möglichkeiten fallen mir da ein:
      1) Mit Strg-+ die Zoomstufe des Browsers verändern — sehr einfach, nicht permanent und wahrscheinlich nicht ganz, was Du haben möchtest.
      2) Die cgi-Datei macht ja mehreres: Sie gibt die Grafiken zurück und auch den HTML-Code der Seite, die dann die Grafiken enthält. Wenn Du mit „width“- und „height“-Angaben im ausgegebenen HTML-Code die Größe der Grafiken veränderst (z.B. auf das Doppelte; das Seitenverhältnis sollte auf jeden Fall erhalten bleiben, sonst erscheinen die Grafiken verzerrt), wäre das sicher eine einfache und praktikable Lösung.

  11. Hallo und vielen Dank für das hervorragende Tut.

    Als Programmierquereinsteiger komme ich an einer Stelle nicht weiter: Ich bekomme keine Werte angezeigt.

    Die *.rrd wird laut Zeitstempel regelmäßig aktualisiert. Die rein manuelle Abfrage funktioniert auch:
    ———-
    cat /sys/bus/w1/devices/28-0000055fdd52/w1_slave
    76 01 4b 46 7f ff 0a 10 79 : crc=79 YES
    76 01 4b 46 7f ff 0a 10 79 t=23375
    ————

    Starte ich aber das Script aus dem Sensor-Tut, bekomme ich eine Fehlermeldung:
    —————–
    pi@FHEM ~ $ temp
    /usr/bin/temp: Zeile 8: bc: Kommando nicht gefunden.
    Gemessene Temperatur des Sensors °C
    —————–
    pi@FHEM ~ $ lsmod
    Module Size Used by
    w1_therm 2921 0
    w1_gpio 2363 0
    wire 24832 2 w1_gpio,w1_therm
    cn 4783 1 wire

    —————–

    Ist evtl. ein Programm nicht korrekt installiert, dass er den Befehl bc nicht kennt?
    Viele Grüße
    DocAdams

  12. Wie funktioniert der Aufruf mit mehreren DS1820? Oder geht das nur mit einem Sensor? Wäre prima, wenn Du das Tutorial dahingehend ergänzen könntest.
    Merci!

    • Das funktioniert wie bei einem Sensor, nur dass der zweite sich als anderes Device anmeldet. D.h. du brauchst einen zweiten Eintrag in der conf und ein zweites Ausleseskript, bei dem nur diese eine Zeile entsprechend geändert werden muss:
      tempread=`cat /sys/bus/w1/devices/10-0000008a5c35/w1_slave`

  13. Hallo, ich habe mit deinem Tutorial, die Temperaturmessung realisiert. Nun möchte ich mit den Paspberry und einem AD Wandler eine Spannung auslesen. Das auslesen klappt soweit, jedoch möchte ich auch die Spannung in einem Diagrammverlauf darstellen. Welche Datei/Skript und was in der Datei/ im Skript muss ich ändern damit ich den Spannungsverlauf dargestellt bekommen?

    Also anstelle von temp habe ich volt wo kann ich das ändern ?

    • Hallo Jan,
      Sollte relativ einfach gehen, schau dir die Ausgabe des Tempsensor Skripts an. In der ersten Zeile wird der Wert übergeben, dann 2x „0“ und in der letzten Zeile wird die Einheit übergeben – müsste bei dir dann „Volt“ stehen. Dein Skript muss exakt das gleiche machen 😉 Das fertige Skript muss dann in der mrtg.cfg eingetragen werden. Mrtg erzeugt dann automatisch die RRD Datenbank.
      Über welche Schnittstelle sprichst du denn AD Wandler denn an, SPI oder I2C? Und was für einen Typ nutzt du denn?
      Wäre super wenn du das fertige Skript hier posten könntest, dürfte den ein oder andern Leser hier sicherlich interessieren 🙂
      Gruß iro

      • schade klappt leider noch nicht ganz, also die HTML Seite habe ich schon mal, jedoch wird die Spannung nicht ausgelesen. Vielleicht weißt du was falsch sein kann.

        hier sind die Skripts:
        [b]/home/pi/volt.txt[/b]
        [code]1.39458816533[/code]

        [b]/home/pi/skripte/mrtg/update_mrtg_volt.sh[/b]

        #!/bin/bash
        [code]# Read voltCH1
        voltread=`cat /home/pi/volt.txt`

        volt=`echo $voltread | egrep -o ‚.{5}$’`

        volt2=`echo „scale=0; $volt“ | bc`

        # Update database
        echo $volt2
        echo 0
        echo 0
        echo volt[/code]

        [b]/etc/mrtg.cfg[/b]

        [code]######################################################################
        # System: DS18S20 Temperatur Sensor
        # Contact: root
        # Location: attached to Raspberry Pi
        ######################################################################

        ### DS18S20 Temperatur Sensor

        TimeStrPos[temp]: RU
        Target[temp]: `/home/pi/skripte/mrtg/update_mrtg_temp.sh`
        Options[temp]: gauge,growright,nopercent,expscale,transparent
        Title[temp]: Temperatur
        PageTop[temp]:
        MaxBytes[temp]: 125
        Step[temp]: 60
        Legend1[temp]: Gemessene Temperatur
        LegendI[temp]: Temperatur
        LegendO[temp]:
        YLegend[temp]: Grad Celsius
        ShortLegend[temp]: Grad °C

        #################################################################

        ### Spannung
        TimeStrPos[volt]: RU
        Target[volt]: `/home/pi/skripte/mrtg/update_mrtg_volt.sh`
        Options[volt]: gauge,growright,nopercent,expscale,transparent
        Title[volt]: Spannung
        PageTop[volt]:
        MaxBytes[volt]: 125
        Step[volt]: 60
        Legend1[volt]: Volt
        LegendI[volt]: Volt
        LegendO[volt]:
        YLegend[volt]: Spannung
        ShortLegend[volt]: Volt

        [/code]

        • Ich habe es jetzt hinbekommen, die /home/pi/skripte/mrtg/update_mrtg/update_mrtg_volt.sh Datei muss folgendermaßen aussehen:

          #!/bin/bash
          [code]# Read voltCH1
          voltread=`cat /home/pi/volt.txt`

          volt=`echo $voltread `

          volt2=`echo „scale=0; $volt“ | bc`

          # Update database
          echo $volt2
          echo 0
          echo 0
          echo volt[/code]

          Trotzdem habe ich noch ein Problem, wie bekomme ich es hin, dass im HTML Dokument 3 Nachkommastelle angezeigt werden. Zurzeit wird wie bei der Temperaturmessung nur eine Nachkommastelle angezeigt.

  14. Hallo,
    danke für das tolle Tutorial.
    Leider gibt es ein Problem bei Messung der Außentemperaturen. Der Sensor liefert in die Datei w1_slave einen Wert. Die Hardware sollte also funktionieren. Sobald ich den Sensor allerdings nach außen hänge, wird nichts mehr aufgezeichnet. Also, w1_slave hat einen Wert, die Datenbank temp_sensor2.rrd wird laut Zeitstempel aktualisiert, in den *.png wird nichts dargestellt, auch der Wert der aktuellen Temperatur friert ein.
    Da derzeit die Temperatur draußen recht niedrig ist, und deshalb die Sensortemperatur recht schnell sinkt, kann ich nicht genau sagen, ab welcher Temperatur nichts mehr aufgezeichnet bzw. dargestellt wird. Vermutlich ist die Grenztemperatur bei 10 Grad.
    Nehme ich den Sensor wieder rein, wird ab einem bestimmten Wert wieder aufgezeichnet. Das Ganze lässt sich wiederholen.
    Das verstehe ich nicht. Sind irgendwo Grenztemperaturen eingearbeitet, ab denen nicht mehr aufgezeichnet oder dargestellt wird? Anders kann ich es mir nicht erklären. Wie krieg ich das weg, ich möchte auch Außentemperaturen messen.
    Noch einen schönen dritten Advent und schon mal frohes Fest wünscht
    DocAdams

    • Hallo, ich bin´s noch mal.
      Könnte es sein, dass die Aufzeichnung bzw. Darstellung dann endet, wenn die Temperatur einstellig wird? Also irgendwo in der Informationskette ein Formatierungsfehler?

      Leider verstehe ich nicht ganz den Informationsfluss.
      w1_slave –> ../Skripte/mrtg/update-temp.sh –> ?? –> ../www/mrtg/temp-sensor.rrd –> temp_sensor-day.png

      So? Bei tiefen Temperaturen scheint die Aufzeichnung in der *.rrd zu enden, denn in der Detailansicht „friert“ der Aktuell-Wert ein.
      Wie können wir das Problem lösen?

      • Hey Adam,
        da ich momentan selbst keinen Sensor draußen habe, lässt sich das schwer nachstellen. Evtl. kann ich am Wochenende ein Kabel nach draußen verlegen.
        Gruß iro

        • Danke, das wäre nett 🙂
          Oder mal kurz einen Eisbeutel dranhalten.
          Ich denke, das lässt sich reproduzieren. Ich habe das jetzt mehrfach wiederholt. Die tiefste registrierte Temperatur lag bei 10,2 Grad, also kurz vor dem Wechsel auf einstellig. Eine andere sinnvolle Erklärung fällt mir nicht ein.

          • Versuchs mal mit diesem Skript, um die Temperatur auszulesen:
            #!/bin/bash
            # Read temperature from sensor
            tempread=`cat /sys/bus/w1/devices/10-0000008a5c35/w1_slave`
            temp=`echo $tempread | egrep -o '[0-9]+$'`
            temp2=`echo "scale=2; $temp / 1000" | bc`
            # Update database
            echo $temp2
            echo 0
            echo 0
            echo temperature

            • Jetzt klappt es wunderbar, …

              … allerdings nur bei Temperaturen >= 1,0Grad Celsius

              Im Temperaturbereich größer -1 und kleiner +1 werden wirre Temperaturen angezeigt, also genau dann, wenn in w1_slave weniger als 4 Stellen ausgewiesen werden.

              Und bei Temperaturen unter -0,999 steigt die angezeigte Temperatur wieder, das Minus wird also ignoriert.

              Viele Grüße
              Marc

                • Hey Jan,
                  leider kann MRTG keine negativen Werte darstellen, dewegen ist bei 0 °C leider schluss… Da musst du dir das rrdtool anschauen, damit kann man auch beliebige negative Werte darstellen. Leider nicht so komfortabel wie MRTG, da man für alles selbst Skripte erstellen muss. Wie man das ganze bewältigt wird z.B. auf folgender Seite behandelt
                  Gruß iro

                • Ich kann jetzt negative Temperaturen messen und darstellen. Ich musste dazu an zwei Stellen etwas ändern:
                  1. Das Script zum Auslesen des Sensors habe ich so verändert:
                  #! /bin/bash

                  # Temperatur des Sensors auslesen 28-0000053f9ac6 28-000005400df8 28-000005404445
                  tempread=`cat /sys/bus/w1/devices/28-0000053f9ac6/w1_slave`
                  ## temp=`echo $tempread | egrep -o ‚.{5}$’`
                  temp=`echo $tempread | cut -f3 -d=`
                  temp2=`echo „scale=2; $temp / 1000“ | bc`
                  # Update database
                  echo 0
                  echo $temp2
                  echo 0
                  echo temperature

                  2. rrd Datenbank
                  Hier habe ich festgestellt, dass nur Werte zwischen 0 und 125 zugelassen wurden. Ich wusste mir erstmal nicht anders zu helfen und habe die Datenbank mit rrdtool in eine xml-Datei exportiert, dann den Minimalwert von 0 auf -30 geändert und dann das ganze wieder mit rrdtool zu einer rrd zurückgewandelt.

                  Jetzt bekomme ich auch prima Messwerte aus dem Gefrierschrank ;o)

  15. Ich benutze das MRTG um ein Spannungsverlauf aufzuzeichnen, ist es den möglich, dass im MRTG Diagramm auch 2 oder 3 Nachkommastellen angezeigt werden ? bisher wird ja nur eine Nachkommastelle angezeigt.

  16. Vielen Dank für die super Anleitung!
    Gibt es eine Möglichkeit, die Skalierung der Diagramme zu ändern, also ein ymin und ymax vorzugeben? Da die aufgezeichnete Raumtemperatur nur wenige Grade schwankt, ist die automatische Skala 0…25 °C nicht sinnvoll. Wünschenswert wäre zum Beispiel 15…25 °C.

    Danke & viele Grüße1

    • Hey Thorsten,
      die Möglichkeit sollte es geben, allerdings habe ich selbst lediglich Maximalwerte ausprobiert. Die Möglichkeit die Config zu tweaken sind schier unendlich 😉 Siehe MRTG Reference. Mit MaxBytes setzt du den Maxwert und zusammen mit Unscaled könnte das klappen. Versuchs doch einfach mal 😀
      Gruß iro

    • Hey Thorsten,
      schau doch mal was Steve Shipway in deinem Link geschrieben hat, mit dem Routers2 Frontend sollte sich das realisieren lassen. Allerdings ist die Frage ob das für deine Zwecke nicht schon zu überdimensioniert ist.
      Da unser Unterbau allerdings auf dem rrd-tool basiert, solltest du die Werte die MRTG loggt nutzen können, du musst lediglich die RRD Datenbanken selbst auslesen bzw. automatisiert Grafiken erstellen lassen die du dann in eine HTML Seite einbindest. Allerdings hab ich damit selbst noch keine Grafiken erzeugen lassen, da musst du alleine weiter sehen. Allerdings spuckt Google doch einige interessante Links aus 😀
      Falls du was gutes findest kannst du den Link hier gerne posten.
      Gruß iro

  17. Hallo Leute!

    Bin vom Temperatursensor-Skript nun nach mrtg aufgestiegen 😉 Nach einem Nachmittag Frickeln läuft’s prima. Danke für eure Tutorials!

    eckermann

  18. Hallo zusammen,

    möchte mich auch für das Tutorial bedanken. Ich habe jetzt bei mir drei DS18B20 Sensoren laufen, die auch schön grafisch dargestellt werden.
    Nach ein wenig Bastelei in den Dateien habe ich es auch geschafft, negative Temperaturen zu messen und grafisch darstellen zu lassen.
    Also, wie gesagt, danke nochmal für das prima Tutorial.

    • Hallo Jens,
      vielen Dank für die Rückmeldung und für den fix mit den negativen Temperaturen, dürfte sich der ein oder andere garantiert drüber freuen 😉
      Werd die Anleitung demnächst aktualisieren 😀
      Viele Grüße
      iro

      • Hallo irosaurus,

        ich habe nochmal ein wenig an der Script-Datei „gefeilt“.
        Zuerst eine Überprüfung, ob die Sensor-Datei vorhanden ist.
        Dann eine Prüfung, ob die CRC Prüfsumme richtig ist. Wenn ja, wird die Temperatur ausgewertet und ausgegeben.


        #! /bin/bash
        # Temperatur des Sensors 28-0000053f9ac6 auslesen
        # Temperatur des Sensors 28-000005400df8 auslesen
        # Temperatur des Sensors 28-000005404445 auslesen
        sensor="/sys/bus/w1/devices/28-000005400df8/w1_slave"
        if [ -f $sensor ]
        then
        sensorraw=`cat $sensor`
        crc=`echo $sensorraw | cut -f2 -d= | cut -c4-6`
        if [ "$crc" == "YES" ]
        then
        tempraw=`echo $sensorraw | cut -f3 -d=`
        temp=`echo "scale=2; $tempraw / 1000" | bc`
        # Update database
        echo $temp
        echo 0
        echo 0
        echo temperature
        fi
        fi

        Gruß
        Jens

  19. Hallo,

    vielen Dank für das Tutorial.

    ich habe die Graphen für die CPU Usage und Temp sowie die für den Ram hinzugefügt.

    Leider monitored jetzt kein einziger Graph mehr (Lan Traffic hat vorher wunderbar funktioniert).
    Beim Graphen für die CPU Temperatur bekomme ich diese Fehlermeldung:
    Error: RRDs::graph failed, opening ‚/var/www/mrtg/localhost.cpu_temp.rrd‘: No such file or directory

    • Hey kokajo,
      Sobald es einen Fehler in der mrtg.conf gibt, bricht MRTG ab. Das erklärt vermutlich warum nun nichts mehr geloggt wird. Allerdings hast du deinen Fehler fast schon selbst beantwortet, „No such file or directory“ impliziert doch direkt, dass es da Probleme gibt 😉
      Warum auch immer wurde die RRD DB für die CPU Temp nicht angelegt und kann somit weder befüllt, noch ausgelesen werden. Für das Skripte, das zum CPU Temp abfragen dient mal direkt von Hand aus und schau ob er da noch eine Fehlermeldung ausspuckt oder ob das sauber durchläuft.
      Es schadet z.B. auch nie gleich die relevanten Teile aus der mrtg.conf zu posten, das erspart mir die Fragerei danach 😉

      Gruß iro

      • Entschuldigung.
        Wenn ich das Skript ausführe erhalte ich diese Werte hier:

        42.77
        0
        0
        temperature

        da sollte doch eig alles in Ordnung sein oder ?

        meine mrtg.cfg sieht im mom so aus:

        # Created by
        # /usr/bin/cfgmaker –global „Options[_]: growright“ –global „IconDir: /mrtg“ –global „WriteExpires: Yes“ –global „Language: german“ –global „RunAsDaemon: yes“ –global „EnableIPv6: no“ –global „LogFormat: rrdtool“ –global „Interval: 1“ „–if-filter=$if_admin && $default_iftype“ –output /etc/mrtg.cfg public@localhost

        ### Global Config Options

        # for UNIX
        # WorkDir: /home/http/mrtg

        # for Debian
        WorkDir: /var/www/mrtg

        # or for NT
        # WorkDir: c:mrtgdata

        ### Global Defaults

        # to get bits instead of bytes and graphs growing to the right
        # Options[_]: growright, bits

        EnableIPv6: no
        Options[_]: growright
        IconDir: /mrtg
        WriteExpires: Yes
        Language: german
        RunAsDaemon: yes
        EnableIPv6: no
        LogFormat: rrdtool
        Interval: 1

        ######################################################################
        # System: Raspberry
        # Description: Linux Raspberry 3.10.25+ #622 PREEMPT Fri Jan 3 18:41:00 GMT 2014 armv6l
        # Contact: Me
        # Location: Behind the TV
        ######################################################################

        ### Interface 1 >> Descr: ‚lo‘ | Name: ‚lo‘ | Ip: ‚127.0.0.1‘ | Eth: ‚No Ethernet Id‘ ###
        ### The following interface is commented out because:
        ### * it is a Software Loopback interface
        ### * filter specified by –if-filter rejected the interface
        #
        # Target[localhost_1]: 1:public@localhost:
        # SetEnv[localhost_1]: MRTG_INT_IP=“127.0.0.1″ MRTG_INT_DESCR=“lo“
        # MaxBytes[localhost_1]: 1250000
        # Title[localhost_1]: Traffic Analysis for 1 — Raspberry
        # PageTop[localhost_1]: Traffic Analysis for 1 — Raspberry
        #
        #
        #
        # System:
        # Behind the TV
        #
        #
        # Maintainer:
        # root <me@example.org>
        #
        #
        # Description:
        # lo
        #
        #
        # ifType:
        # softwareLoopback (24)
        #
        #
        # ifName:
        # lo
        #
        #
        # Max Speed:
        # 1250.0 kBytes/s
        #
        #
        # Ip:
        # 127.0.0.1 (localhost)
        #
        #
        #

        ### CPU Usage

        LoadMIBs: /usr/share/mibs/netsnmp/UCD-SNMP-MIB,/var/lib/mibs/ietf/HOST-RESOURCES-MIB
        Target[localhost.cpu]: ssCpuRawUser.0&ssCpuRawUser.0:public@127.0.0.1+ssCpuRawSystem.0&ssCpuRawSystem.0:public@127.0.0.1+ssCpuRawNice.0&ssCpuRawNice.0:public@127.0.0.1
        RouterUptime[localhost.cpu]: public@127.0.0.1
        MaxBytes[localhost.cpu]: 100
        Title[localhost.cpu]: Raspberry – CPU Load
        PageTop[localhost.cpu]:Raspberry – Active CPU Load %
        Unscaled[localhost.cpu]: ymwd
        ShortLegend[localhost.cpu]: %
        YLegend[localhost.cpu]: CPU Utilization
        Legend1[localhost.cpu]: Active CPU in % (Load)
        Legend2[localhost.cpu]:
        Legend3[localhost.cpu]:
        Legend4[localhost.cpu]:
        LegendI[localhost.cpu]: Active
        LegendO[localhost.cpu]:
        Options[localhost.cpu]: growright,nopercent

        ### Interface 2 >> Descr: ‚eth0‘ | Name: ‚eth0‘ | Ip: ‚192.168.178.154‘ | Eth: ‚b8-29-eb-84-64-21‘ ###

        Target[localhost_2]: 2:public@localhost:
        SetEnv[localhost_2]: MRTG_INT_IP=“192.168.178.154″ MRTG_INT_DESCR=“eth0″
        MaxBytes[localhost_2]: 12500000
        Title[localhost_2]: Lan Traffic – Raspberry
        PageTop[localhost_2]: Lan Traffic – Raspberry

        System:
        Raspberry in Sitting on the Dock of the Bay

        Maintainer:
        Me <me@example.org>

        #
        # Description:
        # eth0
        #
        #
        # ifType:
        # ethernetCsmacd (6)
        #
        #
        # ifName:
        # eth0
        #

        Max Speed:
        12.5 MBytes/s

        #
        # Ip:
        # 192.168.178.154 (No DNS name)
        #

        ich leider erhalte ich auch bei dieser Config ohne die Temperatur keine Werte für meine Graphen

      • Nach einigen Versuchen hab ich immer das gleiche Ergebnis: Das monitored für die Netzwerküberwachung funktioniert immer, wenn ich dann aber etwas dazufügen möchte z.B. Temperatursensor (DS18S20) oder irgend etwas anders gibt es eine Fehlermeldung auf einen Link den es nicht gibt. Bei der Netzwerküberwachung ist der so: http://192.168.2.53/cgi-bin/mrtg-rrd.cgi/localhost_2.html und funktioniert, aber bei zb. Temp_sensor ist der so:http://192.168.2.53/cgi-bin/mrtg-rrd.cgi/temp_sensor.html. Diesen gibt es nicht, ebenso wie alle Anderen nicht. Wie werden diese erzeugt ?

        • Hallo borduser,
          die html sites werden on-the-fly erzeugt, d.h. du wirst sie nirgends finden. Wie sieht es denn mit den rrd DBs aus, sind diese alle vorhanden? Wenn die Abfragen der verschiedenen Skripte richtig funktioniert und Werte zurückgegen werden, dann erzeugt MRTG automatisch selbst die rrd DBs.
          Gruß iro

  20. Ich bin vom DS18S20 Sensor Tutorial, und dem MRTG Folgetutorial sehr begeistert!
    Bitte füge so einen Spenden Link für PayPal ein, damit ich dir als kleines Dankeschön einige Euronen spenden kann 🙂
    Keep up the good Work!

    Liebe Grüße

    • Hallo Bern,
      vielen Dank für das Lob, das motiviert einen weiter zu machen 😀
      Die Idee mit dem Spenden Button ist nett, hab ich gleich mal integriert evtl. kommen so die laufenden Kosten für den Server rein 😉 Danke!
      Gruß iro

  21. Hi iro,
    auch das Tutorial ist klasse 🙂
    Beim 1:1 übernehmen, ist mir aufgefallen, dass einige Fehler noch nicht korrigiert sind.

    Beim kopieren der Scriptfragmente in die /etc/mrtg.cfg mit nano, unbedingt drauf hinweisen, das der Text linksbündig sein muss.
    Der Zeilenumbruch nach PageTop[localhost.cpu_temp]:, sollte raus.
    Beim Part: DS18S20, ist bei der Berechtigungsvergabe, die falsche Datei angegeben.

    Danach könnte man (ohne Nachdenken) Dein Tutorial durchkopieren. (Ausnahme: Sensorkennung) – wenn gewollt. „Denn sie wissen nicht was sie tun“ 😉
    Grüße aus LA
    ralphi

    • Hey ralphi,
      danke für die Rückmeldung! 😀 Dass die Formatierung zum Kopieren nicht ideal ist haben wir auch schon bemerkt, kommt leider durch das neue Design. Da müssen wir uns wohl nochmal was überlegen. Solange muss einfach jeder etwas mehr mitdenken – das Hirn einschalten schadet nie, dann lernt man vllt. auch etwas 😉
      Aber deinen Hinweis werd ich auf jeden Fall noch einbauen 😀
      Gruß iro

  22. Hallo,
    Ich möchte nur verschiedene Temperatursensoren auslesen.
    Bekomme dabei den Fehler:
    Error: Parse error in /etc/mrtg.cfg near Temperatur Wohnzimmer

    Meine mrtg.cfg:
    ### Global Config Options

    # for UNIX
    # WorkDir: /home/http/mrtg

    # for Debian
    WorkDir: /var/www/mrtg

    # or for NT
    # WorkDir: c:\mrtgdata

    ### Global Defaults

    # to get bits instead of bytes and graphs growing to the right
    # Options[_]: growright, bits

    EnableIPv6: no
    Options[_]: growright
    IconDir: /mrtg
    WriteExpires: Yes
    Language: german
    RunAsDaemon: yes
    EnableIPv6: no
    LogFormat: rrdtool
    Interval: 1

    PageTop[localhost_1]:
    ######################################################################
    # System: DS18S20 Temperatur Sensor
    # Contact: root
    # Location: attached to Raspberry Pi
    ######################################################################

    ### DS18S20 Temperatur SensorWohnzimmer

    TimeStrPos[temp_wohnzimmer]: RU
    Target[temp_wohnzimmer]: `/home/pi/skripte/mrtg/update_mrtg_temp.sh`
    Options[temp_wohnzimmer]: gauge,growright,nopercent,expscale,transparent
    Title[temp_wohnzimmer]: Temperatur Wohnzimmer
    PageTop[temp_wohnzimmer]:
    Temperatur Wohnzimmer
    MaxBytes[temp_wohnzimmer]: 125
    Step[temp_wohnzimmer]: 60
    Legend1[temp_wohnzimmer]: Gemessene Temperatur im Wohnzimmer
    LegendI[temp_wohnzimmer]: Innentemperatur
    LegendO[temp_wohnzimmer]:
    YLegend[temp_wohnzimmer]: Grad Celsius
    ShortLegend[temp_wohnzimmer]: Grad °C

    und die update_mrtg_temp.sh
    #! /bin/bash
    # Temperatur des Sensors 28-000005082933 auslesen
    # Temperatur des Sensors 28-000005ad9761 auslesen
    sensor=“/sys/bus/w1/devices/28-000005082933/w1_slave“
    if [ -f $sensor ]
    then
    sensorraw=`cat $sensor`
    crc=`echo $sensorraw | cut -f2 -d= | cut -c4-6`
    if [ „$crc“ == „YES“ ]
    then
    tempraw=`echo $sensorraw | cut -f3 -d=`
    temp=`echo „scale=2; $tempraw / 1000“ | bc`
    # Update database
    echo $temp
    echo 0
    echo 0
    echo temperature
    fi
    fi

    Ergebnis der .sh datei wenn ich sie normal starte:

    root@pi-server:/home/pi/skripte/mrtg# ./update_mrtg_temp.sh
    28.31
    0
    0
    temperature

    Jemand eine Idee?

    • Hi Markus,
      hier liegt der Fehler:
      PageTop[temp_wohnzimmer]:
      Temperatur Wohnzimmer

      Das muss in eine Zeile und nicht in zwei.
      Gruß iro

  23. Guten Abend,

    erst mal ein herzliches Dankeschön für Deine tollen Tutorials rund um dem Raspberry Pi. Die machen wirklich richtig Spaß und sind sehr gut zu verstehen.

    Ich habe mich heute damit mal näher befasst und habe leider noch ein paar Schwierigkeiten, konkret zeigt mein Browser nicht alle Daten so an, wie ich es mir erhoffe.

    Wenn ich nun versuche, die CPU-Temperatur bzw. einen der angeschlossenen DS18-Sensoren aufzurufen kommt jeweils eine Fehlermeldung:
    Error: RRDs::graph failed, opening ‚/var/www/mrtg/localhost.cpu_temp.rrd‘: No such file or directory
    Bzw.
    Error: RRDs::graph failed, opening ‚/var/www/mrtg/temp_wohnzimmer.rrd‘: No such file or directory

    Die Aussage ist ja eindeutig, nur weiß ich leider nicht, was ich falsch gemacht habe.

    Ich erlaube mir, mal, den Inhalt meiner mrtg.cfg hier zu zeigen.

    Vielleicht kannst Du mir einen Tipp geben, wo es bei mir haken könnte?

    Gerne sende ich weitere Infos, ich weiß leider nur nicht, welche Datei (bzw. Inhalt) Dir vielleicht noch helfen könnte?

    Für Deine Bemühungen im Voraus vielen, vielen Dank!

    Gruß Dirk

    # Created by
    # /usr/bin/cfgmaker –global „Options[_]: growright“ –global „IconDir: /mrtg“ –global „WriteExpires: Yes“ –global „Language: german“ –global „RunAsDaemon: yes“ –global „EnableIPv6: no“ –global „LogFormat: rrdtool“ –global „Interval: 1“ „–if-filter=$if_admin && $default_iftype“ –output /etc/mrtg.cfg public@localhost

    ### Global Config Options

    # for UNIX
    # WorkDir: /home/http/mrtg

    # for Debian
    WorkDir: /var/www/mrtg

    # or for NT
    # WorkDir: c:\mrtgdata

    ### Global Defaults

    # to get bits instead of bytes and graphs growing to the right
    # Options[_]: growright, bits

    EnableIPv6: no
    Options[_]: growright
    IconDir: /mrtg
    WriteExpires: Yes
    Language: german
    RunAsDaemon: yes
    EnableIPv6: no
    LogFormat: rrdtool
    Interval: 1

    ######################################################################
    # System: raspberrypi
    # Description: Linux raspberrypi 3.10.25+ #622 PREEMPT Fri Jan 3 18:41:00 GMT 2014 armv6l
    # Contact: Me
    # Location: Sitting on the Dock of the Bay
    ######################################################################

    ### Interface 1 >> Descr: ‚lo‘ | Name: ‚lo‘ | Ip: ‚127.0.0.1‘ | Eth: ‚No Ethernet Id‘ ###
    ### The following interface is commented out because:
    ### * it is a Software Loopback interface
    ### * filter specified by –if-filter rejected the interface
    #
    # Target[localhost_1]: 1:public@localhost:
    # SetEnv[localhost_1]: MRTG_INT_IP=“127.0.0.1″ MRTG_INT_DESCR=“lo“
    # MaxBytes[localhost_1]: 1250000
    # Title[localhost_1]: Traffic Analysis for 1 — raspberrypi
    # PageTop[localhost_1]: Traffic Analysis for 1 — raspberrypi
    #
    #
    #
    # System:
    # raspberrypi in Sitting on the Dock of the Bay
    #
    #
    # Maintainer:
    # Me <me@example.org>
    #
    #
    # Description:
    # lo
    #
    #
    # ifType:
    # softwareLoopback (24)
    #
    #
    # ifName:
    # lo
    #
    #
    # Max Speed:
    # 1250.0 kBytes/s
    #
    #
    # Ip:
    # 127.0.0.1 (localhost)
    #
    #
    #

    ### Interface 2 >> Descr: ‚eth0‘ | Name: ‚eth0‘ | Ip: ‚192.168.178.23‘ | Eth: ‚b8-27-eb-e0-75-da‘ ###

    Target[localhost_2]: 2:public@localhost:
    SetEnv[localhost_2]: MRTG_INT_IP=“192.168.178.23″ MRTG_INT_DESCR=“eth0″
    MaxBytes[localhost_2]: 12500000
    Title[localhost_2]: Traffic Analysis for 2 — raspberrypi
    PageTop[localhost_2]: Traffic Analysis for 2 — raspberrypi

    System:
    raspberrypi in Sitting on the Dock of the Bay

    Maintainer:
    Me <me@example.org>

    Description:
    eth0

    ifType:
    ethernetCsmacd (6)

    ifName:
    eth0

    Max Speed:
    12.5 MBytes/s

    Ip:
    192.168.178.23 (raspberrypi.fritz.box)

    ### Interface 3 >> Descr: ‚wlan0‘ | Name: ‚wlan0‘ | Ip: ‚No Ip‘ | Eth: ’80-1f-02-ee-0a-3f‘ ###
    #
    # Target[localhost_3]: 3:public@localhost:
    # SetEnv[localhost_3]: MRTG_INT_IP=“No Ip“ MRTG_INT_DESCR=“wlan0″
    # MaxBytes[localhost_3]: 0
    # Title[localhost_3]: Traffic Analysis for 3 — raspberrypi
    # PageTop[localhost_3]: Traffic Analysis for 3 — raspberrypi
    #
    #
    #
    # System:
    # raspberrypi in Sitting on the Dock of the Bay
    #
    #
    # Maintainer:
    # Me <me@example.org>
    #
    #
    # Description:
    # wlan0
    #
    #
    # ifType:
    # ethernetCsmacd (6)
    #
    #
    # ifName:
    # wlan0
    #
    #
    # Max Speed:
    # 0.0 Bytes/s
    #
    #
    # Ip:
    # No Ip (No DNS name)
    #
    #
    #

    ### CPU Usage

    LoadMIBs: /usr/share/mibs/netsnmp/UCD-SNMP-MIB,/var/lib/mibs/ietf/HOST-RESOURCES-MIB
    Target[localhost.cpu]: ssCpuRawUser.0&ssCpuRawUser.0:public@127.0.0.1+ssCpuRawSystem.0&ssCpuRawSystem.0:public@127.0.0.1+ssCpuRawNice.0&ssCpuRawNice.0:public@127.0.0.1
    RouterUptime[localhost.cpu]: public@127.0.0.1
    MaxBytes[localhost.cpu]: 100
    Title[localhost.cpu]: Raspberry Pi Server – CPU Load
    PageTop[localhost.cpu]:Raspberry Pi Server – Active CPU Load %
    Unscaled[localhost.cpu]: ymwd
    ShortLegend[localhost.cpu]: %
    YLegend[localhost.cpu]: CPU Utilization
    Legend1[localhost.cpu]: Active CPU in % (Load)
    Legend2[localhost.cpu]:
    Legend3[localhost.cpu]:
    Legend4[localhost.cpu]:
    LegendI[localhost.cpu]: Active
    LegendO[localhost.cpu]:
    Options[localhost.cpu]: growright,nopercent

    ### Memory Usage

    LoadMIBs: /usr/share/mibs/netsnmp/UCD-SNMP-MIB,/var/lib/mibs/ietf/HOST-RESOURCES-MIB
    Target[localhost.mem_used]: 242565120 – ((memAvailReal.0&memAvailReal.0:public@localhost) * 1024)
    Title[localhost.mem_used]: Raspberry Pi Server – Used Memory
    PageTop[localhost.mem_used]:Raspberry Pi Server – Used Memory
    Options[localhost.mem_used]: growright,gauge,nopercent,transparent,noo,nolegend
    #MaxBytes[localhost.mem_used]: 242565120
    MaxBytes[localhost.mem_used]: 509485056
    Unscaled[localhost.mem_used]: dwmy
    kilo[localhost.mem_used]: 1024
    ShortLegend[localhost.mem_used]: MegaBytes
    YLegend[localhost.mem_used]: Mem Used
    LegendI[localhost.mem_used]: Used Memory:

    ### Memory Free, not including swap

    LoadMIBs: /usr/share/mibs/netsnmp/UCD-SNMP-MIB,/var/lib/mibs/ietf/HOST-RESOURCES-MIB
    Target[localhost.mem_free]: (1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.6.0:public@localhost) * 1024
    PageTop[localhost.mem_free]:Raspberry Pi Server – Free Memory (without Swap)
    Title[localhost.mem_free]: Raspberry Pi Server – Free Memory (without Swap)
    Options[localhost.mem_free]: growright,gauge,nopercent,transparent,noo,nolegend
    #MaxBytes[localhost.mem_free]: 242565120
    MaxBytes[localhost.mem_free]: 509485056
    kilo[localhost.mem_free]: 1024
    Unscaled[localhost.mem_free]: dwmy
    YLegend[localhost.mem_free]: Mem Free
    ShortLegend[localhost.mem_free]: MegaBytes
    LegendI[localhost.mem_free]: Free Memory:
    LegendO[localhost.mem_free]:
    Legend1[localhost.mem_free]: Free memory, not including swap, in MegaBytes

    ### Total Memory Free (Free memory + Buffer + Cache, not including swap)

    LoadMIBs: /usr/share/mibs/netsnmp/UCD-SNMP-MIB,/var/lib/mibs/ietf/HOST-RESOURCES-MIB
    Target[localhost.mem_total_free]: ((1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.6.0:public@localhost)+(1.3.6.1.4.1.2021.4.14.0&.1.3.6.1.4.1.2021.4.14.0:public@localhost)+(1.3.6.1.4.1.2021.4.15.0&.1.3.6.1.4.1.2021.4.15.0:public@localhost)) * 1024
    PageTop[localhost.mem_total_free]:Raspberry Pi Server – Total Free Memory (without Swap)
    Title[localhost.mem_total_free]: Raspberry Pi Server – Total Free Memory (without Swap)
    Options[localhost.mem_total_free]: growright,gauge,nopercent,transparent,noo,nolegend
    #MaxBytes[localhost.mem_total_free]: 242565120
    MaxBytes[localhost.mem_total_free]: 509485056
    kilo[localhost.mem_total_free]: 1024
    Unscaled[localhost.mem_total_free]: dwmy
    YLegend[localhost.mem_total_free]: Mem Free
    ShortLegend[localhost.mem_total_free]: MegaBytes
    LegendI[localhost.mem_total_free]: Free Memory:
    LegendO[localhost.mem_total_free]:
    Legend1[localhost.mem_total_free]: Free memory + Buffer + Cache, not including swap, in MegaBytes

    ### CPU Temperature Raspberry

    TimeStrPos[localhost.cpu_temp]: RU
    Target[localhost.cpu_temp]: `/home/pi/skripte/mrtg/cpu_temp_auslesen.sh`
    Options[localhost.cpu_temp]: gauge,growright,nopercent,expscale,transparent
    Title[localhost.cpu_temp]: Raspberry Pi Server – CPU Temperatur
    PageTop[localhost.cpu_temp]:
    Raspberry Pi Server – CPU Temperatur
    MaxBytes[localhost.cpu_temp]: 125
    Step[localhost.cpu_temp]: 60
    Legend1[localhost.cpu_temp]: CPU Temperatur Raspberry Pi Server
    LegendI[localhost.cpu_temp]: CPU Temperatur
    LegendO[localhost.cpu_temp]:
    YLegend[localhost.cpu_temp]: Grad Celsius
    ShortLegend[localhost.cpu_temp]: Grad °C

    ######################################################################
    # System: DS18S20 Temperatur Sensor
    # Contact: root
    # Location: attached to Raspberry Pi
    ######################################################################

    ### DS18S20 Temperatur SensorWohnzimmer

    TimeStrPos[temp_wohnzimmer]: RU
    Target[temp_wohnzimmer]: `/home/pi/skripte/mrtg/update_mrtg_temp.sh`
    Options[temp_wohnzimmer]: gauge,growright,nopercent,expscale,transparent
    Title[temp_wohnzimmer]: Temperatur Wohnzimmer
    PageTop[temp_wohnzimmer]:
    Temperatur Wohnzimmer
    MaxBytes[temp_wohnzimmer]: 125
    Step[temp_wohnzimmer]: 60
    Legend1[temp_wohnzimmer]: Gemessene Temperatur im Wohnzimmer
    LegendI[temp_wohnzimmer]: Innentemperatur
    LegendO[temp_wohnzimmer]:
    YLegend[temp_wohnzimmer]: Grad Celsius
    ShortLegend[temp_wohnzimmer]: Grad °C

    • Hey Dirk,
      werden die beiden rrd Datenbanken denn überhaupt in /var/www/mrtg erzeugt? Ich vermute einfach mal, dass die gar nicht erzeugt wurden, weil die beiden Skripte unter /home/pi/skripte/mrtg/ entweder nicht ausführbar (# chmod +x) sind oder an einem anderen Ort liegen. Überprüf das doch mal 😀
      Falls die Skripte doch da liegen und ausführbar sind, dann führe sie mal direkt aus und schau dir die Ausgabe an (# sh /home/pi/skripte/mrtg/update_mrtg_temp.sh).
      Gruß iro

      • Hallo iro,
        danke für die sehr schnelle Reaktion – toll!

        Beide Skripte liegen im /home/pi/skripte/mrtg/ und sind im LX-terminal ausführbar:

        sudo /home/pi/skripte/mrtg/cpu_temp_auslesen.sh -> führt zu
        43.31
        0
        0
        temperature

        und sudo /home/pi/skripte/mrtg/update_mrtg_temp.sh -> führt zu
        19.56
        0
        0
        temperature

        Das funktioniert also.

        In „/var/www/mrtg/“ tut sich nix weiter, dort liegen nach wie vor nur die localhost_2.rrd und ein paar *.png Bilder drin.

        Was meinst Du bitte mit >>>und schau dir die Ausgabe an (# sh /home/pi/skripte/mrtg/update_mrtg_temp.sh).<<>>Wichtig: Die Datei muss wieder ausführbar sein:
        chmod 750 /home/pi/skripte/mrtg/cpu_temp_auslesen.sh<<<
        verweist? Ich habe jedefalls unabhängig davon auch die Datei update_mrtg_temp.sh ausführbar gemacht, aber das nur am Rande.

        Sorry für die Fragen, aber ich bin Linux & rpi Anfänger 😉 Danke für Deine Geduld! Gruß Dirk

  24. Hey 🙂 erstmal danke für die Super Anleitung. Soweit hat alles geklappt. Bei mir wird leider keine Grafik im Browser angezeigt. (Auch keine Fehlermeldung) Die Seite verbindet sich und bleibt einfach weiß. Woran könnte das liegen? Habe schon alles Kontrolliert.

    Danke im voraus.

    • Hey Bernd,
      ganz simpel, unter „/var/www/mrtg“ einfach die .rrd Datenbank + dazugehörige png Grafiken löschen. Beim nächsten Durchlauf von mrtg werden die fehlenden Datenbanken neu erzeugt.
      Gruß iro

  25. Hey,

    ich habe leider ein Problem mit deinem Sktipt für die Anzeige der Temp. Sensoren am Pi.

    #!/bin/bash
    # Read temperature from sensor
    tempread=`cat /sys/bus/w1/devices/10-0000008a5c35/w1_slave`
    temp=`echo $tempread | egrep -o ‚.{5}$’`
    temp2=`echo „scale=2; $temp / 1000“ | bc`
    # Update database
    echo $temp2
    echo 0
    echo 0
    echo temperature

    Das funktioniert soweit zwar auch sauber, jedoch habe ich einen Sensor ausserhalb meiner Wohnung und hier ist es zur Zeit unter 10Grad.
    Das heisst dein Script funktioniert dann leider nicht, da er die letzten 5 Ziffern aus der Zeile nimmt. Wenn es aber unter 10Grad ist, sind es nur noch die letzten 4 Ziffern und er kopiert das „=“ mit und kann natürlich nicht mehr rechnen. Bei deinem Skript habe ich jetzt die 5 zur 4 verändert. Funktioniert gerade auch. Wenn es aber nun über 10 Grad wird, stimmt die Anzeige leider nicht mehr…

    Hast du eine Idee wie ich das Skript ändern kann, das er dies automatisch erkennt ?

    Gruß und einen guten Rutsch!

    • Hi Kevin,

      der Inhalt der Datei sieht ja ungefähr so aus:

      2c 00 4b 46 ff ff 0f 10 d3 : crc=d3 YES
      2c 00 4b 46 ff ff 0f 10 d3 t=21812

      d.h. du willst alles, was nach dem t= kommt, egal ob 4 oder 5 Zeichen. Probier mal einen regulären Ausdruck wie
      t=[\-0-9]+$ und danach ein `cut`. Also zB:

      $ echo „2c 00 4b 46 ff ff 0f 10 d3 : crc=d3 YES\n2c 00 4b 46 ff ff 0f 10 d3 t=21812“ | egrep -o ‚t=[-0-9]+$‘ | cut -d = -f 2
      21812

      $ echo „2c 00 4b 46 ff ff 0f 10 d3 : crc=d3 YES\n2c 00 4b 46 ff ff 0f 10 d3 t=2181“ | egrep -o ‚t=[-0-9]+$‘ | cut -d = -f 2
      2181

  26. Hallo,

    ich habe folgendes Probleme:

    1.bekomme nur die CPU-Auslastung und den Raspberry Pi Server Free Memory (without Swap)angezeigt,….also die Grafiken funktionieren.
    Leider bekomme ich es mit der Raumtemperatur nicht hin. Rufe ich temp auf bekomme ich auch einen Wert ausgegeben, funktioniert also auch.-> leider gab es da auch erst einige Probleme die ich aber mit einen Trick lösen konnte, indem ich mir die (temp)Datei von meinen 1. Pi kopiert und abgeändert habe. Beim 2. Pi kam es immer zu einen fehler in der ersten Zeile…..Komando nicht gefunden….aber mit sauberer Temperaturanzeige, die Bearbeitung der Datei mit nano oder notpad++ brachte keine Verbesserung. Es war nichts eingerückt, beide Datein sahen bis auf die Sensoren identisch aus. Erst der komplette tausch brachte die Lösung! Desweiteren gab es am Anfang überhaupt keine Anzeige, es waren nur leere Tabellen…Ich schaute mir dann die Rechte von /var/www/cgi-bin/mrtg-rrd.cgi an und verglich sie mit der mrtg-rrd.cgi.bak da lag das Problem. Backup rückgängig gemacht und Plötzlich funzte es. Also einfach mal mit SSH die Rechte anschauen, wer auch keine Bildchen mit Grafiken bekommt. Die Datei könnt ihr mit $ sudo mv /var/www/cgi-bin/mrtg-rrd.cgi.bak /var/www/cgi-bin/mrtg-rrd.cgi bzw $ sudo mv /var/www/cgi-bin/mrtg-rrd.cgi /var/www/cgi-bin/mrtg-rrd.cgi.bak immer wechseln!Aber nun zum
    2.Problem an keinen Pi bekomme ich Grafiken für die Temperaturen hin. Ich hoffe Ihr habt einen Tip, denke das es auch ein Problem mit den Skript ist,…es lässt sich auch manuell nicht ausfüren.
    3.Problem was gerade durch Änderung auftauchte ,…es frieren gerade die beiden funktionierenden Grafiken ein.

    4. und Hauptproblem…bin WIN-USER ;-(

    Bitte gebt mir Tips verzweifel langsam 😉
    MfG Devil

    • Hey Devil,
      am besten postest du erstmal deine mrtg.cfg. Dann schauen wir mal weiter 😉
      Problem 1 klingt stark danach, dass das Script nicht richtig aufgerufen wird, oder dass die Rechte nicht passen.
      Gruß iro

  27. hoffe ihr könnt mir helfen, ich sehe nur bei „Raspberry Pi Server – CPU Temperatur“ eine Statistik aber bei „Raspberry Pi Server – CPU Load“ & „Raspberry Pi Server – Used Memory“ zeigt er mir keine an woran könnte das liegen?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*

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