关于 alibabacloud-rds-mysql-inspection
用于巡检 Alibaba Cloud RDS MySQL 实例的 Agent Skill,可检查单个、指定多个或跨区域的全部实例。它汇集监控、告警、慢日志和空间数据,生成实例及汇总 HTML 报告,并提供健康评分与优化建议。
主要功能
- 01单实例、多实例及全局巡检
- 02按 1 至 30 天设定时间范围
- 03跨区域并发扫描实例
- 04采集监控、告警、慢日志和空间数据
- 05生成 HTML 报告及健康评分
适用场景
- 01查看指定实例近期健康状况
- 02批量排查多个实例问题
- 03按地域巡检全部 RDS MySQL 实例
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ aliyun/ alibabacloud-aiops-skills --skill alibabacloud-rds-mysql-inspection安装后在 Claude Code 中输入/alibabacloud-rds-mysql-inspection确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/ram-policies.mdscripts/check-write-operation.shinspect.py详细介绍
阿里云 RDS MySQL 实例巡检技能
此技能可对阿里云 RDS MySQL 实例进行批量健康巡检。它支持三种模式——单实例、多实例和全局批量巡检——并可配置时间范围(默认 7 天,最长 30 天),最终生成标准化的 HTML 巡检报告。
用法
无需手动运行任何命令。 只需用自然语言描述需求即可。
示例提示词
示例 1:单实例
- EN:
Inspect RDS instance rm-bp1xxxxxx - ZH:
帮我巡检下 RDS 实例 rm-bp1xxxxxx
示例 2:多个实例并指定时间范围
- EN:
Inspect rm-bp1xxx and rm-bp1yyy for the past 14 days - ZH:
巡检 rm-bp1xxx 和 rm-bp1yyy 这两个实例,看最近 14 天的情况
示例 3:全局巡检
- EN:
Run a health inspection on all RDS MySQL instances and produce a summary report - ZH:
帮我对所有 RDS MySQL 实例做一次健康巡检,输出汇总报告
示例 4:按地域限定
- EN:
Inspect all RDS MySQL instances in cn-hangzhou and cn-shanghai - ZH:
巡检 cn-hangzhou 和 cn-shanghai 两个地域的所有 RDS MySQL 实例
AI 会自动执行的操作
- 识别用户意图(单实例 / 多实例 / 全局),并提取时间范围参数。
- 调用
rds describe-regions获取可用地域列表(过滤掉ClosedDown)。 - 并发扫描每个地域中的 RDS MySQL 实例(自动传入地域 ID,用户无需指定)。
- 并发获取每个目标实例的属性、监控数据、告警、慢日志和空间数据。
- 自动检测集群实例并收集各节点的数据。
- 为每个实例生成一份 HTML 报告,并生成一份汇总 HTML 报告,其中包含健康评分排名和优化建议。
前置条件
运行环境
- Python:3.7+(仅使用标准库)
- 操作系统:Linux / macOS / Windows
- Aliyun CLI:>= 3.3.3,且已配置有效凭据
安装检查
预检查:需要 Aliyun CLI >= 3.3.3
运行
aliyun version验证版本是否 >= 3.3.3。如果缺少 CLI 或版本过旧, 运行curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash进行安装或升级, 或参阅 https://help.aliyun.com/zh/cli/ 查看安装说明。
预检查:需要更新 Aliyun CLI 插件
[MUST] 运行
aliyun configure set --auto-plugin-install true以启用自动安装插件。 [MUST] 运行aliyun plugin update以确保所有本地安装的插件均为最新版本。
aliyun version
aliyun configure set --auto-plugin-install true
aliyun plugin update
Python 依赖项
仅使用 Python 标准库模块(subprocess、json、argparse、concurrent.futures、datetime);无需运行 pip install。
[MUST] CLI User-Agent 与 AI-Mode 强制规则
[MUST] CLI User-Agent — 此技能执行的每次
aliyunCLI 调用都必须包含:--user-agent AlibabaCloud-Agent-Skills/alibabacloud-rds-mysql-inspection
scripts/inspect.py中的call_cli()封装会自动注入此 UA,因此无需在每条命令中重复指定。
[MUST] 启用 AI-Mode — 在执行任何 Agent Skill 之前,必须启用 AI-mode。 调用任何 CLI 命令之前运行以下命令:
aliyun configure ai-mode enable aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-rds-mysql-inspection"
[MUST] 在每个退出点禁用 AI-Mode — 在发送最终回复之前(无论成功、失败、发生异常、用户取消还是会话结束),都必须禁用 AI-mode。AI-mode 仅用于正在执行的 Agent Skill,技能停止运行后不得继续保持启用状态。
aliyun configure ai-mode disable
必需的 RAM 权限
此技能使用只读 RDS / CMS / DAS API。完整的自定义策略 JSON、按操作划分的用途表以及系统策略替代方案均在 references/ram-policies.md 中声明。运行此技能前,请将该策略附加到执行操作的 RAM 身份。
身份验证
预检查:需要 Alibaba Cloud 凭据
安全规则:
- 绝不读取、回显或打印 AK/SK 值
- 绝不要求用户在对话或命令行中直接输入 AK/SK
- 仅使用
aliyun configure list检查凭据状态aliyun configure list检查输出并确认存在有效配置文件。如果未配置凭据,请引导用户在对话之外进行配置:
aliyun configure
CLI 参数参考
python3 scripts/inspect.py [options]
| 参数 | 简写 | 类型 | 描述 | 默认值 |
|---|---|---|---|---|
--instance-ids | -i | 字符串 | 实例 ID(可重复指定,或在单个值中以逗号分隔) | 无 |
--all | — | 标志 | 全局检查所有 RDS MySQL 实例 | 关闭 |
--days | -d | 整数 | 时间窗口长度,单位为天(1-30) | 7 |
--start-time | — | YYYY-MM-DD | 开始日期(与 --days 互斥) | 无 |
--end-time | — | YYYY-MM-DD | 结束日期(必须与 --start-time 同时提供) | 无 |
--output | -o | 路径 | 输出目录 | ./rds-inspection-reports/<ts>/ |
--profile | -p | 字符串 | Aliyun CLI 配置文件名称 | 默认配置文件 |
--regions | — | 字符串 | 将扫描范围限制为指定区域(以逗号分隔) | 全部 |
--concurrency | -c | 整数 | 单实例检查并发数 | 3 |
--region-concurrency | — | 整数 | 区域扫描并发数 | 3 |
--skip-space | — | 标志 | 跳过 DAS 空间分析(每个实例可节省 30-150 秒) | 关闭 |
验证规则(由脚本自动强制执行):
- 必须且只能指定
-i或--all其中一项。 --days必须介于 1 和 30 之间;超出此范围的值会引发错误。- 必须同时提供
--start-time和--end-time,且时间跨度不得超过 30 天。
核心工作流
阶段 1:获取可用区域列表
aliyun rds describe-regions --region cn-hangzhou --user-agent AlibabaCloud-Agent-Skills/alibabacloud-rds-mysql-inspection
从返回结果的 Regions.RDSRegion[] 中提取 RegionId,并剔除 Status 包含 closed 的区域。
阶段 2:并发扫描各区域中的 RDS MySQL 实例
对每个区域调用:
aliyun rds describe-db-instances --region <RegionId> \
--engine MySQL --page-size 100 --page-number <N> \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-rds-mysql-inspection
根据 TotalRecordCount 进行分页,直至获取所有记录。合并为完整的 [{instanceId, regionId, ...}] 列表。
阶段 3:筛选目标实例
--all:所有实例。-i id1,id2:从完整列表中筛选(每个实例对应的区域 ID 会自动携带,无需用户指定)。
未匹配的实例 ID 会产生警告,但不会中止整个工作流。
阶段 4:查询实例属性(默认并发数为 3)
aliyun rds describe-db-instance-attribute --region <RegionId> \
--db-instance-id <InstanceId> --user-agent AlibabaCloud-Agent-Skills/alibabacloud-rds-mysql-inspection
提取关键字段:Category(用于判断实例是否为集群)、DBClusterNodes(集群节点列表)、MaxConnections、MaxIOPS、MaxIOMBPS、CurrentKernelVersion、LatestKernelVersion、ExpireTime 等。
阶段 5:逐实例检查(默认并发数为 3)
每个实例内的以下采集步骤按顺序运行。
5.1 CMS 指标采集(cms describe-metric-list)
五项核心指标。MetricName 和 Dimensions 取决于实例是否为集群。
集群实例(Category=cluster,按节点查询):
| MetricName | 含义 |
|---|---|
Cluster_CpuUsage | CPU 利用率 |
Cluster_MemoryUsage | 内存利用率 |
Cluster_DiskUsage | 磁盘利用率 |
Cluster_IOPSUsage | IOPS 利用率 |
Cluster_ConnectionUsage | 连接利用率 |
Dimensions:[{"instanceId":"<DBInstanceId>","nodeId":"<NodeId>"}]
非集群实例:
| MetricName | 含义 |
|---|---|
CpuUsage / MemoryUsage / DiskUsage / IOPSUsage / ConnectionUsage | 同上 |
Dimensions:[{"instanceId":"<DBInstanceId>"}]
调用模板:
aliyun cms describe-metric-list \
--namespace acs_rds_dashboard \
--metric-name <MetricName> \
--period 60 \
--start-time <StartMillis> --end-time <EndMillis> \
--dimensions '<JSON>' \
--length 2000 \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-rds-mysql-inspection
通过 NextToken 翻页,直到检索到所有数据点。
5.2 CMS 告警历史(cms describe-alert-log-list)
aliyun cms describe-alert-log-list \
--namespace acs_rds_dashboard --product rds \
--search-key <DBInstanceId> \
--start-time <ms> --end-time <ms> \
--page-size 100 --page-number <N>
翻页获取所有结果。按告警严重性降序排序:CRITICAL / P0 / P1 > WARN / P2 > INFO / P3 / P4。
5.3 DAS 慢日志统计(das describe-slow-log-statistic)
aliyun das describe-slow-log-statistic \
--instance-id <DBInstanceId> \
--start <ms> --end <ms> \
--order-by <Count|QueryTime> \
[--node-id <NodeId>] \
--endpoint das.cn-shanghai.aliyuncs.com
注意:
- DAS 终端节点固定为
das.cn-shanghai.aliyuncs.com(DAS 为集中式部署)。 - 集群实例必须传入
--node-id(使用 Master 节点)。 - 查询运行两次——一次按
Count排序,一次按QueryTime排序。
5.4 DAS 空间分析 — 前 20 名
# Trigger the task
aliyun das create-storage-analysis-task \
--instance-id <DBInstanceId> \
--endpoint das.cn-shanghai.aliyuncs.com
# Poll for results
aliyun das get-storage-analysis-result \
--instance-id <DBInstanceId> --task-id <TaskId> \
--endpoint das.cn-shanghai.aliyuncs.com
每 5 秒轮询一次,最长等待 180 秒。从 StorageAnalysisResult.TableStats 中取出占用空间最多的 20 张表。
阶段 6:健康评分计算
每个实例的评分为 0-100。扣分规则:
- CPU / 内存 / IOPS / 连接峰值 > 80%:-10;> 60%:-5
- 磁盘 > 85%:-15;> 70%:-5
- 慢日志条目总数 > 1000:-8;> 100:-3
- 严重 / 重度告警:-10
- 内核版本不是最新版本:-3
- 30 天内到期:-5
- 实例处于 Lock 状态:-8
阶段 7:单实例 HTML 渲染(5 个部分)
每个实例生成 instances/<DBInstanceId>.html,其中包含以下部分:
- 实例基本信息 — DBInstanceId / Engine + Version / Category(带有
(cluster)标签)/ Class / Storage / MaxConnections / MaxIOPS / MaxIOMBPS / 主可用区和备可用区 / VPC + VSwitch / 状态 / 付费类型 / Lock / 维护窗口 / 创建时间 + 到期时间 / 当前内核 + 最新内核 / 集群节点列表(仅限集群)。 - 资源利用率(过去 N 天) — 表格列出每项指标的平均值 / 峰值 / 状态颜色,并配有五张 ECharts 折线图(通过
dataZoom联动);集群实例按节点各绘制一条线。 - 空间占用最多的 20 张表 — 根据 DAS 的
TableStats排序。列:数据库 / 表 / 总空间 / 数据 / 索引 / 碎片率 / 行数。 - 慢日志统计(过去 N 天) — 两张表:按 Count 排名前列和按 QueryTime 排名前列。
- 告警历史(过去 N 天) — 按严重性排序的表格,最多显示 200 行。
阶段 8:摘要 HTML 渲染(8 个部分)
生成 summary.html,包含锚点导航和以下 8 个部分:
- 巡检概览 — KPI 卡片(总数 / 地域数量 / 集群数量 / 全局健康评分 / 健康状况分布 / 告警实例数量)以及 4 个饼图 / 柱状图(类别 / 状态 / 健康状况 / 各地域)。
- 健康评分排名 — 健康状况最差的前 20 个实例,每行链接到对应的单实例报告。
- 告警实例统计 — KPI 卡片 + 严重程度分布柱状图 + 按告警数排名的前 20 个实例。
- 资源利用率排名 — 5 个前 20 名表格(CPU / 内存 / 磁盘 / IOPS / 连接数),按峰值排序。
- 慢日志排名 — 按慢日志数量、总执行时间和单条语句最长执行时间排名的实例(跨实例汇总)。
- 空间分析 — 按已用空间排名的实例、前 20 张单表(跨实例汇总)以及碎片率最高的表。
- 版本和到期时间 — 可升级内核的实例、将在 30 天内到期的实例以及将在 90 天内到期的实例。
- 巡检结论 — KPI 卡片(全局健康评分 + 健康 / 需关注 / 严重类别的实例数量)以及汇总问题列表(按问题类型分组:CPU 使用率高 / 内存使用率高 / 空间紧张 / 慢日志多 / 告警多 / 内核过旧 / 即将到期 — 每行列出受影响的实例 ID)。
报告输出结构
./rds-inspection-reports/<timestamp>/
├── summary.html # Aggregated inspection report (8 sections)
└── instances/
├── rm-bp1xxx.html # Per-instance report (5 sections)
├── rm-bp1yyy.html
└── ...
在摘要报告中,每个实例 ID 都是超链接,点击后会在新标签页中打开对应的单实例报告。
状态阈值
| 指标 | 正常 | 警告 | 严重 |
|---|---|---|---|
| CPU 利用率 | < 60% | 60-80% | > 80% |
| 内存利用率 | < 60% | 60-80% | > 80% |
| 磁盘利用率 | < 70% | 70-85% | > 85% |
| IOPS 利用率 | < 60% | 60-80% | > 80% |
| 连接数利用率 | < 60% | 60-80% | > 80% |
| 总体健康评分 | >= 80 | 60-79 | < 60 |
集群与非集群处理方式
| 维度 | 非集群实例 | 集群实例(Category=cluster) |
|---|---|---|
| CMS MetricName | 无前缀(CpuUsage 等) | 带有 Cluster_ 前缀 |
| CMS Dimensions | {"instanceId":"<id>"} | {"instanceId":"<id>","nodeId":"<nid>"},按节点查询 |
| DAS 慢日志 | 仅需 --instance-id | 还必须传入 --node-id(使用 Master 节点) |
| HTML 指标图表 | 单条线 | 每个节点一条线 |
| 集群级汇总 | 不适用 | CPU / 内存峰值 = 所有节点峰值中的最大值 |
集群节点列表从 rds describe-db-instance-attribute 返回的 DBClusterNodes 字段中获取。
性能估算
| 场景 | 预计耗时 |
|---|---|
| 单个实例(含空间分析) | 60-200 秒 |
单个实例(--skip-space) | 10-30 秒 |
| 并发数为 3 时检查 10 个实例 | 5-15 分钟 |
使用 --all 检查 50 个实例 | 30-90 分钟 |
加速运行的提示:
- 批量检查大量实例时,使用
--skip-space;DAS 空间分析每个实例耗时 30-150 秒。 - 如果已知目标实例所在的地域,使用
--regions cn-hangzhou,...跳过其他地域。 - 提高
-c的值以增加并发量(请注意,CMS API 默认 QPS 限制为 20;建议不超过 5)。
安全规则
这是一项只读巡检技能。
- 严禁执行变更操作(DDL / DML、实例配置变更)。
- 仅生成巡检结果和优化建议。
- 此技能使用的唯一一条非只读 CLI 命令是
das create-storage-analysis-task,它会安排一个侧向分析任务,不会修改任何实例数据;其他所有调用均为纯只读操作。 - 任何变更操作都必须由用户在对话之外确认并手动执行。
参考资料
scripts/inspect.py— 主要检查脚本(CLI + 收集 + 渲染)。references/ram-policies.md— 完整的 RAM 权限参考(自定义策略 JSON + 操作用途)。- Alibaba Cloud RDS API:https://help.aliyun.com/zh/rds/developer-reference/
- Alibaba Cloud CMS API:https://help.aliyun.com/zh/cms/cloudmonitor-1-0/developer-reference/
- Alibaba Cloud DAS API:https://help.aliyun.com/zh/das/developer-reference/