AWS Systems Manager
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Systems Manager Run Command 疑难解答

Run Command 在每次命令执行时提供状态详细信息。有关命令状态的更多信息,请参阅了解命令状态。您也可以使用本主题中的信息来帮助排查 Run Command 问题。

我的实例在哪里?

Run a command (运行命令) 页面上,在选择要运行的 SSM 文档并在 Targets (目标) 部分中选择 Manually selecting instances (手动选择实例) 后,将显示实例的列表,您可以从中选择要对其运行命令的实例。如果未列出您希望看到的实例,请检查以下要求:

  • SSM 代理:确保已在实例上安装最新版本的 SSM 代理。只有 Amazon EC2 Windows Amazon 系统映像 (AMI) 和某些 Linux AMI 预配置 SSM 代理。有关在实例上安装或重新安装 SSM 代理的信息,请参阅在 Amazon EC2 Linux 实例上安装和配置 SSM 代理在 Windows 实例上安装和配置 SSM 代理

  • IAM 实例角色:验证实例是否配置了 AWS Identity and Access Management (IAM) 角色,使得此实例能够与 Systems Manager API 通信。此外,还验证您的用户账户是否具有一个允许您的账户与 Systems Manager API 通信的 IAM 用户信任策略。有关更多信息,请参阅为 Systems Manager 创建 IAM 实例配置文件

  • 目标操作系统类型:请复查您已选择支持要更新的实例类型的 SSM 文档。大多数 SSM 文档同时支持 Windows 实例和 Linux 实例,但有一些 SSM 文档不支持。例如,如果您选择 SSM 文档 AWS-InstallPowerShellModule(此文档仅适用于 Windows 实例),则目标实例列表中将不会显示 Linux 实例。

获取有关 Windows 实例的状态信息

使用以下命令可获取有关一个或多个实例的状态详细信息:

Get-SSMInstanceInformation -InstanceInformationFilterList @{Key="InstanceIds";ValueSet="instance-ID","instance-ID"}

使用以下不带筛选条件的命令可查看注册到您的账户的当前报告联机状态的所有实例。将 ValueSet="Online" 替换为 "ConnectionLost" 或 "Inactive" 可查看这些状态:

Get-SSMInstanceInformation -InstanceInformationFilterList @{Key="PingStatus";ValueSet="Online"}

使用以下命令可查看哪些实例正在运行 EC2Config 服务的最新版本。将 ValueSet="LATEST" 替换为特定版本 (例如,3.0.54 或 3.10) 可查看这些详细信息:

Get-SSMInstanceInformation -InstanceInformationFilterList @{Key="AgentVersion";ValueSet="LATEST"}

获取有关 Linux 实例的状态信息

使用以下命令可获取有关一个或多个实例的状态详细信息:

aws ssm describe-instance-information --instance-information-filter-list key=InstanceIds,valueSet=instance-ID

使用以下不带筛选条件的命令可查看注册到您的账户的当前报告联机状态的所有实例。将 ValueSet="Online" 替换为 "ConnectionLost" 或 "Inactive" 可查看这些状态:

aws ssm describe-instance-information --instance-information-filter-list key=PingStatus,valueSet=Online

使用以下命令可查看哪些实例正在运行 SSM 代理的最新版本。将 ValueSet="LATEST" 替换为特定版本 (例如,1.0.145 或 1.0) 可查看这些详细信息:

aws ssm describe-instance-information --instance-information-filter-list key=AgentVersion,valueSet=LATEST

如果 describe-instance-information API 操作返回的 AgentStatus 为 Online,则可使用 Run Command 来管理实例。如果状态为“Inactive”,则该实例具有下面的一个或多个问题。

  • 未安装 SSM 代理。

  • 实例没有出站 Internet 连接。

  • 未使用支持实例与 SSM API 通信的 IAM 角色来启动实例,或 IAM 角色的权限对 Run Command 不适用。有关更多信息,请参阅为 Systems Manager 创建 IAM 实例配置文件

排除 SSM 代理的故障

如果在使用 Run Command 执行命令时遇到问题,则可能是因为 SSM 代理有问题。使用以下信息可帮助您查看 SSM 代理日志文件和排查该代理的问题。

查看 SSM 代理日志文件

SSM 代理在下列日志文件中记录信息。这些文件中的信息可帮助您排查问题。

注意

如果您选择使用 Windows 文件浏览器查看这些日志,请务必在“Folder Options (文件夹选项)”中允许查看隐藏文件和系统文件。

在 Windows 上

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

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

在 Linux 上

  • /var/log/amazon/ssm/amazon-ssm-agent.log

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

启用 SSM 代理调试日志记录

使用以下过程在 Windows Server 和 Linux 托管实例上启用 SSM 代理 调试日志记录。

  1. 使用 Systems Manager 会话管理器连接到要启用调试日志记录的实例,或登录到托管实例。有关更多信息,请参阅 使用 Session Manager

  2. 生成 seelog.xml.template 文件的副本。将副本名称更改为 seelog.xml。该文件位于以下目录中:

    1. Windows Server:%PROGRAMFILES%\Amazon\SSM\seelog.xml.template

    2. Linux:/etc/amazon/ssm/seelog.xml.template

  3. 编辑 seelog.xml 文件以更改默认日志记录行为。将 minlevel 的值从 info 更改为 debug,如下面的示例所示。

    <seelog type="adaptive" mininterval="2000000" maxinterval="100000000" critmsgcount="500" minlevel="debug">
  4. 仅 Windows:找到以下条目:

    filename="{{LOCALAPPDATA}}\Amazon\SSM\Logs\amazon-ssm-agent.log"

    更改此条目来使用以下路径:

    filename="C:\ProgramData\Amazon\SSM\Logs\amazon-ssm-agent.log"
  5. 仅 Windows:找到以下条目:

    filename="{{LOCALAPPDATA}}\Amazon\SSM\Logs\errors.log"

    更改此条目来使用以下路径:

    filename="C:\ProgramData\Amazon\SSM\Logs\errors.log"
  6. 重启 SSM 代理.

    • Windows Server:使用 Windows 任务管理器重新启动 AmazonSSMAgent.exe。

    • Linux:运行以下命令:

      sudo restart amazon-ssm-agent