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?