darkstat static binary (IP Traffic Bandwidth Monitor) by djtm

djtm

Neuer User
Mitglied seit
19 Nov 2005
Beiträge
153
Punkte für Reaktionen
0
Punkte
0
Ich habe nach vielen Stunden Mühe Darkstat für die Fritzbox compiliert bekommen.

Darkstat ist ein geniales Programm, dass Netzwerkstatistiken komfortabel im Browser anzeigt. Ihr könnt also sehen wer wieviel im Netz überträgt, wann wieviel übertragen wurde, auf welchen Ports und Protokollen, usw. Seht euch einfach die Screenshots an und probiert es aus! ;-)

Und das geniale: Es verbraucht kaum Ressourcen, weder viel Speicher noch viel CPU! :)

Nachdem ihr es auf einen Webserver gespeichert habt, könnt ihr es so runterladen und starten. Einfach diese Befehle auf der Fritzbox eingeben, nachdem ihr euch per ssh oder ftp eingeloggt habt. Ihr könnt es natürlich auch in eure debug.cfg einfügen.
(Verschoben, Siehe meinen letzten Beitrag dazu.)

Den Server solltet ihr sicherheitshalber nicht direkt vom Internet erreichbar machen. Ihr müsst ggfs. die Internetmitbenutzer informieren, dass von ihnen Daten erhoben werden.

Die Anhänge sind als bz2 komprimiert. Bitte vorher entpacken, sonst geht's nicht.
Diese Versionen sind für aktuelle AVM-Firmwares (mit Kernel 2.6) und benötigen keinerlei extra Bibliotheken oder Dateien.
Die aktuellste Version ist immer ganz unten im letzten Eintrag von mir zu finden.

Viel Spaß und wenn es euch gefällt, sagt bescheid!
 

Anhänge

  • darkstat.bz2
    161.5 KB · Aufrufe: 149
  • darkstat-250h.bz2
    164.2 KB · Aufrufe: 110
  • darkstat.png
    darkstat.png
    16.2 KB · Aufrufe: 715
  • darkstat2.png
    darkstat2.png
    103.9 KB · Aufrufe: 674
Zuletzt bearbeitet:
Super, danke! :)

Das gabs ja schon mal mit extra libs.

Zu erwähnen wäre noch, dass es Version 3.0.707 ist und Leute wie ich, die keine virtuelle IP nutzen das Prog anders aufrufen.

Code:
./darkstat -i lan --no-dns -b 192.168.178.1 -p 1234 --user root --chroot /var/tmp
 
Weiß jemand, was die Optionen
--no-promisc
--no-dns
für einen Unterschied machen in Hinsicht auf Speicher und CPU-Verbrauch?

Also die kleine Version läuft jetzt bei mir auch so konstant mit unter 1 MB ! :)

Antwort: Mit --no-dns reduziert sich der Speicherverbrauch um fast die Hälfte auf unter 500k! Denn mit DNS laufen zwei Instanzen von darkstat, eine extra für die DNS-Anfragen.

Mit --no-ports bleibt der Speicherverbrauch auch konstant niedrig.
 
Zuletzt bearbeitet:
Kein Portaufzeichnungen --no-ports

Ich habe zusammen mit dem Erfinder/Maintainer Emil eine bessere Lösung gefunden, den Speicherverbrauch zu verringern:

Eine Modifikation im Code erlaubt nun den Parameter --no-ports, um keine Aufzeichnungen über einzelne Ports zu machen:

Code:
wget http://www.../darkstat -O /var/tmp/darkstat
chmod u+x /var/tmp/darkstat
echo "darkstat:x:65533:65533:darkstat:/nonexistent:/bin/false" >> /etc/passwd
/var/tmp/darkstat -i lan --no-dns [B]--no-ports[/B] -b 192.168.178.253 -p 1234 --user darkstat --chroot /usr/share/telefon
Dies ermöglicht eine größere Anzahl von hosts zu speichern mit (nun wirklich) konstant niedrigem Speicherverbrauch.

Ich Anhang ist die statische komprimierte Binärdatei und die Datei diff.txt mit den (minimalen) Unterschieden im Source-Code.

Thanks for your help, Emil! :)
 

Anhänge

  • darkstat-1000-noports.bz2
    164.4 KB · Aufrufe: 32
  • darkstat-noports+tablechange_on_sigalrm.patch.bz2
    2.9 KB · Aufrufe: 15
  • darkstat-noports-sigalrm.bz2
    159.3 KB · Aufrufe: 16
Zuletzt bearbeitet:
Tag und Nacht getrennt erfassen

Ich habe darkstat in der -sigalrm version erweitern, so dass es zwei Tabellen anlegen kann.

Wenn man ihm mit killall -14 darkstat ein Signal schickt, wechselt es die Tabellen aus.

Somit kann man zusammen mit crond z.B. den Transfer tags und nachts in getrennten Tabellen erfassen:

Code:
0 12,24 * * * killall -14 darkstat
 
Neue Version

Es ist eine neue Version per git verfügbar. Diese behebt einen Memory Leak und stellt neue Möglichkeiten bereit, die Datenbank klein zu halten.

Ich habe sie im Anhang mit meinem sigalrm patch beigefügt.

Aufrufbeispiel:

Code:
/var/tmp/darkstat -i lan -b 192.168.178.1 -p 12345 --ports-max 30 --ports-keep 10 --no-dns --user darkstat --chroot /usr/share/telefon -f 'not (src net 192.168.178 and dst net 192.168.178 )'

Der Filter per -f verhindert, dass netzwerkinterne Kommunikation auch aufgezeichnet wird und kann auf Wunsch weggelassen werden.

usage: darkstat [ -i interface ]
[ -r file ]
[ --debug ]
[ --no-promisc ]
[ --no-dns ]
[ -p port ]
[ -b bindaddr ]
[ -f filter ]
[ -l network/netmask ]
[ --chroot dir ]
[ --user username ]
[ --daylog filename ]
[ --import filename ]
[ --export filename ]
[ --pidfile filename ]
[ --hosts-max count ]
[ --hosts-keep count ]
[ --ports-max count ]
[ --ports-keep count ]
[ --highest-port port ]

Den aktuellsten Quellcode gibt's vom Entwickler per git:
git clone http://dmr.ath.cx/git/darkstat-wip/
 

Anhänge

  • darkstat-git-sigalrm.bz2
    159.7 KB · Aufrufe: 13
  • 0001-Add-a-function-that-exchanges-tables-when-a-sigalrm.patch.txt
    5.1 KB · Aufrufe: 28
Zuletzt bearbeitet:
Neue Version mit Möglichkeit für getrennte Hauptzeit und Nebenzeit

Code:
echo "darkstat:x:65533:65533:darkstat:/nonexistent:/bin/false" >> /etc/passwd
wget http://www...de/darkstat -O /var/tmp/darkstat
chmod a+x /var/tmp/darkstat
/var/tmp/darkstat -i lan -b 192.168.178.1 -p 12345 --no-dns --user darkstat --chroot /usr/share/telefon -f "(dst net not 192.168) or (src net not 192.168)"  --ports-max 30 --ports-keep 15 --hosts-max 600 --hosts-keep 60 [B]--peak-hours 10,22[/B]
  • Unter Peak-Hours kann man bis zu 24 Stunden angeben, zu denen die Tabellen ausgetauscht werden. Im Beispiel jeweils um 12 und 24 Uhr deutscher Zeit.
  • Es gibt nur zwei Tabellen, zwischen denen hin-und hergewechselt wird. Bei netter Nachfrage und mit etwas Zeit würde ich das evtl. noch dazuprogrammieren.
  • Es wird kein crond mehr benötigt. Das spart noch mehr Ram.
  • Die Webseite zeigt jetzt den nächsten Wechsel der Datenbanken an (falls es einen gibt).
Die Stunden müssen als Zahlen zwischen 0 und 23 in UTC(=GMT)-Zeit angegeben werden und durch Kommata getrennt sein. Die Reihenfolge der Angabe ist egal. 24 Uhr ist als 0 Uhr abzugeben.

Wenn ihr neugierig seid ist im Anhang ein großer Patch zwischen der Version 3.707 und der aktuellen Git-Version plus meine Modifikationen.

Update:
Jetzt mit Auto-Reload! Einfach anklicken und zurücklehnen, die Angaben aktualisieren sich von selbst.
 

Anhänge

  • darkstat-peak-hours.bz2
    160.4 KB · Aufrufe: 6
  • Darkstat-3.707-to-Git+Peak-hours.patch.bz2
    10.9 KB · Aufrufe: 7
  • darkstat+hours+web+autoreload.bz2
    160.8 KB · Aufrufe: 15
Zuletzt bearbeitet:
Ich hatte leider noch zwei Bugs in meiner letzten Version. Hier ist eine korrigierte.

Und ich hatte ganz vergessen, den neuen Auto Reload Button auf der Webseite zu erwähnen. Einfach anklicken und die Angaben werden automatisch aktualisiert. Ist praktisch und sieht gut aus.
 

Anhänge

  • darkstat+hours+web+autoreload+fixed.bz2
    160.8 KB · Aufrufe: 30
Zuletzt bearbeitet:
Update: Superhost

Ich habe mal wieder ein aktuelle Version draußen:

Man kann jetzt beim "superhost" 0.0.0.0 in der hosts-tabelle auf einen Blick sehen, welche Ports am meisten Transfer verursachen.

Natürlich sind auch alle anderen Features noch dabei! ;-)

Erst die datei entpacken und auf einen Webserver stellen, dann folgendes ausführen oder in die debug.cfg einfügen und neustarten:

Code:
echo "darkstat:x:65533:65533:darkstat:/nonexistent:/bin/false" >> /etc/passwd
wget [URL]http://www...de/darkstat[/URL] -O /var/tmp/darkstat
chmod a+x /var/tmp/darkstat
/var/tmp/darkstat -i lan -b 192.168.178.1 -p 12345 --no-dns --user darkstat --chroot /usr/share/telefon -f "(dst net not 192.168) or (src net not 192.168)"  --ports-max 30 --ports-keep 15 --hosts-max 600 --hosts-keep 60 [B]--peak-hours 10,22[/B]

Und dann im Webbrowser eingeben: http://fritz.box:12345/ oder http://192.168.178.1:12345/

UPDATE:
Es war ein kleiner Fehler in der Version, sodass sie auf manchen Systemen nur lief, wenn man --peak-hours benutzte. Der Fehler ist in der aktuellsten Version (im extra Post mit mehr info) behoben.
 

Anhänge

  • 00-darkstat-git+offpeak+superhost.bz2
    160.8 KB · Aufrufe: 32
Zuletzt bearbeitet:
Soweit ziemlich cooles Teil :)

Habe nur noch ein Problem und eine Frage:

Problem: wenn ich --no-dns weglasse bekomme ich für alles ein "(Resolver error)" angezeigt - ne Idee woran es liegen könnte?

Frage: Ist es möglich auch nur den Traffic von einer Netzwerk-IP bzw MAC zu loggen? vielleicht mit -l network/netmask ? Will da nicht einfach blöd rumprobieren - nicht das da was kaputt geht... :rolleyes:

Ansonsten schonmal besten Dank!

Demy
 
Gib es auch schon für Freetz?
 
Soweit ziemlich cooles Teil :)

Dankeschoen, freut mich dass sich die muehe gelohnt hat.

Problem: wenn ich --no-dns weglasse bekomme ich für alles ein "(Resolver error)" angezeigt - ne Idee woran es liegen könnte?

Das duerfte nicht sein. Ab und zu kommt das vor, aber generell duerfte das nicht sein... hmm achso. weiss ich grad nicht woran es liegt. muesste ich mir in den naechsten tagen mal ansehen, sag bescheid wenn das problem bestehen bleibt. ich hatte das bei manchen servern aber bei den meisten nicht. natürlich wird er aber in der regel alle lokalen adressen (192.168...) nicht auflösen können.

Frage: Ist es möglich auch nur den Traffic von einer Netzwerk-IP bzw MAC zu loggen? vielleicht mit -l network/netmask ? Will da nicht einfach blöd rumprobieren - nicht das da was kaputt geht... :rolleyes:

Ja, das ist definitiv moeglich. Darkstat benutzt ist die Syntax von tcpdump: http://linux.die.net/man/8/tcpdump. MAn kann nach fast allem Filtern (Host, MAC, PORT,...). Der Filter den ich vorschlage sorgt dafuer, dass nur der Verkehr ins internet aufgezeichnet wird und nicht der rein lokale. Der Filter steht hinter -f und sollte in Anfuehrungszeichen stehen. VIel Erfolg.
 
Zuletzt bearbeitet:
Nein, fuer Freetz ist es leider noch nicht raus.
Ich wuerde mich aber sehr freuen, wenn es integriert wuerde.
Ich denke ich werde aber erstmal wenig Zeit dafuer haben.

Eigentlich muesste es aber auch unter Freetz problemlos laufen.
Kannst du das mal testen?
 
Bitte beachtet dieses Update der aktuellen Version, dass einen Fehler im Offpeak-Feature behebt.

Der Fehler tritt auf, wenn man --peak-hours nicht benutzt. Es kommt dann zu einem segmentierungsfehler (unerlaubter speicherzugriff) und darkstat wird - meist direkt beim oder nach dem start - sofort beendet.
Es kann gut sein, dass in der fehlerbehafteten Version auch statistische Daten ungewollt ca. einmal taeglich ausgetauscht werden.
 

Anhänge

  • 00-darkstat-git+offpeak+superhost+fix.bz2
    160.8 KB · Aufrufe: 28
Zuletzt bearbeitet:
Einstellungen

Hi,

ich würde mich sehr über etwas Rückmeldungen freuen:

1. Welche Einstellungen nutzt ihr? (a.Interface, b.Promiscous, c.DNS, d.Anzahl der Hosts,...)

2. Wieviel Speicher verbraucht das Programm ("ps" zeigt das an)

3. Wieviel Prozessor verbraucht es. ("cpu" hilft da weiter)

4. Was würdet ihr euch wünschen, was fehlt, was klemmt?
 
ich würde mich sehr über etwas Rückmeldungen freuen
Gern :)

1. Welche Einstellungen nutzt ihr? (a.Interface, b.Promiscous, c.DNS, d.Anzahl der Hosts,...)
Da ich kaum Ahnung habe führe ich genau das Ding aus was Du da oben hingeschrieben hast...

2. Wieviel Speicher verbraucht das Programm ("ps" zeigt das an)
999 darkstat 408 S /var/tmp/darkstat -i lan -b 192.168.178.1 -p 12345 --

3. Wieviel Prozessor verbraucht es. ("cpu" hilft da weiter)
CPU: 0.7% user, 2.8% system, 0.0% nice, 96.4% idle
PID USER SYSTEM COMMAND
1001 0.0% 0.0% cpu

- extrem schwankend... cpu immer unter 3%, system auch schonmal auf 16% (selten), meisst unter 5%

4. Was würdet ihr euch wünschen, was fehlt, was klemmt?

Hm keine Ahnung :)


Gruß,
Demy

PS: Auflösungsproblem ist noch immer da... :confused:
 
Hi,
gibt es vielleicht die Moeglichkeit in der Tabelle anzuzeigen welche WAN Adresse von welcher LAN Adresse aufgerufen wurde ? Vielleicht anstelle der MAC , weil die ist ja relativ uninteressant. Dann waere das Programm perfekt.
Gruss
Juergen
 
Meinst du nur eine oder eine Liste?

Ich habe es auf jeden Fall mal an den Haupt-Entwickler weitergeleitet. Das ist mir etwas zu kompliziert. Aber gerne weiter her mit den Wünschen! :)
 
Die zweite Zahl, also 408 ist der Speicherverbrauch. Das ist eine sehr gute Zahl (408kb). Läuft es schon länger, gibt es viel Verkehr bei dir? Danke.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.