Page 1 of 1
Traffic auf Prozess-Ebene
Posted: 2007-01-21 11:49
by simcen
Guten Morgen zusammen!
Ich zeichne momentan mittels sar diverse Systemwerte auf, unter anderen den durchschnittlichen Traffic von meinem Management-Interface.
Dabei erhalte ich aber "nur" den gesamten Traffic welcher über das Interface geht.
Da vom Kunde aber die Anforderung kommt, pro Applikation die Bandbreite zu messen, suche ich nach einer Lösung den Traffic eines Prozesses zu messen. Lässt sich das ohne grossen Zusatztools realisieren oder sollte ich von der System-Seite wegkommen und lieber auf Switch/Router-Ebene anfangen?
Danke für eure Hilfe,
Simon
Re: Traffic auf Prozess-Ebene
Posted: 2007-01-21 12:08
by isotopp
simcen wrote:Da vom Kunde aber die Anforderung kommt, pro Applikation die Bandbreite zu messen, suche ich nach einer Lösung den Traffic eines Prozesses zu messen. Lässt sich das ohne grossen Zusatztools realisieren oder sollte ich von der System-Seite wegkommen und lieber auf Switch/Router-Ebene anfangen?
Linux hat keinen guten Support, um Traffic pro Prozeß zu messen. Im Grunde will man dtrace haben, aber ... das ist eine lange Geschichte.
Re: Traffic auf Prozess-Ebene
Posted: 2007-01-21 12:10
by simcen
isotopp wrote:
Linux hat keinen guten Support, um Traffic pro Prozeß zu messen. Im Grunde will man dtrace haben, aber ... das ist eine lange Geschichte.
Okay. Soll sich unser Netz-Team darum kümmern, die können sicher den Traffic auf einer bestimmten IP-Adresse messen.
Aus /proc/<procid>/stat lässt sich auch nichts herausholen, nehm ich mal an?!
Re: Traffic auf Prozess-Ebene
Posted: 2007-01-21 12:24
by Roger Wilco
simcen wrote:Aus /proc/<procid>/stat lässt sich auch nichts herausholen, nehm ich mal an?!
Nein, darin werden keine Informationen zur übertragenen Datenmenge gespeichert. Eine etwas gesprächigere Ausgabe der gleichen Informationen findest du in /proc/<PID>/status.
Wenn die einzelnen Applikationen unter jeweils einer eigenen UID/GID laufen, hilft dir vielleicht die
Owner match extension von netfilter weiter.
Eine weitere Idee wäre, eine kleine Bibliothek zu schreiben, welche die Datenmenge protokolliert und diese über LD_PRELOAD einzuklinken. So ähnlich macht(e) das z. B.
trickle, um ein Traffic Shaping pro Prozess zu erreichen. Allerdings habe ich keine Ahnung, ob es in diese Richtung schon eine Anwendung gibt.
Re: Traffic auf Prozess-Ebene
Posted: 2007-01-21 12:40
by simcen
Roger Wilco wrote:
Eine weitere Idee wäre, eine kleine Bibliothek zu schreiben, welche die Datenmenge protokolliert und diese über LD_PRELOAD einzuklinken. So ähnlich macht(e) das z. B.
trickle, um ein Traffic Shaping pro Prozess zu erreichen. Allerdings habe ich keine Ahnung, ob es in diese Richtung schon eine Anwendung gibt.
Finde diese Lösung doch relativ heikel. Ich vermute, wenn sich da ein Fehler in die Bibliothek einschleicht, könnte es massive Probleme geben. Und das möchte ich bei unseren SLA's vermeiden ;)
Zudem möchte ich nicht zu gross an der Architektur was ändern. Schliesslich soll jedes System sich darum kümmern, wofür es gebaut ist. Desshalb haben wir auch Firewalls, Packetshaper, Switch und Router im Einsatz...
Trotzdem danke ich euch für die Anregungen!