Download Latest Version tcdr-0.8.1.zip (599.6 kB)
Email in envelope

Get an email when there's a new version of TrafficCounter

Home / user-manuals / Script logging + traffic
Name Modified Size InfoDownloads / Week
Parent folder
script_readme_de 2005-05-08 6.1 kB
script_install_de 2005-05-08 960 Bytes
Totals: 2 Items   7.0 kB 0
Traffic-Counter für Draytek-Router


Script zum Logging via Cron-Job
Perl-Scripte zum Errechnen des Trafficvolumens via SNMP für Draytek-Router

Version 0.4.4
(c)2004/2005 by Mikko



Benötigt wird zum Ausführen der Scripte:

- Unix-System (portierbar auf Windows nur mit Anpassungen)
- net-snmp (GETESTET UNTER VERSION: 5.1)
- Perl (GETESTET UNTER VERSION: 5.8.3)
    Modul: Date::Calc (GETESTET UNTER VERSION: 5.3), wird nicht zum Logging benötigt, nur für traffic-Script
- KEINE Root-Rechte zum Ausführen der Scripte



Funktionsweise:

Diese Scripte loggen den ADSL-, Ethernet, ISDN-Traffic der Router Draytek Vigor 2500 und 2600 per SNMP-Schnittstelle. Mittels dieser Logdaten lassen sich Traffic-Summierungen eines beliebigen Abrechnungszeitraums berechnen. Getestet wurden die Scripte mit dem Vigor 2500, Firmware 2.5.1 (engl.). Damit sind sie auch auf dem Vigor 2600 voll funktionstüchtig. Bei anderer Firmware bzw. anderen Vigor-Typen sind event. Anpassungen notwendig (mit hoher Wahrscheinlichkeit ist nur mit engl. Firmware das loggen der ADSL-Schnittstelle möglich).
Da beim Router-Neustart bzw. -Reset die notwendigen auszuwertenden Daten wieder zurückgesetzt werden, bedient sich das Log-Script einer Eigenheit. Es wird ein Flag in ein beschreibbares MIB des Routers gesetzt, woran das Script erkennt, ob der Router resettet wurde (und somit der Traffic wieder von 0 beginnt) oder ob der Traffic des Routers aufgerechnet wird. Standardmäßg wird dafür die MIB sysLocation genutzt. Es kann jedoch jede andere beschreibbare MIB verwendet werden (einstellbar in "traffic.conf"). Wichtig ist dabei jedoch, daß diese MIB nicht durch andere Programme etc. überschrieben wird. Dies hätte eine Fehlrechnung zur Folge. Vorbeschriebene Vorgehensweise funktioniert nur einwandfrei bei Systemen, bei denen 1 Rechner am Switch des Routers hängt. Sind mehrere angeschlossen, so sind Vorraussetzungen zu schaffen, daß ein Auswerten der Traffic-Daten ohne Fehler möglich ist. Dies wäre zum Beispiel, wenn der Router permanent angeschalten bleibt und zum Auslesen der Traffic-Daten der Unix-Rechner mit den Scripts angeschalten und die Scripte ausgeführt werden. WICHTIG: Das Auslesen der Daten muß dann aber IMMER vor dem Zurücksetzen des Routers geschehen, da sonst KEINE lückenlose Aufzeichnung des Traffics erfolgt!
Ein Vorteil dieser Vorgehensweise (Flag setzen) ist, daß sie schnell (wichtig beim Logging per Cronjob) und genau ist. Eine andere Möglichkeit wäre ein Vergleich der MIBs sysUptime und des Traffics mit vorher geloggten Daten. Dies kann jedoch leicht zu Fehlern führen, z.B. wenn die Zeit des Cronjobs hoch ist oder das Logging nur per Hand ausgeführt wird (diese Möglichkeit ist jedoch auch bei Systemen mit mehreren Rechner nicht möglich). Außerdem führt die Auswertung der letzten Log-Daten zu Geschwindigkeitseinbußen. Eine dritte Möglichkeit sehe ich momentan nicht.
Eine Prüfung auf Überlauf (bei 4 Gigabyte) erfolgt beim Logging nicht. Dies wird erst beim Summieren geprüft (Script traffic).
Vorraussetzung für eine einwandfreie Funtionsweise ist eine richtige konfigurierte "traffic.conf"!



Installation:

1. Kopieren aller Dateien in ein beliebiges Verzeichnis
2. Anpassen der Konfigurationsdatei "traffic.conf" (zu einzelnen Parametern siehe Erläuterung in dieser Datei)
   HINWEIS: Das Herausfinden der passenden MIBs kann mit snmpwalk geschehen.
3. Bei automatischen Logging per Cronjob: Script "logging" per Cronjob ausführen lassen (z.B. alle 5 Minuten)
    Beispielzeile in der crontab: "*/5 * * * *     username  (cd /home/username/Draytek-Vigor_Logs; ./logging)"
    Root-Rechte sind dabei nicht notwendig! Es wird aus Sicherheitsgründen davon abgeraten, diesen Cronjob mit Root-Rechten auszuführen!
    HINWEIS: Mind. jede 1/2 Stunde per Cronjob das Script logging ausführen, um den 4 GB - Überlauf des Routers erkennen zu können (bei 8Mbit-Verbindung, bei langsamerer Verbindung ensprechend längerer Zeitraum mögl.)!
4. Logging-Script verlinken beim Netzwerk-Shutdown unter: /etc/sysconfig/network/if-down.d
    Beispiel eines Bash-Scripts: "cd /home/username/Draytek-Vigor_Logs; ./logging"

    

Übersicht Dateien:

DATEI          Funktion
-----          --------
logging      - Script zum Loggen des Traffics (per Hand oder Cronjob)
traffic      - Script zum Berechnen des Traffics
traffic.conf - Konfigurationsdatei (enthält alle Parameter, muß event. angepaßt werden)
traffic.log  - Logdatei mit geloggten Roh-Daten
readme       - diese Datei



Berechnung:

Das Script "traffic" berechnet den Traffic der ADSL- und Ethernet-Schnittstellen. Wichtig ist dabei die ADSL-Schnittstelle, da sie sich auf die Abrechnung mit dem Provider bezieht. In der Konfigurationsdatei sollten erst die Parameter kontrolliert und richtig eingestellt werden (Abrechnungszeitraum, Traffic-Volumen etc.). Für eine Übersicht sollte das Script mit "#./traffic --help" gestartet werdenumente notwendig.
ACHTUNG: Es wird nicht das Volumen berechnet, daß beim Verbindungsabbau durch Aufrunden beim Provider auf volle MB ensteht. Dies ist per SNMP nicht möglich, da keine Daten abgegriffen werden können, die auf einen Online-Zustand der ADSL-Line schließen lassen. Ebenso wäre per Cronjob keine zuverlässige Abfrage möglich. Eine automatisierte Möglichkeit fällt mir dazu nicht ein, dies zu dokumentieren.
Wie oben beschrieben wird eine Summierung des Traffics der ADSL- und Ethernet-Schnittstellen im Abrechenzeitraum ausgegeben. Angezeigt werden ebenso einige ausgewählte aktuelle Parameter des Routers, die sich aber nur auf den momentanen Zeitpunkt beziehen und keine statistische Bedeutung haben.



Format Log-Datei:

Zeit(Klartext);Zeitstempel,ADSL_IN,ADSL_OUT,Eth0_IN,Eth0_OUT,Schnittstelle2_IN,Schnittstelle2_OUT,Schnittstelle3_IN,Schnittstelle3_OUT,Reset_Flag

Bei anderer Schnittstellenbelegung als Vigor2500:
Zeit(Klartext);Zeitstempel,Schnittstelle4_IN,Schnittstelle4_OUT,Schnittstelle1_IN,Schnittstelle1_OUT,Schnittstelle2_IN,Schnittstelle2_OUT,Schnittstelle3_IN,Schnittstelle3_OUT,Reset_Flag

Source: script_readme_de, updated 2005-05-08