基于数值数据的警报 - Amazon Managed Grafana

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

基于数值数据的警报

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

对于支持 Grafana 9.x 版本的 Grafana 工作区,请参阅 使用 Grafana 版本 9

对于支持 Grafana 8.x 版本的 Grafana 工作区,请参阅 使用 Grafana 版本 8

本主题将介绍 Grafana 如何处理数值数据而非时间序列数据的警报。

在某些数据来源中,非时间序列的数值数据可以直接发出警报,或传递到服务器端表达式(SSE)。这样可以在数据来源中进行更多处理,从而提高效率,还可以简化警报规则。当基于数值数据(而不是时间序列数据)生成警报时,不需要将每个带标签的时间序列缩减为一个单一数字。相反,带标签的数字会返回给 Grafana。

表格数据

查询表格数据的后端数据来源支持此功能:

  • SQL 数据来源,比如 MySQL、Postgres、MSSQL 和 Oracle。

  • 基于 Azure Kusto 的服务:Azure Monitor(日志)、Azure Monitor(Azure Resource Graph)和 Azure Data Explorer。

如果满足以下条件,则使用 Grafana 管理的警报或 SSE 的查询在这些数据来源中会被视为数值查询:

  • 在数据来源查询中,“格式为”选项设置为“表”。

  • 从查询返回给 Grafana 的表响应仅包含一个数值(例如 int、double、float)列和可选的附加字符串列。

如果存在字符串列,这些列将成为标签。列的名称将成为标签名称,每行的值将成为相应标签的值。如果返回多行,则每行都应通过其标签进行唯一标识。

示例

对于名为“DiskSpace”的 MySQL 表:

时间 Host 磁盘 PercentFree

2021-June-7

web1

/etc

3

2021-June-7

web2

/var

4

2021-June-7

web3

/var

8

...

...

...

...

您可以查询按时间筛选的数据,而不将时间序列返回给 Grafana。例如,当可用空间低于 5% 时,将按主机、磁盘触发警报:

SELECT Host , Disk , CASE WHEN PercentFree < 5.0 THEN PercentFree ELSE 0 END FROM ( SELECT Host, Disk, Avg(PercentFree) FROM DiskSpace Group By Host, Disk Where __timeFilter(Time)

此查询会向 Grafana 返回以下表响应:

Host 磁盘 PercentFree

web1

/etc

3

web2

/var

4

web3

/var

0

如果在警报规则中将此查询用作条件,则对值为非零的情况发出警报。因此,将生成三个警报实例:

标签 Status

{Host=web1,disk=/etc}

提示

{Host=web2,disk=/var}

提示

{Host=web3,disk=/var}

正常