告警爆炸,根因定位困难?用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了!

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值