iPerf3 分布式网络测试工具 是一款基于 Python 开发的轻量级分布式网络监控套件。它通过 Master(主控) 与 Agent(代理) 的协同配合,实现了跨节点的带宽测试(iPerf3)、延迟监控(Ping)和路由追踪(Traceroute)可视化分析。
| 功能 | 说明 |
|---|---|
| 🚀 一键安装更新 | 单条命令完成安装和版本更新,自动检测差异并增量升级 |
| 📊 现代化仪表盘 | 商业级 UI 设计,实时监控节点状态、三网延迟、流媒体解锁 |
| ⏰ 定时任务调度 | 周期性自动测试,生成带宽趋势图表和流量统计报告 |
| 🛤️ Metro 路由追踪 | 地铁线路图风格可视化、AS 路径分析、路由变化智能告警 |
| 📈 Ping 趋势监控 | 实时延迟波动监测,Sparkline 迷你图 + 趋势箭头直观展示 |
| 🎬 流媒体检测 | Netflix、Disney+、ChatGPT 等服务解锁状态自动识别 |
| 🤖 Telegram 通知 | 路由变化、任务失败、节点离线等事件实时推送 |
| 🔐 IP 白名单保护 | 防止 iPerf3 服务被恶意滥用 |
项目采用解耦的分布式架构设计。主控节点负责数据持久化、任务调度与 Web 展示;代理节点则专注于执行网络探测任务并回传结果。
| 组件 | 技术栈 | 核心职责 |
|---|---|---|
| Master API | FastAPI + PostgreSQL + Redis | REST API、Web 面板、调度器、缓存管理 |
| Agent | Flask + iPerf3 + MTR | 执行网络测试、路由追踪、流媒体检测、IP 过滤 |
| Scheduler | APScheduler | 定时 iPerf3 测试任务和 Traceroute 监控任务 |
在开始部署前,请确保您的服务器满足以下条件:
请确保以下端口在防火墙和安全组中已开放:
| 端口 | 协议 | 用途 |
|---|---|---|
| 9000 | TCP | Master API 接口 |
| 9100 | TCP | Web 仪表盘面板 |
| 8000 | TCP | Agent API 接口 |
| 62001 | TCP/UDP | iPerf3 默认测试端口 |
主控节点包含数据库、缓存和管理后台,是整个系统的核心枢纽。
步骤 1:克隆项目仓库
步骤 2:执行一键安装脚本
安装过程中,脚本会自动完成以下工作:
步骤 3:访问仪表盘
安装完成后,访问以下地址进入管理面板:
首次启动时,系统会在终端输出自动生成的管理员密码,请妥善保存。如果忘记密码,可通过命令重置(见故障排查章节)。
代理节点只需运行一条脚本即可完成自动注册。
参数说明:
| 参数 | 说明 |
|---|---|
--master-url | 主控节点 API 地址(格式:http://IP:9000) |
--node-name | 节点显示名称(支持中文,建议包含地区信息) |
安装完成后,新节点会自动出现在主控仪表盘的节点列表中。
仪表盘首页提供全方位的节点状态概览:
该工具将复杂的 Traceroute 数据转化为类似"地铁线路图"的可视化界面:
核心功能:
您可以设置周期性的 iPerf3 测试任务,系统将自动记录并分析:
配置 Telegram Bot 后,系统可自动推送以下事件:
| 变量名 | 说明 | 默认值 |
|---|---|---|
DATABASE_URL | PostgreSQL 连接字符串 | postgresql://iperf:iperf_pass@db:5432/iperf_db |
REDIS_URL | Redis 连接字符串 | redis://redis:6379 |
DASHBOARD_PASSWORD | 仪表盘管理密码 | 首次启动自动生成 |
MASTER_API_PORT | Master API 端口 | 9000 |
MASTER_WEB_PORT | Web 面板端口 | 9100 |
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /nodes | 获取所有已注册节点 |
| POST | /nodes | 注册新节点 |
| GET | /nodes/{id}/ping-history | 获取节点 Ping 历史数据 |
| POST | /tests | 执行即时测试任务 |
| GET/POST | /schedules | 定时任务 CRUD 管理 |
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/trace/run | 执行即时 Traceroute |
| GET | /api/trace/schedules | 获取追踪定时任务列表 |
| GET | /api/trace/results | 获取历史追踪结果 |
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /admin/telegram | 获取当前 Telegram 配置 |
| POST | /admin/telegram | 保存 Telegram Bot 配置 |
| POST | /admin/telegram/test | 发送测试消息验证配置 |
完整的 API 交互式文档可访问 http://<服务器 IP>:9000/docs查看(基于 Swagger UI)。
在 Master 节点执行以下命令进行版本升级:
Agent 节点支持 Watchdog 自动更新机制。运行以下脚本开启自动同步:
启用后,当 Master 版本升级时,Agent 会自动检测并完成更新。
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 容器无法启动 | 端口冲突或依赖服务未就绪 | 执行 docker logs iperf3-test-tools-master-api-1 查看日志 |
| Agent 显示离线 | 防火墙拦截 8000 端口 | 执行 ufw allow 8000/tcp 并验证 curl <Agent-IP>:8000/health |
| iPerf3 测试失败 | 62001 端口未开放 | 在安全组中开放 TCP/UDP 62001 端口 |
| 忘记面板密码 | 初始密码未保存 | 执行密码重置命令(见下方) |
iPerf3 分布式网络测试工具通过极简的部署流程和强大的可视化分析能力,为多机房网络性能管理提供了高效的解决方案。无论是日常的带宽监控、路由追踪分析,还是跨节点的网络质量对比,该工具都能满足您的需求。
如有任何问题或建议,欢迎前往 GitHub 仓库 提交 Issue 或参与贡献!