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.

#!/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

Ü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.

#!/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

Schliesslich werden mit folgendem Skript die Grafiken erstellt:

#!/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

Fertig  sieht das dann so aus:

Schreibe einen Kommentar

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