查询和条件 - Amazon Managed Grafana

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

查询和条件

本文档主题专为支持 Grafana 版本 10.x 的 Grafana 工作空间而设计。

有关支持 Grafana 9.x 版本的 Grafana 工作空间,请参阅。在 Grafana 版本 9 中工作

有关支持 Grafana 8.x 版本的 Grafana 工作空间,请参阅。在 Grafana 版本 8 中工作

在Grafana中,查询在从支持的数据源获取和转换数据方面起着至关重要的作用,这些数据源包括MySQL和PostgreSQL等数据库、Prometheus、InfluxDB和Graphite等时间序列数据库以及亚马逊、Azure Monitor和谷歌云监控等服务。 OpenSearch CloudWatch

有关支持的数据源的更多信息,请参阅数据源和 Grafana 警报

执行查询的过程包括定义数据源、指定要检索的所需数据以及应用相关的筛选器或转换。使用特定于所选数据源的查询语言或语法来构造这些查询。

在 Alerting 中,您可以定义查询以获取要测量的数据,以及触发警报规则之前需要满足的条件。

警报规则由一个或多个查询和表达式组成,用于选择要测量的数据。

有关查询和表达式的更多信息,请参阅查询和转换数据

数据源查询

Grafana 中的查询可以通过多种方式应用,具体取决于所使用的数据源和查询语言。每个数据源的查询编辑器都提供了一个自定义的用户界面,可帮助您编写利用其独特功能的查询。

由于查询语言之间的差异,每个数据源查询编辑器的外观和功能都不同。根据您的数据源,查询编辑器可能会提供自动完成功能、指标名称、变量建议或可视化查询构建界面。

一些常见的查询组件类型包括:

指标或数据字段-指定要检索的特定指标或数据字段,例如 CPU 使用率、网络流量或传感器读数。

时间范围-定义要提取数据的时间范围,例如最近一小时、特定日期或自定义时间范围。

筛选器-应用筛选器根据特定标准缩小数据范围,例如按特定标签、主机或应用程序筛选数据。

聚合-对数据执行聚合以计算给定时间段内的平均值、总和或计数等指标。

分组-按特定维度或标签对数据进行分组,以创建聚合视图或细分。

注意

Grafana 不支持使用模板变量的警报查询。如需更多信息,访问 Grafana Labs 论坛。

表达式查询

在 Grafana 中,表达式用于对数据源查询的数据执行计算、转换或聚合。它允许您根据数学运算、函数或逻辑表达式创建自定义指标或修改现有指标。

通过利用表达式查询,用户可以执行诸如计算两个值之间的百分比变化、应用对数或三角函数之类的函数、聚合特定时间范围或维度的数据,以及实现条件逻辑来处理不同的场景。

在警报中,您只能对 Grafana 管理的警报规则使用表达式。对于每个表达式,您可以从数学表达式、简化表达式和重采样表达式中进行选择。这些规则被称为多维规则,因为它们会为每个系列生成单独的警报。

您也可以使用经典条件,它会创建一条警报规则,在满足条件时触发单个警报。因此,即使满足多个系列的警报条件,Grafana 也只发送一个警报。

注意

经典条件的存在主要是出于兼容性的考虑,应尽可能避免使用。

减少

将所选时间范围内的时间序列值聚合为单个值。

数学

对时间序列和数字数据执行自由形式的数学函数/运算。可用于预处理时间序列数据或为数字数据定义警报条件。

重新采样

将时间范围重新对齐到一组新的时间戳,这在比较来自不同数据源的时间序列数据时很有用,否则这些数据源的时间戳将无法对齐。

Threshold

检查是否有任何时间序列数据与阈值条件相匹配。

阈值表达式允许您比较两个单一值。0当条件为假且条件为真1时,它会返回。以下阈值函数可用:

  • 位于上方 (x > y)

  • 在下面 (x < y)

  • 在范围内 (x > y1 且 x < y2)

  • 超出范围 (x < y1 AND x > y2)

经典状态

检查是否有任何时间序列数据与警报条件相匹配。

注意

无论有多少时间序列满足条件,经典条件表达式查询始终只生成一个警报实例。经典条件的存在主要是出于兼容性的考虑,应尽可能避免使用。

聚合

Grafana Alerting 提供以下聚合函数,使您能够进一步完善查询。

这些函数仅适用于 R ed uce 和 Classic 条件表达式。

函数 Expression 作用
avg 减少/经典 显示值的平均值
min 减少/经典 显示最低值
max 减少/经典 显示最高值
sum 减少/经典 显示所有值的总和
count 减少/经典 计算结果中值的数量
last 减少/经典 显示最后一个值
median 减少/经典 显示中位数
diff Classic 显示最新值和最旧值之间的差异
diff_abs Classic 显示差异的绝对值
百分比差异 Classic 显示最新值和最旧值之间差异的百分比值
百分比差异_abs Classic 显示 percent_diff 的绝对值
count_non_null Classic 显示结果集中未包含的值的计数 null

警报条件

警报条件是根据警报产生的值来确定是否触发警报的查询或表达式。只有一个条件可以决定警报的触发。

定义查询和/或表达式后,选择其中一个作为警报规则条件。

当查询的数据满足定义的条件时,Grafana 会触发关联的警报,该警报可以配置为通过各种渠道发送通知,例如电子邮件、Slack 或。 PagerDuty这些通知会告知您所满足的条件,使您可以采取适当的措施或调查潜在的问题。

默认情况下,使用最后添加的表达式作为警报条件。

恢复阈值

为了减少警报抖动带来的噪音,您可以设置一个与警报阈值不同的恢复阈值。

当指标徘徊在警报阈值条件附近时,就会出现抖动警报,这可能会导致频繁的状态变化,从而导致生成过多的通知。

Grafana 管理的警报规则将在特定的时间间隔内进行评估。在每次评估期间,都会根据警报规则中设置的阈值检查查询结果。如果指标的值高于阈值,则会触发警报规则并发送通知。当该值低于阈值并且该指标有活动警报时,该警报将得到解决,并发送另一条通知。

为噪音较大的指标创建警报规则可能很棘手。也就是说,当指标的值持续高于或低于阈值时。这叫做 flapping,会导致一系列开火(已解决)触发通知和嘈杂的警报状态历史记录。

例如,如果你有一个延迟警报,阈值为 1000 毫秒,并且该数字在 1000 左右波动(比如 980->1010-> 990-> 1020 等等),那么每个警报都会触发通知。

要解决这个问题,你可以设置一个(自定义)恢复阈值,这基本上意味着使用两个阈值而不是一个。当超过第一个阈值时会触发警报,只有在超过第二个阈值时才会解决警报。

例如,您可以将阈值设置为 1000 毫秒,将恢复阈值设置为 900 毫秒。这样,警报规则只有在低于 900 毫秒且抖动减少时才会停止触发。