

# 告警数据查询
<a name="alarm-data-queries"></a>

CloudWatch 告警可以监控各种数据来源。根据您的监控需求选择适当的查询类型。

## 指标
<a name="alarm-query-metrics"></a>

监控单个 CloudWatch 指标。这是跟踪资源性能的最常见告警类型。有关指标的更多信息，请参阅 [CloudWatch 指标概念](cloudwatch_concepts.md)。

有关更多信息，请参阅 [根据静态阈值创建 CloudWatch 告警](ConsoleAlarms.md)。

## 指标数学
<a name="alarm-query-metric-math"></a>

您可以针对基于一个或多个 CloudWatch 指标的数学表达式的结果设置告警。用于告警的数学表达式可以包含多达 10 个指标。每个指标都必须使用相同的时间段。

对于基于数学表达式的告警，您可以指定您希望 CloudWatch 如何对待缺失数据点。在这种情况下，如果数学表达式没有返回该数据点的值，则认为该数据点缺失。

基于数学表达式的告警无法执行 Amazon EC2 操作。

有关指标数学表达式和语法的更多信息，请参阅 [将数学表达式与 CloudWatch 指标结合使用](using-metric-math.md)。

有关更多信息，请参阅 [根据指标数学表达式创建 CloudWatch 告警](Create-alarm-on-metric-math-expression.md)。

## 指标洞察
<a name="alarm-query-metrics-insights"></a>

 CloudWatch Metrics Insights 查询支持使用类 SQL 语法进行大规模指标查询。您可以针对任何 Metrics Insights 查询创建告警，包括返回多个时间序列的查询。此功能极大地扩展了监控选择。在基于 Metrics Insights 查询创建告警时，该告警会随着受监控资源组中资源的增减而自动调整。只需创建一次告警，任何符合查询定义和筛选条件的资源都会在其相应指标可用时加入告警监控范围。对于多时间序列查询，每个返回的时间序列都会成为告警的影响因素，从而实现更精细且更具动态的监控。

以下是 CloudWatch Metrics Insights 告警的两个主要使用案例：
+ 异常检测与聚合监控

  基于返回单个聚合时间序列的 Metrics Insights 查询创建告警。此方法适用于监控基础设施或应用程序聚合指标的动态告警场景。例如，您可以监控所有实例的最大 CPU 使用率，且告警阈值会随着实例集的扩展自动调整。

  要创建聚合监控告警，请使用以下查询结构：

  ```
  SELECT FUNCTION(metricName)
                    FROM SCHEMA(...)
                    WHERE condition;
  ```
+ 按资源的实例集监控

  创建一个可监控多个时间序列的告警，其中每个时间序列都作为一个影响因素独立运行，并拥有各自的状态。当任何影响因素进入“ALARM”状态，告警就会激活，从而触发资源特定的操作。例如，监控多个 RDS 实例之间的数据库连接，防止连接被拒绝。

  要监控多个时间序列，请使用以下查询结构：

  ```
  SELECT AVG(DatabaseConnections)
                    FROM AWS/RDS
                    WHERE condition
                    GROUP BY DBInstanceIdentifier
                    ORDER BY AVG() DESC;
  ```

  创建多时间序列告警时，查询中必须包含两个关键子句：
  + 一个 `GROUP BY` 子句，用于定义如何构造时间序列及确定查询将生成的时间序列数量
  + 一个 `ORDER BY` 子句，用于对指标进行确定性排序，使告警能够首先评估最重要的信号

  这些子句对于准确评估告警至关重要。`GROUP BY` 子句会将数据拆分为独立的时间序列（例如按实例 ID 拆分），而 `ORDER BY` 子句可确保这些时间序列在告警评估期间按优先顺序得到一致处理。

有关如何创建多时序告警的更多信息，请参阅 [基于多时间序列 Metrics Insights 查询创建告警](multi-time-series-alarm.md)。

## 日志组指标筛选条件
<a name="alarm-query-log-metric-filter"></a>

 您可以根据日志组指标筛选条件创建告警。使用指标筛选条件，您可以在日志数据发送到 CloudWatch 时查找其中的字词和模式。有关更多信息，请参阅《Amazon CloudWatch Logs 用户指南》中的 [使用筛选条件从日志事件创建指标](https://docs.amazonaws.cn/AmazonCloudWatch/latest/logs/MonitoringLogData.html)**。

有关如何根据日志组指标筛选条件创建告警的更多信息，请参阅 [根据日志触发警报](Alarm-On-Logs.md)。

## PromQL
<a name="alarm-query-promql"></a>

您可以创建一个警报，该警报使用 Prometheus 查询语言（PromQL）即时查询来监控通过 CloudWatch OTLP 端点摄取到的指标。

有关 PromQL 警报的工作原理的更多信息，请参阅 [PromQL 警报](alarm-promql.md)。

有关如何创建 PromQL 警报的更多信息，请参阅[使用 PromQL 查询创建警报](Create_PromQL_Alarm.md)。

## 外部数据来源
<a name="alarm-query-external"></a>

您可以创建警报，监控源自非 CloudWatch 中的数据来源的指标。有关创建与这些其他数据来源的连接的更多信息，请参阅[查询源自其他数据来源的指标](MultiDataSourceQuerying.md)。

有关如何根据连接的数据来源创建告警的更多信息，请参阅 [基于连接的数据来源创建警报](Create_MultiSource_Alarm.md)。