

# 教程：使用指标数学函数抑制警报
<a name="suppress-alarms-tutorial-suppress"></a>

以下教程将引导您完成如何使用指标数学来抑制 CloudWatch 警报的过程。

**示例方案**

即将到来的星期二凌晨 1:00 到凌晨 3:00 之间（世界标准时间）有计划的活动。您想要创建一个 CloudWatch 指标数学函数来将这段时间内的实际数据点替换为 0（低于设定阈值的数据点）。

1. 评估导致警报触发的标准。以下屏幕截图提供了警报标准示例：  
![显示警报详细信息的 CloudWatch 屏幕。](http://docs.aws.amazon.com/zh_cn/IDR/latest/userguide/images/metric-math-assess-alarm-criteria.png)

   上面的屏幕截图中显示的警报将会监控应用程序负载均衡器目标组的 `UnHealthyHostCount` 指标。当 5/5 个数据点的 `UnHealthyHostCount` 指标大于或等于 3 时，此警报便会进入 `ALARM` 状态。该警报将缺失数据视为不良数据（超出配置的阈值）。

1. 创建指标数学函数。

   在此示例中，即将到来的星期二凌晨 1:00 到凌晨 3:00 之间（世界标准时间）有计划的活动。因此，需要创建一个 CloudWatch 指标数学函数来将这段时间内的实际数据点替换为 0（低于设定阈值的数据点）。

   请注意，您要配置的替换数据点因警报配置而异。例如，如果您有一个用于监控 HTTP 成功率的警报，其阈值小于 98，则将计划活动期间的实际数据点替换为高于配置阈值 100 的值。以下是该情景的指标数学函数示例。

   ```
   IF((DAY(m1) == 2 && HOUR(m1) >= 1 && HOUR(m1) < 3), 0, m1)
   ```

   上面的指标数学函数包含以下元素：
   + **DAY(m1) == 2**：确保是星期二（星期一 = 1，星期日 = 7）。
   + **HOUR(m1) >= 1 && HOUR(m1) < 3**：指定从世界标准时间凌晨 1 点到凌晨 3 点的时间范围。
   + **IF(condition, value\_if\_true, value\_if\_false)**如果条件为 true，则该函数将指标值替换为 0。否则，将返回原始值 (m1)。

   有关语法和可用函数的更多信息，请参阅《Amazon CloudWatch 用户指南》**中的[指标数学语法和函数](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html#metric-math-syntax)。

1. 登录 AWS 管理控制台并打开 CloudWatch 控制台（[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)）。

1. 选择**警报**，然后找到要向其添加指标数学函数的警报。

1. 在指标数学部分中，选择**编辑**。

1. 选择**添加数学**、**从空表达式开始**。

1. 输入您的数学表达式，然后选择**应用**。

   警报监控的现有指标自动变为 **m1**，您的数学表达式为 **e1**，如以下示例所示：  
![显示指标数学表达式的 CloudWatch 屏幕。](http://docs.aws.amazon.com/zh_cn/IDR/latest/userguide/images/metric-math-expression.png)

1. （可选）编辑指标数学表达式的标签，以便他人可以了解它是一个函数及其创建的原因，如以下示例所示：  
![显示编辑指标数学表达式标签的 CloudWatch 屏幕。](http://docs.aws.amazon.com/zh_cn/IDR/latest/userguide/images/metric-math-edit-label.png)

1. 取消选择 **m1**，选择 **e1**，然后选择**选择指标**。这会将警报设置为监控数学表达式，而非直接监控底层指标。

1. 选择**跳到查看并创建**。

1. 验证是否按预期配置警报，然后选择**更新警报**以保存更改。

在上面的示例中，若未应用指标数学函数，则实际 `UnHealthyHostCount` 指标将在计划活动期间报告。这将导致 CloudWatch 警报进入 `ALARM` 状态并触发事件检测及响应服务，如以下示例所示：

![CloudWatch 屏幕，显示了导致进入警报状态的数据点。](http://docs.aws.amazon.com/zh_cn/IDR/latest/userguide/images/metric-math-example-alarm-state.png)


创建指标数学函数后，活动期间实际数据点会被替换为 0，警报保持 `OK` 状态，从而抑制触发事件检测及响应服务。

![CloudWatch 屏幕，显示了没有警报状态的数据点。](http://docs.aws.amazon.com/zh_cn/IDR/latest/userguide/images/metric-math-datapoints-no-alarm.png)
