×

SmartPing 官方友情链接

官网:smartping.org

官网安装方式: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 更丰富,但需要一定的环境依赖。

对比小结

特性fpingsmartping
批量 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 看板

  1. Grafana → Connections → 添加数据源 → Prometheus → 地址填: http://<prometheus宿主机IP>:30990
  2. 新建 Dashboard → 添加 Panel → 查询 smartping 指标(例如 smartping_latency_ms)。
  3. 配置可视化方式(折线图、表格等)。

三、附加平台部署方式

部署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 的应用场景

  1. IDC / 云网络质量监控
    • 在不同机房、云区域(华东、华北、海外节点)各装一个 Agent。
    • 就能知道跨机房、跨云的质量情况。
    • 方便网络运维判断是不是运营商链路有问题。
  2. 企业分支机构监控
    • 在北京总部、上海分部、广州办事处各装一个 Agent。
    • 管理员就能直观看到各分支之间的网络情况,谁的网络不稳定。
  3. 对比运营商线路质量
    • 电信 ↔ 联通 ↔ 移动 ↔ 教育网之间的延迟、丢包,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 → BB → A 属于不同探测任务,结果可能完全不同(网络经常不对称)。
  • 谁发起探测由配置决定
    • 如果 Agent(或 Server)配置里包含 targets(或 peers),Agent 会周期性地去 probe 这些 targets。
    • Server 一般会去拉取 Agent 的 /api/(或其它接口)来获取 Agent 本地的探测结果,或指示 Agent 去探测特定目标。 (你之前看到的 GET http://192.168.201.202:8899/api/ 就是 Server 去拉 Agent 数据的例子。)
  • 因此只有两个条件都满足时才会出现 “双向可见且绿色”
    1. 发起方有配置去探测目标(即 Agent/Server 内有把对方列为测目标),并实际执行 probe;
    2. 探测数据能被中心 Server 拉到或 Agent 能把结果推送给 Server。

7、为什么“未部署 Agent 就不可达 / 部署后可达”

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

		 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

作者

fffff@xf.nn

文章推荐