亚马逊AWS官方博客
使用 AWS Support 自助服务运行手册 (SAW) 排查 AWS Systems Manager 中的托管节点问题
![]() |
本文为 2024 年 9 月 18 日发表的 re:Post Troubleshooting managed node issues in Systems Manager with SAW 的中文译文版本。如有差异,以英文原文版本为准。
本文介绍了一个使用 AWS Support 自助服务运行手册 (Support Automation Workflow,简称 SAW) 监控和自动分析 AWS Systems Manager 托管节点问题的示例架构。
引言
作为 AWS Support 技术支持工程师,我们经常接到客户反映在使用 AWS Systems Manager 管理 Amazon Elastic Compute Cloud (Amazon EC2) 实例时遇到的问题,例如,EC2 实例未在 AWS Systems Manager 中注册为托管节点。通常要解决这些问题,需要检查安全组、网络设置和权限等,这些步驟可能非常耗时。
为了简化相关问题的排查流程,AWS Support 创建了自助服务运行手册 (SAW) 来协助客户自主对 AWS 资源的常见问题进行排查、诊断和修复。SAW 框架通过消除通常需要的手动操作,能够帮助您缩短故障排查所需的时间。
在本文中,您将了解如何使用 SAW 自动化故障排查过程。同时,您还将学习如何利用 SAW 配置架构,以监控和自动分析 AWS Systems Manager 中的托管节点问题。
SAW 解决流程概述
本解决方案的第一部分介绍了如何使用 SAW 解决 EC2 实例未在 AWS Systems Manager 中注册为托管节点的问题。第二部分介绍了如何配置架构以自动化故障排除过程,从而加速问题解决。
1. 使用 SAW 确定根本原因
按照以下步骤使用 SAW 确定 AWS Systems Manager 未显示 Amazon EC2 托管实例的原因:
- 使用 AWSSupport-TroubleshootManagedInstance 运行手册。更多信息请参考 re:Post 为什么我的 EC2 实例在 Systems Manager 中未显示为托管节点或显示“连接丢失”状态?
- 运行完成后,通过查看 Outputs 部分获取详细结果。例如,如果问题是由于 AWS Identity and Access Management (IAM) 实例配置文件缺少所需的权限而导致的,则 Outputs 部分将显示以下详细信息:
- 修复从 Outputs 部分识别的任何问题。例如,要修复上述权限不足的问题,您需要确保将所需的权限添加到 IAM 实例配置文件。然后,可通过执行 AWS Command Line Interface (AWS CLI) 命令describe-instance-information,来检查 EC2 实例是否在 AWS Systems Manager 中注册为托管节点:
请将上述命令中的
example-instance
替换为您实际 EC2 实例的 ID。注意:如果您在执行 AWS CLI 命令时遇到错误,请确保使用的是最新版本的 AWS CLI。如果成功执行命令并检索到实例的详细信息,则表示该实例已在 AWS Systems Manager 中注册为托管节点。
2. 使用 SAW 自动检测问题
您可以配置架构以使用 SAW 自动检测 AWS Systems Manager 托管节点的问题并确定根本原因。在此之前,请确保满足以下先决条件:
- 您在本地开发工作站上安装并配置了 AWS SAM CLI。
- 您已激活通知设置。
您可以通过以下方式之一激活通知设置:
- 设置电子邮件地址订阅您创建的 Amazon Simple Notification Service (Amazon SNS) 主题。
- 在 Slack 中使用 webhooks 构建工作流程 并激活通知设置。
整合 Slack 使用构建自动化工作流程
如果您采用 Slack 整合 SAW 检查结果报告通知,您可以按照以下步骤设置自定义变量:
- 选择 Starts when an app or service sends a web request 旁边的 Edit。
- 在 Set up variables 下,选择 Add Variable。
- 对于 Key,输入 main。对于 Data type,输入 text。然后选择 Save。
- 选择 Add Variable。
- 对于 Key,输入 thread。对于 Data type,输入 text。然后选择 Save。
- 选择 Send this message to 旁边的 Edit。在 Send a message 页面上,对于 Send this message to;,选择您想要接收通知的 Slack 频道。然后选择 Insert a variable。对于 Message text,选择 main。然后选择 Save。
- 选择 Send this message to 旁边的 Edit。在 Send a message 页面上,对于 Send this message to;,选择 Message thread。然后选择 Insert a variable。对于 Message text,选择 thread。然后选择 Save。
![]() |
要查看本演练的示例代码,请参考 GitHub 网站上的 AWS SAW Monitoring And Automatic Analysis Architecture。
下图显示了该解决方案的高层架构。
![]() |
本架构包括以下组件:
监控:Amazon EventBridge 检测 EC2 实例的启动。在 EventBridge 中,事件模式与 EC2 实例 RUNNING 状态匹配,然后启动 AWS Step Functions 状态机。
在启动 EC2 实例后,AWS Systems Manager 代理可能需要最长 5 分钟才能启动完成。因此,状态机在执行分析之前会待机几分钟。
分析:AWS Step Functions 执行以下步骤:
- 当 EC2 实例未注册为托管节点时,运行 SAW 运行手册 AWSSupport-TroubleshootManagedInstance。
- 定期调用 DescribeAutomationExecutions API 以检查 SAW 分析是否完成。
- SAW 分析完成后,调用 AWS Lambda 函数。
通知:Lambda 函数会设置通知字符串的格式。然后根据您的配置通过 Slack 或电子邮件发送通知。
套用解决方案
这一部分介绍使用 SAW 自动检测托管节点问题的解决方案的步骤。要查看步骤的示例代码,请参考 GitHub 网站上的 aws-samples。
- 执行以下命令,在 AWS Secrets Manager 中注册
SlackWebHookUrl
: - 将仓库复制到本地开发工作站:
- 构建并部署在 AWS SAM 模板
template.yaml
中定义的 Lambda 函数、EventBridge 规则、Step Functions 状态机和相关的 IAM 角色。
注意:在部署向导中输入参数,例如 Amazon SNS 主题的 ARN、Secrets Manager 中的SECRET_NAME
,或者两者。如果您使用 AWS Key Management System (AWS KMS) 加密了 SNS 主题,则需要指定 AWS KMS 密钥的 ARN 作为参数。
- 为了测试架构是否正常工作,本文通过启动一个 EC2 实例,并在关联的 IAM 实例配置策略中移除 AWS Systems Manager 相关的权限。由于权限不足,AWS Systems Manager 将无法将此 EC2 实例注册为托管节点。
- 根据您的通知配置,检查是否在 Slack 或电子邮件中收到 SAW 分析结果,如下图所示。在这个示例中,SAW 能够自动检测到错误,并显示该问题是由于 IAM 实例配置文件权限不足造成的。要解决该问题,请参考分析结果中显示的文档链接。
清理示例资源
完成以下步骤来删除您为本教程创建的资源:
- 终止您为本教程启动的 EC2 实例。
- 删除您在 AWS Secrets Manager 中创建的密钥。
- 清理示例演练,请使用 AWS SAM CLI 并通过执行
$ sam delete
删除 AWS CloudFormation 堆栈。
这些步骤可以帮助您避免在完成实验后继续产生 AWS 资源费用。删除这些资源后,您创建的示例环境将不再可用。
总结
在本文中,您学习了如何使用 SAW 排查 AWS Systems Manager 未将 EC2 实例注册为托管节点的原因。您可以使用本文介绍的示例架构来监控您的 EC2 实例,并在实例未能正常注册时自动调用 SAW 运行手册。这可以帮助您保持对基础设施的可见性,并协助您进行自动化排查。
本文讨论的技术可以帮助您通过自动化的问题检测和修复来实现,在 AWS Systems Manager 中保持 EC2 实例的准确视图。
如需了解更多信息,请参见 使用 AWS Support 自助服务运行手册 和 AWS Support 自动化工作流 (SAW)。
AWS Support 技术支持工程师和技术客户经理 (TAM) 可以为您提供一般指导、最佳实践、故障排除和运营支持。要了解我们的 Support 计划和产品的更多详情,请访问 AWS Support 相关网页。