Ich polle mittels des rrdcollect-daemons einige Dinge wie CPU-Last, Speicherausnutzung und den Datendurchsatz der DSL-Leitung. Alle informationen werden aus dem /proc-Zweig geholt. Für den DSL-Durchsatz beobachte ich zur Zeit sowohl ppp0 als auch eth1 (da hängt das Modem dran). Und genau hier entstehen meine Probleme.
Problem-1: Die erzeugten Grafiken von ppp0 und eth1 zeigen prinzipiell das glecihe Verhalten. Allerdings ist die Skalierung von ppp0 falsch. Zeigt die Grafik von ppp0 zu einem Zeitpunkt einen Durchsatz von 100kB/s an, so ist dies in der Grafik von eth1 nur knapp 90kB/s. Woran kann das liegen? Letztlich sind die in der ppp0-Grafik erscheinenden Werte nicht realistisch, da DSL nur 80kB/s liefert.
Problem-2: wegen der dauernden Zugriffe verschiedener P2P-Clients wird das "Auflegen" (idle-time) verhindert. Aus dem Grund lasse ich Nachts und früh morgends einen cron-job laufen, der per poff eine Zwangstrennung durchführt (was die T-Offline kann, das kann ich auch ). Dieses Auflegen verursacht in der ppp0-Grafik riesige Peaks (10MB/s), so daß alle Grafiken, in denen so ein Peak zu sehen ist, derart skaliert werden, daß die eigentliche Kurve nicht mehr sichtbar ist! Entweder liegt das daran, daß rrdcollect kein ppp0 mehr in /proc/net/dev findet, und NaN in der Datenbank einträgt, ober rrdtool kommt mit etwaigen 0-Werten nicht klar. Auf jeden Fall tritt dieses Problem zur Zeit nur in der ppp0-Kurve auf. Die Grafik von eth0 ist "sauber".
Ich verwende folgenden Setup:
/etc/rrdcollect.conf (Auszug)
Code: Alles auswählen
file:///proc/net/dev
/eth1:\s*(\d+)\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+(\d+)/ \
net.rrd:eth1_rcv_bytes,eth1_snd_bytes
/ppp0:\s*(\d+)\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+(\d+)/ \
net.rrd:ppp0_rcv_bytes,ppp0_snd_bytes
Code: Alles auswählen
RRDB_NET=/var/lib/rrdcollect/net.rrd
NOW=`date +%s`
ONE_HOUR_AGO=$(($NOW-3600))
ONE_DAY_AGO=$(($NOW-86400))
rrdtool graph /var/www/eth1_day.png -s $ONE_DAY_AGO -e $NOW -a PNG \
-t "Network usage for $HOSTNAME : eth1" \
-l 0 -r \
"DEF:eth1_rcv=$RRDB_NET:eth1_rcv_bytes:AVERAGE" \
"DEF:eth1_snd=$RRDB_NET:eth1_snd_bytes:AVERAGE" \
'LINE1:eth1_rcv#00FF00:input' \
'LINE1:eth1_snd#FF0000:output'
Code: Alles auswählen
rrdtool create /var/lib/rrdcollect/net.rrd --step 60 \
DS:eth1_rcv_bytes:COUNTER:150:0:U \
DS:eth1_snd_bytes:COUNTER:150:0:U \
DS:ppp0_rcv_bytes:COUNTER:150:0:U \
DS:ppp0_snd_bytes:COUNTER:150:0:U \
RRA:AVERAGE:0.5:1:1440 \
RRA:AVERAGE:0.5:5:4032 \
RRA:AVERAGE:0.5:60:17532