

# REL06-BP04 自动响应（实时处理和警报）
<a name="rel_monitor_aws_resources_automate_response_monitor"></a>

 检测到事件后，利用自动化功能执行操作；例如，更换故障组件。

 实施警报的自动实时处理，以便系统可以快速采取纠正措施，并在触发警报时尝试防止故障或服务降级。警报的自动响应可能包括更换故障组件，调整计算容量，将流量重定向到运行状况良好的主机、可用区或其他区域，以及通知操作员。

 **期望结果：**识别实时警报，并设置警报的自动处理，以便调用适当措施来维护服务级别目标和服务水平协议（SLA）。自动处理的范围可以是单个组件的自我修复活动，也可以是全站点的失效转移。

 **常见反模式：**
+  没有明确的关键实时警报的清单或目录。
+  关键警报没有自动响应（例如，当计算资源即将耗尽时自动进行扩展）。
+  警报响应操作相互矛盾。
+  操作员在收到警报通知时没有任何标准操作程序（SOP）可以遵循。
+  不监控配置更改，因为未检测到的配置更改可能会导致工作负载停机。
+  没有撤消意外配置更改的策略。

 **建立此最佳实践的好处：**自动处理警报可以提高系统的韧性。系统会自动采取纠正措施，从而减少手动操作，而手动操作往往是容易出错的人工干预。工作负载的运行符合可用性目标，并减少服务中断。

 **在未建立这种最佳实践的情况下暴露的风险等级：**中 

## 实施指导
<a name="implementation-guidance"></a>

 为了有效地管理警报并自动进行响应，请根据警报的严重程度和影响对警报进行分类，记录响应程序，并在对任务进行评级之前制定好响应计划。

 确定需要特定操作的任务（通常在运行手册中详细说明），并检查所有运行手册和行动手册，判断哪些任务可以自动执行。如果操作可以定义，通常就可以实现自动化。如果操作无法自动化，请在 SOP 中记录手动步骤并对操作员进行培训。不断挑战手动流程，寻找自动化机会，以便制定和维护自动响应警报的计划。

### 实施步骤
<a name="implementation-steps"></a>

1.  **创建警报清单：**要获取所有警报的列表，您可以使用 [Amazon CloudWatch 命令](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) `[describe-alarms](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/describe-alarms.html)` 来使用 [AWS CLI](https://aws.amazon.com/cli/)。根据设置的警报数量，您可能需要使用分页来检索每个呼叫的警报子集，或者也可以使用 AWS SDK [通过 API 调用](https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/cw-example-describing-alarms.html)获取警报。

1.  **记录所有警报操作：**更新包含所有警报及其操作的运行手册，无论它们是手动还是自动的。[AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/APIReference/Welcome.html) 提供预定义的运行手册。有关运行手册的更多信息，请参阅[使用运行手册](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-documents.html)。有关如何查看运行手册内容的详细信息，请参阅 [View runbook content](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-runbook-reference.html#view-automation-json)。

1.  **设置和管理警报操作：**对于任何需要操作的警报，请[使用 CloudWatch SDK 指定自动操作](https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/cw-example-using-alarm-actions.html)。例如，您可以通过创建和启用警报操作或禁用警报操作，根据 CloudWatch 警报自动更改 Amazon EC2 实例的状态。

    您还可以使用 [Amazon EventBridge](https://aws.amazon.com/eventbridge/) 自动响应系统事件，例如应用程序可用性问题或资源更改。您可以创建规则来指示要关注的事件，以及在事件匹配规则时要执行的操作。可以自动启动的操作包括调用 [AWS Lambda](https://aws.amazon.com/lambda/) 函数、调用 [Amazon EC2](https://aws.amazon.com/ec2/) `Run Command`、将事件中继到 [Amazon Kinesis Data Streams](https://aws.amazon.com/kinesis/data-streams/) 以及查看[使用 EventBridge 自动执行 Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/automating_with_eventbridge.html)。

1.  **标准操作程序（SOP）：**根据应用程序组件，[AWS Resilience Hub](https://docs.aws.amazon.com/resilience-hub/latest/userguide/what-is.html) 会推荐多个 [SOP 模板](https://docs.aws.amazon.com/resilience-hub/latest/userguide/sops.html)。您可以使用这些 SOP 来记录在出现警报时操作员应遵循的所有流程。您还可以根据韧性监测中心的建议[构造 SOP](https://docs.aws.amazon.com/resilience-hub/latest/userguide/building-sops.html)，前提是有一个具有相关韧性策略的 Resilience Hub 应用程序，以及针对该应用程序的历史韧性评测。针对 SOP 的建议由韧性评测生成。

    韧性监测中心与 Systems Manager 结合使用，通过提供大量可用作这些 SOP 基础的 [SSM 文档](https://docs.aws.amazon.com/resilience-hub/latest/userguide/create-custom-ssm-doc.html)，自动执行 SOP 的步骤。例如，韧性监测中心可能会根据现有的 SSM 自动化文档推荐用于添加磁盘空间的 SOP。

1.  **使用 Amazon DevOps Guru 执行自动操作：**可以使用 [Amazon DevOps Guru](https://aws.amazon.com/devops-guru/) 自动监控应用程序资源的异常行为并提供针对性的建议，缩短识别问题和进行修复所需的时间。借助 DevOps Guru，您可以近乎实时地监控来自多个来源的运营数据流，包括 Amazon CloudWatch 指标、[AWS Config](https://aws.amazon.com/config/)、[AWS CloudFormation](https://aws.amazon.com/cloudformation/) 和 [AWS X-Ray](https://aws.amazon.com/xray/)。您还可以使用 DevOps Guru 在 OpsCenter 中自动创建 [OpsItems](https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-create-OpsItems-from-CloudWatch-Alarms.html)，并将事件发送到 [EventBridge](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-eventbridge.html) 实现更多自动化操作。

## 资源
<a name="resources"></a>

 **相关最佳实践：**
+  [REL06-BP01 为工作负载监控全部组件（生成）](rel_monitor_aws_resources_monitor_resources.md) 
+  [REL06-BP02 定义与计算指标（聚合）](rel_monitor_aws_resources_notification_aggregation.md) 
+  [REL06-BP03 发送通知（实时处理和报警）](rel_monitor_aws_resources_notification_monitor.md) 
+  [REL08-BP01 对部署等标准活动使用运行手册](rel_tracking_change_management_planned_changemgmt.md) 

 **相关文档：**
+  [AWS Systems Manager 自动化](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation.html) 
+  [Creating an EventBridge Rule That Triggers on an Event from an AWS Resource](https://docs.aws.amazon.com/eventbridge/latest/userguide/create-eventbridge-rule.html) 
+  [One Observability 讲习会](https://observability.workshop.aws/) 
+  [Amazon Builders' Library：检测分布式系统的运营可见性](https://aws.amazon.com/builders-library/instrumenting-distributed-systems-for-operational-visibility/) 
+  [What is Amazon DevOps Guru?](https://docs.aws.amazon.com/devops-guru/latest/userguide/welcome.html)
+  [使用自动化文档（行动手册）](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-documents.html) 

 **相关视频：**
+ [AWS re:Invent 2022 – Observability best practices at Amazon](https://www.youtube.com/watch?v=zZPzXEBW4P8)
+ [AWS re:Invent 2020: Automate anything with AWS Systems Manager](https://www.youtube.com/watch?v=AaI2xkW85yE)
+ [ Introduction to AWS Resilience Hub](https://www.youtube.com/watch?v=_OTTCOjWqPo)
+ [ Create Custom Ticket Systems for Amazon DevOps Guru Notifications ](https://www.youtube.com/watch?v=Mu8IqWVGUfg)
+ [ Enable Multi-Account Insight Aggregation with Amazon DevOps Guru ](https://www.youtube.com/watch?v=MHezNcTSTbI)

 **相关示例：**
+ [Amazon CloudWatch and Systems Manager 讲习会](https://catalog.us-east-1.prod.workshops.aws/workshops/a8e9c6a6-0ba9-48a7-a90d-378a440ab8ba/en-US)