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.
- 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
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.
- Python 3.10 oder neuer
psutil- Tkinter
- Das Systemprogramm
ping
Unter Debian/Ubuntu:
sudo apt install python3-tk iputils-pingPython-Abhaengigkeit installieren:
python3 -m pip install psutilLinux und Windows mit Python:
cd .../netzwerk_monitor
python3 main.pyUnter 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.specUnter 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.
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"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.
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
Aus dem Unterverzeichnis:
python3 -m pip install pyinstaller
pyinstaller main.specDas Ergebnis liegt anschliessend in dist/.
- Der Ping-Test benoetigt das Systemprogramm
pingund 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.
Dieses Projekt enthaelt derzeit keine separate Lizenzdatei.