MRTG Statistiken
MRTG Statistiken auf bk99.de eine ausführliche Anleitung wie diese MRTG Graphen ohne SNMP entstehen gibt es bald hier.
ADSL @ HoMe
LAN @ HoMe
WLAN @ HoMe
VPN 2 HoMe
Temp @ HoMe
Memory Usage
Swap Memory Usage
Load Averages (x100)
Processes
Traffic Analysis for eth0
Uptime and Idle Time
Established TCP Connections
In neuem Fenster öffnen

LAN @ HoMe

WLAN @ HoMe

VPN 2 HoMe

Temp @ HoMe

Memory Usage

Swap Memory Usage

Load Averages (x100)

Processes

Traffic Analysis for eth0

Uptime and Idle Time

Established TCP Connections

http://mrtg.bk99.de
MRTG Scripts
Zum Beispiel mrtg.hddtemp.cfgTarget[hddtemp]: `/etc/mrtg/scripts/bash.sh hddtemp` Title[hddtemp]: HDD temp for Hödur PageTop[hddtemp]: Temperatur YLegend[hddtemp]: Temperatur ShortLegend[hddtemp]: LegendI[hddtemp]: /dev/sda LegendO[hddtemp]: /dev/sdbund noch das passende Scriptfile bash.sh.
AW: narf
Kommentar von
BeDa
am
06.03.2008 01:45
Ja jetzt wo Du es sagst. Da war noch was. Scripte kommen noch diese Woche.
Wurstelei
Kommentar von
Anonymer Benutzer
am
13.09.2008 00:13
Warum vier (4!) Programme aufrufen, wenn man alles mit einem machen kann?
Zum Beispiel statt
INDATA=`cat /proc/loadavg | cut -d " " -f2 | sed "s/\.//g" | sed "s/^0*//g"`
OUTDATA=`cat /proc/loadavg | cut -d " " -f3 | sed "s/\.//g" | sed "s/^0*//g"`
so:
INDATA=`awk -F"[/ ]" '{print $(NF-1)}' /proc/loadavg`
OUTDATA=`awk '{print $3*100}' /proc/loadavg`
cat und grep zusammen ist sowieso sinnlos, verwende statt dessen "grep suchwort datei" oder noch besser statt
INDATA=`cat /proc/meminfo | grep "SwapTotal:" | sed 's/ \+/ /g' | cut -d " " -f2`
OUTDATA=`cat /proc/meminfo | grep "SwapCached:" | sed 's/ \+/ /g' | cut -d " " -f2`
INDATA=`awk '/SwapTotal/ {print $(NF-1)}' /proc/meminfo`
OUTDATA=`awk '/SwapCached/ {print $(NF-1)}' /proc/meminfo`
Das hier fand ich besonders seltsam:
TEMP=`cat /proc/net/dev | grep $PARAM | sed "s/$PARAM://"`
INDATA=`echo $TEMP | awk '{print $1}'`
OUTDATA=`echo $TEMP | awk '{print $9}'`
Warum nicht so:
INDATA=`awk -F'[:| ]*' '/'"$PARAM"'/ {print $3}' /proc/net/dev
OUTDATA=`awk -F'[:| ]*' '/'"$PARAM"'/ {print $11}' /proc/net/dev
Eine noch bessere Performance ereeicht du, wenn du case statt if verwendest, dann muss nicht jedesmal _alles_ durchgeackert werden. Das INDATA/OUTDATA könntest du auch noch sparen, indem du die Werte direkt ausgibst, zum Beispiel wie oben:
awk -F'[:| ]*' '/'"$PARAM"'/ {print $3"\n"$11}' /proc/net/dev
Juchu, aus 7(!) Programmaufrufen einer gemacht.
Das Ganze mit rudimentärer Fehlerbehandlung und einem sprechenden Namen (etwa "mrtg_check.sh") sähe dann in etwa so aus:
#!/bin/sh
TYPE=$1
PARAM=$2
if [ "$1" == "" ]; then
echo 'Keine Variable "TYPE" angegeben.'
exit 1
fi
case $TYPE in
load)
awk '{print $2*100"\n"$3*100}' /proc/loadavg;
;;
processes)
awk -F"[/ ]" '{print $(NF-1)"\n"$(NF-2)}' /proc/loadavg;
;;
network)
if [ "$2" == "" ]; then
echo "Kein Interface angegeben."
exit 1
fi;
awk -F'[:| ]*' '/'"$PARAM"'/ {print $3"\n"$11}' /proc/net/dev;
;;
*)
echo '$TYPE ('$TYPE') ist falsch.';
exit 1;
;;
esac
uptime | awk -F\, '{print $1","$2}'
echo $TYPE
exit 0
--
Grüße,
Walter
Zum Beispiel statt
INDATA=`cat /proc/loadavg | cut -d " " -f2 | sed "s/\.//g" | sed "s/^0*//g"`
OUTDATA=`cat /proc/loadavg | cut -d " " -f3 | sed "s/\.//g" | sed "s/^0*//g"`
so:
INDATA=`awk -F"[/ ]" '{print $(NF-1)}' /proc/loadavg`
OUTDATA=`awk '{print $3*100}' /proc/loadavg`
cat und grep zusammen ist sowieso sinnlos, verwende statt dessen "grep suchwort datei" oder noch besser statt
INDATA=`cat /proc/meminfo | grep "SwapTotal:" | sed 's/ \+/ /g' | cut -d " " -f2`
OUTDATA=`cat /proc/meminfo | grep "SwapCached:" | sed 's/ \+/ /g' | cut -d " " -f2`
INDATA=`awk '/SwapTotal/ {print $(NF-1)}' /proc/meminfo`
OUTDATA=`awk '/SwapCached/ {print $(NF-1)}' /proc/meminfo`
Das hier fand ich besonders seltsam:
TEMP=`cat /proc/net/dev | grep $PARAM | sed "s/$PARAM://"`
INDATA=`echo $TEMP | awk '{print $1}'`
OUTDATA=`echo $TEMP | awk '{print $9}'`
Warum nicht so:
INDATA=`awk -F'[:| ]*' '/'"$PARAM"'/ {print $3}' /proc/net/dev
OUTDATA=`awk -F'[:| ]*' '/'"$PARAM"'/ {print $11}' /proc/net/dev
Eine noch bessere Performance ereeicht du, wenn du case statt if verwendest, dann muss nicht jedesmal _alles_ durchgeackert werden. Das INDATA/OUTDATA könntest du auch noch sparen, indem du die Werte direkt ausgibst, zum Beispiel wie oben:
awk -F'[:| ]*' '/'"$PARAM"'/ {print $3"\n"$11}' /proc/net/dev
Juchu, aus 7(!) Programmaufrufen einer gemacht.
Das Ganze mit rudimentärer Fehlerbehandlung und einem sprechenden Namen (etwa "mrtg_check.sh") sähe dann in etwa so aus:
#!/bin/sh
TYPE=$1
PARAM=$2
if [ "$1" == "" ]; then
echo 'Keine Variable "TYPE" angegeben.'
exit 1
fi
case $TYPE in
load)
awk '{print $2*100"\n"$3*100}' /proc/loadavg;
;;
processes)
awk -F"[/ ]" '{print $(NF-1)"\n"$(NF-2)}' /proc/loadavg;
;;
network)
if [ "$2" == "" ]; then
echo "Kein Interface angegeben."
exit 1
fi;
awk -F'[:| ]*' '/'"$PARAM"'/ {print $3"\n"$11}' /proc/net/dev;
;;
*)
echo '$TYPE ('$TYPE') ist falsch.';
exit 1;
;;
esac
uptime | awk -F\, '{print $1","$2}'
echo $TYPE
exit 0
--
Grüße,
Walter
Re: Wurstelei
Kommentar von
BeDa
am
21.09.2008 21:34
Hallo Walter,
ich wollte halt Graphen erzeugen ;-), aber Respekt sehr schön gekürzt und dabei noch sehenswert.
Viele Grüße
BeDa
ich wollte halt Graphen erzeugen ;-), aber Respekt sehr schön gekürzt und dabei noch sehenswert.
Viele Grüße
BeDa
narf
gruß max (boarda2000 gmx.net)