

# 警报评估窗口
<a name="alarm-evaluation-window"></a>

CloudWatch 评估指标警报时，会检索*评估窗口*时间范围内的指标数据。窗口的长度为 `Period` × `Evaluation Periods`。窗口边界的落点由 [PutMetricAlarm](https://docs.amazonaws.cn/AmazonCloudWatch/latest/APIReference/API_PutMetricAlarm.html) API 中的 `EvaluationWindow` 参数控制。`EvaluationWindow` 支持以下两种配置：
+ `SlidingWindow` – 默认值。每次执行警报评估，窗口都会向前滑动，构成滚动时间窗口。
+ `WallClockWindow` – 窗口对齐到与时段匹配的时间边界（例如整点时刻、午夜或日历周起始），并可选择对齐到特定时区。

如果您在创建或更新指标警报时未指定 `EvaluationWindow`，则该警报使用滑动窗口。您可以随时通过更新警报，将现有警报切换为挂钟时间窗口。

除基于 PromQL 查询的警报外，所有类型的指标警报均支持这两种配置。

## 在滑动窗口与挂钟时间窗口之间进行选择
<a name="choosing-evaluation-window"></a>

滑动窗口持续纳入最新数据，因此一旦数据点超出阈值，就能立即检测到超限情况。对于无需考虑日历对齐的实时监控场景（如性能监控、延迟监控或资源耗尽型工作负载），请选择滑动窗口。

挂钟时间窗口评估完整的、与日历对齐的时段，例如每小时、每日或每周。当监控与业务或日历周期绑定时，请选择挂钟时间窗口。标准时间窗口还可避免因事件跨越滚动窗口边界而可能产生的误报。例如，使用滑动窗口的每日备份警报，如果连续备份间隔超过 24 小时，即使每个日历日都有备份，也可能会触发 `ALARM`。挂钟时间窗口独立评估每一天，从而避免此问题。

权衡在于检测时机。挂钟时间窗口仅在包含该数据点的时段结束后才会反映该数据点。如需在问题持续期间进行检测，请使用滑动窗口。

## 滑动窗口
<a name="sliding-window"></a>

使用滑动窗口时，每次评估警报时评估窗口都会向前移动，形成滚动时间窗口。例如，一个周期为 1 小时、评估周期数为 1 的警报，可能在一次评估中评估 13:07–14:07 的时间范围，在下次评估中评估 13:08–14:08 的范围。

由于窗口始终纳入最新数据点，因此对于触发 Auto Scaling 操作的警报，滑动窗口是更优选择。

滑动窗口没有其他配置选项。如需通过 API 显式配置，可将 `EvaluationWindow` 设置为 `{"SlidingWindow":{}}`。省略 `EvaluationWindow` 具有相同的效果。

## 挂钟时间窗口
<a name="wall-clock-window"></a>

评估周期与所选时区中的固定时间边界（例如每小时或每天）对齐。最适合计划性工作负载，例如每日报告、批处理作业或备份任务。

边界与所选时区中相匹配的日历周期的起始点对齐：1 小时周期对齐到整点时刻，1 天周期对齐到午夜，1 周周期对齐到周一 00:00（ISO 8601 周的开始）。这些对齐点是固定的，无法更改。

### 使用挂钟时间窗口的时机
<a name="wall-clock-when-to-use"></a>

当您希望警报评估与特定时间点或日历边界对齐时，请选择挂钟时间窗口。常见场景包括：
+ 应在特定时区的午夜前完成的每日批处理作业。
+ 按日历周汇总的每周合规或业务报告。

**注意**  
对于触发 Auto Scaling 操作的警报，不建议使用挂钟时间窗口。警报仅在当前周期结束后才会反映新数据，因此无法足够密切地跟踪负载变化，难以实现响应式扩展。请改用滑动窗口。

### 支持的周期
<a name="wall-clock-supported-periods"></a>

您可以将挂钟时间窗口用于采用以下周期之一的指标警报：
+ 1 分钟（60 秒）
+ 5 分钟（300 秒）
+ 1 小时（3600 秒）
+ 1 天（86400 秒）
+ 1 周（604800 秒）

挂钟时间窗口不支持高分辨率警报（周期为 10、20 或 30 秒）。

如果指定周期不受挂钟时间窗口支持，`PutMetricAlarm` 会返回验证错误，其中列出支持的周期。

对于指标数学和 Metrics Insights 警报，`Metrics` 数组中的每个指标都必须使用受支持的挂钟时间周期。

**注意**  
Metrics Insights 警报可评估不超过 3 小时的时间范围（**Period** × **Evaluation Periods**）。当 Metrics Insights 警报使用挂钟时间窗口时，CloudWatch 会自动额外预留一个周期，令窗口与挂钟时间边界对齐。因此，有效限制变为 **Period** ×（**Evaluation Periods** \+ 1），且该值仍不得超过 3 小时。这意味着使用挂钟时间窗口的 Metrics Insights 警报，比使用滑动窗口的同一警报少一个评估周期。例如，周期为 1 小时时，滑动窗口最多支持 3 个评估周期，而挂钟时间窗口最多支持 2 个。如果超过此限制，`PutMetricAlarm` 会返回验证错误。

### 时区与夏令时
<a name="wall-clock-timezone"></a>

您可以为挂钟时间窗口选择指定时区。如果未指定时区，CloudWatch 将使用 `UTC`。时区决定了挂钟时间边界的落点。例如，在 `America/New_York` 时区中，周期为 1 天的警报评估每个日历日从纽约当地午夜到当地午夜；而同一警报在 `UTC` 时区中则评估从 00:00 UTC 到 00:00 UTC。对于非整时偏移的时区（例如 `Asia/Kolkata`，偏移量为 `+05:30`），即使是每小时或更短的周期，边界也会发生偏移。

您可以通过以下任意格式指定时区：
+ IANA 时区标识符，例如 `America/New_York`、`Europe/London` 或 `Asia/Kolkata`。
+ 固定 UTC 偏移量，例如 `+05:30`、`-08:00` 或 `Z`（等同于 UTC）。
+ 带偏移前缀的标识符，例如 `UTC+05:30` 或 `GMT-08:00`。

您指定的时区必须对应到一个为 5 分钟倍数的 UTC 偏移量。例如，`+01:00`、`+05:30` 和 `+01:05` 会被接受，而 `+01:03` 会被拒绝。CloudWatch 会在创建警报时对不满足此要求的时区返回验证错误。

在您指定 IANA 时区后，CloudWatch 会自动完成夏令时切换处理。评估窗口与指定时区的本地挂钟时间保持一致，即便遇到夏令时调时日期也不受影响。固定 UTC 偏移量和带偏移前缀的标识符不遵循夏令时。

### 警报评估频率
<a name="wall-clock-evaluation-frequency"></a>

使用挂钟时间窗口的警报与使用滑动窗口的警报具有相同的评估频率。选择挂钟时间窗口仅会改变 CloudWatch 用于检索指标数据的窗口*边界*，而不会改变警报的运行频率。

例如，周期为 1 小时并使用挂钟时间窗口的警报，每分钟评估一次。每次评估都会查看最近完成的时钟小时时段内的数据。当新的整点时刻到来时，窗口将前进到该时刻的边界。

要创建使用挂钟时间窗口的指标警报，请参阅[创建使用挂钟评估时间窗口的指标警报](Create_WallClock_Alarm.md)。