# Linux服务器自动化诊断:从手动检查到eBPF分析只需几分钟
有Linux经验的开发者和运维人员都清楚这个套路:服务器“变慢”投诉一来,就得运行常规工具——top、vmstat、iostat、ss。这是第一层诊断,通常要花20–40分钟。接下来是深入eBPF工具,比如Brendan Gregg的runqlat、biolatency、tcpretrans。问题在于,罕见故障会让你记忆模糊,只能不停谷歌/proc文件、sysctl参数和BCC工具语法。
AI(如ChatGPT、Claude)能简化日志分析,但无法处理数据采集。神经网络不会自己运行工具,也不会关联PruneCalled和TCP内存等指标。你需要一个结构化的数据采集器来喂给AI。
Melisai:一键采集数据到单一JSON
Melisai是一个无依赖的静态Go二进制文件。启动命令:
sudo melisai collect --profile quick -o report.json
快速模式10秒,深度模式60秒。输出:包含CPU、内存、磁盘、网络、进程、容器和GPU指标的JSON。
采集内容:
- 第一层:procfs、sysfs、
ss、ethtool、nvidia-smi(无需root)。 - 第二层:67个BCC/eBPF工具(
runqlat、biolatency、tcpretrans等,需要root + bcc-tools)。 - 第三层:通过cilium/ebpf的原生eBPF(root + 内核≥5.8带BTF)。
降级机制:如果第二/三层不可用,则运行第一层。
两阶段采集与速率指标
为避免观测者效应,采集分两阶段:
- 基线:第一层指标(CPU、内存、I/O、网络)。
- eBPF:基线后运行BCC工具。
基于速率的计算:测量间的差值。不是累积计数器(200天在线= softnet_dropped=5000很正常),而是速率(softnet_drop_rate=50/秒才算异常)。
基于Gregg和生产实践的37条异常规则:
| 类别 | 示例阈值 |
|------|------------|
| CPU | 利用率>95%、PSI>5%、runqlat p99>50ms |
| 内存 | 直接回收>10/秒、THP拆分>1/秒、NUMA miss>5% |
| 磁盘 | 利用率>90%、延迟>50ms |
| 网络 | 重传>50/秒、conntrack>90% |
| GPU | NUMA不匹配GPU-NIC |
案例分析:Docker主机级联故障
生产环境:8核、32GB内存、HDD RAID。症状:整体变慢。
sudo melisai collect --profile deep --ai-prompt -o report.json
结果(60秒):
健康分数:46/100
异常:
[严重] tcp_retransmits 134/秒
[警告] disk_util 80.5%
[警告] cpu_psi 17.6%
[警告] io_psi 12.8%
[警告] disk_latency 12.1ms
[警告] tcp_close_wait 1个socket
级联链条:
- HDD p99=49ms → 块I/O延迟(
biolatency)。 - PruneCalled=105 → TCP缓冲区被裁剪(内存压力)。
- TCP重传=31/秒 → 服务器内部丢包。
- WireGuard tx_dropped=226k → VPN隧道受影响。
根因:HDD瓶颈。建议:sysctl -w net.ipv4.tcp_mem='1048576 2097152 4194304'。
通过MCP集成AI
内置MCP服务器,供Claude Desktop/Cursor使用:
{
"mcpServers": {
"melisai": {
"command": "ssh",
"args": ["root@server", "/usr/local/bin/melisai", "mcp"]
}
}
}
AI调用:
get_health— 分数 + 异常。explain_anomaly— 根因 + 修复命令。collect_metrics— 完整报告带直方图。
JSON包含ai_context.prompt,内置27种反模式。
建议与限制
建议是即插即用命令:
{
"type": "fix",
"title": "TCP内存压力 (PruneCalled)",
"commands": ["sysctl -w net.ipv4.tcp_mem='1048576 2097152 4194304'"],
"evidence": "PruneCalled=105"
}
限制:
- 非监控(快照,非Prometheus)。
- 非告警(仅按需/cron)。
- 非应用剖析(用
pprof)。 - 仅NVIDIA GPU(ROCm计划中)。
安装与构建
curl -sSL https://melisai.dev/install | sh
构建:
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o melisai ./cmd/melisai/
Apache 2.0。
核心要点
- 10–60秒内采集67个eBPF工具 + 第一层,输出结构化JSON。
- 速率指标消除长在线服务器假阳性。
- 37条异常规则 + 现成sysctl命令。
- MCP集成:AI直接分析,无需复制粘贴。
- 两阶段采集最小化观测者效应。
— Editorial Team
暂无评论。