

# 使用 Amazon CloudWatch 告警
<a name="CloudWatch_Alarms"></a>

您可以创建警报，这些警报监视指标，当超出阈值时，它们会发送通知或者对您所监控的资源自动进行更改。例如，您可以监控您的 Amazon EC2 实例的 CPU 使用率以及磁盘读写情况，然后使用此数据确定您是否应启动其它实例来处理增加的负载。您还可以使用此数据停止未完全利用的实例以节省开支。

 您可以在 Amazon CloudWatch 中创建*指标*警报和*复合*警报。

您可以在 Metrics Insights 查询上创建警报，这些查询使用 AWS 资源标签对指标进行筛选和分组。要将标签与警报结合使用，请在 [https://console.aws.amazon.com/connect/](https://console.aws.amazon.com/connect/) 上选择**设置**。在 **CloudWatch 设置**页面的**针对遥测启用资源标签**下，选择**启用**。如果是能自动适应标记策略的上下文感知监控，请使用 AWS 资源标签在 Metrics Insights 查询上创建警报。这样，您就可以监控所有标有特定应用程序或环境的资源。
+ *指标告警*可监控单个 CloudWatch 指标，或基于 CloudWatch 指标监控数学表达式的结果。告警根据指标或表达式在多个时间段内相对于某阈值的值执行一项或多项操作。操作可以是向 Amazon SNS 主题发送通知、执行 Amazon EC2 操作或 Amazon EC2 Auto Scaling 操作、在 CloudWatch 调查中启动调查，或在 Systems Manager 中创建 OpsItem 或事件。
+ *PromQL 警报*通过对经由 CloudWatch OTLP 端点摄取到的指标进行 Prometheus 查询语言（PromQL）即时查询来监控指标。该警报以贡献者的身份跟踪个人违规时间序列，并使用基于持续时间的待定和恢复周期来控制状态转换。有关更多信息，请参阅 [PromQL 警报](alarm-promql.md)。
+ *复合告警*包括一个规则表达式，该表达式考虑您已创建的其他告警的告警状态。只有当规则的所有条件都得到满足时，复合告警才会进入“ALARM（告警）”状态。在复合告警的规则表达式中指定的告警可以包括指标告警和其他复合告警。

  使用复合告警可以减少告警噪音。您可以创建多个指标告警，还可以创建复合告警并仅为复合告警设置提示。例如，只有当所有底层指标告警都处于“ALARM（告警）”状态时，复合告警才可能进入“ALARM（告警）”状态。

  复合警报可以在改变状态时发送 Amazon SNS 通知，并且可以在进入 ALARM 状态时创建调查、Systems Manager OpsItems 或事件，但无法执行 EC2 操作或 Auto Scaling 操作。

**注意**  
 您可以在您的 AWS 账户中创建任意数量的警报。

 您可以为控制面板添加警报，以便监控与接收跨多个区域的 AWS 资源和应用程序的提醒。为控制面板添加警报以后，该警报会在处于 `INSUFFICIENT_DATA` 状态时变成灰色，在 `ALARM` 状态时变成红色。当处于 `OK` 状态时，警报没有颜色显示。

 您还可以在 CloudWatch 控制台的导航面板中通过 *Favorites and recents*（收藏夹和最近记录）选项收藏最近访问过的警报。*Favorites and recents*（收藏夹和最近记录）选项中有对应的列，分别显示您收藏的警报和最近访问过的警报。

告警仅在告警状态更改时才会调用操作。使用 Auto Scaling 操作的告警除外。对于 Auto Scaling 操作，告警会在告警保持新状态时以每分钟一次的频率持续调用操作。

告警可以在同一账户中监视指标。如果您在 CloudWatch 控制台中启用了跨账户功能，则还可以创建告警，以监视其他 AWS 账户。不支持创建跨账户复合告警。支持创建使用数学表达式的跨账户告警，但跨账户告警不支持 `ANOMALY_DETECTION_BAND`、`INSIGHT_RULE` 和 `SERVICE_QUOTA` 函数。

**注意**  
CloudWatch 不会测试或验证您指定的操作，也不会检测因试图调用不存在的操作而导致的任何 Amazon EC2 Auto Scaling 或 Amazon SNS 错误。请确保您的告警操作存在。

## CloudWatch 告警的常见功能
<a name="common-features-of-alarms"></a>

以下功能适用于所有 CloudWatch 告警：
+ 您可以创建的告警数量没有限制。要创建或更新告警，请使用 CloudWatch 控制台、[PutMetricAlarm](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricAlarm.html) API 操作，或 AWS CLI 中的 [put-metric-alarm](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-alarm.html) 命令。
+ 告警名称必须仅包含 UTF-8 字符，并且不能包含 ASCII 控制字符
+ 您可以使用 CloudWatch 控制台、[DescribeAlarms](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_DescribeAlarms.html) API 操作，或 AWS CLI 中的 [describle-alarms](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/describe-alarms.html) 命令来列出任何或所有当前已配置的告警和列出任意特定状态的告警。
+ 您可以使用 [DisableAlarmActions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_DisableAlarmActions.html) 和 [EnableAlarmActions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_EnableAlarmActions.html) API 操作或 AWS CLI 中的 [disable-alarm-actions](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/disable-alarm-actions.html) 和 [enable-alarm-actions](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/enable-alarm-actions.html) 命令来禁用或启用警报操作。
+ 您可以使用 [SetAlarmState](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_SetAlarmState.html) API 操作或 AWS CLI 中的 [set-alarm-state](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/set-alarm-state.html) 命令将告警设为任意状态，以对其进行测试。此短暂状态变更只会持续到下一个告警比较发生之时。
+ 您可以在创建自定义指标之前为该自定义指标创建告警。为了使告警有效，必须在告警定义中包含自定义指标的所有维度以及指标命名空间和指标名称。要执行此操作，您可以使用 [PutMetricAlarm](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricAlarm.html) API 操作，或 AWS CLI 中的 [put-metric-alarm](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-alarm.html)命令。
+ 您可以使用 CloudWatch 控制台、[DescribeAlarmHistory](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_DescribeAlarmHistory.html) API 操作，或 AWS CLI 中的 [describe-alarm-history](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/describe-alarm-history.html) 命令查看告警的历史记录。CloudWatch 可将告警历史记录保存 30 天。每个状态转换都标有一个唯一的时间戳。个别情况下，一个状态变更的历史记录可能显示多个通知。通过时间戳可以确认独特的状态变更。
+  您可以在 CloudWatch 控制台的导航面板中通过 *Favorites and recents*（收藏夹和最近记录）选项收藏最近访问过的警报，具体方法为：将鼠标悬停在您想要收藏的警报上方，然后选择它旁边的星号。
+ 警报有评估周期配额。评估周期的计算方式为用警报周期乘以所用的评估周期数。
  + 对于警报周期至少为一小时（3600 秒）的警报，最长评估周期为七天。
  + 对于周期较短的警报，最长评估周期为一天。
  + 使用自定义 Lambda 数据来源的警报的最长评估周期为一天。

**注意**  
在特定情况下，某些 AWS 资源不会向 CloudWatch 发送指标数据。  
例如，Amazon EBS 可能不会发送未附加到 Amazon EC2 实例的可用卷的指标数据，因为该卷没有要监控的指标活动。如果为此类指标设置了一个告警，您可能会注意到其状态变为 `INSUFFICIENT_DATA`（数据不足）。这可能表示资源处于不活动状态，并不一定表示出现了问题。您可以指定每个告警如何处理丢失数据。有关更多信息，请参阅 [配置 CloudWatch 告警处理缺失数据的方式](alarms-and-missing-data.md)。