Raspberry Pi Monitoring

Reicht die Power des kleinen Raspberry Pi für Kamerasteuerung, WordPressblog und den geplanten weiteren Funktionen überhaupt aus ? Um diese Frage ein bisschen genauer bewerten zu können, werden seit ein paar Tage einige Parameter minütlich aufgezeichnet. Das ganze geschieht über folgende Skripte:

Zuerst müssen die Datenbanken angelegt werden.
[code language=“bash“]
#!/bin/sh
rrdtool create /var/www/monitor/memory.rrd –step 60 \
DS:fram:GAUGE:120:U:U \
DS:fswap:GAUGE:120:U:U \
RRA:AVERAGE:0.5:1:2160 \
RRA:AVERAGE:0.5:5:2016 \
RRA:AVERAGE:0.5:15:2880 \
RRA:AVERAGE:0.5:60:8760
rrdtool create /var/www/monitor/loadavg.rrd –step 60 \
DS:load1:GAUGE:120:0:U \
DS:load5:GAUGE:120:0:U \
DS:load15:GAUGE:120:0:U \
RRA:AVERAGE:0.5:1:2160 \
RRA:AVERAGE:0.5:5:2016 \
RRA:AVERAGE:0.5:15:2880 \
RRA:AVERAGE:0.5:60:8760
rrdtool create /var/www/monitor/temperatur.rrd –step 60 \
DS:cpu:GAUGE:120:U:U \
RRA:AVERAGE:0.5:1:2160 \
RRA:AVERAGE:0.5:5:2016 \
RRA:AVERAGE:0.5:15:2880 \
RRA:AVERAGE:0.5:60:8760 \
RRA:MIN:0.5:1:2160 \
RRA:MIN:0.5:5:2016 \
RRA:MIN:0.5:15:2880 \
RRA:MIN:0.5:60:8760 \
RRA:MAX:0.5:1:2160 \
RRA:MAX:0.5:5:2016 \
RRA:MAX:0.5:15:2880 \
RRA:MAX:0.5:60:8760
[/code]

Über einen cron Job werden die Datenbanken dann im Minuten Takt upgedatet. Die Datenbanken werden -sofern noch nicht vorhanden- zu Beginn von der SD Karte ins RAM kopiert.
[code language=“bash“]
#!/bin/sh
if [ ! -d "/run/monitor" ]
then
#Verzeichnis fehlt
sudo mkdir /run/monitor
sudo chmod 777 /run/monitor
#aktuelle RRDs ins RAM kopieren
cp /var/www/monitor/*.rrd /run/monitor
fi
# da später noch andere Scripte laufen, warten wir 15 Sekunden, bevor wir die Prozesse zählen
sleep 15
# die Daten rund um RAM und SWAP kommen aus /proc/meminfo
# freier RAM
FRAM=`grep MemFree: /proc/meminfo|tr -s [:blank:]|cut -f2 -d" "`
# freier Swap
FSWAP=`grep SwapFree: /proc/meminfo|tr -s [:blank:]|cut -f2 -d" "`
# rein damit in die RRD
rrdtool update /run/monitor/memory.rrd N:$FRAM:$FSWAP
#
#Systemauslastung
LOAD=$(awk ‚{print $1":"$2":"$3}‘ < /proc/loadavg)
rrdtool update /run/monitor/loadavg.rrd N:$LOAD
#
#CPU Temperatur
TEMP=$(vcgencmd measure_temp)
CPUTEMP=`expr substr $TEMP 6 4 `
rrdtool update /run/monitor/temperatur.rrd N:$CPUTEMP
[/code]

Schliesslich werden mit folgendem Skript die Grafiken erstellt:
[code language=“bash“]
#!/bin/bash
SWAPT=`grep SwapTotal: /proc/meminfo|tr -s [:blank:]|cut -f2 -d" "`
MEMT=`grep MemTotal: /proc/meminfo|tr -s [:blank:]|cut -f2 -d" "`
MEMTOTAL=$(expr $MEMT \* 1024)
SWAPTOTAL=$(expr $SWAPT \* 1024)
#
# 36 Stunden – RAM und Swap in einen
nice -n 19 rrdtool graph /var/www/monitor/memory.png \
-b 1024 –start -129600 -a PNG -t "RAM und SWAP" –vertical-label "Bytes" -w 600 -h 100 \
DEF:fram=/run/monitor/memory.rrd:fram:AVERAGE \
DEF:fswap=/run/monitor/memory.rrd:fswap:AVERAGE \
CDEF:framb=fram,1024,* \
CDEF:fswapb=fswap,1024,* \
LINE1:framb#ff0000:"freier RAM" \
LINE1:fswapb#006600:"freier SWAP" > /dev/null
# 7 Tage – RAM und Swap in einen
nice -n 19 rrdtool graph /var/www/monitor/memory7d.png \
-b 1024 –start -604800 -a PNG -t "RAM und SWAP" –vertical-label "Bytes" -w 600 -h 100 \
DEF:fram=/run/monitor/memory.rrd:fram:AVERAGE \
DEF:fswap=/run/monitor/memory.rrd:fswap:AVERAGE \
CDEF:framb=fram,1024,* \
CDEF:fswapb=fswap,1024,* \
LINE1:framb#ff0000:"freier RAM" \
LINE1:fswapb#006600:"freier SWAP" > /dev/null
# 36 Stunden – Load Average
nice -n 19 rrdtool graph /var/www/monitor/load.png –start -129600 \
-a PNG -t "CPU Auslastung" –vertical-label "CPU Load" -w 600 -h 100 -M \
DEF:load1=/run/monitor/loadavg.rrd:load1:AVERAGE \
DEF:load5=/run/monitor/loadavg.rrd:load5:AVERAGE \
DEF:load15=/run/monitor/loadavg.rrd:load15:AVERAGE \
AREA:load1#ff0000:"1 Minute" \
AREA:load5#ff9900:"5 Minuten" \
AREA:load15#ffff00:"15 Minuten" \
LINE1:load5#ff9900:"" \
LINE1:load1#ff0000:"" > /dev/null
# 7 Tage – Load Average
nice -n 19 rrdtool graph /var/www/monitor/load7d.png –start -604800 \
-a PNG -t "CPU Auslastung" –vertical-label "CPU Load" -w 600 -h 100 \
DEF:load1=/run/monitor/loadavg.rrd:load1:AVERAGE \
DEF:load5=/run/monitor/loadavg.rrd:load5:AVERAGE \
DEF:load15=/run/monitor/loadavg.rrd:load15:AVERAGE \
AREA:load1#ff0000:"1 Minute" \
AREA:load5#ff9900:"5 Minuten" \
AREA:load15#ffff00:"15 Minuten" \
LINE1:load5#ff9900:"" \
LINE1:load1#ff0000:"" > /dev/null
# 36 Stunden – CPU Temperatur
nice -n 19 rrdtool graph /var/www/monitor/cputemp.png \
–start -129600 -a PNG -t "CPU Temperatur" –vertical-label "Grad Celsius" -w 600 -h 100 \
DEF:cpu=/run/monitor/temperatur.rrd:cpu:AVERAGE \
LINE1:cpu#ff0000:"CPU Temperatur" > /dev/null
# 7 Tage – CPU Temperarur
nice -n 19 rrdtool graph /var/www/monitor/cputemp7d.png \
–start -604800 -a PNG -t "CPU Temperatur" –vertical-label "Grad Celsius" -w 600 -h 100 \
DEF:cpu=/run/monitor/temperatur.rrd:cpu:AVERAGE \
LINE1:cpu#ff0000:"CPU Temperatur" > /dev/null
[/code]

Fertig  sieht das dann so aus:

Schreibe einen Kommentar

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