基于 SmartPing 构建运维网络监控看板
SmartPing 官方友情链接
官网安装方式:https://docs.smartping.org/install/
Github开源地址:smartping/smartping: 综合性网络质量(PING)检测工具,支持正/反向PING绘图、互PING拓扑绘图与报警、全国PING延迟地图与在线检测工具等功能
下载地址:外部链接到:https://github.com/smartping/smartping/releases/download/v0.8.0/smartping-v0.8.0.tar.gz
一、基础概念和工具介绍
1、fping
- 用途:批量 ping 多台主机,用于网络连通性检测。
- 特点:
- 命令行工具,轻量,适合脚本调用。
- 支持同时 ping 多个 IP/域名。
- 输出简单,便于日志采集和解析。
- 不足:
- 纯文本输出,监控可视化需自己处理。
- 不支持图形化实时监控。
2、smartping
- 用途:智能 ping 工具,兼顾监控可视化。
- 特点:
- 支持对多个目标的实时延迟、丢包统计。
- 可以输出 JSON、Prometheus 等格式,方便监控系统集成。
- 内置简单 Web 界面或可结合 Grafana 展示。
- 优势:
- 更适合构建运维看板。
- 支持报警/阈值设置。
- 可能不足:
- 功能比 fping 更丰富,但需要一定的环境依赖。
对比小结:
| 特性 | fping | smartping |
|---|---|---|
| 批量 ping | ✅ 高效 | ✅ 高效 |
| 输出格式 | 纯文本 | JSON/Prometheus |
| 可视化 | ❌ 需要额外工具 | ✅ 内置/可集成 |
| 监控报警 | ❌ | ✅ |
| 部署难度 | 低 | 中等 |
二、Smartping 部署步骤
下载地址:外部链接到
https://github.com/smartping/smartping/releases/download/v0.8.0/smartping-v0.8.0.tar.gz
创建工作目录
mkdir -p /opt/smartping
cd /opt/smartping
# smartping-v0.8.0.tar.gz 文件下载到此处,可自定义
解压 release 包并部署运行
cd /opt/smartping
tar -zxvf smartping-v0.8.0.tar.gz
# 直接运行最简单,docker部署复杂化了
./control start
# 显示如下成功:
[root@akuvox smartping]# ./control start
smartping started..., pid=16084
# 浏览器访问:http://192.168.201.200:8899/
# 官方默认端口8899
三、使用方式 & 功能简介

——1——

——2——

——3——

——4——

——5——

——6——

——7——

——8——

——9——
Prometheus 配置 smartping
我之前的 Prometheus 配置在 /opt/prometheus/prometheus.yml。 现在只需在 scrape_configs 里加 smartping:
scrape_configs:
- job_name: 'smartping'
scrape_interval: 15s
static_configs:
- targets: ['192.168.201.200:30880'] # 宿主机IP:smartping端口
⚠️ 注意:
192.168.201.200替换成运行 smartping 的宿主机 IP。- 如果 Prometheus 和 smartping 在同一台机器,可以直接写
localhost:30880。
改完后重启 Prometheus 容器:
docker restart prometheus
Grafana 部署
在 /opt/grafana 目录下运行:
docker run -d --name grafana \
-p 3000:3000 \
grafana/grafana
访问:http://<宿主机IP>:3000 默认账号密码:admin / admin
第一次登录会提示修改密码。
Grafana 配置 smartping 看板
- Grafana →
Connections→ 添加数据源 → Prometheus → 地址填: http://<prometheus宿主机IP>:30990 - 新建 Dashboard → 添加 Panel → 查询 smartping 指标(例如
smartping_latency_ms)。 - 配置可视化方式(折线图、表格等)。
三、附加平台部署方式
部署Prometheus
快速部署方法(docker 方式):
mkdir -p /opt/prometheus && cd /opt/prometheus
# 创建 prometheus.yml
cat > prometheus.yml <<'EOF'
global:
scrape_interval: 30s
scrape_configs:
- job_name: 'cloudpods-federate'
honor_labels: true
metrics_path: '/federate'
params:
'match[]':
- '{__name__=~"^(yunion_|node_|process_).+"}' # 过滤你需要的指标
static_configs:
- targets: ['192.168.201.200:30990'] # Cloudpods 内置 Prometheus 地址
EOF
# 启动容器
docker run -d --name prometheus -p 30990:9090 \
-v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus
四、常见问题
1. Smartping 的核心定位
Smartping 并不是一个单机 ping 工具,而是一个 分布式网络质量监控平台。 它的目标不是你在一台机器上“能不能 ping 通别人”,而是 多点互相探测网络质量,形成一张网络拓扑和质量图。
换句话说:
- 单机 ping:你知道 A 能不能 ping B。
- Smartping:你知道 A、B、C、D 多个节点之间两两的延迟、丢包、抖动情况,并且用图形化展示。
2. 为什么需要部署 Agent
- Smartping 的探测不是单向的,而是 多 Agent 双向探测。
- 如果只在 A 上装,A 只能看到自己能 ping 通谁,但不知道别人访问 A 的质量。
- 装了 Agent,Smartping 就能做 全网拓扑矩阵:
- A → B 的延迟和丢包
- B → A 的延迟和丢包
- A ↔ C、B ↔ C … 全部都有
- 红色/告警,就是因为某些路径丢包严重或不可达。
这和普通 ping 最大的区别就是: 👉 你从一个点能看到全网所有点之间的网络质量,而不仅是“我能不能 ping 你”。
3. Smartping 的应用场景
- IDC / 云网络质量监控
- 在不同机房、云区域(华东、华北、海外节点)各装一个 Agent。
- 就能知道跨机房、跨云的质量情况。
- 方便网络运维判断是不是运营商链路有问题。
- 企业分支机构监控
- 在北京总部、上海分部、广州办事处各装一个 Agent。
- 管理员就能直观看到各分支之间的网络情况,谁的网络不稳定。
- 对比运营商线路质量
- 电信 ↔ 联通 ↔ 移动 ↔ 教育网之间的延迟、丢包,Smartping 一张图就能显示出来。
4. 功能对比
和 fping 相比
- fping:批量 ping 一堆 IP,输出丢包率和延迟,适合简单批量探测。
- Smartping:
- 分布式 Agent
- 双向探测(延迟、丢包、抖动)
- Web UI 拓扑、Dashboard、告警
- 历史趋势分析 👉 可以理解为 fping + 分布式 + 可视化 + 历史告警。
http / https 探测
Smartping 主要是 ICMP(ping) 和 TCP 探测,重点是链路质量,不是业务可用性。
- 如果你要做 HTTP/HTTPS 可用性监控(比如网页能不能访问,响应时间),常用的是 Zabbix、Prometheus + Blackbox Exporter、uptime-kuma。
- Smartping 本身没重点做应用层 HTTP 检测,而是专注于 网络质量。
5、Server和Agent的区别和定位
SmartPing 本身就是一个分布式的探测程序,实际上 server 和 agent 的二进制是完全一样的,没有功能区别。区别只在于:
- Server(管理节点)
- 你用浏览器访问它(Web 界面默认 8899 端口)
- 它的
config.json里写了所有节点(包括自己 + 其它 agent) - 负责把所有 agent 的探测结果汇总展示
- Agent(被监控节点)
- 也是跑 smartping 程序(同一个包、同一个启动命令)
- 不需要自己维护拓扑配置,基本上就运行起来,等待 server 去拉取数据
- 提供 API 接口(8899 端口),server 会来请求数据
6、SmartPing 的探测模型(核心原理)
- 主动探测(Active probing):监控工具会主动从某个节点向某个目标发出探测(ICMP/TCP 等),记录往返延迟、丢包、抖动等,然后把这些统计保存或上报。
- 方向性:一次探测包含两部分:请求(从探测发起方发出)和应答(目标返回)。因此
A → B与B → A属于不同探测任务,结果可能完全不同(网络经常不对称)。 - 谁发起探测由配置决定:
- 如果 Agent(或 Server)配置里包含
targets(或 peers),Agent 会周期性地去 probe 这些 targets。 - Server 一般会去拉取 Agent 的
/api/(或其它接口)来获取 Agent 本地的探测结果,或指示 Agent 去探测特定目标。 (你之前看到的GET http://192.168.201.202:8899/api/就是 Server 去拉 Agent 数据的例子。)
- 如果 Agent(或 Server)配置里包含
- 因此只有两个条件都满足时才会出现 “双向可见且绿色”:
- 发起方有配置去探测目标(即 Agent/Server 内有把对方列为测目标),并实际执行 probe;
- 探测数据能被中心 Server 拉到或 Agent 能把结果推送给 Server。
7、为什么“未部署 Agent 就不可达 / 部署后可达”

- 未部署 Agent:
- Server 无法从该主机拉取
/api/数据(没有服务响应),因此 Server 没有该主机的 Agent 数据 —— 拓扑上显示不可达或红(或没有数据)。 - 即使 Server 能对目标 IP 做单向 ping(可能可以),SmartPing 的拓扑/矩阵设计通常把“agent存在且有数据”作为判断依据。
- Server 无法从该主机拉取
- 在目标主机部署 Agent 后可达:
- Agent 开启并监听(8899),Server 能请求
/api/取得探测数据或指令,Agent 本地也会做对等探测(如果配置了),结果被聚合并展示为绿色(在阈值内)。
- Agent 开启并监听(8899),Server 能请求
作者
fffff@xf.nn
