我想对我的补丁管理器(Linux)操作失败进行故障排除。
简短描述
修补操作可能由于多种原因而失败,对错误进行故障排除的方式因操作系统(OS)而异。您可以在 AWS 管理控制台或 API 响应中找到错误消息。但是,控制台输出被截断为 48,000 个字符,这限制了对某些问题的了解。对于这些问题,最佳实践是查看存储在托管节点上的完整输出。您还可以使用发送到 Amazon CloudWatch 和 Amazon Simple Storage Service(Amazon S3)的输出来进一步进行故障排除。
解决方法
要解决补丁管理器(Linux)操作失败时收到的错误消息,请完成以下任务。
使用 AWSSupport-TroubleshootPatchManagerLinux 运行手册
使用 AWSSupport-TroubleshootPatchManagerLinux 对基于 Linux 的托管节点的修补失败进行故障排除。
查看您的分区和权限
当使用 noexec 权限挂载 /var/lib/amazon 时,会出现以下示例错误消息:
"/var/lib/amazon/ssm/<instanceid>/document/orchestration/<commandid>/PatchLinux/_script.sh: Permission deniedfailed to run commands: exit status 126"
要解决此问题,请将专有分区配置为 /var/log/amazon 和 /var/lib/amazon,并使用 exec 权限挂载。
查看您的托管节点权限
当托管节点没有访问指定的 Amazon S3 存储桶所需的权限时,会出现以下示例错误消息:
"Unable to download payload: https://s3.DOC-EXAMPLE-BUCKET.region.amazonaws.com/aws-ssm-region/patchbaselineoperations/linux/payloads/patch-baseline-operations-X.XX.tar.gz.failed to run commands: exit status 156"
要解决此问题,请更新您的网络配置并确保您可以访问 AWS 区域 Amazon S3 端点。有关更多,请参阅 SSM Agent 与 AWS 托管 S3 存储桶进行通信。
查看您的 Run Command 任务和目录空间
当两个命令在同一个托管节点上同时运行 AWS-RunPatchBaseline 时,您将收到以下示例错误消息。当 /var 目录没有可用磁盘空间时,您也会收到此错误消息。
错误示例:
"IOError: [Errno 2] No such file or directory: 'patch-baseline-operations-X.XX.tar.gz'Unable to extract tar file: /var/log/amazon/ssm/patch-baseline-operations/patch-baseline-operations-1.75.tar.gz.
failed to run commands: exit status 155
Unable to load and extract the content of payload, abort.
failed to run commands: exit status 152"
要解决此问题,请完成以下任务:
- 确保没有维护时段具有两个或更多 Run Command 任务在运行 AWS-RunPatchBaseline。任务不能具有相同的优先级,也不能在相同的目标 ID 上运行。如有必要,改变优先级。
- 确保只有一个状态管理器关联在按相同的计划运行 AWS-RunPatchBaseline,并以相同的托管节点为目标。
- 为 /var 目录提供更多可用磁盘空间。
查看在托管节点上运行的进程
当 AWS-RunPatchBaseline 在已在运行 yum 的托管节点上运行,而另一个进程已锁定数据库时,会出现以下示例错误:
"MM/DD/YYYY HH:MM:SS root [INFO]: another process has acquired yum lock, waiting 2 s and retry."
要解决此问题,请完成以下任务:
- 确保任何按计划运行 AWS-RunPatchBaseline 的状态管理器关联、维护时段任务或其他配置都不会同时针对同一个托管节点。
- 确保没有同时运行任何手动 yum 操作。
查看服务器的 Python 版本
当 Red Hat Enterprise Linux(RHEL)、Debian Server、Raspberry Pi 或 Ubuntu Server 实例上未安装支持的 Python 3 版本时,您会收到以下示例错误消息:
"An unsupported package manager and python version combination was found.Dnf requires Python 2 or Python 3 to be installed."
要解决此问题,请在所需的服务器上安装一个 Python 3(3.0 - 3.9)版本。
查看您的操作系统
当操作系统不受支持时,您会收到以下示例错误消息:
"An error occurred (UnsupportedOperatingSystem) when calling the GetDeployablePatchSnapshotForInstance operation: patch_common.exceptions.PatchManagerError: ('Unsupported Operating System', 146)"
要解决此问题,请使用补丁管理器支持的操作系统。
查看实例的输出
在修补操作失败且控制台输出被截断后,您可能无法查看整个输出。
要解决此问题,请在以下位置查看实例的完整输出:
"/var/lib/amazon/ssm/<example-instance-id>/document/orchestration/<example-command-id>/awsrunShellScript/PatchLinux/stdout"
**注意:**用您的值替换所有示例字符串。
您也可以将操作配置为将 Run Command 输出发送到 Amazon S3 或 CloudWatch。