Traffic auf Prozess-Ebene

FreeBSD, Gentoo, openSUSE, CentOS, Ubuntu, Debian
simcen
Posts: 333
Joined: 2003-02-12 14:35
Location: Bern, Schweiz

Traffic auf Prozess-Ebene

Post 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
User avatar
isotopp
Posts: 471
Joined: 2003-08-21 10:21
Location: Berlin

Re: Traffic auf Prozess-Ebene

Post 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.
simcen
Posts: 333
Joined: 2003-02-12 14:35
Location: Bern, Schweiz

Re: Traffic auf Prozess-Ebene

Post 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?!
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53

Re: Traffic auf Prozess-Ebene

Post 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.
simcen
Posts: 333
Joined: 2003-02-12 14:35
Location: Bern, Schweiz

Re: Traffic auf Prozess-Ebene

Post 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!