

# 测试已加入事件检测及响应服务的工作负载
<a name="idr-workloads-testing"></a>

[警报摄取](idr-gs-alarm-ingestion.md)完成后，AWS 事件检测及响应服务将对工作负载启用监控，并发送上线确认。从现在起，您的工作负载将受到积极监控。

警报测试验证已加入的警报是否按预期与 AWS 事件检测及响应服务互动，触发相应的运行手册以及任何其它所需的操作，例如，如果您在警报摄取期间选择了自动创建案例。

测试是可选的，但强烈建议使用它。您有责任在实际事件发生之前验证您的响应安排。

## 测试选项
<a name="idr-workloads-testing-options"></a>

AWS 事件检测及响应服务提供了两种测试选项。

### 选项 1：预定的游戏日演练（推荐）
<a name="idr-workloads-testing-gameday"></a>

预定的游戏日演练是对真实事件中可能发生的情况进行的实况端到端模拟。AWS 事件检测及响应服务会按照您规定的[运行手册](idr-workloads-dev-runbook.md)步骤，让您深入了解真实事件会如何发展。游戏日演练可为您提供机会来提出问题或完善说明，进而改进互动效果。

**要预定游戏日演练，请完成以下步骤：**

1. 使用首选日期和 1 小时的时段（包括时区）[通知 AWS 事件检测及响应服务](idr-workloads-change-request.md)。提供至少 48 小时的提前期。

1. 为游戏日演练计划资源，包括您的 SRE/运营团队和升级联系人。

**游戏日演练安排：**

1. 您和 AWS 事件检测及响应服务加入呼叫。

1. 如果适用，您可以禁用警报操作。

1. 您可以按照[如何测试警报](#idr-workloads-testing-how-to)中的说明，手动将警报设置为**警报**状态。

1. AWS 事件检测及响应服务确认收到警报通知。

1. AWS 事件检测及响应服务对警报做出响应，并加入运行手册中规定的桥。

1. 您和 AWS 事件检测及响应服务确认游戏日演练结果。

### 选项 2：离线警报测试
<a name="idr-workloads-testing-offline"></a>

您可以随时独立地测试警报，而无需安排呼叫。触发警报会根据您的运行手册与 AWS 事件检测及响应服务互动，就像在真实事件期间一样。

**要执行离线警报测试，请完成以下步骤：**

1. 为防止意外操作，请禁用任何 Amazon CloudWatch 警报操作。

1. 按照[如何测试警报](#idr-workloads-testing-how-to)中的说明触发警报。

1. 在 5 分钟内，将代表您创建支持案例，AWS 事件检测及响应服务将按照运行手册中的规定与您互动。

1. 告知 Incident Manager 您正在进行离线警报测试。

1. Incident Manager 确认收到了哪些警报状态变更并验证响应安排。

如果未在 5 分钟内创建支持案例，请提交[事件请求](inbound-incident-idr.md)，以便手动与 AWS 事件检测及响应服务互动来排查故障。

## 如何测试警报
<a name="idr-workloads-testing-how-to"></a>

### Amazon CloudWatch 警报
<a name="idr-workloads-testing-cw"></a>

**注意**  
您用于警报测试的 AWS Identity and Access Management 用户或角色必须具有 `cloudwatch:SetAlarmState` 权限。

使用 AWS Command Line Interface或 [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html) 手动将警报设置为**警报**状态。这些命令可在不影响工作负载的情况下更改警报状态。

为防止意外的操作（例如 Amazon EC2 实例重启），请在更改警报状态之前禁用任何 CloudWatch 警报操作。测试完成后，您可以重新启用 CloudWatch 警报操作。要了解有关禁用或启用警报操作的更多信息，请参阅《Amazon CloudWatch API 参考》**中的 [DisableAlarmActions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_DisableAlarmActions.html) 和 [EnableAlarmActions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_EnableAlarmActions.html)。

**禁用警报操作。**

```
aws cloudwatch disable-alarm-actions --alarm-names "{{ExampleAlarm}}" --region {{us-east-1}}
```

**将警报状态设置为“警报”：**

```
aws cloudwatch set-alarm-state --alarm-name "{{ExampleAlarm}}" --state-value ALARM --state-reason "{{Testing AWS Incident Detection and Response}}" --region {{us-east-1}}
```

**测试后重新启用警报操作：**

```
aws cloudwatch enable-alarm-actions --alarm-names "{{ExampleAlarm}}" --region {{us-east-1}}
```

警报状态将在几秒钟内自动恢复为**正常**。

**复合警报**

`set-alarm-state` 命令不能保证复合警报恢复为**正常**状态。作为最佳实践，请在测试后验证复合警报的状态。要手动重置复合警报，请使用以下命令：

```
aws cloudwatch set-alarm-state --alarm-name "{{ExampleCompositeAlarm}}" --state-value OK --state-reason "{{Testing AWS Incident Detection and Response}}" --region {{us-east-1}}
```

要详细了解有关手动更改 CloudWatch 警报的状态，请参阅《Amazon CloudWatch API 参考》**中的 [SetAlarmState](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_SetAlarmState.html)。

要了解有关 CloudWatch API 操作所需权限的更多信息，请参阅 [Amazon CloudWatch 权限参考](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/permissions-reference-cw.html)。

### 第三方 APM 警报
<a name="idr-workloads-testing-third-party-alarms"></a>

使用第三方应用程序性能监控（APM）工具（例如 Datadog、Splunk、New Relic 或 Dynatrace）的工作负载需要不同的说明来模拟警报。

1. 在 APM 中禁用警报操作以防止意外操作。

1. 修改您的警报阈值或比较运算符，以强制警报进入**警报**状态。这会触发 AWS 事件检测及响应服务的有效载荷。

1. 测试完成后，回滚阈值或比较运算符更改，以便将警报还原为**正常**状态。

## 关键成果
<a name="idr-workloads-testing-key-outputs"></a>

成功测试后：
+ 警报摄取得以确认，并且警报配置正确无误。
+ AWS 事件检测及响应服务手收到警报。
+ 系统创建支持案例，并通知您指定的联系人。
+ AWS 事件检测及响应服务会通过您规定的会议方式与您互动。
+ 在测试期间产生的所有警报和支持案例均得以解决。

## 常见问题
<a name="idr-workloads-testing-faq"></a>

**是否必须进行警报测试？**  
否。测试是可选的，但强烈建议您在真实事件发生前验证您的端到端响应安排。

**我的工作负载会受到影响吗？**  
不会。但是，在测试期间，在警报上配置的任何警报操作都会触发，除非您将其禁用。在测试之前禁用警报操作，以防止意外影响。

**在测试期间会通知谁？**  
在预定的游戏日演练期间，我们会联系您运行手册中的所有联系人和升级路径来进行验证。在离线警报测试期间，仅通知在警报加入期间指定的初始联系人。

**我能否通过电子邮件回复案例更新？**  
否。支持 案例信函的电子邮件副本是从一个不回复的地址发送的。要更新案例，请使用 [AWS Support Center Console](https://console.aws.amazon.com/support/home#/)。

**如何在上线后请求游戏日演练？**  
回复您现有的加入支持案例（如果存在），或者创建[请求更改已加入事件检测及响应服务的工作负载](idr-workloads-change-request.md)。