故障排除 SSM Agent - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

故障排除 SSM Agent

如果您在托管式节点上运行操作时遇到问题,可能是 Amazon Systems Manager Agent (SSM Agent) 出现了问题。使用以下信息可帮助您查看 SSM Agent日志文件和排查该代理的问题。

SSM Agent 已过时

如果有新功能添加至 Systems Manager 或者对现有功能进行了更新,则将发布 SSM Agent 的更新版本。不能使用代理的最新版本可能会阻止托管式节点使用各种 Systems Manager 功能和特性。因此,我们建议您自动完成确保机器上的 SSM Agent 为最新的过程。有关信息,请参阅自动更新到 SSM Agent。要获得有关 SSM Agent 更新的通知,请在 GitHub 上订阅 SSM Agent 发布说明页面。

使用 SSM Agent 日志文件进行故障排除

SSM Agent在下列日志文件中记录信息。这些文件中的信息还可以帮助您排查问题。有关 SSM Agent 日志文件的更多信息(包括如何打开调试日志记录),请参阅 查看 SSM Agent 日志

注意

如果您选择使用 Windows 文件资源管理器查看这些日志,请务必在“文件夹选项”中允许查看隐藏文件和系统文件。

在 Windows 上
  • %PROGRAMDATA%\Amazon\SSM\Logs\amazon-ssm-agent.log

  • %PROGRAMDATA%\Amazon\SSM\Logs\errors.log

在 Linux 和 macOS 上
  • /var/log/amazon/ssm/amazon-ssm-agent.log

  • /var/log/amazon/ssm/errors.log

对于 Linux 托管式节点,您可以在写入以下目录的 messages 文件中查找更多信息:/var/log

有关使用代理日志进行故障排除的更多信息,请参阅《Amazon re:Post 知识中心》中的如何使用 SSM Agent 日志排查托管实例中的 SSM Agent 问题?

代理日志文件不会滚动 (Windows)

如果您在 seelog.xml 文件(在 Windows Server 托管式节点上)中指定基于日期的日志文件轮换,并且日志不轮换,请指定 fullname=true 参数。下面是指定了 fullname=true 参数的 seelog.xml 配置文件的示例。

<seelog type="adaptive" mininterval="2000000" maxinterval="100000000" critmsgcount="500" minlevel="debug"> <exceptions> <exception filepattern="test*" minlevel="error" /> </exceptions> <outputs formatid="fmtinfo"> <console formatid="fmtinfo" /> <rollingfile type="date" datepattern="200601021504" maxrolls="4" filename="C:\ProgramData\Amazon\SSM\Logs\amazon-ssm-agent.log" fullname=true /> <filter levels="error,critical" formatid="fmterror"> <rollingfile type="date" datepattern="200601021504" maxrolls="4" filename="C:\ProgramData\Amazon\SSM\Logs\errors.log" fullname=true /> </filter> </outputs> <formats> <format id="fmterror" format="%Date %Time %LEVEL [%FuncShort @ %File.%Line] %Msg%n" /> <format id="fmtdebug" format="%Date %Time %LEVEL [%FuncShort @ %File.%Line] %Msg%n" /> <format id="fmtinfo" format="%Date %Time %LEVEL %Msg%n" /> </formats> </seelog>

无法连接到 SSM 端点

SSM Agent 必须允许到以下端点的 HTTPS(端口 443)出站流量:

  • ssm.region.amazonaws.com

  • ssmmessages.region.amazonaws.com

region 表示 Amazon Systems Manager 支持的 Amazon Web Services 区域 的标识符,例如 us-east-2 对应美国东部(俄亥俄)区域。有关支持的 region 值的列表,请参阅《Amazon Web Services 一般参考》中的 Systems Manager service endpointsRegion 列。

注意

在 2024 年之前,还需要 ec2messages.region.amazonaws.com。对于在 2024 年之前推出的 Amazon Web Services 区域,仍然需要允许流向 ssmmessages.region.amazonaws.com 的流量,但流向 ec2messages.region.amazonaws.com 的流量是可选的。

对于 2024 年及之后推出的区域,需要允许流向 ssmmessages.region.amazonaws.com 的流量,但这些区域不支持 ec2messages.region.amazonaws.com 端点。

如果 SSM Agent 无法与前面的端点进行通信(如上所述),则其无法正常运行,即使您使用 Amazon 提供的 Amazon Machine Images(AMIs),例如 Amazon Linux 2 或 Amazon Linux 2023。您的网络配置必须具有开放的互联网访问权限,或者您必须配置自定义 Virtual Private Cloud (VPC) 端点。如果您不打算创建自定义 VPC 端点,请检查您的互联网网关或 NAT 网关。有关如何管理 VPC 端点的更多信息,请参阅 使用适用于 Systems Manager 的 VPC 端点提高 EC2 实例的安全性

验证您的 VPC 配置

要使用 Systems Manager 管理 EC2 实例,必须为 ssm.region.amazonaws.comssmmessages.region.amazonaws.com 正确配置 VPC 端点,在某些情况下,本主题前面的 无法连接到 SSM 端点ec2messages.region.amazonaws.com 中对此进行了说明。您的网络配置必须具有开放的互联网访问权限,或者必须配置虚拟私有云(VPC)端点。

要排查 VPC 端点的问题,请执行以下操作:

  • 确保在 VPC 级别包含 VPC 端点。如果在 VPC 上找不到具有特定服务名称的 VPC 端点,请先验证是否已在 VPC 级别启用 DNS 支持。接下来,创建一个新的 VPC 端点,将其与每个可用区中的一个子网关联。

  • 确保在 VPC 端点级别启用私有 DNS 名称。私有 DNS 名称默认处于启用状态,但可能在某些时候被手动禁用。

  • 确保现有 VPC 端点与适当的子网关联。此外,请确保 VPCE 已与该可用区中的子网关联。

有关更多信息,请参阅以下主题:

验证 VPC DNS 相关属性

作为验证 VPC 配置的一部分,确保属性 enableDnsSupportenableDnsHostnames 已启用。

您可以使用 Amazon EC2 ModifyVPCAttribute API 操作或 Amazon CLI 命令 modify-vpc-attribute 启用这些属性。

有关在 Amazon VPC 控制台启用这些属性的信息,请参阅《Amazon VPC 用户指南》中的查看和更新 VPC 的 DNS 属性

验证端点安全组的入口和出口规则

确保您配置的任何 VPC 端节(ssmssmmessagesec2messages)在安全组中包含入口和出口规则,以允许流量在端口 443 上进出。如有必要,可在 VPC 中创建一个新的安全组,其中包含一条入口规则和一条出口规则,以允许流量在 VPC 的无类别域间路由(CIDR)块的 443 端口上进出。创建安全组后,将其附加到每个 VPC 端点。

有关更多信息,请参阅以下主题:

使用 ssm-cli 排查托管节点可用性的问题

从 SSM Agent 版本 3.1.501.0 开始,可以使用 ssm-cli 来确定托管式节点是否满足由 Systems Manager 管理的主要要求,并出现在 Fleet Manager 中的托管式节点列表。ssm-cli 是包含在 SSM Agent 安装中的独立命令行工具。包含用于收集所需信息的预配置命令,以帮助您诊断您已确认正在运行的 Amazon EC2 实例或非 EC2 计算机未包含在 Systems Manager 的托管式节点列表中的原因。这些命令会在您指定 get-diagnostics 选项时运行。

有关更多信息,请参阅 使用 ssm-cli 排除托管节点可用性的故障