name: gasp-diagnostics description: 使用GASP(通用AI专用进程监控器)进行系统诊断。当用户询问Linux系统性能、请求系统检查、提及GASP、要求诊断主机或说类似“检查我的系统”或“[主机名]有什么问题”时使用。可以通过HTTP主动从主机获取GASP指标或解释提供的JSON输出。
GASP诊断
使用GASP的AI优化监控输出实现全面的Linux系统诊断。主动从主机获取指标并提供具有上下文感知的智能分析。
获取GASP指标
当用户提及主机或请求系统检查时:
-
获取指标端点
web_fetch("http://{主机名}:8080/metrics") -
支持的主机名格式
- mDNS/本地:
accelerated.local、hyperion.local - DNS名称:
proxmox1、dev-server、workstation - IP地址:
192.168.1.100
- mDNS/本地:
-
默认端口:8080(除非用户另行指定)
-
错误处理
- 主机无法访问:通知用户,建议检查GASP是否正在运行
- 端口关闭/拒绝:尝试建议在主机上运行
systemctl status gasp - JSON解析错误:GASP可能未安装或端点错误
- 超时:网络问题或主机宕机
-
多主机查询:如果用户提及多个主机,按顺序获取每个主机并进行比较
快速诊断工作流
对于任何系统检查请求:
- 获取指定主机(们)的指标
- 先检查摘要:查看
summary.health和summary.concerns[] - 使用以下指标关联识别问题
- 报告发现的问题,包括严重程度和具体建议
触发示例
以下用户消息应触发此技能并主动获取:
- “帮我检查hyperion”
- “accelerated.local怎么了?”
- “proxmox1有问题吗?”
- “比较hyperion和proxmox1”
- “为什么我的系统很慢?”(获取localhost)
- “诊断192.168.1.50”
- “检查我所有的proxmox节点”
指标解释
健康摘要
summary.health:快速评估- “healthy”:无需操作
- “degraded”:存在问题但不严重
- “critical”:需要立即关注
summary.concerns[]:预先分析的问题,应首先调查summary.recent_changes[]:当前状态的上下文
CPU分析
负载率 = load_avg_1m / 核心数:
- < 0.7:正常使用
- 0.7-1.0:繁忙但健康
- 1.0-2.0:饱和(可能导致变慢)
-
2.0:严重过载
关键指标:
trend:“increasing”即使当前负载可接受也值得关注baseline_load:与基线的差异比绝对值更重要top_processes[]:检查意外的CPU消耗大户
内存分析
红色标志(优先级顺序):
oom_kills_recent > 0:严重 - 系统杀死了进程,立即查找内存消耗大户swap_used_mb > 0:性能正在下降pressure_pct > 5%:系统正在处理内存争用usage_percent > 90%:接近限制
重要:Linux使用内存作为缓存,因此仅usage_percent高是正常的。关注压力和交换。
磁盘I/O
饱和指标:
io_wait_ms > 10:显著的磁盘瓶颈queue_depth持续高:磁盘跟不上- 高
read_iops或write_iops且响应慢:磁盘性能问题
存储容量:
usage_percent > 90%:空间不足usage_percent > 95%:严重 - 很快会导致故障
网络
rx_bytes_per_sec/tx_bytes_per_sec:检查意外的流量峰值errors > 0或drops > 0:网络硬件/配置问题- 大量
time_wait连接:可能表示连接泄漏
进程智能
zombie > 0:进程管理错误(通常无害但表明问题)- 处于
D状态的进程:卡在不可中断睡眠(磁盘或内核问题) new_since_last[]:检查意外的进程生成
Systemd服务
units_failed > 0:检查failed_units[]数组recent_restarts[]:可能表示不稳定
日志摘要
errors_last_interval:错误率升高表明问题message_rate_per_min:峰值表明日志风暴或严重问题- 查看
recent_errors[]了解具体问题
桌面指标(存在时)
gpu.utilization_pctvs CPU:识别GPU绑定与CPU绑定的工作负载gpu.temperature_c > 85:可能发生热节流active_window:提供资源使用的上下文
常见系统模式
开发工作站(预期)
- IDE、浏览器导致高内存使用
- Firefox/Chrome通常是内存消耗大户
- Docker守护进程使用CPU/内存
- VSCode、JetBrains IDE在顶级进程中
- 基线负载:核心的10-30%
容器主机(预期)
- 基线负载升高(许多进程)
- dockerd/containerd在顶级进程中
- 50-70%内存使用正常
- 顶级列表中有许多进程
Proxmox/虚拟化主机(预期)
- 基线负载与VM数量成比例
- 一致的低级资源使用
- Proxmox本身约2GB开销
- 多个QEMU/KVM进程
GPU工作负载(预期)
- GPU利用率高,CPU利用率低
- 显著的GPU内存使用
- 常见于:渲染、ML推理、游戏
多主机分析
检查多个主机时:
- 首先获取所有主机(并行思考)
- 比较基线:识别异常值
- 寻找关联:网络事件与单个主机问题
- 检查recent_changes:迁移、部署、包更新
- 识别异常值:哪个主机与模式不同?
示例分析模式:
主机1:负载2.1/8核心(26%),正常
主机2:负载7.8/8核心(97%),需要关注 ← 异常值
主机3:负载1.9/8核心(24%),正常
关注主机2 - 调查top_processes
诊断策略
“系统很慢”
- 检查负载率(CPU饱和?)
- 检查io_wait(磁盘瓶颈?)
- 检查内存压力(交换?)
- 识别相关类别的顶级消费者
- 评估该进程的消耗是否预期
“高内存使用”
- 首先:检查pressure_pct(真实问题还是只是缓存?)
- 检查swap_used_mb(实际问题?)
- 查找顶级内存消费者
- 检查进程运行时间(泄漏还是正常?)
- 与基线比较(差异比绝对值更重要)
“意外行为”
- 检查recent_changes寻找线索
- 查看systemd失败单元
- 检查日志中的recent_errors
- 查找自上次快照以来的新进程
- 将当前指标与基线比较
报告指南
报告发现时:
- 从结论开始:“健康”、“发现问题”、“严重问题”
- 具体说明:命名导致问题的进程/服务
- 提供上下文:这对于此主机类型是否预期?
- 给出可操作建议:用户应该做什么?
- 包含相关指标:用数据支持发现
良好示例:
“在accelerated.local上发现问题:内存压力为8.2%。postgres容器2小时前开始交换,现在使用12GB RAM(基线为4GB)。这可能表示查询泄漏。建议检查最近的查询并重启容器。”
不良示例:
“内存使用很高。你可能想看看。”
高级诊断
对于复杂问题或初始分析不明确时,请参考:
- references/diagnostic-workflows.md - 详细诊断程序
- references/common-patterns.md - 基础设施特定模式
使用提供的JSON
如果用户粘贴GASP JSON而不是请求获取:
- 使用上述所有指南分析提供的JSON
- 不要尝试获取(数据已提供)
- 应用相同的解释和报告指南