A self-hosted network connectivity monitor with real-time traceroute path visualization, animated topology mapping, and multi-protocol health checks.
自托管的网络连通性监控工具,具备实时 Traceroute 路径可视化、动态拓扑映射和多协议健康检测能力。
Status Monitor focuses on network path-level diagnostics rather than just uptime tracking. Below is an honest comparison with popular open-source alternatives.
Status Monitor 侧重于网络路径级别的诊断,而不仅仅是可用性追踪。以下是和主流开源方案的客观对比。
| Feature | Status Monitor | Uptime Kuma | Statping |
|---|---|---|---|
| Traceroute path visualization | ✅ Animated hop-by-hop | ❌ | ❌ |
| Network topology mapping | ✅ Auto + Manual | ❌ | ❌ |
| Hop-level latency breakdown | ✅ Per-hop color coding | ❌ | ❌ |
| Animated packet flow | ✅ Real-time SVG animation | ❌ | ❌ |
| Multi-protocol (ICMP/HTTP/TCP/DNS) | ✅ | ✅ | ✅ |
| Real-time WebSocket updates | ✅ No refresh | ✅ | Partial |
| Bilingual UI (EN/ZH) | ✅ Built-in | ❌ | ❌ |
| Single-container deploy | ✅ SQLite, zero config | ✅ | ✅ |
| Status page / public page | ❌ | ✅ | ✅ |
| Notification (Telegram/Email/Discord/Slack) | ❌ | ✅ | ✅ |
| Multi-user & authentication | ❌ | ✅ | Partial |
| Certificate expiry monitoring | ❌ | ✅ | ✅ |
| Keyword / HTTP body check | ❌ | ✅ | Partial |
| Prometheus metrics export | ❌ | ✅ | ✅ |
| Maintenance window scheduling | ❌ | ✅ | ❌ |
| Plugin / API key system | ❌ | Partial | ❌ |
TL;DR: If you need status pages, rich notifications, multi-user access, or SSL monitoring — Uptime Kuma is the more mature choice. If you want to see the full network path to your target, understand which hop is causing latency, and visualize your network topology — that's where Status Monitor shines.
总结:如果你需要状态页、丰富的通知渠道、多用户权限或证书监控——Uptime Kuma 是更成熟的选择。如果你想要看到到目标的完整网络路径,理解哪一跳导致了延迟,并且可视化你的网络拓扑——这正是 Status Monitor 的专长。
Monitor status at a glance with color-coded latency, uptime percentage, and responsive time-series charts. All data updates in real time via WebSocket — no manual refresh needed.
一目了然的监控状态,颜色编码的延迟指示、在线率统计和响应式时间序列图表。数据通过 WebSocket 实时推送,无需手动刷新。
Drill into any monitor to see detailed check history, latency trends, and downtime records. Each result includes status code, response time, and error details.
点击任意监控项查看详细的检测历史、延迟趋势和停机记录。每条结果包含状态码、响应时间和错误详情。
The signature feature. Run a traceroute to any target and watch the network path unfold in real time — each hop is auto-classified (Gateway / LAN / Transit / ISP / Target) with animated packet flow showing live traffic. Failed hops are highlighted in red so you can instantly spot where connectivity breaks.
核心特性。对任意目标执行 Traceroute,实时观看网络路径逐步展开——每一跳自动分类(网关 / 局域网 / 骨干网 / ISP / 目标),并带有动态数据包流动动画。失败的跳点以红色高亮,让你一眼定位连通性中断的位置。
- Route Trace (Traceroute) — Visualize the full network path hop-by-hop with real-time animated packet flow. Each hop shows IP, hostname, latency bar, and auto-detected node type. Failed hops are highlighted in red. / 逐跳可视化完整网络路径,带有实时数据包流动动画。每一跳显示 IP、主机名、延迟条和自动检测的节点类型。
- Multi-Protocol Monitoring — ICMP Ping, HTTP(S), TCP Port, and DNS checks with configurable intervals and timeouts. Latency is color-coded (green <10ms, yellow <50ms, orange <100ms, red 100ms+). / 支持 ICMP Ping、HTTP(S)、TCP 端口和 DNS 检测,可配置间隔和超时。延迟按颜色编码(绿色 <10ms、黄色 <50ms、橙色 <100ms、红色 100ms+)。
- Live Topology Editor — Two modes: auto-discover via traceroute, or manually build a network diagram with drag-and-drop nodes and links. Each link animates to show live traffic flow. / 两种模式:通过 Traceroute 自动发现,或手动拖拽节点和连线构建网络图。每条连线带有动态流量动画。
- Real-Time Dashboard — WebSocket-powered updates with no page refresh. Status changes and latency results stream instantly. / 基于 WebSocket 的实时更新,无需刷新页面。状态变更和延迟结果即时推送。
- Bilingual UI — Full Chinese/English support with one-click language switching. / 完整的中英文双语支持,一键切换语言。
- Cloud-Ready Deployment — Docker/Podman multi-stage build, Kubernetes manifests with HPA and Ingress, plus a Helm chart. / 支持 Docker/Podman 多阶段构建、Kubernetes 清单(含 HPA 和 Ingress)以及 Helm Chart。
Backend (using conda | 使用 conda):
cd backend
conda create -n status-monitor python=3.11 -y
conda activate status-monitor
pip install -r requirements.txt
python run.pyFrontend:
cd frontend
npm install
npm run devOpen http://localhost:5173 (proxies API to backend on :8000) | 打开 http://localhost:5173(API 自动代理到后端 :8000)
cd deploy/docker
podman compose up --build
# or | 或
docker compose up --build# Raw manifests | 原始清单
kubectl apply -f deploy/k8s/
# Helm
helm install status-monitor helm/status-monitor/All endpoints under /api/v1/ | 所有接口前缀为 /api/v1/:
| Method | Endpoint | Description | 说明 |
|---|---|---|---|
| GET/POST | /monitors | List/Create monitors | 列出/创建监控项 |
| GET/PUT/DELETE | /monitors/{id} | Read/Update/Delete monitor | 读取/更新/删除监控项 |
| POST | /monitors/{id}/check | Trigger immediate check | 触发即时检测 |
| GET | /results/monitor/{id} | Paginated check results | 分页检测结果 |
| GET | /results/monitor/{id}/stats | Aggregated statistics | 聚合统计 |
| GET | /results/latest-all | Latest result for all monitors | 所有监控项最新结果 |
| GET/POST | /topology/nodes | List/Create topology nodes | 列出/创建拓扑节点 |
| GET/POST | /topology/links | List/Create topology links | 列出/创建拓扑连线 |
| GET | /topology/graph | Full graph for visualization | 完整拓扑图数据 |
| POST | /traceroute/run | Start async traceroute | 启动异步 Traceroute |
| GET | /traceroute/runs/{id} | Get run with all hops | 获取运行记录及所有跳点 |
| GET | /traceroute/runs/{id}/topology | Hops as React Flow graph | 跳点数据转为拓扑图格式 |
| WS | /ws | Real-time updates | 实时更新推送 |
Swagger UI available at http://localhost:8000/docs | Swagger 文档地址:http://localhost:8000/docs
Frontend (React + TypeScript + Vite)
→ React Flow for topology / 拓扑可视化
→ Recharts for live charts / 实时图表
→ Zustand for state / 状态管理
→ i18next for bilingual / 国际化
→ Framer Motion for animations / 动画效果
Backend (Python + FastAPI)
→ SQLAlchemy async + SQLite / 异步 ORM + SQLite
→ APScheduler for monitoring jobs / 定时任务调度
→ Alembic for schema migrations (auto-applied on startup) / 自动迁移
→ WebSocket for real-time broadcast / 实时广播
→ asyncio subprocess for traceroute/ping / 异步子进程执行
→ Reverse DNS resolution for hop hostnames / 反向 DNS 解析
| Variable | Default | Description | 说明 |
|---|---|---|---|
| SM_DEBUG | false | Enable debug mode | 启用调试模式 |
| SM_HOST | 0.0.0.0 | Server bind address | 服务绑定地址 |
| SM_PORT | 8000 | Server port | 服务端口 |
| SM_DATA_DIR | ./data | SQLite database directory | SQLite 数据库目录 |
| SM_DATABASE_URL | (auto) | Override database URL | 覆盖数据库连接地址 |
| SM_CORS_ORIGINS | * | Comma-separated allowed origins (set explicit origins to enable credentials) | 允许的跨域来源,逗号分隔(设为具体来源才会启用 credentials) |
| SM_RETENTION_DAYS | 30 | Days of check results / traceroute runs to keep (0 = keep forever) | 保留多少天的检测结果 / Traceroute 记录(0 = 永久保留) |
| SM_TRACEROUTE_TIMEOUT | 120 | Overall traceroute run timeout in seconds | 单次 Traceroute 运行的总超时(秒) |
| SM_TRACEROUTE_MAX_CONCURRENCY | 8 | Max concurrent traceroute runs | 最大并发 Traceroute 数量 |
| SM_API_KEY | (empty) | If set, all API + WebSocket calls require this key (header X-API-Key / ?api_key=); empty = open (no auth) |
若设置,则所有 API 与 WebSocket 调用需附带此密钥;留空 = 不启用认证 |


