本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
警报基础知识
本文档主题专为支持 Grafana 8.x 版本的 Grafana 工作空间而设计。
有关支持 Grafana 版本 10.x 的 Grafana 工作空间,请参阅。在 Grafana 版本 10 中工作
有关支持 Grafana 9.x 版本的 Grafana 工作空间,请参阅。在 Grafana 版本 9 中工作
本节提供有关 Grafana 警报基本概念的信息。
警报概念
下表描述了 Grafana 警报中的关键概念。
关键概念或功能 | 定义 |
---|---|
警报的数据源 |
选择要从中查询和可视化指标、日志和跟踪的数据源。 |
调度器 |
评估您的警报规则;该组件定期对数据源运行查询。它仅适用于 Grafana 管理的规则。 |
警报管理器 |
管理警报实例的路由和分组。 |
警报规则 |
一组评估标准,用于确定何时应触发警报规则。警报规则由一个或多个查询和表达式、一个条件、评估频率以及满足条件的持续时间组成。一条警报规则可以生成多个警报实例。 |
警报实例 |
警报实例是警报规则的实例。一维警报规则有一个警报实例。多维报警规则有一个或多个警报实例。与多个结果匹配的单个警报规则(例如 10 个虚拟机的 CPU)被视为多个(在本例中为 10 个)警报实例。这个数字可能会随着时间的推移而变化。例如,监控系统中所有虚拟机 CPU 使用率的警报规则随着虚拟机的添加而具有更多的警报实例。有关警报实例配额的更多信息,请参阅。已达到配额错误 |
警报组 |
默认情况下,Alertmanager 使用根通知策略的标签对警报实例进行分组。这可以控制重复数据删除和发送到联系点的警报实例组。 |
联络点 |
定义触发警报规则时如何通知您的联系人。 |
消息模板 |
创建可重复使用的自定义模板并在联络点中使用它们。 |
通知政策 |
一组规则,规定警报在何处、何时以及如何分组并发送到联络点。 |
标签和标签匹配器 |
标签唯一标识警报规则。它们将警报规则与通知策略和静默联系起来,确定应由哪个策略处理警报规则以及哪些警报规则应静音。 |
沉默 |
停止来自一个或多个警报实例的通知。静音和静音计时的区别在于,静音持续一段指定的时间段,静音计时按定期计划进行。使用标签匹配器使警报实例静音。 |
静音计时 |
指定不希望生成或发送新通知的时间间隔。您可以定期冻结警报通知,例如在维护期间。必须与现有的通知策略相关联。 |
警报数据源
Grafana 托管警报查询以下启用了警报的后端数据源。
-
内置或由 Grafana 开发和维护的数据源
Alertmanager
:、、Prometheus
(包括适用于 Prometheus 的亚马逊托管服务)Graphite
、、、、、、、Loki
、、、、、、、、、、、、、、、InfluxDB
、、Amazon OpenSearch Service
Google Cloud Monitoring
、Amazon CloudWatch
和。Azure Monitor
MySQL
PostgreSQL
MSSQL
OpenTSDB
Oracle
Azure Monitor
在数字数据上发出警报
可以直接向非时间序列格式的数字数据发出警报,也可以将其传递到服务器端表达式中。这允许在数据源中进行更多处理并提高效率,还可以简化警报规则。当针对数字数据而不是时间序列数据发出警报时,无需将每个已标记的时间序列简化为一个数字。相反,标有标签的数字会返回给 Grafana。
表格数据
查询表格数据的后端数据源支持此功能,包括 SQL 数据源,例如 MySQL、Postgres、MSSQL 和 Oracle。
使用 Grafana 托管警报或服务器端表达式的查询在以下数据源中被视为数字查询:
-
如果在数据源查询
Table
中将该Format AS
选项设置为。 -
如果通过查询返回给 Grafana 的表响应仅包含一个数字(例如 int、double 或 float)列,以及可选的其他字符串列。
如果存在字符串列,则这些列将成为标签。列的名称成为标签名称,每行的值成为相应标签的值。如果返回多行,则每行都应通过其标签进行唯一标识。
示例
如果你有一个名为 Diskspace 的 MySQL 表,如下所示。
时间 | Host | 磁盘 | PercentFree |
---|---|---|---|
2021 年 6 月 7 日 |
web1 |
/等等 |
3 |
2021 年 6 月 7 日 |
web2 |
/var |
4 |
2021 年 6 月 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 |
/等等 |
3 |
web2 |
/var |
4 |
web3 |
/var |
0 |
当此查询用作警报规则中的条件时,则值为非零的情况会发出警报。因此,生成了三个警报实例,如下表所示。
标签 | Status |
---|---|
{host=Web1、disk=/等} |
提示 |
{host=Web2,disk=/var} |
提示 |
{host=Web3,disk=/var} |
正常 |
警报管理器
Grafana 内置了对 Prometheus Alertmanager 的支持。Alertmanager 可帮助对警报规则进行分组和管理,在警报引擎之上添加了一层编排层。默认情况下,Grafana 托管警报的通知由内嵌式警报管理器处理,该管理器是核心 Grafana 的一部分。您可以从 Alertmanager 下拉列表中选择 Grafana 选项,从 Grafana 警报用户界面中配置警报管理器的联系方式、通知策略和模板。
Grafana 警报支持外部警报管理器配置(有关警报管理器作为外部数据源的更多信息,请参阅)。连接到 AlertManager 数据源添加外部警报管理器时,警报管理器下拉列表会显示可用的外部警报管理器数据源的列表。选择一个数据源来创建和管理独立 Cortex 或 Loki 数据源的警报。
警报规则的状态和运行状况
警报规则的状态和运行状况可帮助您了解有关警报的几个关键状态指标。有三个关键组件:警报状态、警报规则状态和警报规则运行状况。尽管相关,但每个组件传达的信息略有不同。
警报规则状态
-
正常 — 评估引擎返回的时间序列均未处于
Pending
或Firing
状态。 -
待定 — 评估引擎返回的时间序列中至少有一个是
Pending
。 -
开火 — 评估引擎返回的时间序列中至少有一个是
Firing
。
警报状态
-
正常 — 对于评估引擎返回的每个时间序列,警报规则的条件均为 false。
-
警报-对于评估引擎返回的至少一个时间序列,警报规则的条件为真。在启动警报之前条件必须为真的时长(如果已设置),则满足或已超过。
-
待处理-对于评估引擎返回的至少一个时间序列,警报规则的条件为真。在启动警报之前条件必须为真的时长(如果已设置)尚未满足。
-
NoData— 警报规则未返回时间序列,该时间序列的所有值均为空,或者时间序列的所有值均为零。
-
错误-尝试评估警报规则时出错。
警报规则运行状况
-
确定 — 评估警报规则时没有错误。
-
错误-评估警报规则时出错。
-
NoData— 规则评估期间返回的至少一个时间序列中缺少数据。