gping 是什么?终端里画出 Ping 曲线的网络延迟监控神器,一文看懂
【免费下载链接】gpingPing, but with a graph项目地址: https://gitcode.com/gh_mirrors/gp/gping
gping是一款开源的跨平台网络延迟监控工具,它把传统的ping命令变成了实时滚动的延迟曲线图——Ping, but with a graph。一行命令即可同时监控多个主机的网络延迟,用彩色曲线直观呈现波动、丢包与抖动,是运维排障和新手学习网络诊断的高效利器。
一、什么是 gping?和传统 ping 有什么不同? 🤔
传统ping只会输出一行行数字:
64 bytes from 142.250.x.x: icmp_seq=1 ttl=117 time=20.3 ms 64 bytes from 142.250.x.x: icmp_seq=2 ttl=117 time=19.8 ms数字一闪而过,你很难用肉眼感知延迟的波动。而 gping 把这些数字变成一张实时滚动的图形:
| 对比项 | 传统 ping | gping |
|---|---|---|
| 输出形式 | 文本数字 | 实时延迟曲线图 |
| 多目标监控 | 需开多个窗口 | 一张图同时对比多个主机 |
| 丢包/抖动 | 只能逐行看 | 曲线上缺口一目了然 |
| 平台支持 | 系统自带 | Windows / macOS / Linux |
| 额外能力 | 无 | 监控命令执行耗时、自定义颜色、TCP Ping |
简单说:ping 告诉你"现在是多少",gping 告诉你"趋势如何"。
二、为什么你需要一个"带图形的 Ping"?📈
以下场景,gping 都能帮你快速定位问题:
- 🌐网站访问变慢:不确定是 DNS、本地网络还是对方服务器的问题?gping 多个目标一起画,谁在抖动谁在丢包,曲线上一眼分辨。
- ☁️云区域选择:gping 内置了 AWS 区域简写(如
aws:eu-west-1),直接 Ping 特定云区域端点,帮你评估用户到各云区域的延迟。 - ⚡本地命令性能:配合
--cmd参数,gping 甚至可以绘制命令执行耗时曲线,比如监控本地接口响应速度。 - 🖥️日常排障:网络抖动的瞬间,曲线上的尖刺就是最好的"证据"。
三、快速上手:3 步安装 gping 🚀
gping 使用 Rust 编写(gping/Cargo.toml),编译后是单个可执行文件,轻量且跨平台。
方式一:使用系统包管理器(推荐)
# macOS / Linux (Homebrew) brew install gping # Windows scoop install gping # 或 choco install gping # Ubuntu / Debian (23.10+) apt install gping # Arch Linux pacman -S gping方式二:Docker 运行
docker run --rm -ti --network host ghcr.io/orf/gping:gping-v1.15.1 google.com方式三:获取源码自行构建
如果你更喜欢从源码了解它的实现,可以克隆仓库:
git clone https://gitcode.com/gh_mirrors/gp/gping cd gping cargo build --release完整安装列表参考项目说明文档:readme.md。
四、常用命令与实用技巧 💡
安装完成后,基本用法只有一条:
gping [主机地址...]1️⃣ 同时监控多个主机
$ gping google.com facebook.com多个主机会以不同颜色绘制在同一张图上,方便横向对比(颜色可用-c指定,支持#RRGGBB十六进制色值或red、green等颜色名)。
2️⃣ 用 TCP 代替 ICMP
有些防火墙会拦截 ICMP 包,此时可以改用 TCP Ping:
gping --tcp example.com --tcp-port 4433️⃣ 监控命令执行耗时
gping --cmd curl\ google.com curl\ facebook.comgping 会周期性执行这些命令,并把每次执行耗时画成曲线——排查"接口偶尔卡一下"非常有用。
4️⃣ 常用参数速查表
| 参数 | 作用 |
|---|---|
-n, --watch-interval | 探测间隔(秒),默认 0.2,可写0.5 |
-b, --buffer | 图表显示的时间窗口(秒),默认 30 |
-4 / -6 | 强制解析为 IPv4 / IPv6 |
-s, --simple-graphics | 用点号代替 braille 字符绘制,兼容性更好 |
--ymin / --ymax | 自定义纵轴最小/最大值(毫秒) |
--tcp / --tcp-port | 使用 TCP Ping 并指定端口,默认 80 |
-c, --color | 为每个目标指定颜色 |
--clear | 退出时清屏,恢复干净的终端 |
更多参数细节可查看 man 页源码:gping.1。
五、亮点功能一览 ✨
- 📊实时图形化延迟曲线:基于终端 TUI 绘制(核心绘图逻辑在 gping/src/main.rs,绘图数据结构见 gping/src/plot_data.rs)。
- 🎨自定义颜色:每个主机/命令都可单独配色,曲线再多也不混乱(颜色处理在 gping/src/colors.rs)。
- ☁️云区域简写:直接输入
aws:eu-west-1即可 Ping 对应 AWS 区域端点(映射表见 gping/src/region_map.rs)。 - 🌍真正的跨平台:Windows、macOS、Linux 全覆盖,底层探测由独立的 pinger 库完成(pinger/),并针对各平台
ping输出格式做了适配解析,如 pinger/src/linux.rs、pinger/src/windows.rs、pinger/src/macos.rs。 - 📈TCP Ping:不受 ICMP 限制,适合被防火墙拦截的环境。
六、项目源码结构速览 📂
想深入了解 gping 是如何工作的?项目结构非常清晰:
gping/ ├── gping/ # 主程序:命令行参数、图表渲染、交互 │ └── src/ │ ├── main.rs # 程序入口与主循环 │ ├── plot_data.rs # 绘图数据处理 │ ├── colors.rs # 颜色分配 │ └── region_map.rs # 云区域简写映射 ├── pinger/ # 跨平台 Ping 库:执行 ping 并解析输出 │ ├── src/ │ │ ├── lib.rs # 库入口 │ │ ├── linux.rs / windows.rs / macos.rs / bsd.rs │ │ └── tcp.rs # TCP Ping 实现 │ └── examples/ │ ├── simple-ping.rs │ └── tcp_ping.rs └── readme.md # 项目说明其中 pinger/ 是一个独立发布的库,如果你也在开发 Rust 项目,想跨平台解析 ping 输出,可以直接复用它。
七、新手常见问题 ❓
Q1:gping 需要 root 权限吗?在大多数 Linux 发行版上,现代内核允许普通用户发送 ICMP,一般无需 sudo;macOS 和 Windows 同样普通用户即可运行。
Q2:终端里曲线变成奇怪字符怎么办?gping 默认使用 braille 字符绘制曲线,个别终端不支持时可加-s(--simple-graphics)改用点号绘制。
Q3:和 mtr、ping 能配合使用吗?可以。gping 专注"趋势可视化",路径诊断可继续用 mtr,二者互补,不冲突。
Q4:能监控内网服务器吗?可以。支持直接写 IP 或主机名,用--interface指定网卡,适合监控局域网内多台设备。
八、总结 🏁
gping 用最简单的方式,把最老牌的ping命令变成了直观的网络延迟监控图表:
- 安装简单,一条包管理器命令搞定;
- 使用简单,
gping 主机地址立即出图; - 能力强大:多目标对比、TCP Ping、命令耗时监控、颜色定制。
无论你是排查网络抖动的运维工程师,还是刚接触网络诊断的开发者,gping 都值得放进你的工具箱——让延迟"看得见",排障效率直接翻倍。
【免费下载链接】gpingPing, but with a graph项目地址: https://gitcode.com/gh_mirrors/gp/gping
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考