

# 告警评估
<a name="alarm-evaluation"></a>

## 指标告警状态
<a name="alarm-states"></a>

指标告警可能具有以下几种状态：
+ `OK` – 指标或表达式在定义的阈值范围内。
+ `ALARM` – 指标或表达式超出定义的阈值。
+ `INSUFFICIENT_DATA`（数据不足） – 告警刚刚启动，指标不可用，或者指标没有足够的数据以确定告警状态。

## 告警评估状态
<a name="alarm-evaluation-state"></a>

除了告警状态外，每个告警都有一个评估状态，用于提供告警评估过程的相关信息。可能会出现以下状态：
+ `PARTIAL_DATA`：表示由于配额限制，无法检索到所有可用数据。有关更多信息，请参阅 [如何处理部分数据](cloudwatch-metrics-insights-alarms-partial-data.md)。
+ `EVALUATION_ERROR`：表示告警设置中存在需要审查和更正的配置错误。有关更多详细信息，请参阅告警的 StateReason 字段。
+ `EVALUATION_FAILURE`：表示 CloudWatch 出现临时问题。我们建议在问题得到解决之前进行手动监控

您可以在控制台的告警详细信息中查看评估状态，也可以使用 `describe-alarms` CLI 命令或 `DescribeAlarms` API 来查看评估状态。

## 告警评估设置
<a name="alarm-evaluation-settings"></a>

创建告警时，请指定三个设置，以启用 CloudWatch 评估在何时更改告警状态：
+ **时间段**是为了创建警报的各个数据点，而评估指标或表达式所用的时间长度。它以秒为单位。
+ **Evaluation Periods（评估期）**是确定告警状态时要评估的最近时间段或数据点的数量。
+ **Datapoints to Alarm（触发告警的数据点数）**是评估期内必须违例才能触发告警变为 `ALARM`（告警）状态的数据点数量。超出阈值的数据点不必是连续的，但它们必须全部在等于 **Evaluation Period**（评估期）的最近几个数据点范围内。

对于任何一分钟或更长的时间段，每分钟评估一次告警，评估基于**周期**和**评估周期**定义的时段。例如，如果**周期**为 5 分钟（300 秒），**评估周期**为 1，则在第 5 分钟结束时，告警将根据从 1 到 5 分钟的数据进行评估。然后，在第 6 分钟结束时，根据第 2 分钟到 6 分钟的数据对告警进行评估。

如果警报周期为 10 秒、20 秒或 30 秒，则每 10 秒评估一次警报。有关更多信息，请参阅 [高精度告警](#high-resolution-alarms)。

如果评估周期数乘以每个评估周期的长度得到的结果超过一天，则每小时评估一次警报。有关如何评估此类多天告警的更多详细信息，请参阅 [评估多天警报的示例](#evaluate-multiday-alarm)。

在下图中，指标告警的阈值设置为三个单位。**Evaluation Periods（评估期）**和 **Datapoints to Alarm（触发告警的数据点数）**均为 3。也就是说，在最近三个连续评估期中的所有现有数据点都高于阈值时，告警就会变为 `ALARM`（告警）状态。在该图中，在第三个到第五个时间段发生了这种情况。在第六个时间段，数值降至阈值以下，因此其中一个时间段被评估为未违例，且告警状态恢复为 `OK`（正常）。在第九个时间段，再次超出阈值，但仅一个时间段超出阈值。因此，告警状态保持为 `OK`（正常）。

![\[触发告警的阈值\]](http://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/images/alarm_graph.png)


在将 **Evaluation Periods（评估期）**和 **Datapoints to Alarm（触发告警的数据点数）**配置为不同的值时，您将设置“M（最大为 N）”告警。**告警的数据点数**为（“M”），**评估期**为（“N”）。评估周期是指评估次数乘以每个周期长度所得的数值。例如，如果为 1 分钟的评估期配置 4 个数据点（最大为 5 个数据点），则评估间隔为 5 分钟。如果为 10 分钟的评估期配置 3 个数据点（最大为 3 个数据点），则评估间隔为 30 分钟。

**注意**  
如果创建告警后不久便有数据点缺失，并且该指标在您创建告警之前便已报告给 CloudWatch，则 CloudWatch 在评估告警时会检索从创建告警之前算起的最近数据点。

## 高精度告警
<a name="high-resolution-alarms"></a>

如果对高精度指标设置告警，则您可以指定 10 秒、20 秒或 30 秒时长的高精度告警。高精度告警的费用较高。有关高精度指标的更多信息，请参阅 [发布自定义指标](publishingMetrics.md)。

## 评估多天警报的示例
<a name="evaluate-multiday-alarm"></a>

如果评估周期数乘以每个评估周期的长度得到的结果超过一天，则警报为多天警报。多天警报每小时评估一次。在评估多天警报时，CloudWatch 在评估时仅考虑截至当前小时 00 分的指标。

例如，假设有一个警报会监测每隔 3 天在 10:00 运行一次的作业。

1. 10:02，作业失败

1. 在 10:03，警报会进行评估并保持 `OK` 状态，原因是评估只考虑截至 10:00 的数据。

1. 在 11:03，警报会考虑 11:00 之前的数据并转为 `ALARM` 状态。

1. 您在 11:43 更正了错误，作业现在成功运行。

1. 12:03，警报再次进行评估，检测到作业正在成功运行，然后返回到 `OK` 状态。