# DWS 资源诊断最佳实践
当DWS集群出现CPU、内存或I/O等资源异常时，定位根因往往依赖运维经验，过程繁琐且耗时。DWS集群诊断面向该场景，提供资源异常的自动根因分析能力：用户只需在AI Agent对话窗口中用自然语言描述异常现象（如"CPU使用率过高"），系统即可自动采集监控指标、分析根因（区分客户侧与系统侧），并输出标准化诊断报告，帮助用户快速定位并解决问题。
#### 功能概述
DWS集群诊断覆盖以下三类资源异常诊断，适用场景如[表1]所示。
 表1诊断类型与适用场景 
| 诊断类型      | 适用场景                                               |
|:---|:---|
| CPU高诊断 | CPU使用率过高、CPU负载异常。                                |
| 内存高诊断    | 内存使用率过高、OOM（内存溢出）、动态内存超阈值。                         |
| I/O过载诊断  | I/O使用率过高、磁盘I/O负载异常、磁盘利用率（util）打满、I/O等待时间（await）偏高。 |
   
整个诊断流程基于DWS Autopilot监控指标自动完成指标采集、根因分析与报告生成，**无需连接集群执行SQL**，即可获得诊断结论。
#### 使用方式
诊断Skill可通过任意支持 MCP 协议的 AI Agent 使用，包括但不限于：
- **AI Shell** ：华为云提供的在线 AI 交互工具，开箱即用，无需本地部署。访问地址：[https://developer.huaweicloud.com/aishell.html?ticket=ST-8760627-1bUREQ0uFwaeEdfuBESoEd7H-sso\&locale=zh-cn](https://developer.huaweicloud.com/aishell.html?ticket=ST-8760627-1bUREQ0uFwaeEdfuBESoEd7H-sso&locale=zh-cn)
- **自建 Agent**：用户可在自己的 AI Agent 中安装诊断 Skill 并配置 DWS Autopilot MCP Server，实现相同的诊断能力
无论使用哪种 Agent，触发方式和诊断流程一致。
#### 触发诊断
在 AI Agent 对话窗口中描述集群资源异常即可触发对应诊断，系统会自动识别意图并匹配对应 Skill：
表2触发诊断 
| 诊断类型 | 触发词示例                                                |
|:---|:---|
| CPU 高  | "CPU高"、"CPU诊断"、"CPU使用率过高"、"CPU满"                     |
| 内存高     | "内存高"、"内存诊断"、"内存不足"、"OOM"、"内存溢出"                   |
| I/O 过载 | "I/O高"、"I/O诊断"、"IO过载"、"磁盘IO负载异常"、"util打满"、"await高" |
   
**触发示例**：
```
用户：我的DWS集群CPU使用率很高，帮忙诊断一下
      集群ID：xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      项目ID：xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
用户：DWS集群内存不足，集群ID是xxx，项目ID是yyy
```
#### 提供诊断参数
触发诊断后，系统会根据需要收集诊断参数：
表3提供诊断参数 
| 参数       | 必选/可选      | 说明             |
|:---|:---|:---|
| cluster_id | 必选           | 集群 ID（实例 ID） |
| project_id | 必选（I/O 诊断可选） | 项目 ID          |
   
其他信息（如区域、集群名称等）系统会自动获取，无需手动提供。
#### 诊断执行流程
诊断被触发后，将自动执行以下流程：
```
1. 指标采集 → 采集集群监控指标
2. 根因分析 → 分析根因，区分客户侧/系统侧
3. 报告生成 → 输出标准化诊断报告
```
#### 查看诊断报告
诊断完成后，系统会生成诊断报告，可直接查看。
![](https://support.huaweicloud.com/dws-ai-dws/figure/zh-cn_image_0000002764338178.png "点击放大")
![](https://support.huaweicloud.com/dws-ai-dws/figure/zh-cn_image_0000002793896693.png "点击放大")
#### CPU 高诊断
自动采集集群各节点 CPU 使用率、业务并发度、活跃查询、进程 CPU 占用等指标，定位 CPU 高的根因，区分客户侧与系统侧原因。
**报告内容**
- **基本信息**：集群名称、区域、集群 ID、TOP 节点。
- **诊断结论**：根因分类与事实描述，定位到具体 SQL 时附带 SQL 摘要、QueryID、用户名、启动时间。
- **CPU 贡献 Top3 语句**：QueryID、用户、CPU 占比、时间、SQL 文本。
- **CPU 贡献 Top3 用户**：用户名与 CPU 占比。
 
#### 内存高诊断
自动采集集群各节点内存使用率、实例级动态内存/进程内存、活跃会话内存占用、memory_pool 数据等指标，定位内存高的根因，区分客户侧与系统侧原因。
**报告内容**
- **诊断结论**：异常类型与事实描述，定位到具体 SQL 时附带定位信息。
- **内存贡献 Top3 语句**：QueryID、用户、内存占比、时间、SQL 文本。
- **内存贡献 Top3 数据库用户**：用户名与内存占比。
 
#### I/O 过载诊断
自动采集集群各节点磁盘利用率、I/O 响应时间、吞吐量、IOPS、iowait、活跃查询、等待事件、锁冲突等指标，自动判定 I/O 场景并路由到对应排查方向。
**报告内容**
- **诊断结论**：异常类型与事实描述。
- **问题节点 I/O 概览**：节点磁盘利用率、响应时间、吞吐量等。
- **I/O 贡献 Top3 SQL**：QueryID、用户、I/O 占比、SQL 文本。
- **I/O 贡献 Top3 用户**：用户名与 I/O 占比。
- **排查信息**：按场景输出的排查方向。
 
#### 注意事项
- **数据真实性**：所有诊断结论来自实际监控指标，指标不可达时标记为"无法获取"，不编造数据。
- **报告格式**：诊断报告仅输出诊断结论，不添加修复建议、不输出 SQL 优化语句。
- **时间显示**：报告中所有时间均为北京时间（UTC+8）。
- **安全**：对话中不会暴露 AK/SK 等凭证信息。
 
