Mittwoch, 14. März 2007

Fritz!Box-Traffic mit cacti aufzeichnen

Da habe ich mich heute kurzerhand dazu entschlossen, meinen IPCop-Router (Pentium 90 auf einem Asus P5A-B – bald ein Museumsstück!) durch die hier herumgammelnde Fritz!Box Fon 5012 zu ersetzen, doch – schreck lass nach – das Ding bringt natürlich keinen SNMP-Support mit sich. Was nun?

UPnP?

Nun gut, was sich hinter UPnP genau verbirgt, lese ich ein andermal nach. Jedenfalls scheint dieses Protokoll/Feature von Natur aus sehr geschwätzig zu sein, was den Traffic anbelangt. Ein findiger Linux-Hacker hat denn auch schon ein kleines, aber hochstehendes Shell-Scriptlein programmiert, das MRTG (der Vorfahre von rrdtool, auf das cacti exzessiv zurückgreift) „füttert“:

Monitoring Fritz!Box With MRTG

Bastelstunde

Was wäre eine schicke Linux-Anwendung, wenn man nicht auch hier etwas Hand anlegen und Feintuning betreiben müsste (vom Grundkonzept her zu vergleichen mit Alpinisierern und Brabierern)? Damit das Scriptlein auch mit cacti zusammenspielt, habe ich den Shell-Output folgendermassen umgebogen:

...
# output for mrtg
printf "IN:${b1:-UNKNOWN} OUT:${b2:-UNKNOWN}\n"
#printf "%s\n%s\n%d days %.2d:%.2d:%.2d h (online)\nFritz!Box\n" \
#  "IN:${b1:-UNKNOWN}" "OUT:${b2:-UNKNOWN}" "${h% *}" "${h#* }" "${m#* }" "${s#* }"
...

Nachtrag

Der 32bit-Counter generiert im Laufe der Zeit einen Overflow und kehrt sich ins Negative. Das bringt cacti/rrdtool leider gehörig draus, obwohl dieses Verhalten gerade bei Traffic-Messungen zur Tagesordnung gehört.

Folgender Einschub korrigiert den Effekt:

if [ "$b1" -lt "0" ]; then
        c1=$[ (-4294967296 - $b1) * -1 ]
else
        c1=$b1
fi

if [ "$b2" -lt "0" ]; then
        c2=$[ (-4294967296 - $b2) * -1 ]
else
        c2=$b2
fi

Die auszugebenden Variablen müssen danach noch im Abschnitt #output for mrtg angepasst werden:

printf "IN:${c1:-UNKNOWN} OUT:${c2:-UNKNOWN}\n"

Integration in cacti

Damit kann man nun eine neue Datenquelle anlegen und daraus einen Graphen generieren lassen. Ich empfehle, bei der Erstellung des Graphen ‚Interface (bytes/sec)‘ zu wählen.

Man versieht sich darauf hin kaum, und die Graphen sprudeln wieder. Schick, nicht wahr?

Liked this post? Follow this blog to get more. 

Tags:
Labels: Linux

Kommentar erfassen