如何对补丁管理器(Linux)操作失败进行故障排除?

2 分钟阅读
0

我想对我的补丁管理器(Linux)操作失败进行故障排除。

简短描述

修补操作可能因多种原因而失败,错误的故障排除可能会因所使用的操作系统而异。您可以在 AWS 管理控制台或 API 响应中找到错误。但是,控制台输出被截断为 48,000 个字符,这限制了对某些问题的了解。对于这些问题,最佳实践是查看存储在托管节点上的完整输出。您还可以使用发送到 Amazon CloudWatch(CloudWatch)和 Amazon Simple Storage Service(Amazon S3)的输出来进一步进行故障排除。

以下是补丁管理器(Linux)操作失败时可能收到的错误:

  • 权限被拒绝/无法运行命令
  • 无法下载有效负载
  • 没有此类文件或目录
  • 另一个进程获得了 yum 锁定
  • 不受支持的包管理器和 Python 版本组合
  • 不受支持的操作系统
  • 输出被截断

解决方法

要解决补丁管理器(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

要解决此错误,请更新您的网络配置,并确保区域 Amazon S3 端点可访问。有关详细信息,请参阅 SSM Agent 与 AWS 托管 S3 桶的通信

没有此类文件或目录

以下示例错误的发生原因如下:

  • 两个运行 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 目录下的磁盘空间。

另一个进程获得了 yum 锁定

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 版本组合

当 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)

要解决此错误,请使用受支持的操作系统

输出被截断

当修补操作失败且控制台输出被截断,从而导致无法查看错误时,就会出现此错误。控制台输出被截断为 48,000 字。

要解决此错误,请在以下位置查看实例的完整输出:

**注意:**确保将所有 example 字符串替换为所需的值。

/var/lib/amazon/ssm/<example-instance-id>/document/orchestration/<example-command-id>/awsrunShellScript/PatchLinux/stdout

您也可以将操作配置为将 Run Command 输出发送到 Amazon S3 或 CloudWatch。

AWS 官方
AWS 官方已更新 10 个月前