Skip to content

Repository files navigation

Netzwerk Monitor

Ein modularer Netzwerkmonitor nach dem gleichen Architekturprinzip wie der System Monitor. Die Anwendung prueft die Erreichbarkeit eines Ziels, misst die Ping-Latenz und berechnet den aktuellen Upload- und Download-Durchsatz aus den Netzwerkzaehlern der lokalen Interfaces.

Die Live-Werte werden in einer thread-sicheren Tkinter-GUI angezeigt. Bei einem Verbindungsverlust oder zu hoher Latenz kann der Monitor eine Warnung protokollieren und optional ein Popup anzeigen.

Funktionen

  • Verbindungspruefung zu einem konfigurierbaren Ping-Ziel
  • Ping-Latenz in Millisekunden
  • Upload- und Download-Durchsatz in KB/s oder MB/s
  • Anzahl aktiver Netzwerkinterfaces
  • Erkennung von Verbindungsverlust
  • Warnung bei dauerhaft hoher Latenz
  • Thread-sichere Kommunikation zwischen Worker und GUI
  • Entprellte Warnungen gegen kurze Aussetzer
  • Rotierendes Logfile mit drei Sicherungsdateien
  • PyInstaller-Spezifikation fuer eine eigenstaendige Anwendung

Architektur

netzwerk_monitor/
├── main.py              Worker, Queues und Programmablauf
├── config.py            Einstellungen und Logging
├── network_module.py    Interface-Status und Netzwerkzaehler
├── ping_module.py       Plattformabhaengiger Ping-Test
├── gui_module.py        Tkinter-Live-Oberflaeche
├── popup_module.py      Optionale Warnfenster
└── main.spec            PyInstaller-Konfiguration

Der Worker sammelt die Zaehler und Ping-Werte im Hintergrund. Die GUI wird ausschliesslich im Tkinter-Hauptthread aktualisiert. Die Status-Queue behaelt nur den neuesten Datensatz, damit sich bei einer blockierten GUI keine alten Messwerte stapeln.

Voraussetzungen

  • Python 3.10 oder neuer
  • psutil
  • Tkinter
  • Das Systemprogramm ping

Unter Debian/Ubuntu:

sudo apt install python3-tk iputils-ping

Python-Abhaengigkeit installieren:

python3 -m pip install psutil

Start

Linux und Windows mit Python:

cd .../netzwerk_monitor
python3 main.py

Unter Windows kann alternativ python main.py verwendet werden. Als eigenstaendige Anwendung:

  • Linux: dist/main
  • Windows: dist/main.exe

Der Build muss auf dem jeweiligen Zielsystem erfolgen:

python3 -m pip install pyinstaller
python3 -m PyInstaller --clean --noconfirm main.spec

Unter Windows PowerShell lauten die entsprechenden Befehle python -m pip install pyinstaller und python -m PyInstaller --clean --noconfirm main.spec. Die fertige EXE liegt danach in dist/.

Das Standardziel fuer den Ping-Test ist 1.1.1.1.

Konfiguration

Die Einstellungen stehen in config.py:

Einstellung Bedeutung Aktueller Wert
INTERVALL_SEKUNDEN Zeit zwischen Messungen 5
PING_ZIEL Ziel fuer den Erreichbarkeitstest 1.1.1.1
PING_TIMEOUT_SEKUNDEN Maximale Wartezeit fuer einen Ping 2
LATENZ_SCHWELLENWERT_MS Latenz-Warnschwelle 200
WARNUNG_NACH_MESSUNGEN Benoetigte aufeinanderfolgende Warnmessungen 2
POPUP_AKTIVIERT Optionale Warnfenster False

Fuer ein lokales Netzwerk kann PING_ZIEL beispielsweise auf die Adresse des Routers gesetzt werden:

PING_ZIEL = "192.168.1.1"

Messung des Durchsatzes

network_module.py liest die kumulativen Byte-Zaehler von psutil. main.py vergleicht zwei Messungen und teilt die Differenz durch die vergangene Zeit:

Durchsatz = (neuer Zaehler - alter Zaehler) / vergangene Sekunden

Beim ersten Messzyklus gibt es noch keinen Vergleichswert. Deshalb wird der Durchsatz anfangs mit 0.0 angezeigt.

Logging

Die Anwendung schreibt nach netzwerk_monitor.log. Die Datei wird bei 1 MB rotiert; bis zu drei Backups bleiben erhalten.

Beim Start als EXE liegt die Logdatei im dist/-Verzeichnis neben der Anwendung.

Das Log enthaelt:

  • Start und Ende der Netzwerkueberwachung
  • erfolgreiche Verbindungen und Latenzen
  • Warnungen bei hoher Latenz oder fehlender Verbindung
  • Fehler inklusive Stacktrace

Build mit PyInstaller

Aus dem Unterverzeichnis:

python3 -m pip install pyinstaller
pyinstaller main.spec

Das Ergebnis liegt anschliessend in dist/.

Bekannte Grenzen

  • Der Ping-Test benoetigt das Systemprogramm ping und eine erlaubte Netzwerkverbindung.
  • Ein einzelnes Ping-Ziel kann ausfallen, obwohl das Internet grundsaetzlich erreichbar ist.
  • Der Durchsatz wird ueber alle Interfaces summiert; virtuelle Interfaces koennen das Ergebnis beeinflussen.
  • Es gibt derzeit keine historische Aufzeichnung und keine Diagramme.
  • Die Anwendung misst keinen Paketverlust ueber mehrere Ping-Versuche.

Lizenz

Dieses Projekt enthaelt derzeit keine separate Lizenzdatei.

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages