当前位置: 首页 > news >正文

AWS DevOps Agent 实测:AI 自主运维从告警到根因报告的完整技术路径

问题背景

企业级 AWS 环境里,EC2、RDS、EKS、Lambda、ALB 交织运行,一个故障的排查路径可能跨越 CloudWatch 指标、CloudTrail 操作记录、VPC Flow Logs、Config 变更等多个数据源。人工关联这些数据,从告警触发到定位根因往往需要 30 分钟到数小时。

AWS DevOps Agent(2026 年 3 月 GA)试图解决这个问题:AI 驱动的自主运维代理,接收告警后自动跨服务关联数据,输出结构化根因分析报告。

本文记录了用 EC2 CPU 告警场景做的一次完整测试,包括架构设计、部署代码和实际观察。

DevOps Agent 核心机制

自动拓扑发现

Agent 启动调查时,先自动调 AWS API 构建账户内的资源拓扑——哪些 EC2 关联了哪个 ALB、挂了哪个 RDS、属于哪个 VPC。不需要预先配置资源清单。

AI 自主调查策略

告警进来后,Agent 自己决定调查路径:先查 CloudWatch 指标确认症状,再翻 CloudTrail 看最近的 API 操作,然后检查 Config 变更和 VPC Flow Logs。整个过程不需要预定义 runbook。

结构化 Journal Records

调查结果按类型分层存储:

recordType 含义
symptom 发现的症状
finding 调查发现(含根因)
observation 观测数据
investigation_gap 调查中的信息缺口
investigation_summary_md Markdown 格式完整摘要

触发方式

  • Backlog Task:异步模式,适合自动化流水线。Agent 调查完通过 EventBridge 发布 Investigation Completed 事件
  • Chat API:同步流式响应,支持多轮对话,适合交互式排查
  • Webhook:第三方系统(PagerDuty、Datadog、Grafana)直接 POST

测试架构:事件驱动全链路

EC2 CPU > 80%→ CloudWatch Alarm→ EventBridge Rule-1→ Lambda-A: create_backlog_task()→ DevOps Agent 自主调查(5-15 min)→ EventBridge Rule-2 (aws.aidevops / Investigation Completed)→ Lambda-B: list_journal_records() → 飞书通知

Lambda-A:触发调查

import json, os, boto3def lambda_handler(event, context):detail = event.get("detail", {})if detail.get("state", {}).get("value") != "ALARM":return {"statusCode": 200, "body": "Skipped"}alarm_name = detail.get("alarmName", "Unknown")metrics = detail.get("configuration", {}).get("metrics", [])instance_id = ""if metrics:dims = metrics[0].get("metricStat", {}).get("metric", {}).get("dimensions", {})instance_id = dims.get("InstanceId", "")client = boto3.client("devops-agent", region_name="us-west-2")resp = client.create_backlog_task(agentSpaceId=os.environ["DEVOPS_AGENT_SPACE_ID"],taskType="INVESTIGATION", priority="HIGH",title=f"Investigate: {alarm_name} - {instance_id}",description=f"Alarm '{alarm_name}' on {instance_id}",)return {"statusCode": 200, "body": json.dumps({"taskId": resp["task"]["taskId"]})}

注意:Lambda 运行时内置 boto3 不包含 devops-agent 客户端。需要通过 Layer 部署新版 boto3:

mkdir -p /tmp/boto3-layer/python
pip install boto3 -t /tmp/boto3-layer/python --upgrade
cd /tmp/boto3-layer && zip -r /tmp/boto3-layer.zip python/
aws lambda publish-layer-version --layer-name boto3-latest \--zip-file fileb:///tmp/boto3-layer.zip --compatible-runtimes python3.12

Lambda-B:获取报告

def get_summary(space_id, exec_id):client = boto3.client("devops-agent", region_name="us-west-2")resp = client.list_journal_records(agentSpaceId=space_id, executionId=exec_id)for r in resp.get("records", []):if r.get("recordType") == "investigation_summary_md":return r.get("content", "")return "No summary available."

EventBridge 规则

# 告警 → Lambda-A
aws events put-rule --name "Alarm-To-Agent" \--event-pattern '{"source":["aws.cloudwatch"],"detail-type":["CloudWatch Alarm State Change"]}'# 调查完成 → Lambda-B(事件源是 aws.aidevops)
aws events put-rule --name "Agent-Done" \--event-pattern '{"source":["aws.aidevops"],"detail-type":["Investigation Completed"]}'

Chat API 实时对话

Backlog Task 是异步的。需要交互式排查时用 Chat API:

chat = client.create_chat(agentSpaceId=SPACE_ID, userId="user", userType="IAM")
resp = client.send_message(agentSpaceId=SPACE_ID, executionId=chat["executionId"],content="哪些 EC2 实例最近 1 小时 CPU 超过 80%?",userId="user",
)
# 流式返回,解析 contentBlockDelta.delta.textDelta.text

同一 executionId 多轮对话保持上下文。

测试观察

指标 结果
调查启动到完成 约 8 分钟(单 EC2 实例场景)
报告结构 Symptom → Finding → Observation → Summary,层次清晰
根因准确性 准确定位到 stress 进程导致 CPU 飙升
部署复杂度 2 个 Lambda + 2 条 EventBridge Rule,约 2 小时

GA 版还支持 Azure 和本地环境(通过 MCP 协议),以及 Datadog、Dynatrace、PagerDuty、ServiceNow 等第三方集成。Agent 通过 IAM 角色(服务主体 aidevops.amazonaws.com)调用 API,所有操作 CloudTrail 可审计。

适用场景判断

适合:凌晨告警预调查、多服务关联故障分析、新人 On-Call 辅助、运维知识标准化沉淀。

暂不适合:P0 级故障分钟级响应(调查耗时 5-15 分钟)。

运维从"规则驱动"走向"AI 驱动"是可见的趋势,DevOps Agent 解决的是"把排查经验标准化"这一步。

参考

  • 基于 AWS DevOps Agent 构建 AI 驱动的运维分析系统
  • AWS DevOps Agent 文档
http://www.jsqmd.com/news/718068/

相关文章:

  • 【Hot 100 刷题计划】 LeetCode 23. 合并 K 个升序链表 | C++ 顺序合并
  • MusicFree插件完全指南:打造你的个性化跨平台音乐中心
  • 推荐2款无需安装实用软件,桌面图标整理设置,简真是Windows神器!
  • 解码AI用户心智,筑牢可信GEO根基——悠易科技深度参与《中国AI用户态度与行为研究报告(2026)》发布会
  • 从Jupyter Notebook到生产API,Docker AI Toolkit 2026全流程自动化部署(含OpenTelemetry埋点、Prometheus监控集成脚本)
  • GitHub中文界面大改造:3分钟让英文GitHub秒变中文版
  • XPath Helper Plus:3分钟掌握网页元素精准定位的终极指南
  • WASM容器化部署为何突然爆发?,2026全球Top 12边缘AI项目验证的Docker+WASI运行时架构演进路径
  • 别再为低价忽视丝印规格
  • 如何3分钟解锁Wallpaper Engine所有壁纸素材?RePKG工具终极指南
  • Ostrakon-VL-8B数据预处理详解:餐饮图像清洗与标注规范
  • 从ArrayList到VectorSpecies:Java向量化开发全流程拆解,含GraalVM AOT+Linux perf火焰图调优实战
  • MCP Server 接口开发规范与最佳实践
  • QQ音乐加密文件终极解密指南:3步解锁你的音乐宝藏
  • 忍者像素绘卷Codex使用技巧:利用AI编程助手快速开发模型调用脚本
  • Java 25虚拟线程资源调度黄金参数表(2024 Q3压测实录:TPS提升3.8倍,P99延迟下降67ms)
  • Gmail账号自动生成神器:Python脚本实现3分钟批量创建无限邮箱
  • 构建基于nli-MiniLM2-L6-H768的智能学习系统:习题与知识点自动关联
  • WeDLM-7B-Base入门:Python零基础环境配置与第一个生成程序
  • 一次惊心动魄的年报
  • 程序验证技术演进与Preguss框架创新实践
  • 【基于 macOS 虚拟机的 iMessage 批量消息处理技术实践】
  • 数据结构基础------初识二叉树
  • 剖析2026年酒店鱼缸定制工厂,哪家价格合理又好用 - 工业设备
  • 2026年3c认证插座有哪些品牌?安全性能解析 - 品牌排行榜
  • 效率神器!新手快速搭建 OpenClaw
  • 如何解决ORA-16191报错_主备密码文件不一致或口令过期
  • 软件产品负责人管理中的需求决策者
  • 从Django到FastAPI,Python全栈框架对接openGauss的4层抽象适配策略(含自研pg2og适配器开源预览)
  • Docker运行AI代码必须启用的6项内核级隔离策略(含cgroups v2、userns映射、no-new-privileges实测对比)