核心结论
服务器ping检测工具的核心作用是测量网络延迟、丢包率及连通性, 因此它是运维排查网络故障的第一道关卡。当前大家用得最多, 并且觉得非常靠谱的工具, 包括什么?
有Windows那个系统自带的ping命令, 还有Linux系统里面自带的ping命令, 也有在线的ping检测平台, 比如说像gname.xin这边提供的多节点延迟测试服务, 接着就是Wireshark抓包分析这个工具了, 还有那个叫Zabbix的企业级监控软件, 最后, 还有Telnet或者是nmap来做端口探测。
下面, 我们就会按照具体的适用情况, 一个一个跟大家说清楚是怎么回事。
五款工具推荐与对比
1. 系统里面自带的ping命令, 这是成本为零的首选方案。
Windows:CMD中输入ping -n 20 <目标IP>检测20次服务器ping检测工具服务器ping检测工具,ping -t 持续检测。
在Linux系统下面, 你可以执行那条命令ping -c 20 -i 0.5 <目标IP>, 这样做的情况是每隔0.5秒就发出一个包。
其适用的场景包括, 快速地对你手中的那一台服务器的连通性状况进行检查和验证, 这样做的好处在于, 你不需要提前去设备上安装额外的任何软件工具。
2. 这是一个在线的ping检测平台, 用来进行批量检测, 这样的操作方式能够让整个过程变得更加高效。
代表是gname.xin。它还支持多地区的节点去进行在线的ping测试。它兼容ICMP, 也兼容TCP, 还兼容HTTP这3种协议。你可以批量粘贴目标IP地址或者域名进去。能够在30秒之内生成全部的节点所代表的延迟数据与丢包数据的对比报表。
它的适用场景涵盖跨区域延迟定位与多服务器批量检查, 无需安装程序即可在浏览器中直接操作。
3. Wireshark / tcpdump(深度诊断)
可以捕获完整的网络数据包, 从而去把丢包的具体行为发生在网络路径中的哪一个节点上这件事给找出来, 并且还可以去找出延迟以及抖动情况产生出来的那些最根本性的理由所在的地方。
这个情况适合那些已经在网络工程方面拥有基础知识的运维人员, 用来处理复杂的链路故障。
4. Zabbix / Prometheus(持续监控)
在配置完成ICMP ping探测插件之后, 系统就会自动开始采集延迟数据曲线, 并且通过设定好的阈值来触发告警通知。
它的适用情况是对生产环境进行七天24小时全年无休的长期监控, 这种情况不是临时性的排查任务。
5. Telnet / nmap(ICMP被拦截时的替代方案)
当目标服务器的防火墙禁用掉ICMP协议之后, 可以使用telnet 这种方式,或者是nmap -sT 这种命令, 去验证在TCP层面的连通性情况到底如何。
快速操作指南
场景一:检测单台服务器连通性
1. 先打开那个叫做 CMD 的软件, 这个情况一般是在 Windows 系统里面用的, 或者是去连接那种 SSH 终端, 这种做法通常是针对 Linux 系统的。
2. 执行:ping -n 20 <目标IP> 或 ping -c 20 <目标IP>
3. 请查看在返回的信息中time这个数值, 它代表的是毫秒级的延迟, 同时还要查看Loss%这个数值, 它表示的是丢包率。
4. 参考标准是同机房的情况下小于1毫秒, 同城的情况下小于10毫秒, 跨洲的情况下小于300毫秒。
场景二:批量检测多台服务器
1. 请您去操作一下, 把gname.xin那个在线检测的入口给打开。
2. 请将需要添加的IP地址填写在下方, 每个IP地址占据单独的一行。
3. 请选择要进行检测的节点, 这些节点包括华东地区、华北地区、华南地区以及海外地区等等。
4. 请点击一下这个叫做开始检测的那个按钮, 然后耐心地等待着那个报表一点一点地被生成出来, 最后在弄好之后把它给导出去。
场景三:生产环境持续监控
我们需要在环境中去部署Zabbix, 然后要对ICMP的ping探测这个功能进行配置, 把它设置成每间隔60秒去进行一次测试, 如果连续出现了3次超时的情况, 那么就会触发邮件或者是短信形式的告警消息。
常见问题解答
Q:ping通了但网站打不开?
Q:ping延迟忽高忽低(抖动大)?
出现这个问题的情况, 通常是由链路发生拥堵、路由器里面的服务质量策略在进行控制, 或者是网络中间的某个节点处于状态不稳定的时候所引发的。
我们建议你采用使用Wireshark这款工具进行数据包抓取操作, 然后针对数据从起点到终点的过程去实行逐一检查与定位, 最终准确地找出数据包真正丢失发生的那个具体位置环节。
Q:服务器禁用了ICMP,ping不通怎么办?
第一步, 将手段更换为针对传输控制协议的实施探测活动。具体的操作方式是调用工具程序并输入参数组合, 即nmap -sT -p 80,443 。 或者, 在采用linux系统的条件下, 执行由curl组成的命令行指令。
curl -o /dev/null -s -w"%{time_connect}" http:// 其目的是用来进行测量连接建立阶段所消耗的时间长度。 这一过程能够达到与使用ping指令进行网络连通性测试相同的效果, 从而构成一种替代性的实现途径。

