Netzwerk-Traffic nach Prozessen?

Es gibt viele Werkzeuge für Linux, die Netzwerk-Traffic insgesamt oder nach Verbindungen anzeigen. Doch was ist, wenn ich wissen möchte, welcher Prozess wieviel Traffic verursacht? In vielen Fällen ist es relativ einfach, von der Verbindung auf den Prozess zu schließen. Manchmal ist dies jedoch nicht so offensichtlich. Und zudem müsste ich dann selbst den Traffice aller Verbindungen, die ein Prozess so aufbaut, zusammen addieren, um einen Überblick zu bekommen.

Beispielhafte Ausgabe von Nethogs

Beispielhafte Ausgabe von Nethogs

Der überaus vielseitige System Monitor Atop bietet in Zusammenhang mit Netatop, die Möglichkeit Netzwerk-Traffic nach Prozess anzuzeigen. Allerdings funktioniert das nur unter Zuhilfenahme eines Kernel-Moduls. Um Netatop verwenden zu können, baue ich dieses für den entsprechenden Kernel. Doch nicht immer möchte ich gleich ein Kernel-Modul bauen, nur um mal schnell zu sehen, welcher Prozess wieviel Traffic verursacht.

Genau für diesen Zweck gibt es das Programm Nethogs. Dieses zeigt in einer top-ähnlichen Übersicht an, welches Prozesse gerade auf welchen Netzwerk-Schnittstellen wieviel Datenverkehr verursachen.

Atop zeigt die mit einem simplen dd verursachten Schreibzugriffe auf das NFS-Dateisystem

Atop zeigt die mit einem simplen dd verursachten Schreibzugriffe auf das NFS-Dateisystem

In der beispielhaften Ausgabe im Bild nebenan ist der Traffic zu sehen, den Iceweasel, die Debian-Variante von Firefox, beim Bearbeiten des Blog-Eintrags und dem Laufenlassen einiger Web-Anwendungen, wie die Oberfläche für unseren Zimbra Groupware-Server, verursacht. Außerdem tragen das KDE Instant Messaging Framework Telepathy, das IRC-Chatprogramm Quassel, der Teamviewer-Server, sowie nscld, einem client-seitigen Caching-Daemon für LDAP-Zugriffe zum Traffic bei.

Nicht immer kann Nethogs jeglichen Traffic einem Prozess zuordnen. Dazu gehören Zugriffe auf das Netzwerk-Dateisystem NFS, die Nethogs als „Unknown TCP“ und Verbindung mit dem Port 111 für den Portmapper zeigt. Hier gelingt Atop eine genauer Angabe. Es zeigt Kernel-Threads mit Namen kworker als Ursache. Verursacher für diese Zugriffe war ein simples

um eine 200 MiB große Datei zu schreiben. TCPRCV ist die Anzahl der TCP-Pakrte, die der Prozess im 10 Sekunden-Intervall versandte, TCPSND die der gesendeten. TCPSASZ ist die durchschnittliche Größe eines Paketes in Bytes und BANDWI und BANDWO die ein- bzw. ausgehende Bandbreite in Bits pro Sekunde. NFS läuft hier als NFS Version3 komplett über TCP.

Martin Steigerwald

Martin Steigerwald beschäftigt sich seit Mitte der 90er Jahre mit Linux. Er ist langjähriger Autor von Artikeln für verschiedene Computer-Magazine wie die LinuxUser (linuxuser.de) und das Linux-Magazin (linux-magazin.de). Seit Herbst 2004 ist er als Consultant für solide Server-Infrastruktur auf Linux-Basis und als Trainer für Linux-Themen bei der teamix GmbH (teamix.de) in Nürnberg tätig.