

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将 Systems Manager SSM 文档与 FIS 一起使用 AWS
<a name="actions-ssm-agent"></a>

AWS FIS 通过 AWS Systems Manager SSM 代理和 AWS FIS 操作支持自定义故障类型。[aws:ssm:send-command](fis-actions-reference.md#ssm-send-command)可用于创建常见故障注入操作的预配置的 Systems Manager SSM 文档（SSM 文档）可作为以-前缀开头的公共 AWS 文档提供。 AWSFIS

SSM 代理是可以在 Amazon EC2 实例、本地服务器或虚拟机 (VMs) 上安装和配置的亚马逊软件。因此能将资源托管在 Systems Manager 上。代理负责处理 Systems Manager 中的请求，然后再按照指定方式运行。您可以加入自己的 SSM 文档，以注入自定义故障，也可以参考 Amazon 拥有的某个公共文档。

**要求**

对于需要使用 SSM 代理才能在目标上执行的操作，请确保满足以下条件：
+ 已为目标安装代理。SSM 代理默认安装在某些 Amazon 系统映像上 (AMIs)。否则，您可以为实例安装 SSM 代理。有关更多信息，请参阅 *AWS Systems Manager 用户指南*中的[手动安装适用于 EC2 实例的 SSM 代理](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html)。
+ Systems Manager 有权对您的实例执行操作。您可以通过 IAM 实例配置文件授予访问权限。有关更多信息，请参阅 *AWS Systems Manager 用户指南*中的[创建适用于 Systems Manager 的 IAM 实例配置文件](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html)以及[将 IAM 实例配置文件附加到 EC2 实例](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-launch-managed-instance.html)。

## 执行 aws:ssm:send-command 操作。
<a name="specifying-ssm-actions"></a>

SSM 文档定义 Systems Manager 对您的托管实例执行的操作。Systems Manager 包含大量预配置文档，您也可以自行创建文档。有关自行创建 SSM 文档的更多信息，请参阅 *AWS Systems Manager 用户指南*中的[创建 Systems Manager 文档](https://docs.aws.amazon.com/systems-manager/latest/userguide/create-ssm-doc.html)。有关 SSM 常规文档的更多信息，请参阅 *AWS Systems Manager 用户指南*中的 [AWS Systems Manager 文档](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-ssm-docs.html)。

AWS FIS 提供预先配置的 SSM 文档。[您可以在 AWS Systems Manager 控制台的 “文档：https://console.aws.amazon.com/systems-manager/文档” 下查看预配置的 SSM **文档**。](https://console.aws.amazon.com/systems-manager/documents)您也可以从 AWS FIS 控制台中的一系列预配置文档中进行选择。有关更多信息，请参阅 [预先配置的 AWS FIS SSM 文档](#fis-ssm-docs)。

要在 AWS FIS 实验中使用 SSM 文档，您可以使用操作。[aws:ssm:send-command](fis-actions-reference.md#ssm-send-command)此操作会在您目标实例上获取指定 SSM 文档并运行。

在实验模板中执行 `aws:ssm:send-command` 操作时，必须为此操作指定其他参数，包括以下参数：
+ **documentArn** – 必需。SSM 文档的 Amazon 资源名称 (ARN) 。
+ **documentParameters**：此操作设有条件。SSM 文档接受的必要参数和可选参数。对象格式为 JSON 格式，密钥为字符串，值为字符串值或字符串数组。
+ **documentVersion**：可选。要运行的 SSM 文档版本。

您可以通过 Systems Manager 控制台或命令行查看 SSM 文档信息（包括文档参数）。

**使用控制台查看有关 SSM 文档的信息**

1. 打开 AWS Systems Manager 控制台，网址为[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)。

1. 在导航窗格中，选择**文档**。

1. 选择文档，然后选择**详细信息**选项卡。

**运行命令行，查看有关 SSM 文档的信息**  
使用 SSM [描述的文档](https://docs.aws.amazon.com/cli/latest/reference/ssm/describe-document.html)命令。

**了解有关操作状态的更多信息**  
SSM 操作状态由 [SSM 命令](https://docs.aws.amazon.com/systems-manager/latest/userguide/monitor-commands.html)状态决定。

## 预先配置的 AWS FIS SSM 文档
<a name="fis-ssm-docs"></a>

您可以将预先配置 AWS 的 FIS SSM 文档与实验模板中的`aws:ssm:send-command`操作配合使用。

**要求**
+ 只有以下操作系统支持 AWS FIS 提供的预配置 SSM 文档：
  + 亚马逊 Linux 2023、亚马逊 Linux 2
  + Ubuntu
  + RHEL 8、9
  + CentOS 9
+ 仅在 EC2 实例上支持 AWS FIS 提供的预配置 SSM 文档。其他类型的托管节点（如本地服务器）并不支持此类文档。

要在 ECS 任务实验中使用这些 SSM 文档，请使用相应的 [Amazon ECS 操作](fis-actions-reference.md#ecs-actions-reference)。例如，对 **aws:ecs:task-cpu-stress** 操作使用 AWSFIS-Run-CPU-Stress 文档。

**Topics**
+ [AWSFIS-Run-CPU-Stress](#awsfis-run-cpu-stress)
+ [AWSFIS-Run-Disk-Fill](#awsfis-run-disk-fill)
+ [AWSFIS-Run-IO-Stress](#awsfis-run-io-stress)
+ [AWSFIS-Run-Kill-Process](#awsfis-run-kill-process)
+ [AWSFIS-Run-Memory-Stress](#awsfis-run-memory-stress)
+ [AWSFIS-Run-Network-Blackhole-Port](#awsfis-run-network-blackhole-port)
+ [AWSFIS-Run-Network-Latency](#awsfis-run-network-latency)
+ [AWSFIS-Run-Network-Latency-Sources](#awsfis-run-network-latency-sources)
+ [AWSFIS-Run-Network-Packet-Loss](#awsfis-run-network-packet-loss)
+ [AWSFIS-Run-Network-Packet-Loss-Sources](#awsfis-run-network-packet-loss-sources)

**行动持续时间和 AWS FIS SS DurationSeconds M 文档中的区别**  
 某些 SSM 文档会限制自己的执行时间，例如，一些预先配置的 AWS FIS SSM 文档会使用该 DurationSeconds参数。因此，您需要在 FIS 操作定义中指定两个独立 AWS 的持续时间：
+  **Action duration**：对于具有单个操作的实验，操作持续时间等于实验持续时间。对于多个动作，实验持续时间取决于各个动作的持续时间及其运行顺序。 AWS FIS 会监视每个动作，直到其动作持续时间过去。
+  文档参数 **DurationSeconds**：SSM 文档将执行的持续时间，以秒为单位指定。

 您可以为两种持续时间选择不同的值：
+  **Action duration exceeds DurationSeconds**：SSM 文档的执行在操作完成之前完成。 AWS FIS 会等到动作持续时间过后才开始后续行动。
+  **Action duration is shorter than DurationSeconds**：操作完成后，SSM 文档继续执行。如果 SSM 文档仍在执行中，并且操作持续时间已过，则操作状态将设置为 “已完成”。 AWS FIS 只监视执行情况，直到操作持续时间过去。

 请注意，某些 SSM 文档设置有可变持续时间。例如， AWS FIS SSM 文档可以选择安装先决条件，这可以将总体执行持续时间延长到指定参数 DurationSeconds 之外。因此，如果将操作持续时间和值设置 DurationSeconds 为相同的值，则 SSM 脚本的运行时间可能会超过操作持续时间。

### AWSFIS-Run-CPU-Stress
<a name="awsfis-run-cpu-stress"></a>

使用 **stress-ng** 工具在实例上运行 CPU 压力测试。使用 [AWSFIS-Run-CPU-stres](https://console.aws.amazon.com/systems-manager/documents/AWSFIS-Run-CPU-Stress/description) s SSM 文档。

**操作类型（仅限控制台）**  
aws:ssm:send-command/AWSFIS-Run-CPU-Stress

**进行筛选**  
arn:aws:ssm:*region*::document/AWSFIS-Run-CPU-Stress

**文档参数**
+ **DurationSeconds** – 必需。CPU 压力测试的持续时间（单位：秒）。
+ **CPU**：可选。要使用的 CPU 压力源数量。默认为 0，使用所有 CPU 压力源。
+ **LoadPercent**：可选。目标 CPU 负载百分比，从 0（空载）到 100（满载）不等。默认值为 100。
+ **InstallDependencies**：可选。如果值为 `True`，则 Systems Manager 会在目标实例上安装必要依赖项（如未安装）。默认值为 `True`。依赖项为 **stress-ng**。

以下字符串示例可输入控制台。

```
{"DurationSeconds":"60", "InstallDependencies":"True"}
```

### AWSFIS-Run-Disk-Fill
<a name="awsfis-run-disk-fill"></a>

在实例根卷上分配磁盘空间，模拟磁盘已满的故障。使用-D [AWSFIS-Runisk-Fill SSM 文档](https://console.aws.amazon.com/systems-manager/documents/AWSFIS-Run-Disk-Fill/description)。

如果注入此故障的实验已停止，无论是手动还是通过停止条件停止， AWS FIS 都会尝试通过取消正在运行的 SSM 文档来回滚。但如果因为故障或因为故障及应用程序活动导致磁盘空间已满，则 Systems Manager 可能无法完成取消操作。此时，如果要停止实验，请确保仍有磁盘空间。

**操作类型（仅限控制台）**  
aws:ssm:send-command/AWSFIS-Run-Disk-Fill

**进行筛选**  
arn:aws:ssm:*region*::document/AWSFIS-Run-Disk-Fill

**文档参数**
+ **DurationSeconds** – 必需。磁盘填充测试的持续时间（单位：秒）。
+ **Percent**：可选。在磁盘填充测试期间分配的磁盘百分比。默认为 95%。
+ **InstallDependencies**：可选。如果值为 `True`，则 Systems Manager 会在目标实例上安装必要依赖项（如未安装）。默认值为 `True`。依赖关系是**atd**、**kmod**和**fallocate**。

以下字符串示例可输入控制台。

```
{"DurationSeconds":"60", "InstallDependencies":"True"}
```

### AWSFIS-Run-IO-Stress
<a name="awsfis-run-io-stress"></a>

使用 **stress-ng** 工具在实例上运行 IO 压力测试。使用 [AWSFIS-Run-io-stress SSM 文档](https://console.aws.amazon.com/systems-manager/documents/AWSFIS-Run-IO-Stress/description)。

**操作类型（仅限控制台）**  
aws:ssm:send-command/AWSFIS-Run-IO-Stress

**进行筛选**  
arn:aws:ssm:*region*::document/AWSFIS-Run-IO-Stress

**文档参数**
+ **DurationSeconds** – 必需。IO 压力测试的持续时间（单位：秒）。
+ **Workers**：可选。混合执行顺序、随机和内存映射 read/write 操作、强制同步和缓存删除的工作程序数量。多个子进程对同一个文件执行不同的 I/O 操作。默认为 1。
+ **Percent**：可选。在 IO 压力测试期间，文件系统上使用的空闲空间百分比。默认为 80%。
+ **InstallDependencies**：可选。如果值为 `True`，则 Systems Manager 会在目标实例上安装必要依赖项（如未安装）。默认值为 `True`。依赖项为 **stress-ng**。

以下字符串示例可输入控制台。

```
{"Workers":"1", "Percent":"80", "DurationSeconds":"60", "InstallDependencies":"True"}
```

### AWSFIS-Run-Kill-Process
<a name="awsfis-run-kill-process"></a>

运行 **killall** 命令，停止实例中的指定进程。使用 [AWSFIS-Run-Kill-Process SSM 文档](https://console.aws.amazon.com/systems-manager/documents/AWSFIS-Run-Kill-Process/description)。

**操作类型（仅限控制台）**  
aws:ssm:send-command/AWSFIS-Run-Kill-Process

**进行筛选**  
arn:aws:ssm:*region*::document/AWSFIS-Run-Kill-Process

**文档参数**
+ **ProcessName** – 必需。要停止的进程名称。
+ **Signal**：可选。要与命令一起发送的信号。这些值可能是 `SIGTERM`（接收者可以忽略的值）和 `SIGKILL`（接收者不能忽略的值）。默认值为 `SIGTERM`。
+ **InstallDependencies**：可选。如果值为 `True`，则 Systems Manager 会在目标实例上安装必要依赖项（如未安装）。默认值为 `True`。依赖项为 **killall**。

以下字符串示例可输入控制台。

```
{"ProcessName":"myapplication", "Signal":"SIGTERM"}
```

### AWSFIS-Run-Memory-Stress
<a name="awsfis-run-memory-stress"></a>

使用 **stress-ng** 工具在实例上运行内存压力测试。使用-M [AWSFIS-Runemory-Stress SSM 文档](https://console.aws.amazon.com/systems-manager/documents/AWSFIS-Run-Memory-Stress/description)。

**操作类型（仅限控制台）**  
aws:ssm:send-command/AWSFIS-Run-Memory-Stress

**进行筛选**  
arn:aws:ssm:*region*::document/AWSFIS-Run-Memory-Stress

**文档参数**
+ **DurationSeconds** – 必需。内存压力测试的持续时间（单位：秒）。
+ **Workers**：可选。虚拟内存压力源的数量。默认为 1。
+ **Percent** – 必需。在内存压力测试期间要使用的虚拟内存百分比。
+ **InstallDependencies**：可选。如果值为 `True`，则 Systems Manager 会在目标实例上安装必要依赖项（如未安装）。默认值为 `True`。依赖项为 **stress-ng**。

以下字符串示例可输入控制台。

```
{"Percent":"80", "DurationSeconds":"60", "InstallDependencies":"True"}
```

### AWSFIS-Run-Network-Blackhole-Port
<a name="awsfis-run-network-blackhole-port"></a>

使用 **iptables** 工具丢弃协议和端口的入站或出站流量。使用 [AWSFIS-Run-Network-Blackhole-Port SSM 文档](https://console.aws.amazon.com/systems-manager/documents/AWSFIS-Run-Network-Blackhole-Port/description)。

**操作类型（仅限控制台）**  
aws:ssm:send-command/AWSFIS-Run-Network-Blackhole-Port

**进行筛选**  
arn:aws:ssm:*region*::document/AWSFIS-Run-Network-Blackhole-Port

**文档参数**
+ **Protocol** – 必需。协议。可能的值为 `tcp` 和 `udp`。
+ **Port** – 必需。端口号。
+ **TrafficType**：可选。流量的类型。可能的值为 `ingress` 和 `egress`。默认为 `ingress`。
+ **DurationSeconds** – 必需。网络黑洞测试的持续时间（单位：秒）。
+ **InstallDependencies**：可选。如果值为 `True`，则 Systems Manager 会在目标实例上安装必要依赖项（如未安装）。默认值为 `True`。依赖项分别是 **atd**、**dig**、**lsof** 和 **iptables**。

以下字符串示例可输入控制台。

```
{"Protocol":"tcp", "Port":"8080", "TrafficType":"egress", "DurationSeconds":"60", "InstallDependencies":"True"}
```

### AWSFIS-Run-Network-Latency
<a name="awsfis-run-network-latency"></a>

使用 **tc** 工具为网络接口增加延迟。使用 [AWSFIS-Run-网络延迟](https://console.aws.amazon.com/systems-manager/documents/AWSFIS-Run-Network-Latency/description) SSM 文档。

**操作类型（仅限控制台）**  
aws:ssm:send-command/AWSFIS-Run-Network-Latency

**进行筛选**  
arn:aws:ssm:*region*::document/AWSFIS-Run-Network-Latency

**文档参数**
+ **Interface**：可选。网络接口。默认值为 `eth0`。
+ **DelayMilliseconds**：可选。延迟（单位：毫秒）。默认为 200。
+ **DurationSeconds** – 必需。网络延迟测试的持续时间（单位：秒）。
+ **InstallDependencies**：可选。如果值为 `True`，则 Systems Manager 会在目标实例上安装必要依赖项（如未安装）。默认值为 `True`。依赖项分别是 **atd**、**dig** 和 **tc**。

以下字符串示例可输入控制台。

```
{"DelayMilliseconds":"200", "Interface":"eth0", "DurationSeconds":"60", "InstallDependencies":"True"}
```

### AWSFIS-Run-Network-Latency-Sources
<a name="awsfis-run-network-latency-sources"></a>

使用 **tc** 工具，为往返于特定来源的流量添加网络接口的延迟和抖动。使用 [AWSFIS-Run-Network-Latency-Sources](https://console.aws.amazon.com/systems-manager/documents/AWSFIS-Run-Network-Latency-Sources/description) SSM 文档。

使用`FlowsPercent`参数来增加一定百分比的连接的延迟。

**操作类型（仅限控制台）**  
aws:ssm:send-command/AWSFIS-Run-Network-Latency-Sources

**进行筛选**  
arn:aws:ssm:*region*::document/AWSFIS-Run-Network-Latency-Sources

**文档参数**
+ **Interface**：可选。网络接口，用逗号分隔。支持 “全部” 和 “默认值”。默认为`DEFAULT`，它将以操作系统的主网络接口为目标。
+ **DelayMilliseconds**：可选。延迟（单位：毫秒）。默认为 200。
+ **JitterMilliseconds**：可选。抖动（单位：毫秒）。默认值为 10。
+ **FlowsPercent**：可选。将受该操作影响的网络流量的百分比。默认 为 100%。
+ **Sources** – 必需。源代码用逗号分隔，不含空格。可能的值是： IPv4 地址、 IPv4 CIDR 块、域名、可用区名称 (us-east-1a)、可用区 ID (use1-az1)、ALL 和。`DYNAMODB` `S3`如果指定值为 `DYNAMODB` 或 `S3`，则仅适用于当前区域中的区域端点。
+ **TrafficType**：可选。流量的类型。可能的值为 `ingress` 和 `egress`。默认为 `ingress`。
+ **DurationSeconds** – 必需。网络延迟测试的持续时间（单位：秒）。
+ **InstallDependencies**：可选。如果值为 `True`，则 Systems Manager 会在目标实例上安装必要依赖项（如未安装）。默认值为 `True`。依赖关系是**atd****dig**、**jq**、**lsof**、和**tc**。

使用本文档时，实验角色需要以下权限：
+ `ec2:DescribeInstances`
+ `ec2:DescribeSubnets`

以下字符串示例可输入控制台。

```
{"DelayMilliseconds":"200", "JitterMilliseconds":"15", "Sources":"S3,www.example.com,72.21.198.67", "Interface":"eth0", "TrafficType":"egress", "DurationSeconds":"60", "InstallDependencies":"True"}
```

### AWSFIS-Run-Network-Packet-Loss
<a name="awsfis-run-network-packet-loss"></a>

使用 **tc** 工具，为网络接口添加丢包。使用 [AWSFIS-Run-Network-Packet-Los](https://console.aws.amazon.com/systems-manager/documents/AWSFIS-Run-Network-Packet-Loss/description) s SSM 文档。

**操作类型（仅限控制台）**  
aws:ssm:send-command/AWSFIS-Run-Network-Packet-Loss

**进行筛选**  
arn:aws:ssm:*region*::document/AWSFIS-Run-Network-Packet-Loss

**文档参数**
+ **Interface**：可选。网络接口。默认值为 `eth0`。
+ **LossPercent**：可选。丢包率。默认为 7%。
+ **DurationSeconds** – 必需。网络丢包测试的持续时间（单位：秒）。
+ **InstallDependencies**：可选。如果值为 `True`，则 Systems Manager 会在目标实例上安装必要依赖项。默认值为 `True`。依赖项分别是 **atd**、**lsof**、**dig** 和 **tc**。

以下字符串示例可输入控制台。

```
{"LossPercent":"15", "Interface":"eth0", "DurationSeconds":"60", "InstallDependencies":"True"}
```

### AWSFIS-Run-Network-Packet-Loss-Sources
<a name="awsfis-run-network-packet-loss-sources"></a>

使用 **tc** 工具，为网络接口添加丢包，以处理往返于特定来源的流量。使用-Network-[AWSFIS-RunPacket-Loss-S](https://console.aws.amazon.com/systems-manager/documents/AWSFIS-Run-Network-Packet-Loss-Sources/description) ources SSM 文档。

使用`FlowsPercent`参数按一定百分比的连接注入丢包信息。

**操作类型（仅限控制台）**  
aws:ssm:send-command/AWSFIS-Run-Network-Packet-Loss-Sources

**进行筛选**  
arn:aws:ssm:*region*::document/AWSFIS-Run-Network-Packet-Loss-Sources

**文档参数**
+ **Interface**：可选。网络接口，用逗号分隔。支持 “全部” 和 “默认值”。默认为`DEFAULT`，它将以操作系统的主网络接口为目标。
+ **LossPercent**：可选。丢包率。默认为 7%。
+ **FlowsPercent**：可选。将受该操作影响的网络流量的百分比。默认 为 100%。
+ **Sources** – 必需。源代码用逗号分隔，不含空格。可能的值是： IPv4 地址、 IPv4 CIDR 块、域名、可用区名称 (us-east-1a)、可用区 ID (use1-az1)、ALL 和。`DYNAMODB` `S3`如果指定值为 `DYNAMODB` 或 `S3`，则仅适用于当前区域中的区域端点。
+ **TrafficType**：可选。流量的类型。可能的值为 `ingress` 和 `egress`。默认为 `ingress`。
+ **DurationSeconds** – 必需。网络丢包测试的持续时间（单位：秒）。
+ **InstallDependencies**：可选。如果值为 `True`，则 Systems Manager 会在目标实例上安装必要依赖项。默认值为 `True`。依赖关系是**atd****dig**、**jq**、**lsof**、和**tc**。

使用本文档时，实验角色需要以下权限：
+ `ec2:DescribeInstances`
+ `ec2:DescribeSubnets`

以下字符串示例可输入控制台。

```
{"LossPercent":"15", "Sources":"S3,www.example.com,72.21.198.67", "Interface":"eth0", "TrafficType":"egress", "DurationSeconds":"60", "InstallDependencies":"True"}
```

## 示例
<a name="fis-ssm-docs-example-template"></a>

有关实验模板示例，请参阅 [运行预配置的 AWS FIS SSM 文档](experiment-template-example.md#cpu-fault-injection)。

有关示例教程，请参阅 [在实例上运行 CPU 压力测试](fis-tutorial-run-cpu-stress.md)。

## 限制
<a name="fis-ssm-docs-limitations"></a>
+ 以下文档不能并行运行：
  + AWSFIS-Run-Network-Blackhole-Port
  + AWSFIS-Run-Network-Latency
  + AWSFIS-Run-Network-Latency-Sources
  + AWSFIS-Run-Network-Packet-Loss
  + AWSFIS-Run-Network-Packet-Loss-Sources

## 回滚脚本
<a name="fis-ssm-docs-rollback"></a>

AWS FIS SSM 文档会自动创建回滚脚本，作为一种安全机制，用于在故障注入实验后恢复系统状态。这些脚本可确保删除注入的故障，即使操作失败或意外终止。

### 创建回滚脚本
<a name="fis-ssm-rollback-creation"></a>

当故障注入实验开始时，会自动创建回滚脚本。

**创作详情**
+ **位置**-脚本在`/var/lib/amazon/ssm/`目录中创建。
+ **命名模式** — `FAULT_NAME-FAULT_IDENTIFIER-Rollback.sh` 其中*FAULT\$1IDENTIFIER*是随机生成的 32 个字符的字符串
+ **计时** — 在每个故障注入实验开始时，在故障注入开始之前创建。
+ **内容**-包含所有必需的环境变量和命令以纠正特定故障。

例如，网络延迟实验可能会在上创建回滚脚本。`/var/lib/amazon/ssm/NetworkLatency-abc123-Rollback.sh`

### 回滚日志
<a name="fis-ssm-rollback-logging"></a>

回滚脚本实现双重日志记录以捕获所有回滚活动，以进行故障排除和审计。

**日志文件位置**  
执行回滚脚本时，它会在两个位置创建日志：
+ **临时文件** — `/tmp/aws-fis-rollback-TIMESTAMP-PID.log`
+ **系统日志**-发送到带有设备的 syslog `local0.info`

**日志文件命名**  
临时日志文件使用以下命名约定：

```
/tmp/aws-fis-rollback-YYYY-MM-DDTHH:MM:SSZ-PID.log
```

其中*YYYY-MM-DDTHH:MM:SSZ*是 UTC 时间戳，*PID*是回滚脚本的进程 ID。

**系统日志配置**  
使用以下配置将回滚日志发送到 syslog：
+ **标签** — `aws-fis-rollback`
+ **优先级**：`local0.info`
+ **格式**-`[YYYY-MM-DDTHH:MM:SSZ] log_message`

**查看回滚日志**  
使用以下命令查看 systemd 日志中的所有回滚日志：

```
sudo journalctl -t aws-fis-rollback
```

## 问题排查
<a name="fis-ssm-docs-troubleshooting"></a>

请采取以下步骤进行问题排查。

**排查 SSM 文档问题**

1. 打开 AWS Systems Manager 控制台，网址为[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)。

1. 在导航窗格中，依次选择**节点管理**和**运行命令**。

1. 在**命令历史记录**选项卡上，使用筛选条件查找文档运行情况。

1. 选择命令 ID，打开详细信息页面。

1. 选择实例 ID。查看各个步骤的输出结果和错误。