使用Elasticsearch Agent Skill进行集群智能运维

更新时间:
复制为 MD 格式

Elasticsearch Agent Skill 是一套面向 AI 编程助手的运维技能包,覆盖实例管理、故障诊断和网络配置三大核心场景。安装 Skill 后,AI Agent 可通过自然语言指令自动调用阿里云 Elasticsearch OpenAPI,完成集群创建、故障排查、安全配置等运维操作。目前支持的 AI  Agent产品包括 Claude Code、DataAgent、Cursor、Qoder 和通义灵码等,AI搜索Agent Agentic Search近期也将支持。

Skill 概览

Skill 名称

功能定位

覆盖能力

elasticsearch-instance-manage

实例生命周期管理

创建(单/多可用区)、查询、列表、重启、升降配、节点信息

elasticsearch-instance-diagnose

智能故障诊断

四步诊断法、49 条诊断规则、7 套 SOP、管控+监控+引擎三维数据采集

elasticsearch-network-manage

网络安全配置

公私网开关、白名单管理、HTTPS、Kibana PrivateLink 私网连接

安装 Skill

安装 Aliyun CLI

Skill 依赖 Aliyun CLI(>= 3.3.3)执行 OpenAPI 调用。

# 安装或更新 Aliyun CLI
curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash

# 验证版本
aliyun version

# 开启自动插件安装
aliyun configure set --auto-plugin-install true
aliyun plugin update

如尚未配置凭证,执行 aliyun configure 完成 AccessKey 配置。

下载和安装 Skill

  1. 访问 阿里云 Agent Skills 门户,分别进入以下 Skill 详情页并下载安装包:

  2. 将下载的 zip 安装包解压到项目的 Skills 目录(以 Claude Code 为例):

    unzip alibabacloud-elasticsearch-instance-manage.zip -d your-project/.claude/skills/
    unzip alibabacloud-elasticsearch-instance-diagnose.zip -d your-project/.claude/skills/
    unzip alibabacloud-elasticsearch-network-manage.zip -d your-project/.claude/skills/
  3. 验证目录结构:

    ls your-project/.claude/skills/
    # 应包含三个 Skill 目录,每个目录中有 SKILL.md 和 references/

其他 AI 编程工具的安装路径:Cursor 解压到 .cursor/rules/,通义灵码或 Qoder 解压到对应的 Skills 目录。

场景一:创建 Elasticsearch 实例

通过实例管理 Skill,可以使用自然语言描述创建需求,AI 自动完成参数校验和 API 调用。

对 AI 说

在阿里云杭州区域创建一个双可用区 Elasticsearch 实例。版本用 8.17_with_X-Pack,4 个数据节点,每个节点 20GB 的 ESSD 磁盘,规格 elasticsearch.sn2ne.large.new。VPC 用 vpc-bp1***************,交换机 vsw-bp1***************,可用区 cn-hangzhou-i,按量付费,实例名 log-es-cluster。

AI 自动执行以下操作:

  1. 校验所有必填参数(地域、VPC、交换机、可用区、密码、规格等),缺少参数时主动询问。

  2. 识别双可用区需求,自动配置 zoneCount=2 和 3 个专有 Master 节点。

  3. 生成 clientToken(UUID)确保幂等。

  4. 调用 createInstance API 创建实例。

  5. 查询实例状态,确认创建成功。

AI 生成并执行的命令示例:

CLIENT_TOKEN=$(uuidgen)

aliyun elasticsearch create-instance \
  --region cn-hangzhou \
  --client-token $CLIENT_TOKEN \
  --es-admin-password "YourPassword@2024" \
  --es-version "8.17_with_X-Pack" \
  --node-amount 4 \
  --node-spec '{"disk":20,"diskType":"cloud_essd","spec":"elasticsearch.sn2ne.large.new"}' \
  --network-config '{"vpcId":"vpc-bp1***************","vswitchId":"vsw-bp1***************","vsArea":"cn-hangzhou-i","type":"vpc"}' \
  --payment-type postpaid \
  --description "log-es-cluster" \
  --zone-count 2 \
  --master-configuration '{"amount":3,"disk":20,"diskType":"cloud_essd","spec":"elasticsearch.sn2ne.xlarge"}' \
  --kibana-configuration '{"amount":1,"spec":"elasticsearch.n4.small"}' \
  --user-agent AlibabaCloud-Agent-Skills/alibabacloud-elasticsearch-instance-manage

创建实例时需注意以下约束:

  • 多可用区部署:设置 zoneCount 为 2 或 3 时,必须配置 3 个专有 Master 节点。网络配置中的 vswitchId 只需提供主可用区的交换机,节点会自动分布到不同可用区。

  • 幂等保护:所有写操作使用 clientToken(UUID 格式),请求超时后可安全重试。

  • 单次变更原则:升降配时,数据节点、Master 节点、Kibana 节点、冷节点、协调节点不能在同一次 API 调用中同时变更。

  • 规格差异:不同地域支持的节点规格不同,Skill 内置了规格对照表自动校验。在北京、上海、杭州和深圳地域,新一代云盘型节点的规格需加 .new 后缀(如 elasticsearch.sn2ne.large.new)。

场景二:集群故障诊断

诊断 Skill 内置了系统性的四步诊断工作流,覆盖 8 大故障类别和 7 套专项 SOP。

对 AI 说

ES 集群 es-cn-xxx 突然变成 Red 状态,在 cn-hangzhou 地域,线上写入全部失败,紧急诊断原因并给出处置方案。

AI 自动执行四步诊断:

步骤

操作

数据来源

快速扫描

调用 DescribeInstance 确认集群状态

阿里云 OpenAPI

并发采集

采集 CPU、内存、磁盘等指标;查询系统事件;获取分片分配状态

CMS 云监控 + ES REST API

规则匹配

根据采集信号匹配 49 条原因码和对应 SOP

内置诊断知识库

输出结论

按 P0/P1/P2 优先级,给出根因分析和处置建议

综合推理

诊断输出示例:

P0 紧急问题:集群状态 Red
├─ 根因:节点 es-node-03 磁盘使用率 96%,触发 flood_stage 只读保护
├─ 影响:主分片不可用,写入全部失败
├─ 处置建议:
│  1. 立即清理过期索引释放磁盘空间
│  2. 磁盘降至 85% 以下后执行:
│     PUT _all/_settings {"index.blocks.read_only_allow_delete": null}
│  3. 评估是否需要扩容磁盘
└─ 参考 SOP:sop-disk-storage.md / sop-cluster-health.md

常见故障场景速查

磁盘水位分级响应:ES 有三级自动保护机制。

水位

触发条件

自动行为

Low Watermark

磁盘使用率 > 85%

停止向该节点分配新分片

High Watermark

磁盘使用率 > 90%

尝试从该节点迁移分片

Flood Stage

磁盘使用率 > 95%

将该节点所有索引设为只读

磁盘水位降至安全范围后,只读保护不会自动解除,需手动执行:

PUT _all/_settings
{
  "index.blocks.read_only_allow_delete": null
}

JVM 内存压力判断标准

指标

告警(P1)

严重(P0)

堆内存使用率

avg > 75%

avg > 85%

Old GC 频率

> 1 次/分钟

GC 耗时占比

> 10%

写入优化基准线(遇到 HTTP 429 写入拒绝时):

  • 每次 Bulk 请求大小:10~30 MB

  • 每个 Bulk 中的文档数:500~2000 条

  • 并发 Bulk 数:不超过节点数 × 2

场景三:网络安全配置

网络管理 Skill 自动识别实例的架构类型(云原生或基础管控),选择正确的 API 完成网络配置。

对 AI 说

把 ES 实例 es-cn-xxx 的 HTTPS 打开,另外把 IP 段 203.0.113.0/24 和 198.51.100.0/24 追加到公网白名单,不要覆盖原来的。

AI 自动执行:

  1. 调用 DescribeInstance 检查实例状态和当前 HTTPS 状态。

  2. 如 HTTPS 未开启,调用 OpenHttps 开启。

  3. 调用 ModifyWhiteIps,使用 Append 模式追加 IP 到白名单。

# 检查当前 HTTPS 状态
aliyun elasticsearch describe-instance \
  --instance-id es-cn-xxx \
  --user-agent AlibabaCloud-Agent-Skills/alibabacloud-elasticsearch-network-manage

# 开启 HTTPS
aliyun elasticsearch open-https \
  --instance-id es-cn-xxx \
  --user-agent AlibabaCloud-Agent-Skills/alibabacloud-elasticsearch-network-manage

# 追加白名单(Append 模式)
aliyun elasticsearch modify-white-ips \
  --instance-id es-cn-xxx \
  --modify-mode Append \
  --white-ip-group '{"groupName":"default","ips":["203.0.113.0/24","198.51.100.0/24"],"whiteIpType":"PUBLIC_ES"}' \
  --user-agent AlibabaCloud-Agent-Skills/alibabacloud-elasticsearch-network-manage

网络配置的关键约束:

操作

说明

架构感知

Skill 自动查询实例 archType,云原生实例(public)和基础管控实例(exclusive)使用不同的 API

Kibana 私网

云原生实例的 Kibana 私网访问必须通过 EnableKibanaPvlNetwork 配置,不能使用 TriggerNetwork

白名单模式

Cover(覆盖)、Append(追加)、Delete(删除)三种模式。添加新 IP 时使用 Append,避免误覆盖现有配置

幂等检查

操作前自动检查当前状态,已达目标状态时跳过操作

安全约束

避免将白名单设为 0.0.0.0/0;公网白名单不支持私有 IP,私网白名单不支持公网 IP

变更时机

TriggerNetwork 操作可能导致短暂服务中断,建议在业务低峰期执行