创建 Grafana 管理的警报规则 - Amazon Managed Grafana

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

创建 Grafana 管理的警报规则

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

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

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

Grafana 允许您创建警报规则,以查询一个或多个数据来源,归约或转换结果,并将它们相互比较或与固定阈值进行比较。运行完成后,Grafana 会向联系点发送通知。

要添加 Grafana 管理的规则
  1. 在 Grafana 控制台的 Grafana 菜单中,选择警报(铃铛)图标,打开列出现有警报的警报页面。

  2. 选择新建警报规则

  3. 步骤 1 中,添加规则名称、类型和存储位置,如下所示:

    • 规则名称中,添加描述性名称。此名称将显示在警报规则列表中。这也是根据此规则创建的每个警报实例的 alertname 标签。

    • 规则类型下拉列表中,选择 Grafana 管理的警报

    • 文件夹下拉列表中,选择要存储规则的文件夹。如果未选择文件夹,规则将存储在 General 文件夹中。要创建文件夹,请选择下拉列表,并输入新文件夹名称。

  4. 步骤 2 中,添加要评估的查询和表达式。

    • 保留默认名称,或将鼠标悬停在其上方,选择编辑图标以更改名称。

    • 对于查询,请从下拉列表中选择一个数据来源。

    • 添加一个或多个查询或表达式

    • 对于每个表达式,可选择经典条件来创建单条警报规则,或从 MathReduceResample 选项中选择,为每个序列生成单独的警报。有关这些选项的详细信息,请参阅 单维规则和多维规则

    • 选择运行查询,以验证查询是否成功。

  5. 步骤 3 中,添加条件。

    • 条件下拉列表中,选择启动警报规则的查询或表达式。

    • 评估间隔中,指定评估频率。必须是 10 秒的倍数。例如 1m30s

    • 评估时长中,指定条件必须为 true 的持续时间,超过该时间后才会启动警报。

      注意

      如果条件被违反,警报将进入 Pending 状态。如果条件在指定的持续时间保持为违反状态,警报将转入 Firing 状态。如果不再保持此状态,则恢复到 Normal 状态。

    • 配置无数据和错误处理中,配置无数据情况下的警报行为。使用 处理无数据或错误的情况 中的指南。

    • 选择预览警报,检查此时运行查询的结果。预览不包括无数据和错误处理条件。

  6. 步骤 4 中,添加与规则相关联的其他元数据。

    • 添加描述和摘要以自定义警报消息。使用 标签和注释 中的指南。

    • 添加运行手册 URL、面板、控制面板和警报 ID。

    • 添加自定义标签。

  7. 选择保存以保存规则,或者选择保存并退出,以保存规则并返回警报页面。

在创建规则后,您便可以为规则创建通知。有关通知的更多信息,请参阅 管理警报通知

单维规则和多维规则

对于 Grafana 管理的警报规则,您可以创建具有经典条件的规则,也可以创建多维规则。

单维规则(经典条件)

使用经典条件表达式创建规则,可在满足条件时启动单个警报。对于返回多个序列的查询,Grafana 不会跟踪每个序列的警报状态。因此,即使满足多个序列的警报条件,Grafana 也只发送一个警报。

有关如何设置表达式格式的更多信息,请参阅 Grafana 文档中的表达式

多维规则

要为查询中返回的每个序列生成单独的警报实例,请创建多维规则。

注意

由多维规则生成的每个警报实例都会计入警报总配额。达到警报配额后,不会对规则进行评估。有关多维规则配额的更多信息,请参阅 达到配额错误

要根据单条规则创建多个实例,请使用 MathReduce、或 Resample 表达式来创建多维规则。例如,您可以:

  • 为每个查询添加 Reduce 表达式,将所选时间范围内的值聚合为一个值。(使用数字数据的规则不需要)。

  • 添加包含规则条件的 Math 表达式。如果查询或归约表达式已经返回 0(表示规则不应启动警报)或正数(表示规则应启动警报),则无需进行此操作。

    一些示例:

    • $B > 70:如果应该在 B 查询/表达式的值大于 70 时启动警报。

    • $B < $C * 100:如果应该在 B 的值小于 C 的值乘以 100 时启动警报。如果要比较的查询在其结果中包含多个序列,那么对于来自不同查询的序列,如果它们具有相同的标签,或者其中一个序列的标签是另一个序列标签的子集,就会进行匹配。

注意

Grafana 不支持使用模板变量的警报查询。有关更多信息,请访问社区页面:Template variables are not supported in alert queries while setting up Alert

多维规则的性能注意事项

每个警报实例都会计入警报配额。如果多维规则创建的实例超过警报配额所能容纳的数量,则不会对其进行评估,并且会返回配额错误。有关更多信息,请参阅 达到配额错误

多维警报可能会大幅影响 Grafana 工作区的性能,以及数据来源的性能(因为 Grafana 会查询数据来源,以评估警报规则)。在您尝试优化监控系统的性能时,以下注意事项可能会有所帮助。

  • 规则评估频率:警报规则的评估间隔属性可控制规则评估的频率。我们建议使用可接受的最低评估频率。

  • 结果集基数:使用规则创建的警报实例数量会影响其性能。假设您要在实例集的每台虚拟机上监控每个 API 路径的 API 响应错误。该集合的基数是路径数乘以虚拟机数。您可以减少结果集的基数,例如,通过监控每台虚拟机的总错误数(而不是每台虚拟机每条路径的错误数)做到这一点。

  • 查询的复杂性:对于数据来源可以快速处理和响应的查询,其消耗的资源更少。虽然这一考虑因素不如上述其他考虑因素重要,但如果您已尽可能降低了那些因素的影响,那么着眼于单个查询的性能可能会有所帮助。您还应该了解评估这些规则对数据来源的性能影响。通常,在监控数据库处理的查询中,警报查询占据了绝大多数,因此影响 Grafana 实例的负载因素也会影响这些警报查询。

达到配额错误

单个工作区中可以拥有的警报实例数量有配额限制。达到该数量后,您将无法再在该工作区中创建新的警报规则。对于多维警报,警报实例的数量可能会随时间变化。

处理警报实例时,请务必记住以下几点。

  • 如果您只创建单维规则,则每条规则都是一个警报实例。您可以在单个工作区中创建与警报实例配额数量相同的规则,但不能超过该数量。

  • 多维规则会创建多个警报实例,但在对警报实例进行评估之前,其数量是未知的。例如,如果您创建了跟踪 Amazon EC2 实例 CPU 使用率的警报规则,创建时可能有 50 个 EC2 实例(因此有 50 个警报实例),但如果您在一周后再添加 10 个 EC2 实例,则下次评估时将有 60 个警报实例。

    警报实例的数量在创建多维警报时评估,您无法创建出会立即超过警报实例配额的警报实例。由于警报实例的数量可能会发生变化,因此每次评估规则时,都会检查您的配额。

  • 在规则评估时,如果某条规则导致超出警报实例配额,那么,在对警报规则进行更新,使警报实例总数低于服务配额之前,不会评估该规则。发生这种情况时,您会收到一条警报通知,告知您已达到配额(该通知使用正在评估的规则的通知策略)。该通知包含一个 Error 注释,其值为 QuotaReachedError

  • 导致 QuotaReachedError 的规则将停止评估。只有在进行更新,且更新后的评估本身不会导致 QuotaReachedError 时,才会恢复评估。未评估的规则会在 Grafana 控制台中显示达到配额错误。

  • 要减少警报实例的数量,您可以移除警报规则,或编辑多维警报,使其具有的警报实例变少(例如,为每台虚拟机上的错误设置一个警报,而不是为虚拟机中的每个 API 的错误设置一个警报)。

  • 要恢复评估,请更新警报并保存。您可以对警报进行更新,以减少警报实例的数量。或者,如果您做出了其他可减少警报实例数量的更改,也可以不做任何更改,直接保存警报。如果评估可以恢复,就会恢复。如果会导致另一个 QuotaReachedError,则无法保存。

  • 如果警报被保存,并且恢复了评估,同时也没有超过警报配额,达到配额错误可能会继续在 Grafana 控制台中显示一段时间(时间最长为其评估间隔),但是,警报规则评估确实会开始,如果达到规则阈值,将发送警报。

  • 有关警报配额以及其他配额的详细信息,请参阅 Amazon Managed Grafana 的服务配额

处理无数据或错误的情况

选择在无数据或有错误时如何处理警报行为的选项。

下表列出了处理无数据的选项。

无数据选项 行为

无数据

创建警报 DatasourceNoData,将警报规则的名称和 UID,以及返回无数据的数据来源的 UID 作为标签。

提示

将警报规则状态设置为 Alerting

OK

将警报规则状态设置为 Normal

下表列出了处理错误情况的选项。

错误或超时选项 行为

提示

将警报规则状态设置为 Alerting

OK

将警报规则状态设置为 Normal

错误

创建警报 DatasourceError,将警报规则的名称和 UID,以及返回无数据的数据来源的 UID 作为标签。