前言

最近手里买了几台不同地域的云服务器(广州、中国香港、海外等)。为了找出它们在白天、晚高峰(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 的图表?

挂着运行一天后,你会得到类似下面的图表,教你如何解读网络质量:
enter image description here

  1. 中间的粗实线(主曲线):代表网络延迟的中位数(Median)。线条越平直,说明网络延迟越稳定。

  2. 周边的灰色“烟雾(Smoke)”:代表网络抖动

    • 如果线条很干净,没有烟雾,说明网络极其稳定。

    • 如果线条周围有大片灰色阴影,说明延迟忽大忽小,网络不稳定(打游戏可能会卡顿)。

  3. 顶部的彩色斑点或红线:代表丢包率(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 分钟就搭建好了一个企业级的网络监控系统。挂在家里一整天后,哪个地域的服务器最适合作为你的主力机、哪台服务器在晚高峰会“拉跨”,对着图表一目了然!

如果你觉得这篇文章对你有帮助,欢迎点赞、收藏并分享给更多折腾服务器的小伙伴!