一键采集工具(也叫:K8s Java 全景诊断雷达操作手册)
适用人群:新手运维、刚接触K8s/Java应用排查的人员 核心目标:无需复杂命令,按步骤操作,快速完成K8s集群Java应用诊断,获取可视化报告 前置说明:工具仅支持Linux系统(amd64架构),需在K8s Master节点运行,确保节点能正常访问K8s集群和目标Pod
第一章:前期准备(必做,否则无法正常运行)
1.1 工具获取与放置
下载地址:https://frontend-project-dev.oss-cn-beijing.aliyuncs.com/software/k8s_scan.zip
- 将工具文件
k8s_scan-linux-amd64上传至K8s Master节点或运维机的的任意目录(推荐目录:/data/tool/k8s_scan,后续所有操作均在此目录执行)。 - 上传后,进入工具所在目录:
cd /data/tool/k8s_scan
1.2 给工具添加执行权限
工具默认没有执行权限,直接运行会报错“Permission denied”,必须执行以下命令授权: chmod +x ./k8s_scan-linux-amd64
验证:输入 ls -l,查看工具文件权限,若显示“-rwxr-xr-x”,说明授权成功。
1.3 必备环境检查
- 检查kubectl权限(工具依赖kubectl获取集群信息):
kubectl get pods,能正常显示Pod列表即正常;若报错“command not found”,需先安装kubectl。 - 检查磁盘空间:工具会生成报告,需预留至少1GB空闲空间,检查命令:
df -h,查看当前目录所在磁盘的空闲空间(可用值≥1G即可)。 - 时间同步:确保Master节点时间与集群其他节点一致,避免Prometheus指标拉取错乱,无需手动操作,确认节点时间正常即可。
第二章:配置文件修改
工具支持两种运行方式:通过配置文件运行(推荐新手)、通过命令行参数运行(快速排查),优先讲解配置文件方式,配置文件名为 config.yaml。
配置文件模板:
# ---------------------------------------------------------------------
# 1. 目标过滤配置 (Target Filtering)
# ---------------------------------------------------------------------
# 目标 Namespace。如果留空 (""),则扫描全集群所有 Namespace。
target_namespace: "seeyon-xxx"
# 目标 Pod 关键字过滤 (数组格式)。
# 只要 Pod 名称中包含以下任意一个关键字,就会被纳入扫描范围。
# 如果留空 (不写任何 - "xxx"),则代表不限制,扫描该 Namespace 下的所有 Pod。
target_pods:
- "ai"
- "ctp-webapi-gateway"
- "ctp-user"
# ---------------------------------------------------------------------
# 2. 宏观指标配置 (Prometheus Integration)
# ---------------------------------------------------------------------
# Prometheus 的 API 地址。
# 如果配置了此项,脚本会额外拉取过去 30 分钟的 CPU 峰值和异常重启增量。
# 如果留空 (""),则跳过宏观指标拉取,仅做本地 15 秒微观采样。
prom_url: "http://xxx.xxx.xxx.xxx:xxx"
# ---------------------------------------------------------------------
# 3. 资源水位告警阈值 (Resource Thresholds)
# ---------------------------------------------------------------------
# Node 节点 CPU 使用率危险阈值 (%)。超过此值,Node 卡片会标黄警告。
node_cpu_danger_pct: 85.0
# Node 节点物理内存使用率危险阈值 (%)。超过此值,Node 卡片会标黄警告。
node_mem_danger_pct: 85.0
# Pod 容器物理内存 (Cgroup) 使用率危险阈值 (%)。
# 计算公式: 实际使用量 / Limit 限制量。超过此值,极易触发 OOMKilled,会标红警告。
pod_mem_danger_pct: 90.0
# ---------------------------------------------------------------------
# 4. 网络与 JVM 诊断阈值 (Network & JVM Diagnostics)
# ---------------------------------------------------------------------
# TCP CLOSE_WAIT 状态连接数警告阈值 (个)。
# 超过此值,说明代码中可能存在未正常 close() 的连接,存在连接池泄漏风险。
tcp_wait_warn: 50
# 采样窗口期内,Full GC 发生次数的危险阈值 (次)。
# 只要达到或超过此值,说明 JVM 正在经历严重的 Stop-The-World 停顿,会标红警告。
fgc_danger: 1
# JVM 老年代 (Old Gen) 内存使用率警告阈值 (%)。
# 超过此值,说明濒临 Full GC 边缘,或者存在内存泄漏,会标黄警告。
old_gen_warn: 85.0
# 内存泄漏判定最小增量 (Bytes)。默认 1048576 Bytes = 1MB。
# 在 T0 和 T15 两次 Jmap 快照对比中,如果某类对象的净增长超过此值,会被列为泄漏嫌疑对象。
leak_min_bytes: 1048576
# ---------------------------------------------------------------------
# 5. 动态采样引擎配置 (Sampling Engine)
# ---------------------------------------------------------------------
# 每次资源采样 (CPU/Mem/IO/Net) 的间隔时间 (秒)。
sample_interval: 3
# 资源采样的总次数。
# 总诊断耗时 ≈ sample_interval * sample_count。默认 3 * 5 = 15 秒。
sample_count: 52.1 配置文件获取与放置
- 将配置文件
config.yaml上传至工具所在目录(与k8s_scan-linux-amd64同目录)。 - 确认文件存在:
ls -l,能看到config.yaml即正常。
2.2 配置文件核心修改(仅改3处,其余默认不动)
用文本编辑器打开配置文件: vi config.yaml
打开后,找到以下3处,修改为自己集群的信息,修改后按 i 开始编辑,按 Ctrl+X 退出编辑器。
#### 修改1:目标命名空间(必填)
找到 target_namespace: "seeyon-xxx",将双引号内的内容改为你要扫描的K8s命名空间。
#### 修改2:目标Pod关键字(必填)
找到 target_pods:,下方的列表是需要扫描的Pod关键字,只保留你关心的应用名。 示例:
若只扫描包含“ai”和“ctp-webapi”的Pod,修改后如下:
target_pods:
- "ai"
- "ctp-webapi"说明:只要Pod名称包含列表中的任意一个关键字,就会被扫描;若留空(不写任何“- xxx”),则扫描该命名空间下所有Pod(不推荐,容易超时)。
#### 修改3:Prometheus地址(可选)
找到 prom_url: "http://xxx.xx.xx.xx:xxxx",有两种情况:
- 有Prometheus服务:将双引号内的地址改为自己的Prometheus地址(如 http://10.1.1.1:9090),确保之前执行的curl命令能连通。
- 无Prometheus服务:直接将双引号内内容清空,改为
prom_url: "",工具会跳过宏观指标拉取,仅做本地采样。
第三章:工具运行
所有操作均在工具所在目录(/data/tool/k8s_scan)执行,运行时不要关闭终端,等待诊断完成。
命令(直接复制执行,无需修改): ./k8s_scan-linux-amd64 -c config.yaml
运行后,终端会打印进度日志,正常进度如下(无需关注中间细节,等待最后提示即可)
[root@master k8s_scan]# ./k8s_scan-linux-amd64 -c config.yaml
2026/04/15 16:08:54 === 🚀 K8s Java 全景诊断雷达 (v14.0.0-Capacity-Pro) ===
2026/04/15 16:08:54 [1/6] 解析集群拓扑、资源配额与精准过滤 Pod...
2026/04/15 16:08:55 [2/6] 穿透采集 Node OS 日志与 K8s 事件 (死亡溯源)...
2026/04/15 16:08:56 [4/6] 启动全维动态采样引擎 (CPU/Mem/IO/Net/JVM)...
2026/04/15 16:08:56 [3/6] 异步拉取 Prometheus 宏观指标 (过去30分钟)...
2026/04/15 16:08:56 -> 计划从 Prometheus 拉取 10 个 Pod 的指标 (并发度: 5)...
2026/04/15 16:09:06 [进度] Prometheus 指标拉取中: 5/10 (50%)
2026/04/15 16:09:16 [进度] Prometheus 指标拉取中: 10/10 (100%)
2026/04/15 16:09:16 -> Prometheus 指标拉取完毕。
2026/04/15 16:09:21 [5/6] 运行智能诊断与大盘数据组装...
2026/04/15 16:09:21 [6/6] 导出结构化数据与全景可视化 HTML 报告...
2026/04/15 16:09:21 === 🎉 诊断完成 | 耗时: 26.402950185s | 报告目录: output/radar_report_20260415_160854 ===将结果文件夹压缩打包,发出做分析即可。
结果页面示例:

