如何不依赖命令也能高效排障Catpaw Chat?
摘要:TL;DR:catpaw chat 让你用自然语言排障——说"最近有 OOM 吗",AI 帮你查 dmesg;说"谁在吃磁盘",AI 帮
TL;DR:catpaw chat 让你用自然语言排障——说"最近有 OOM 吗",AI 帮你查 dmesg;说"谁在吃磁盘",AI 帮你跑 du 和 df。本文整理 12 个高频排障场景,每个都对比"传统命令行"和"一句话搞定",附带 AI 在幕后调用了什么工具。即使你不用 catpaw,也能当作一份排障命令速查表。
一个灵魂拷问
你能在 5 秒内回忆出以下命令吗?
# 查看 TCP 各状态连接数
ss -ant | awk '{print $1}' | sort | uniq -c | sort -rn
# 查看某进程的线程及其 wchan(卡在哪个内核函数)
ls /proc/<pid>/task | while read tid; do
echo -n "$tid "; cat /proc/$tid/wchan 2>/dev/null; echo
done
# 查看 conntrack 表使用率
echo "$(cat /proc/sys/net/netfilter/nf_conntrack_count) / $(cat /proc/sys/net/netfilter/nf_conntrack_max)" | bc -l
# 查看 Listen 队列溢出次数
grep -E 'ListenOverflows|ListenDrops' /proc/net/netstat
# 按磁盘 I/O 排序进程
awk '{if(NR>1 && $1~/[0-9]+/) print $0}' /proc/<pid>/io
记不住?正常。
这些命令不是用来记的——它们散落在 /proc 的几十个文件和几百个命令行工具里,每个有自己的语法和参数,组合方式千变万化。哪怕是工作十年的 SRE,排障时也经常要 Google 一下。
但现在是 2025 年了。
你有没有想过:为什么排障的时候,人类要去适应机器的语言,而不是反过来?
You: 最近有 OOM 吗?
AI: 发现 2 次 OOM Kill 事件……
这就是 catpaw chat 在做的事——你说人话,它帮你跑命令。
catpaw chat 是什么
catpaw 是一个带 AI 大脑的轻量监控 Agent。catpaw chat 是它的交互排障模式:
./catpaw chat
启动后进入对话界面,你可以用自然语言描述问题,AI 会调用内置的 90+ 诊断工具 来帮你排查,工具覆盖 CPU、内存、磁盘、网络、进程、内核、日志、容器等各个领域。
关键特性:
不用记命令:说"帮我看看磁盘",AI 知道该跑什么
不用解析输出:AI 看原始数据,给你总结好的结论
多步推理:AI 会根据前一步结果决定下一步查什么("内存高 → 查 Top 进程 → 查具体进程的 fd 和连接")
安全可控:诊断工具是只读的;如果需要执行 shell 命令,AI 会先征得你的同意
下面我们通过 12 个场景看看它怎么用。
场景 1:CPU 飙高了,谁在吃?
传统方式
# 先看整体
top -bn1 | head -20
# 看负载是否超过核数
uptime
nproc
# 找到 CPU 最高的进程
ps aux --sort=-%cpu | head -10
# 如果是 Java,还得 jstack
jstack <pid> > /tmp/thread_dump.txt
4 条命令,还得人工比对"负载 vs 核数"来判断是不是真的高。
catpaw chat
You: CPU 好像有点高,帮我看看
AI: [调用 cpu_usage]
当前 CPU 总使用率 87.3%,其中:
- user: 72.1%, system: 12.8%, iowait: 2.4%
[调用 cpu_load_average]
负载 1m/5m/15m = 12.3/10.8/8.2,当前 4 核,
负载/核 比值 3.08,显著偏高。
[调用 top_cpu_processes]
Top 3 CPU 进程:
1. java (PID 8847) — 68.2% CPU, 运行 3d12h
2. python3 (PID 12301) — 11.5% CPU, 运行 2h
3. nginx worker (PID 3021) — 3.1% CPU
结论:CPU 压力主要来自 PID 8847 的 Java 进程,持续占用
68% CPU。建议检查该进程是否存在死循环或 GC 问题。
