Async network monitoring tool with real-time terminal UI, alerts, and connection quality analysis
Project description
Pinger
Real-time network monitoring in your terminal
Async network monitoring tool with Rich-based terminal dashboard, smart alerts, DNS benchmarks, hop-by-hop health tracking, and automatic problem diagnosis.
Highlights
| Ping & Latency | DNS Benchmark | Hop Health |
| Sparkline charts, jitter, loss trends | Cached / Uncached / DotCom tests | Per-hop latency & loss in real time |
| Smart Alerts | Problem Analysis | Route Tracking |
| Sound + visual, threshold hysteresis | ISP / local / DNS / MTU auto-diagnosis | Change detection, auto traceroute |
Quick Start
pipx install network-pinger
pinger
Requires: Python 3.10+ and system
ping/traceroute(tracerton Windows).
Press Ctrl+C for graceful shutdown.
Upgrading
pipx upgrade network-pinger
The app checks for new versions on startup and shows a notification if an update is available:
Alternative Install
pip install network-pinger
# or from source
pip install -r requirements.txt && python pinger.py
Features
Ping Monitoring
Real-time latency tracking with current / best / average / peak / median / jitter metrics. Sparkline charts and Unicode progress bars give you an instant visual overview. Packet loss detection with consecutive loss counter.
DNS Monitoring & Benchmark
Monitors multiple record types simultaneously (A, AAAA, CNAME, MX, TXT, NS). Built-in benchmark suite:
| Test | What it measures |
|---|---|
| Cached | DNS response from cache (repeat query) |
| Uncached | Full recursive resolution (random domain) |
| DotCom | Response time for a popular .com domain |
Statistics: min / avg / max / sigma / reliability. Color-coded: green (fast), yellow (slow), red (failed). Supports multiple DNS servers for comparison:
DNS_BENCHMARK_SERVERS = ["system", "1.1.1.1", "8.8.8.8"]
Smart Alerts
Sound and visual notifications with configurable thresholds for packet loss, latency, jitter, and connection loss. Threshold hysteresis prevents alert flickering. Cooldown system avoids spam.
Problem Analysis & Prediction
Automatic classification of network issues: ISP, local network, DNS, or MTU. Pattern detection identifies recurring problems. Predictive engine estimates when issues may return.
Hop Health Monitoring
Automatic hop discovery via traceroute. Periodic parallel ping of every intermediate hop. Full table with min / avg / last latency and loss per hop, color-coded by severity.
Route Analysis
Traceroute-based hop comparison over time. Detects route changes with configurable sensitivity. Auto-saves traceroute results to traceroutes/ on connection problems.
Network Metrics
- Public IP — change detection with geo info (city, ISP, AS)
- MTU / Path MTU — discovery, fragmentation detection
- TTL — monitoring and hop count estimation
Observability
- Prometheus —
/metricsendpoint on port8000 - Health —
/healthand/readyendpoints on port8001 - Docker & Helm — production-ready deployment
Localization
Automatically detected from system locale. Supports Russian and English.
# Override in config.py if needed
CURRENT_LANGUAGE = "en" # or "ru"
Interface
The dashboard is organized into logical panels that update in real time:
Header & Status Bar
- Target IP and version with update indicator
- Connection state (● Connected / ▲ Degraded / ✕ Disconnected)
- Key metrics: current ping, packet loss percentage, session uptime
Latency Panel
Current / best / average / peak / median latency, jitter value, and a sparkline chart showing the last 60 seconds of latency history.
Statistics Panel
Packet counters (sent/ok/lost), success rate with Unicode progress bars, and consecutive loss tracking with maximum streak.
Analysis Panel
- Problems: detected issue type (ISP, local, DNS, MTU, or none)
- Prediction: risk assessment based on recent history
- Route: stability status, hop count, and change counter
Monitoring Panel
- DNS: record type status (A, AAAA, CNAME, MX, TXT, NS) with checkmarks
- Benchmark: cached / uncached / dot-com response times with statistics
- Network: TTL value, MTU status, and fragmentation detection
- Notifications: active alerts with timestamps
Hop Health Panel
Per-hop table showing min/avg/last latency and loss percentage for each discovered intermediate router, color-coded by severity (green/yellow/red).
| Panel | Description |
|---|---|
| Status bar | Connection state, key metrics |
| Latency | Current / best / avg / peak / median / jitter + sparkline chart |
| Statistics | Packet counters, success rate with progress bars |
| Analysis | Problem type & prediction + route status |
| Monitoring | DNS records, benchmark, TTL/MTU, notifications |
| Hop Health | Per-hop latency & loss table, color-coded |
Configuration
All settings are in config.py. Here are the key options:
Core
TARGET_IP = "8.8.8.8" # Ping target
INTERVAL = 1 # Ping interval (seconds)
WINDOW_SIZE = 1800 # Stats window (30 min)
LATENCY_WINDOW = 600 # Latency history (10 min)
Thresholds & Alerts
PACKET_LOSS_THRESHOLD = 5.0 # Packet loss warning (%)
AVG_LATENCY_THRESHOLD = 100 # Average latency warning (ms)
JITTER_THRESHOLD = 30 # Jitter warning (ms)
CONSECUTIVE_LOSS_THRESHOLD = 5 # Consecutive lost packets
ENABLE_SOUND_ALERTS = True
ALERT_COOLDOWN = 5 # Min interval between sounds (seconds)
DNS Monitoring
ENABLE_DNS_MONITORING = True
DNS_TEST_DOMAIN = "cloudflare.com"
DNS_CHECK_INTERVAL = 10
DNS_SLOW_THRESHOLD = 100 # "Slow" threshold (ms)
DNS_RECORD_TYPES = ["A", "AAAA", "CNAME", "MX", "TXT", "NS"]
ENABLE_DNS_BENCHMARK = True
DNS_BENCHMARK_SERVERS = ["system"] # or ["1.1.1.1", "8.8.8.8"]
IP / MTU / TTL
ENABLE_IP_CHANGE_ALERT = True
IP_CHECK_INTERVAL = 15
ENABLE_MTU_MONITORING = True
MTU_CHECK_INTERVAL = 30
Traceroute & Hop Monitoring
ENABLE_AUTO_TRACEROUTE = False # Manual trigger or on route change
TRACEROUTE_TRIGGER_LOSSES = 3
TRACEROUTE_COOLDOWN = 300
TRACEROUTE_MAX_HOPS = 15
ENABLE_HOP_MONITORING = True
HOP_PING_INTERVAL = 1
HOP_PING_TIMEOUT = 0.5
HOP_LATENCY_GOOD = 50 # Green (ms)
HOP_LATENCY_WARN = 100 # Yellow (ms), above = red
Analysis
ENABLE_PROBLEM_ANALYSIS = True
PROBLEM_ANALYSIS_INTERVAL = 60
ENABLE_ROUTE_ANALYSIS = True
ROUTE_ANALYSIS_INTERVAL = 1800
ROUTE_CHANGE_CONSECUTIVE = 2
Logging & Metrics
LOG_FILE = "~/.pinger/ping_monitor.log"
LOG_LEVEL = "INFO"
LOG_TRUNCATE_ON_START = True
ENABLE_METRICS = True # Prometheus on :8000
ENABLE_HEALTH_ENDPOINT = True # Health on :8001
Deployment
Docker
docker compose up -d
| Service | Port | Description |
|---|---|---|
pinger |
8000 |
Prometheus metrics |
pinger |
8001 |
Health (/health, /ready) |
prometheus |
9090 |
Prometheus UI |
Kubernetes (Helm)
helm install pinger ./charts/pinger -f charts/pinger/values.yaml
See charts/pinger/README.md for details.
For Developers
pip install poetry
git clone https://github.com/meshlg/_pinger.git
cd _pinger && poetry install
poetry run pinger
See CONTRIBUTING.md for building, publishing, and contribution guidelines.
MIT License · 2026 © meshlg | Discord: meshlg
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file network_pinger-2.1.9.tar.gz.
File metadata
- Download URL: network_pinger-2.1.9.tar.gz
- Upload date:
- Size: 171.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.2 CPython/3.14.2 Windows/11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
402fb6412dbec4594474cb1fed50a9865cd41f34d2d8b71f3513d5154dcb2f52
|
|
| MD5 |
27547a1f4644e311ed8a6e164a8e8bed
|
|
| BLAKE2b-256 |
0a7c17d774ea63a8a49eb876c224f3aa30e4d252e4e13a2a86f1d681baf09010
|
File details
Details for the file network_pinger-2.1.9-py3-none-any.whl.
File metadata
- Download URL: network_pinger-2.1.9-py3-none-any.whl
- Upload date:
- Size: 58.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.2 CPython/3.14.2 Windows/11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae20e7d1c84cae59ca7961bd0b9602480a6841e5a1706a4995b6df0bbddfffe2
|
|
| MD5 |
de0169e36480812c50a8313730354a42
|
|
| BLAKE2b-256 |
ed0225975ec0951800af335a38a0b75020fe313d7d6462619d22e918978dc220
|