前言
最近手里买了几台不同地域的云服务器(广州、中国香港、海外等)。为了找出它们在白天、晚高峰(20:00 - 23:00)以及凌晨到我本地的实际网络质量,我需要一个能够持续 24 小时采样、自动记录丢包率、并能生成可视化图表的工具。
对比了诸多方案后,我选择了业界经典的开源网络监控利器——Smokeping。它不仅能直观地展示延迟和丢包,最强的地方在于其图表中的“烟雾(Smoke)”设计:烟雾越浓,代表网络抖动(Jitter)越大。
今天就分享如何用 Docker Compose 在本地(如 NAS、软路由、或家中的常开小电脑)极速搭建 Smokeping,并配置多台云服务器进行持续监控。
🛠️ 环境准备
-
系统环境:支持 Docker & Docker Compose 的任意系统(Linux / macOS / Windows WSL)
-
放行端口:本教程使用
85端口作为 Web 界面访问端口 -
目标服务器:需要开启 ICMP(Ping)回显。请务必前往你的云服务器控制台(腾讯云/阿里云/AWS等),在安全组/防火墙中放行 ICMP 协议。
🚀 第一步:使用 Docker Compose 部署
在本地找一个目录(例如 /docker/smokeping),创建以下文件结构:
Plaintext
/docker/smokeping/
├── docker-compose.yml
├── config/
└── data/
1. 编写 docker-compose.yml
创建并编辑 docker-compose.yml,这里我们使用 LinuxServer 团队维护的镜像,稳定且更新频繁:
YAML
version: '3.8'
services:
smokeping:
image: lscr.io/linuxserver/smokeping:latest
container_name: smokeping
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai # 设置时区,保证图表时间正确
volumes:
- ./config:/config # 配置文件挂载
- ./data:/data # 数据文件挂载
ports:
- 85:80 # 将容器的80端口映射到本地的85端口
restart: unless-stopped
2. 启动容器(生成初始配置)
在终端进入该目录,运行以下命令启动容器:
Bash
docker compose up -d
启动后,Smokeping 会在当前目录的 ./config 文件夹下自动生成初始配置文件。
⚙️ 第二步:配置监控目标(Targets)
我们需要修改 ./config/Targets 文件来添加我们的云服务器。
1. 打开并编辑配置文件
Bash
nano ./config/Targets
2. 修改配置模板
拉到文件的最下方,你会看到类似 + Test 的示例。将其修改或替换为你的云服务器节点。
配置规范:
-
+代表一级菜单 -
++代表二级菜单(目标服务器) -
menu必须是英文/拼音,title可以写中文(显示在图表顶部) -
host填写你的云服务器公网 IP
修改示例:
Plaintext
*** Targets ***
probe = FPing
menu = Top
title = Network Latency Monitor
remark = Welcome to Smokeping Network Monitor.
# 一级分类:云服务器
+ CloudServers
menu = Cloud-Servers
title = 云服务器网络监控
# 节点 A:广州腾讯云
++ Tencent-Guangzhou
menu = GZ-Tencent
title = 广州腾讯云 (119.x.x.x)
host = 119.x.x.x
# 节点 B:香港纯正回国
++ HongKong-CN2
menu = HK-CN2
title = 香港 CN2 云服务器 (45.x.x.x)
host = 45.x.x.x
# 节点 C:美国硅谷
++ US-SiliconValley
menu = US-SV
title = 美国硅谷服务器 (192.x.x.x)
host = 192.x.x.x
⚠️ 注意:
menu的值中间不能有空格,且同一个层级内的名称不能重复。
3. 重启使其生效
修改完成后保存退出,重启 Docker 容器:
Bash
docker compose restart
📈 第三步:访问与图表解读
打开浏览器,访问 http://本地IP:85,你就能看到 Smokeping 的 Web 界面了。点击左侧菜单的 Cloud-Servers,就能看到各个服务器的延迟曲线。
📊 如何看懂 Smokeping 的图表?
挂着运行一天后,你会得到类似下面的图表,教你如何解读网络质量:

-
中间的粗实线(主曲线):代表网络延迟的中位数(Median)。线条越平直,说明网络延迟越稳定。
-
周边的灰色“烟雾(Smoke)”:代表网络抖动。
-
如果线条很干净,没有烟雾,说明网络极其稳定。
-
如果线条周围有大片灰色阴影,说明延迟忽大忽小,网络不稳定(打游戏可能会卡顿)。
-
-
顶部的彩色斑点或红线:代表丢包率(Loss)。
-
如果全绿/无色:0 丢包,完美。
-
如果出现蓝色、紫色甚至红色:代表开始丢包。晚高峰时段可以重点观察香港或海外节点是否有大面积红线。
-
💡 进阶调优(可选)
默认情况下,Smokeping 每 300秒(5分钟) 运行一轮,每轮发 20 个 Ping 包。如果你想让监控更灵敏,可以修改 ./config/Database 文件:
Plaintext
step = 60 # 每60秒(1分钟)检测一次
pings = 30 # 每轮发送30个探测包
修改 Database 会导致历史数据清空,建议在刚搭建好时修改。修改后同样需要 docker compose restart。
📝 总结
通过 Docker Compose 部署 Smokeping,我们只花了不到 5 分钟就搭建好了一个企业级的网络监控系统。挂在家里一整天后,哪个地域的服务器最适合作为你的主力机、哪台服务器在晚高峰会“拉跨”,对着图表一目了然!
如果你觉得这篇文章对你有帮助,欢迎点赞、收藏并分享给更多折腾服务器的小伙伴!
评论