基于内核日志检查集群网络链路闪断问题和发生时间点
cluster_netlink_check脚本使用手册
| 版本 | 1.0 | 发布人 | 张建 | 发布日期 | 2026年3月9日 |
|---|
适用环境:AI训练集群 / HPC集群 / 分布式存储
脚本语言:Bash
1. 工具简介
cluster_netlink_check.sh 用于在 AI/HPC/存储 集群环境中批量扫描节点,通过 SSH 读取节点 journalctl 内核日志,检测网卡 Link down / Link up 事件,用于快速定位:
- 网卡链路抖动
- 交换机端口问题
- 线缆问题
- 节点网络不稳定
脚本支持 并行 SSH 扫描,可快速分析上百甚至上千节点。
2. 功能特点
- 批量扫描集群节点
- 自动解析
journalctl -k内核日志 - 统计网卡 Link down / Link up 次数
- 显示事件时间
- 支持高并发 SSH
- 实时进度条
- 自动生成日志文件
3. 运行环境
要求:
- Linux
- Bash 4+
- 节点支持 SSH 免密登录
- 节点存在
journalctl - 控制节点安装:
ssh
awk
grep
timeout
xargs
date
4. 节点列表文件
默认读取:
nodelist
示例:
node001
node002
node003
node004
要求:
- 每行一个 hostname
- 需要 SSH 可访问
5. 使用方法
基本运行
./cluster_netlink_check.sh
默认:
扫描时间范围 : 1小时
并行SSH数量 : 50
节点列表文件 : nodelist
SSH超时 : 5秒
6. 参数说明
| 参数 | 说明 |
|---|---|
-t |
检查时间范围 |
-p |
并行 SSH 数量 |
-hostfile |
节点列表文件 |
-w |
SSH 连接超时 |
-h |
显示帮助 |
6.1 时间范围
支持单位:
| 单位 | 含义 |
|---|---|
| m | 分钟 |
| h | 小时 |
| d | 天 |
示例:
-t 30m
-t 2h
-t 3d
6.2 并发 SSH
-p 100
示例:
./cluster_netlink_check.sh -p 200
适用于大规模集群。
6.3 指定节点文件
-hostfile gpu_nodes
示例:
./cluster_netlink_check.sh -hostfile gpu_cluster.list
6.4 SSH 超时
-w 10
示例:
./cluster_netlink_check.sh -w 10
7. 示例
示例1:扫描最近1小时
./cluster_netlink_check.sh
示例2:扫描最近6小时
./cluster_netlink_check.sh -t 6h
示例3:扫描GPU节点
./cluster_netlink_check.sh -hostfile gpu_nodes
示例4:大型集群扫描
./cluster_netlink_check.sh -t 12h -p 200
8. 输出示例
实际输出示例:

字段说明:
| 字段 | 含义 |
|---|---|
| HOST | 节点名 |
| NIC | 网卡名称 |
| DOWN | Link down 次数 |
| LINK_DOWN_TIME | down 发生时间 |
| UP | Link up 次数 |
| LINK_UP_TIME | up 发生时间 |
9. 进度显示
运行过程中会显示实时进度:
Progress: 45% | 450/1000 | 32.5 node/s | ETA 00:18
含义:
| 字段 | 含义 |
|---|---|
| 45% | 完成比例 |
| 450/1000 | 已扫描节点 |
| node/s | 扫描速度 |
| ETA | 预计剩余时间 |
10. 日志文件
日志保存在:
./cluster_netlink_check_log/
示例:
./cluster_netlink_check_log/netlink_20260311_143555.log
内容包括:
- 扫描结果
- SSH失败节点
11. SSH失败节点
如果部分节点无法连接,会显示:
SSH Failed Nodes:
node034
node087
node192
可能原因:
- 节点关机
- SSH异常
- 网络不可达
12. 常见用途
1️⃣ 查找网络抖动节点
./cluster_netlink_check.sh -t 24h
2️⃣ 大规模集群健康检查
./cluster_netlink_check.sh -t 1h -p 200
13. 建议配置(大规模集群)
| 节点规模 | 推荐并发 |
|---|---|
| <200 | 50 |
| 200–500 | 100 |
| 500–2000 | 200 |
14. 注意事项
1️⃣ 需要 SSH免密登录
ssh node001
必须无密码。
2️⃣ 节点必须有 journalctl
journalctl -k
3️⃣ 需要 root 或日志访问权限。
4️⃣ 大规模扫描时建议提高并发:
-p 200