Benutzerspezifische Werkzeuge
Sie sind hier: Startseite Dokumente MRTG Statistiken
Artikelaktionen

MRTG Statistiken

von BeDaZuletzt verändert: 04.05.2008 21:47

MRTG Statistiken auf bk99.de eine ausführliche Anleitung wie diese MRTG Graphen ohne SNMP entstehen gibt es bald hier.

ADSL @ HoMe
ADSL day
SmokePing Stats

LAN @ HoMe
LAN day

WLAN @ HoMe
WLAN day

VPN 2 HoMe
VPN day

Temp @ HoMe
VPN day

Memory Usage
MEM day

Swap Memory Usage
SWAP day

Load Averages (x100)
LOAD day

Processes
Processes day

Traffic Analysis for eth0
NET eth0 day

Uptime and Idle Time
UPTIME day

Established TCP Connections
TCP Established day

In neuem Fenster öffnen
http://mrtg.bk99.de

MRTG Scripts

Zum Beispiel mrtg.hddtemp.cfg
Target[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/sdb
und noch das passende Scriptfile bash.sh.

narf

Kommentar von Anonymer Benutzer am 09.01.2008 01:23
"bald" .. schade dass du nichts mehr dazugeschrieben hast, deine scripts würden mich sehr interessieren!
gruß max (boarda2000 gmx.net)

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.

:-)

Kommentar von Anonymer Benutzer am 14.04.2008 01:16
okay dann wart ich noch ^^

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

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