news 2026/5/20 17:39:36

告警爆炸,根因定位困难?用DevOps Agent帮你自动查!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
告警爆炸,根因定位困难?用DevOps Agent帮你自动查!

随着企业在亚马逊云科技上的工作负载日益复杂——Amazon EC2集群、Amazon RDS数据库、Amazon ECS/EKS容器、Amazon Lambda函数、网络与负载均衡等多种服务交织运行——运维团队面临严峻挑战:

  • 告警爆炸:Amazon CloudWatch、第三方监控(Datadog、PagerDuty、Grafana等)每天产生数百条告警,涉及CPU、内存、磁盘、网络、错误率等数十种指标,运维团队疲于应对。

  • 跨服务关联困难:一个故障追溯可能需要人工从Amazon CloudWatch指标、Amazon CloudTrail操作记录、VPC Flow Logs、Config变更中逐一关联,效率极低。

  • 响应延迟:从告警触发到定位根因,往往需要30分钟到数小时,甚至更久。对于生产环境的P1故障,每分钟的延误都意味着业务损失。

  • 知识难以沉淀:资深工程师的排查经验分散在个人脑海和零散的runbook中,团队扩张时知识传递成本高。

  • 多环境多区域管理:跨Region、跨账户的故障排查更加复杂,单靠人工难以全面覆盖。

Amazon DevOps Agent正是为解决这些运维痛点而生。它是一个AI驱动的自主运维Agent,能够自动接收来自任何亚马逊云科技服务的告警、跨服务关联数据(Amazon CloudWatch指标、Amazon CloudTrail事件、Amazon Config变更、VPC网络日志等)、执行深度根因分析,并生成结构化的调查报告——整个过程无需人工干预。

Amazon DevOps Agent介绍

亚马逊云科技于2025年12月re:Invent大会发布Amazon DevOps Agent公开预览版(Public Preview),并于2026年3月31日宣布其正式可用。

它是一款AI驱动的自主运维服务,内置了对亚马逊云科技全栈服务的深度理解,能够像一位资深SRE工程师一样,自动接收告警、主动收集证据、跨服务关联分析,并输出结构化的根因分析报告。正式可用版本还新增了对Azure云环境和本地基础设施的支持。

核心能力

全栈服务分析

Agent自动构建应用拓扑(Application Topology),动态发现并映射亚马逊云科技账户中的资源及其依赖关系。无需预先指定服务列表,Agent能自动调用相关Amazon API收集指标、日志和配置信息。正式可用版本还支持Azure和本地环境(通过MCP)。

AI自主调查

接收告警后Agent自主决定调查策略——先查什么、再查什么、如何关联——无需预定义runbook。调查范围涵盖Amazon CloudWatch指标与日志、Amazon CloudTrail操作记录、代码仓库、CI/CD流水线数据、部署历史等。

深度根因分析

不仅识别“发生了什么”,更能分析“为什么发生”——从表面症状追溯到根因,给出修复建议。例如:CPU飙升→分析进程行为→追踪到SSM会话中的异常工作负载→建议升级实例类型。

结构化输出

调查结果以Markdown格式的Journal Records保存,包含症状(Symptom)、发现(Finding)、观测数据(Observation)、调查缺口(Gap)和最终摘要(Summary),便于归档和审计。

事件驱动集成

调查生命周期通过EventBridge发布事件(Investigation Created/Priority Updated/In Progress/Completed/Failed、Mitigation In Progress/Cancelled),可与任何下游系统无缝对接。

丰富的第三方集成

原生支持Datadog、Dynatrace、New Relic、Splunk、Grafana(可观测性)、PagerDuty、ServiceNow(事件管理)、GitHub、GitLab、Azure DevOps(代码/CI-CD)、Slack(通知)。此外,还可通过MCP协议对接自定义工具。

安全与合规

Agent通过IAM角色(服务主体aidevops.amazonaws.com)调用Amazon API,所有操作可通过Amazon CloudTrail审计;调查记录持久保存,满足合规要求。

多种触发方式

Backlog Task(create_backlog_task

异步模式,Agent自主调查,通过EventBridge通知完成。适用于自动化运维流水线、Amazon CloudWatch/自定义告警触发。

Chat(create_chat+send_message

同步流式响应,支持多轮对话,Agent实时调用Amazon API。适用于交互式排查、实时问答、On-Call辅助。

Webhook(第三方POST到webhook URL)

Agent自动接收并智能判断是否需要调查。适用于对接PagerDuty、Datadog、Grafana、GitLab等。

Demo方案架构

本文以Amazon EC2 CPU告警作为演示场景,展示完整的事件驱动架构。

同一架构模式可直接适用于上述所有场景——只需调整EventBridge Rule的事件匹配模式和Lambda-A中的告警解析逻辑即可。该架构具有通用性——将Amazon CloudWatch Alarm替换为任意亚马逊云科技服务的告警源(RDS、Lambda、ECS等),即可复用同一套事件驱动流水线。

架构图

数据流(8步)

1.EC2 CPU飙升:

stress --cpu 4模拟高负载。

2.CloudWatch Alarm触发:

CPU>80%持续2个评估周期,状态OK→ALARM。

3.EventBridge Rule-1匹配:

捕获aws.cloudwatch/CloudWatch Alarm State Change事件。

4.Lambda-A触发调查:

调用create_backlog_task(taskType='INVESTIGATION')

5.DevOps Agent自主调查:

分析Amazon CloudWatch指标、Amazon CloudTrail事件、EC2配置(5~15分钟)。

6.调查完成事件:

DevOps Agent发布aws.aidevops/Investigation Completed事件。

7.Lambda-B获取结果:

调用list_journal_records(),提取investigation_summary_md记录。

8.聊天工具通知:

将Markdown格式的调查摘要发送到聊天工具群。

Investigation Completed事件格式

当调查完成时,DevOps Agent自动向EventBridge默认总线发布以下事件:

{ "source": "aws.aidevops", "detail-type": "Investigation Completed", "detail": { "version": "1.0.0", "metadata": { "agent_space_id": "f95eb69d-46e2-48c9-875f-07536fd3b4b2", "task_id": "3bb4e347-e040-417c-ac57-b2ce0f2fe3b4", "execution_id": "exe-ops1-f5998e4d-4a48-442b-92f8-cadc22d8303f" }, "data": { "task_type": "INVESTIGATION", "priority": "HIGH", "status": "COMPLETED", "created_at": "2026-04-07T04:58:05.356Z", "updated_at": "2026-04-07T05:04:47.756Z", "summary_record_id": "f9072676-5b46-4139-afae-3d7a3762bac9" } }}

左右滑动查看完整示意

*注意:

事件源是aws.aidevops(不是aws.devops-agent),IAM action前缀也是aidevops。

部署步骤

环境变量配置

export AWS_ACCOUNT_ID="<YOUR_AWS_ACCOUNT_ID>"export AWS_REGION="us-west-2"export EC2_INSTANCE_ID="<YOUR_EC2_INSTANCE_ID>"export DEVOPS_AGENT_SPACE_ID="<YOUR_AGENT_SPACE_ID>"export FEISHU_APP_ID="<YOUR_FEISHU_APP_ID>"export FEISHU_APP_SECRET="<YOUR_FEISHU_APP_SECRET>"export FEISHU_CHAT_ID="<YOUR_FEISHU_CHAT_ID>"

左右滑动查看完整示意

IAM角色与权限

创建Lambda执行角色,并添加DevOps Agent权限:

# 创建角色aws iam create-role \ --role-name DevOpsAgentDemoLambdaRole \ --assume-role-policy-document file://iam/lambda-role-trust.json# 添加基础执行权限aws iam attach-role-policy \ --role-name DevOpsAgentDemoLambdaRole \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole# 添加 DevOps Agent 权限(注意前缀是 aidevops)aws iam put-role-policy \ --role-name DevOpsAgentDemoLambdaRole \ --policy-name DevOpsAgentAccess \ --policy-document '{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "aidevops:CreateBacklogTask", "aidevops:ListJournalRecords" ], "Resource": "*" }] }'

左右滑动查看完整示意

Lambda Layer(最新boto3)

*重要提醒:

Lambda运行时内置的boto3不包含devops-agent服务,必须通过Layer提供最新版本。

mkdir -p /tmp/boto3-layer/pythonpip install boto3 -t /tmp/boto3-layer/python --upgradecd /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函数

Lambda-A(触发调查):

aws lambda create-function \ --function-name devops-agent-trigger-investigation \ --runtime python3.12 \ --handler lambda_a.lambda_handler \ --role "arn:aws:iam::${AWS_ACCOUNT_ID}:role/DevOpsAgentDemoLambdaRole" \ --zip-file fileb://lambda/lambda_a.zip \ --timeout 30 --memory-size 128 \ --layers "${LAYER_ARN}" \ --environment "Variables={DEVOPS_AGENT_SPACE_ID=${DEVOPS_AGENT_SPACE_ID}}"

左右滑动查看完整示意

Lambda-A关键代码:收到CloudWatch Alarm事件后,提取告警详情并调用DevOps Agent API创建调查任务。

import jsonimport osimport boto3 DEVOPS_AGENT_SPACE_ID = os.environ["DEVOPS_AGENT_SPACE_ID"] def lambda_handler(event, context): detail = event.get("detail", {}) state_value = detail.get("state", {}).get("value", "") # 仅在 ALARM 状态时触发调查 if state_value != "ALARM": return {"statusCode": 200, "body": f"Skipped: state={state_value}"} # 提取告警信息 alarm_name = detail.get("alarmName", "Unknown") reason = detail.get("state", {}).get("reason", "N/A") metrics = detail.get("configuration", {}).get("metrics", []) instance_id = "" if metrics: dims = metrics[0].get("metricStat", {}).get("metric", {}).get("dimensions", {}) instance_id = dims.get("InstanceId", "") # 调用 DevOps Agent 创建调查任务 client = boto3.client("devops-agent", region_name=os.environ.get("AWS_REGION", "us-west-2")) response = client.create_backlog_task( agentSpaceId=DEVOPS_AGENT_SPACE_ID, taskType="INVESTIGATION", # 任务类型:调查 title=f"Investigate: {alarm_name} - {instance_id}", priority="HIGH", # 优先级 description=f"CloudWatch Alarm '{alarm_name}' triggered.\n" f"EC2 Instance: {instance_id}\n" f"Reason: {reason}\n" f"Please investigate the root cause.", ) task = response["task"] # 返回 taskId 和 executionId,调查已异步启动 return {"statusCode": 200, "body": json.dumps({ "taskId": task["taskId"], "executionId": task["executionId"], "status": task["status"], # PENDING_START })}

左右滑动查看完整示意

Lambda-B(获取结果+聊天工具通知):

aws lambda create-function \ --function-name devops-agent-notify-feishu \ --runtime python3.12 \ --handler lambda_b.lambda_handler \ --role "arn:aws:iam::${AWS_ACCOUNT_ID}:role/DevOpsAgentDemoLambdaRole" \ --zip-file fileb://lambda/lambda_b.zip \ --timeout 60 --memory-size 128 \ --layers "${LAYER_ARN}" \ --environment "Variables={DEVOPS_AGENT_SPACE_ID=${DEVOPS_AGENT_SPACE_ID},FEISHU_APP_ID=${FEISHU_APP_ID},FEISHU_APP_SECRET=${FEISHU_APP_SECRET},FEISHU_CHAT_ID=${FEISHU_CHAT_ID}}"

左右滑动查看完整示意

Lambda-B关键代码:收到Investigation Completed事件后,调用list_journal_records获取调查摘要:

def get_investigation_summary(agent_space_id, execution_id): """从 DevOps Agent 获取调查摘要""" client = boto3.client("devops-agent", region_name="us-west-2") response = client.list_journal_records( agentSpaceId=agent_space_id, executionId=execution_id, ) # 在 records 中找 investigation_summary_md 类型(Markdown 格式) for record in response.get("records", []): if record.get("recordType") == "investigation_summary_md": return record.get("content", "") return"No investigation summary available." def lambda_handler(event, context): detail = event.get("detail", {}) metadata = detail.get("metadata", {}) agent_space_id = metadata["agent_space_id"] execution_id = metadata["execution_id"] # 获取调查摘要 summary = get_investigation_summary(agent_space_id, execution_id) # 发送飞书通知(富文本消息) token = get_tenant_access_token() send_feishu_message(token, FEISHU_CHAT_ID, "post", { "zh_cn": { "title": "DevOps Agent Investigation Completed", "content": [ [{"tag": "text", "text": f"Task: {metadata['task_id']}"}], [{"tag": "text", "text": summary}], ] } })

左右滑动查看完整示意

要点:list_journal_records返回多种类型的记录,其中investigation_summary_md是Markdown格式的完整调查摘要,可直接用于通知展示。

Journal Record类型一览

  • investigation_summary_md:完整调查摘要(Markdown格式)。

  • investigation_summary:结构化调查摘要(JSON格式)。

  • symptom:发现的症状。

  • finding:调查发现(含根因)。

  • observation:观测数据。

  • investigation_gap:调查中的信息缺口。

  • message:Agent的对话消息。

EventBridge规则

Rule-1:CloudWatch Alarm→Lambda-A。

aws events put-rule \ --name "DevOps-Agent-Demo-Alarm-To-Lambda" \ --event-pattern '{ "source": ["aws.cloudwatch"], "detail-type": ["CloudWatch Alarm State Change"], "detail": { "alarmName": ["DevOps-Agent-Demo-CPU-High"] } }' aws events put-targets \ --rule "DevOps-Agent-Demo-Alarm-To-Lambda" \ --targets "Id=trigger-investigation,Arn=arn:aws:lambda:${AWS_REGION}:${AWS_ACCOUNT_ID}:function:devops-agent-trigger-investigation"

左右滑动查看完整示意

Rule-2:Investigation Completed→Lambda-B。

aws events put-rule \ --name "DevOps-Agent-Investigation-Completed" \ --event-pattern '{ "source": ["aws.aidevops"], "detail-type": ["Investigation Completed"] }' aws events put-targets \ --rule "DevOps-Agent-Investigation-Completed" \ --targets "Id=notify-feishu,Arn=arn:aws:lambda:${AWS_REGION}:${AWS_ACCOUNT_ID}:function:devops-agent-notify-feishu"

左右滑动查看完整示意

进阶:Chat API实时对话

除了异步的Backlog Task方式,DevOps Agent还提供Chat API,支持实时对话式交互。企业可以基于此功能,将Devops Agent的能力集成至企业自己的运维系统或者通讯工具中。

基本用法

import boto3client = boto3.client("devops-agent", region_name="us-west-2")# 创建聊天会话chat = client.create_chat( agentSpaceId="<YOUR_AGENT_SPACE_ID>", userId="my-user", userType="IAM",)execution_id = chat["executionId"]# 发送消息并获取流式响应response = client.send_message( agentSpaceId="<YOUR_AGENT_SPACE_ID>", executionId=execution_id, content="What EC2 instances are running in this account?", userId="my-user",)# 解析 EventStreamfor event in response["events"]: if"contentBlockDelta" in event: text = event["contentBlockDelta"].get("delta", {}).get("textDelta", {}).get("text", "") if text: print(text, end="", flush=True)

左右滑动查看完整示意

EventStream事件类型

send_message返回的是一个流式EventStream,包含以下事件类型:

  • responseCreated:响应开始。

  • responseInProgress:Agent正在处理。

  • contentBlockStart:新的内容块开始(文本或工具调用)。

  • contentBlockDelta:增量内容——textDelta(文本)或jsonDelta(工具调用/结果)。

  • contentBlockStop:内容块结束。

  • heartbeat:长时间操作的保活信号。

  • responseCompleted:响应完成。

  • responseFailed:发生错误。

多轮对话与上下文保持

使用相同的executionId可以进行多轮对话,Agent会保持上下文:

# 第一轮:列出实例response1 = client.send_message(..., content="List all running EC2 instances.")# 第二轮:基于第一轮结果追问(Agent 记住了之前的实例列表)response2 = client.send_message(..., content="Which one has the highest CPU?")

左右滑动查看完整示意

总结

Amazon DevOps Agent代表了云运维领域的一个重要趋势:从被动响应走向主动治愈。本文演示的是“告警→调查→通知”这一闭环的第一步,而可以预见的演进方向远不止于此。

自动修复层面

Agent未来不仅能给出修复建议,还能在人工审批后(或在预设策略下自动地)直接执行修复操作——扩容实例、回滚部署、调整安全组规则——从“告诉你怎么修”进化到“帮你修好”。

预测性运维层面

随着调查记录的持续积累,Agent对特定业务环境的理解会越来越深入,结合历史数据和趋势分析,它将能够在故障真正发生之前识别风险并预警,把运维模式从“事后灭火”推进到“事前预防”。

覆盖范围层面

Amazon DevOps Agent现已支持Azure和本地环境的接入,Agent正在从亚马逊云科技单云工具演进为跨云、跨本地的统一智能运维中枢。

AI Agent在运维场景的应用,不是对现有监控工具的简单替代,而是一次范式升级。它将运维从“人驱动、规则执行”的模式,推进到“AI驱动、人审核”的新阶段。

对于正在管理复杂云环境的团队来说,现在正是拥抱这一变革的最佳时机——从一个Amazon EC2告警的Demo开始,构建属于自己的智能运维体系。

本篇作者

张盼富

亚马逊云科技解决方案架构师,从业十三年,先后经历过云计算、供应链金融、电商等多个行业,担任过高级开发、架构师、产品经理、开发总监等多种角色,有丰富的大数据应用与数据治理经验。加入亚马逊云科技后,致力于通过大数据+AI技术,帮助企业加速数字化转型。

Gao Yunyi

亚马逊云科技生成式AI解决方案架构师,负责亚马逊云科技的人工智能与机器学习、生成式AI方案及架构设计咨询。

新用户注册海外区域账户,可获得最高200美元服务抵扣金,覆盖Amazon Bedrock生成式AI相关服务。“免费计划”账户类型,确保零花费,安心试用。

星标不迷路,开发更极速!

关注后记得星标「亚马逊云开发者」

听说,点完下面4个按钮

就不会碰到bug了!

点击阅读原文查看博客!获得更详细内容!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/20 17:39:36

软件开发开源日报

&#x1f4cc; 今日概览今日软件开发开源领域呈现多元化发展态势&#xff0c;各大科技公司持续推进AI基础设施、云原生平台和开发者工具的开源进程。字节跳动DeerFlow 2.0成为社区焦点&#xff0c;腾讯混元Hy3开源引发行业热议&#xff0c;华为openEuler发布超节点OS重大更新。…

作者头像 李华
网站建设 2026/5/20 17:35:10

YimMenu完全指南:如何在GTA5中构建你的个人安全增强系统

YimMenu完全指南&#xff1a;如何在GTA5中构建你的个人安全增强系统 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/Yi…

作者头像 李华
网站建设 2026/5/20 17:35:08

从单页面到系统化:鸿蒙 App 演进路径

子玥酱 &#xff08;掘金 / 知乎 / CSDN / 简书 同名&#xff09; 大家好&#xff0c;我是 子玥酱&#xff0c;一名长期深耕在一线的前端程序媛 &#x1f469;‍&#x1f4bb;。曾就职于多家知名互联网大厂&#xff0c;目前在某国企负责前端软件研发相关工作&#xff0c;主要聚…

作者头像 李华
网站建设 2026/5/20 17:33:12

【机器人最优控制策略】3 智能运动系统的非线性轨迹优化:微分动态规划与迭代二次调节方法

智能运动系统的非线性轨迹优化:微分动态规划与迭代二次调节方法 1. 绪论 1.1 从凸优化到非线性轨迹优化的必然性 凸优化在最优控制领域占据核心地位,其根本优势在于计算可靠性:在固定时间预算内,凸问题总能收敛到全局最优解,且解的精度可由多项式时间算法严格保证。基于…

作者头像 李华
网站建设 2026/5/20 17:26:59

长期项目中使用taotoken用量看板进行成本分析与优化决策

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期项目中使用 Taotoken 用量看板进行成本分析与优化决策 在长期运行的 AI 应用项目中&#xff0c;模型调用成本是持续运营中必须…

作者头像 李华