首页 / 文章

AWS DevOps Agent实际应用:Agent空间、问题调查、版本检查与技能。

深入了解AWS DevOps Agent:创建Agent空间、执行根本原因分析、预览版本管理功能以及编写自定义Agent技能。

发布者:REACTAPP.TOP阅读约 10 分钟2235 词

来源: AWS DevOps Agent & AWS DevOps Agent Skills — Simplified with Hands-on demo

运维团队花费大量时间处理重复性的任务:分析管道故障原因、检查基础设施状态、将日志与指标进行对比,以及回答每天出现的“现在有什么故障?”这类问题。AWS提供了诸如CloudWatch、IAM、CodePipeline和Lambda等优秀的工具,但从原始数据到可采取行动的结论之间仍存在差距。

接下来将详细介绍AWS DevOps Agent:如何设置Agent Space、完整的故障调查流程是怎样的、最新版本的管理功能带来了什么改进,以及Agent Skills如何帮助代理程序吸收团队自身的操作流程。目标受众是在AWS上运行工作负载的DevOps工程师、SRE工程师、平台工程师和AI工程师,他们希望获得超越简单脚本的自动化解决方案。

DevOps代理是什么,又不是什么

此处所说的术语指的是不会替代工程师的运营助手。它是一种具备以下功能的系统:

  • 可读取AWS资源,有时还拥有有限的写入权限
  • 了解该环境的运营背景
  • 能够回答诸如部署为何失败、过去一小时发生了什么变化,或是哪些服务导致了错误率上升等问题
  • 充当AWS API、日志、指标与值班人员之间的连接层

它不会取代工程师的角色,其职责是减轻常规调查的工作负担并加快调查速度。

创建智能体空间

查找服务

打开 AWS Management Console 并搜索 AWS DevOps Agent。其核心的生产运营功能现已全面可用,而下文所述的较新的发布管理功能仍处于预览阶段。

创建空间

选择“Create Agent Space”,然后填写两项内容:一个名称,如 Demo-DevOps-Agent,以及对该环境或其用途的简短描述。该 Agent Space 将作为用于分析、拓扑展示及生成建议的逻辑边界。

授予资源访问权限

在允许该空间访问 AWS 资源的选项中,选择自动创建新 DevOps Agent 角色的选项。AWS 会构建并附加一个具有相应权限范围的 IAM 角色,该角色能够读取 CloudWatch 指标和日志、检查 EC2 及相关资源,并生成拓扑图。通常会阻碍其应用的 IAM 相关问题在这一步都会消失。

启用 Web 应用

在“启用 Web 应用”选项中,保持选择“自动创建角色”的选项。这样就能启用用于调查、聊天和查看仪表板的交互式界面。之后再创建 Agent Space。

打开操作员视图

进入新的 Agent Space,然后打开“操作员访问”功能。此处包含三个区域:DevOps 中心、事件响应与预防。

DevOps 中心与基于拓扑的可视化功能

在该界面中,DevOps Center会显示AWS环境的实时拓扑图。有几点尤为突出:资源之间呈现连通状态而非孤立存在,各服务间的依赖关系一目了然,而且代理程序是基于这些关系而非仅凭指标来工作的。这样的拓扑结构对后续的根本原因分析至关重要。

开展调查

正是在事件响应环节,代理程序才真正发挥作用。在控制面板中选择“开始调查”。可以用人话描述问题,或者选择常见的触发因素,比如高CPU使用率、错误率激增,或是指标和日志缺失等。

这里的示例是一起数据缺失事件。请求内容为:能否查明为何我的EC2实例无法查看CloudWatch的CPU数据?该代理立即定位了受影响的实例,将它们显示在拓扑图中,并查询了相应区域内的CloudWatch指标。

时间线与调查结果

调查时间线展示了工作的推进过程:收集背景信息、发现相关资源、评估指标数据以及形成调查结论。其中一个设计选择值得注意——当指标数据缺失时,该代理会直接说明情况,而不会默默失败。这虽是个小小的决定,却对用户信任度有着重大影响。

根本原因分析

在“根本原因”选项卡中,该代理指出了多个导致问题的原因,而不仅仅是一个:

  • EC2 实例上的详细监控已关闭。这些实例显示为 Monitoring: disabled,由于没有详细监控,相关的 CPU 指标不会被发送到 CloudWatch。
  • 未安装 CloudWatch 代理。实例上没有任何配置,因此无法获取更细粒度的 CPU 数据。
  • 实例已停止运行。它们已经停止运行很长时间了,而停止运行的实例不会产生任何指标数据。

关键在于该代理的实际运行情况。它没有给出单一的解释,而是合理地对各种原因进行了排序,并用从 AWS API 获取的证据为每种原因提供支撑。

何时选择不采取任何措施才是正确答案

“缓解计划”选项卡显示无法立即确定任何缓解措施。这是个好结果,而非坏结果。系统运行状态完全符合配置要求,没有出现回归问题或近期变更导致该症状。任何修复措施都应视为计划内的配置更改,而非针对故障的紧急处理。在生产环境中明确区分这两者非常重要,因为这能避免不必要的回滚操作。

预防措施

“预防”选项卡会分析之前的调查结果,判断是否有必要提出主动建议。此次没有生成新的建议,因为系统检测到不存在重复出现的运营风险。该选项卡评估的类别包括基础设施、可观测性、治理机制以及代码优化。

团队为何会关注此内容

这不仅仅是一款普通的监控产品。它的价值体现在四个方面:更短的故障排查时间、结构化的根本原因分析、减少警报疲劳,以及让团队能够了解系统为何会呈现当前行为。否则工程师们需要手动整合 CloudWatch、EC2 设置、IAM 状态和部署历史等信息,而该代理可代为完成这些关联分析。

发布管理功能(预览版)

一项新的功能允许在代码正式投入生产之前更早地部署该代理。

发布就绪性审查。每项代码变更都会根据生产环境就绪标准、跨仓库依赖风险以及组织制定的各类规范进行评估;若没有相关规范,则依据通用最佳实践进行处理。具体检查内容包括该变更对其他仓库中下游服务的影响,以及根据AWS架构完善框架对IAM或访问控制设置的调整。此外,该工具还会在AWS管理的隔离环境中启动构建过程,并通过一些简单的用户流程测试对其进行验证。只有在确认构建成功、应用能够运行且基本功能检查通过后,该变更才会被纳入发布流程。

检测结果会显示在 DevOps Agent 控制台中,以及 GitHub 或 GitLab 的拉取请求评论中。此外,通过 Kiro power 或 Claude Code 插件,开发者还可以从 IDE 中按需触发检测,从而在提交代码之前发现依赖风险、标准违规问题以及访问控制问题。

自动发布测试。该功能将相关理念应用到合并前的阶段。它不会运行固定的测试套件,而是针对具体变更生成专门的测试计划,并在客户提供的类似生产环境中对网页及API应用进行测试。由于它能理解代码差异的含义,因此能够生成手动维护的测试套件可能无法设想的功能正确性测试、回归测试以及跨服务集成测试。每次测试都会产生结构化的测试结果,包括指标、日志、追踪信息以及执行摘要,这些内容能为审核人员提供关于每次变更的测试覆盖范围和结果的统一且可审计的记录。

这两项功能目前仍处于预览阶段,在此期间不会产生额外费用。它们可在美国东部(北弗吉尼亚州)区域使用。

Agent Skills 是什么

技能是模块化的指令集,能够为智能体增添针对特定领域的专业知识以及与团队现有基础设施和操作方式相匹配的调查方法。一个技能即是一个包含 Markdown 指令的独立目录,可赋予智能体新的功能。该服务仅支持开放版 Agent Skills 规范中的部分内容,只接受非可执行材料:Markdown 指令、PDF 文件、图片和数据文件。

每个技能都需要一个包含指令的 SKILL.md 文件。除此之外,一个技能还可能包括:

  • 针对特定场景或基础设施类型的调查工作流程
  • 参考资料,如架构模式和操作流程
  • 智能体类型定位,即针对特定的智能体类型(通用型、按需型、事件分类型、事件根因分析型、事件缓解型或评估型)应用相应技能,从而节省上下文信息并提升专注度
  • 为何要这么做

    技能能将通用型助手转变为特定环境下的专家。在聊天中输入的一次性指令使用后就会消失,而技能则可重复使用,在有任务需求时自动加载。其优势如下:

    • 专业化。智能体能够掌握该基础设施特有的调查流程、最佳实践及组织知识。
    • 减少重复。只需编写一次工作流程,即可在所有相关调查中自动使用,无需重复说明相同的指导内容。
    • 组合使用。多种技能相互配合形成完整的流程。代理在运行过程中可以同时调用多个技能,例如一个用于从自定义CI/CD流水线获取部署信息,另一个则用于搜索代码仓库。
    • 更高效地利用自定义工具。某个技能可以告知代理何时调用特定的MCP服务器工具、不同场景下应使用哪些参数,以及如何解读返回结果。

    使用方式

    当代理遇到相关任务时,它会加载对应的技能并按照这些技能的指引执行操作。例如,名为“数据库性能检测”的技能会包含处理RDS流量限制的逐步流程,引导代理系统地查看报警状态、连接指标及慢查询问题。

    技能结构

    一个技能相当于一个目录:

    my-skill/
    ├── SKILL.md              # Main skill instructions
    ├── references/           # Optional: additional reference documentation
    └── assets/               # Optional: images, diagrams, data files
    

    SKILL.md 文件是必须存在的文件。它应说明该技能适用的时间和方式,提供逐步的调查流程,包含不同场景下的决策树,并明确预期输出与成功标准。

    示例技能及上传方法

    AWS 在 aws-samples GitHub 仓库中提供了为该运行时开发的技能示例集。这些并非通用的 Agent Skills,而是专为 DevOps Agent 运行时、其代理类型以及 Agent Space 内运行的工作流定制的。

    若要使用其中某个技能,可从仓库下载对应的 zip 文件,或按照以下结构构建包:

    <skill-name>.zip
    ├── SKILL.md              # Required: main instructions + YAML frontmatter
    ├── references/           # Optional: reference documentation
    │   ├── architecture.md
    │   └── troubleshooting.md
    └── assets/               # Optional: images, diagrams, data files
    

    将 SKILL.md 文件放在压缩包的根目录中,其中需包含含有 name 和 description 字段的有效 frontmatter。示例 frontmatter 的名称可为 eks-resilience-checker-skill-devops,描述内容大致为:用于评估 Amazon EKS 的弹性能力、检查控制平面健康状况、数据平面扩展能力以及网络和可观测性方面的缺陷,可在评估或修复集群弹性性能时使用。

    接着按照以下步骤上传:

    1. 确认压缩包中没有 scripts/ 目录,且大小不超过 6 MB。
    2. 打开 Operator Web App 并进入 Skills 页面。
    3. 选择“添加技能”,然后点击“上传技能”。
    4. 将 .zip 文件拖入弹出窗口,或手动选择该文件。仅接受大小不超过 6 MB 的压缩包。
  • 选择应使用该技能的智能体类型。通用已预选,适用于所有类型。若要指定特定类型,请取消选中它,然后选择按需、事件分类、事件根本原因分析、事件缓解或评估。
  • 查看表单显示的验证结果,然后选择“上传”将该技能添加到智能体空间中。
  • 后续的技能管理

    • 列表与查看:可在技能页面打开任意技能,以只读方式浏览其文件(SKILL.md、references/、assets/)。
    • 启用或禁用:在详细信息视图中切换已启用或已禁用状态。已禁用的技能仍会存储,但不会在新调查中加载。
  • 重新定向:可随时编辑所选的智能体类型。
  • 替换:通过上传更新版本来替换从压缩包中获取的技能。
  • 在用户界面中创建技能

    如果只有一个不包含引用或资源的SKILL.md文件,则完全可以跳过压缩包步骤:

    1. 在技能页面选择“添加技能”,然后点击“创建技能”。
    2. 输入名称,只能使用小写字母、数字和连字符,长度不超过64个字符,且名称开头和结尾都不能是连字符。
    3. 输入描述,建议长度至少为100个字符,最多不超过1024个字符。
    4. 选择状态(活跃或非活跃)以及一个或多个智能体类型。
    5. 将Markdown内容粘贴到“说明”字段中。
    6. 选择“创建”。系统会自动生成包含正确前置信息的SKILL.md文件。

    适用场景

    对于任何大规模使用 AWS 的用户而言,这项服务都值得尝试,尤其是在事故分类处理和事后分析方面。简单来说,它就像一个全天候工作的自主值班伙伴。一旦触发警报,它会立即开始调查,通过关联遥测数据、代码及部署历史来缩短问题解决时间,并帮助预防 AWS、混合云及多云环境中的未来故障。