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

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

创建和管理 Grafana 警报规则

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

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

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

警报规则是一组评估标准,用于确定警报是否已启动。该规则由一个或多个查询和表达式、一个条件、评估频率以及满足条件的持续时间(可选)组成。

当查询和表达式选择要评估的数据集时,条件会设置警报必须达到或超过该阈值才能创建警报。间隔指定评估警报规则的频率。配置后的持续时间表示必须满足条件的时长。这些规则还可以定义缺少数据时的警报行为。

以下各节介绍创建和管理不同类型的 Grafana 警报规则。

创建 Cortex 或 Loki 管理的警报规则

使用 Grafana,你可以为外部 Cortex 或 Loki 实例创建警报规则。

注意

Cortex 是亚马逊托管服务用于 Prometheus 和 Prometheus 数据源的时间序列数据库。

先决条件

  • 确认您拥有对 Prometheus 数据源的写入权限。否则,您将无法创建或更新 Cortex 管理的警报规则。

  • 对于 Cortex 和 Loki 数据源,请通过配置各自的服务来启用标尺 API。

    • Lokilocal 规则存储类型是 Loki 数据源的默认值,仅支持查看规则。要编辑规则,请配置其他存储类型之一。

    • Cortex — 使用传统/api/prom前缀,不是/prometheus。Prometheus 数据源同时支持 Cortex 和 Prometheus,Grafana 预计查询 API 和 Ruler API 都使用相同的网址。您不能为 Ruler API 提供单独的网址。

注意

如果您不想管理特定 Loki 或 Prometheus 数据源的警报规则,请进入其设置并清除 “通过警报用户界面管理警报” 复选框。

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

  2. 选择 “新建警报规则”。

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

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

    • 从 “规则类型” 下拉列表中,选择 Cortex/Lo ki 管理的警报。

    • “选择数据源” 下拉列表中,选择 Prometheus 或 Loki 数据源。

    • 从 “命名空间” 下拉列表中,选择现有的规则命名空间。否则,请选择 Add new 并输入名称来创建一个。命名空间可以包含一个或多个规则组,并且只能用于组织目的。有关更多信息,请参阅 Cortex 或 Loki 规则组和命名空间

    • 从 “” 下拉列表中,选择所选命名空间内的现有群组。否则,请选择 Add new 并输入名称来创建一个。新创建的规则将附加到组的末尾。组内的规则以固定的间隔按顺序运行,评估时间相同。

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

    该值可以是 PromQL 或 LogQL 表达式。如果评估结果中至少有一个序列的值大于 0,则规则会启动警报。为每个系列创建一个警报。

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

    在条件的 For 文本框中,指定在启动警报之前条件必须为真的时长。如果您指定5m,则在启动警报之前,条件必须持续五分钟。

    注意

    满足条件后,警报进入Pending状态。如果条件在指定的持续时间内保持活动状态,则警报将转换为Firing状态。如果不再满足,它将恢复到Normal状态。

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

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

    • 添加 Runbook 网址、面板、仪表板和警报 ID。

    • 添加自定义标签。

  7. 选择 “预览警报” 以评估规则并查看它会产生哪些警报。它显示警报列表,其中包含每个警报的状态和值。

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

创建 Cortex 或 Loki 管理的录制规则

您可以为外部 Cortex 或 Loki 实例创建和管理录制规则。记录规则会提前计算经常需要的表达式或计算成本很高的表达式,并将结果保存为一组新的时间序列。查询这个新的时间序列更快,特别是对于仪表板,因为每次仪表板刷新时它们都会查询相同的表达式。

先决条件

对于 Cortex 和 Loki 数据源,请通过配置各自的服务来启用标尺 API。

  • Lokilocal 规则存储类型是 Loki 数据源的默认值,仅支持查看规则。要编辑规则,请配置其他存储类型之一。

  • Cortex — 将 Grafana Prometheus 数据源配置为指向 Cortex 时,请使用传统前缀,而不是。/api/prom /prometheusPrometheus 数据源同时支持 Cortex 和 Prometheus,Grafana 预计查询 API 和 Ruler API 都使用相同的网址。您不能为 Ruler API 提供单独的网址。

注意

如果您不想管理特定 Loki 或 Prometheus 数据源的警报规则,请进入其设置并清除 “通过警报用户界面管理警报” 复选框。

添加 Cortex 或 Loki 托管录制规则
  1. 在 Grafana 控制台的 Grafana 菜单中,选择警报(铃铛)图标以打开出现有警报的警报页面。

  2. 选择 “新建警报规则”。

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

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

    • 从 “规则类型” 下拉列表中,选择 Cortex/Lo ki 管理的警报。

    • “选择数据源” 下拉列表中,选择 Prometheus 或 Loki 数据源。

    • 从 “命名空间” 下拉列表中,选择现有的规则命名空间。否则,请选择 Add new 并输入名称来创建一个。命名空间可以包含一个或多个规则组,并且只能用于组织目的。有关更多信息,请参阅 Cortex 或 Loki 规则组和命名空间

    • 从 “” 下拉列表中,选择所选命名空间内的现有群组。否则,请选择 Add new 并输入名称来创建一个。新创建的规则将附加到组的末尾。组内的规则以固定的间隔按顺序运行,评估时间相同。

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

    该值可以是 PromQL 或 LogQL 表达式。如果评估结果中至少有一个序列的值大于 0,则规则会启动警报。为每个系列创建一个警报。

  5. 步骤 3 中,添加与规则关联的其他元数据。

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

    • 添加 Runbook 网址、面板、仪表板和警报 ID。

    • 添加自定义标签。

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

创建 Grafana 托管警报规则

Grafana 允许您创建警报规则,用于查询一个或多个数据源,减少或转换结果,并将它们相互比较或修复阈值。处理完毕后,Grafana 会向联系人发送通知。

注意

在使用 Grafana 警报时创建 Grafana 托管警报规则会导致在匹配规则时发送多条通知。某些联络点提供商可能有可配置的选项来删除重复的通知。

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

  2. 选择 “新建警报规则”。

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

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

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

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

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

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

    • 要进行查询,请从下拉列表中选择一个数据源。

    • 添加一个或多个查询或表达式(有关表达式的详细信息,请参阅 Grafana 文档中的表达式)。

    • 对于每个表达式,选择 “经典条件” 以创建单个警报规则,或者从 “数学”、“减少”、“重新采样” 选项中进行选择,为每个系列生成单独的警报。有关这些选项的详细信息,请参阅单一规则和多维规则

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

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

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

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

    • 评估期限中,指定启动警报之前条件必须为真的时长。

      注意

      违反条件后,警报将进入Pending状态。如果在指定的持续时间内仍未达到该条件,则警报将转换为Firing状态。如果不再满足,它将恢复到Normal状态。

    • “不配置数据和错误处理” 中,配置缺少数据时的警报行为。使用中的指南。不处理任何数据或错误案例

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

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

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

    • 添加 Runbook 网址、面板、仪表板和警报 ID。

    • 添加自定义标签。

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

单一规则和多维规则

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

单维规则(经典条件)

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

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

多维规则

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

注意

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

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

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

  • 添加包含规则条件的Math表达式。如果规则不应启动警报,则查询或 reduce 表达式已经返回 0,如果规则不应启动警报,则无需返回正数。

    一些示例:

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

    • $B < $C * 100以防如果 B 的值小于 C 的值乘以 100,则应启动警报。如果要比较的查询的结果中有多个系列,则如果不同查询的系列具有相同的标签,或者一个是另一个系列的子集,则会匹配来自不同查询的序列。

注意

Grafana 不支持使用模板变量的警报查询。有关更多信息,请访问社区页面。设置警报时,警报查询中不支持模板变量

多维规则的性能注意事项

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

多维警报可能会对 Grafana 工作空间的性能以及数据源的性能产生重大影响,因为 Grafana 会查询这些警报以评估您的警报规则。在您尝试优化监控系统的性能时,以下注意事项可能会有所帮助。

  • 规则评估频率-警报规则的 “评估每个” 属性控制规则评估的频率。我们建议使用可接受的最低评估频率。

  • 结果集基数-使用规则创建的警报实例的数量会影响其性能。假设您正在监控队列中每个 VM 上每个 API 路径的 API 响应错误。该集合的基数是路径数乘以虚拟机数。例如,您可以通过监控每台虚拟机而不是每个 VM 的每条路径的错误总数来降低结果集的基数。

  • 查询的复杂性-数据源可以快速处理和响应的查询消耗的资源更少。尽管这一考虑因素不如上面列出的其他注意事项重要,但如果您尽可能减少了这些注意事项,那么查看单个查询的性能可能会有所不同。您还应该意识到评估这些规则会对您的数据源产生性能影响。警报查询通常是监控数据库处理的绝大多数查询,因此影响 Grafana 实例的相同负载因素也会影响它们。

已达到配额错误

在一个工作空间内可以拥有的警报实例数量有配额。当达到该数字时,您将无法再在该工作区中创建新的警报规则。使用多维警报,警报实例的数量可能会随着时间的推移而变化。

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

  • 如果您只创建单维规则,则每条规则都是一个警报实例。您可以在单个工作空间中创建与警报实例配额相同数量的规则,仅此而已。

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

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

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

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

  • 您可以通过删除警报规则或编辑多维警报来减少警报实例的数量(例如,为每台虚拟机设置一个错误警报,而不是在虚拟机中为每个 API 设置一个错误警报)。

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

  • 当保存警报并在不超过警报配额的情况下恢复评估时,“已达到配额” 错误可能会在一段时间内继续在 Grafana 控制台中显示(直到其评估间隔),但是,警报规则评估确实会开始,如果达到规则阈值,则会发送警报。

  • 有关警报配额以及其他配额的详细信息,请参阅亚马逊托管 Grafana 服务配额

不处理任何数据或错误案例

选择在缺少数据或出现错误时如何处理警报行为的选项。

下表列出了用于不处理任何数据的选项。

“无数据” 选项 行为

没有数据

DatasourceNoData使用警报规则的名称和 UID 以及未返回任何数据的数据源的 UID 作为标签创建警报。

提示

将警报规则状态设置为Alerting

OK

将警报规则状态设置为Normal

下表列出了处理错误案例的选项。

错误或超时选项 行为

提示

将警报规则状态设置为 Alerting

OK

将警报规则状态设置为 Normal

错误

DatasourceError使用警报规则的名称和 UID 以及未返回任何数据的数据源的 UID 作为标签创建警报。

警报规则的注释和标签

注释和标签是与来自警报规则、数据源响应以及警报规则评估结果的警报关联的键值对。它们可以直接用于警报通知,也可以在模板模板函数中用于动态创建通知联系人。

注释

注解是键值对,可提供有关警报的更多信息。您可以使用以下注释:descriptionsummaryrunbook_urlalertIddashboardUid、和panelId。它们显示在用户界面的规则和警报详细信息中,也可以在联系人消息模板中使用。

标签

标签是包含警报信息的键值对。为警报设置的标签是在整个警报评估和通知过程中生成和添加的。它们的使用方式如下。

  • 警报的完整标签集在 Grafana Alerts 中唯一标识该警报。

  • Alertmanager 使用标签来匹配通知策略中的静默警报和警报组。

  • 警报界面显示评估该规则时生成的每个警报实例的标签。

  • 联络点可以访问标签以动态生成通知,其中包含与生成通知的警报相关的特定信息。

  • 可以为警报规则添加标签。这些手动配置的标签能够使用模板函数并引用其他标签。如果标签之间发生冲突,则此处添加到警报规则中的标签优先。

展开注释和标签时,可以使用以下模板变量。

名称 描述

$labels

来自查询或条件的标签。例如,{{ $labels.instance }}{{ $labels.job }}。当规则使用经典条件时,此功能不可用。

$values

针对此警报规则评估的所有 reduce 表达式和数学表达式的值。例如,,{{ $values.A }}{{ $values.A.Labels }},表达式refID{{ $values.A.Value }}A哪里。当规则使用经典条件时,此功能不可用

$value

警报实例的值字符串。例如,[ var='A' labels={instance=foo} value=10 ]

管理警报规则

报页面列出了警报规则。默认情况下,规则按数据源类型分组。Grafana 部分列出了由 Grafana 管理的规则,Cortex/ Loki 部分列出了与 Prometheus 兼容的数据源的规则。您可以查看与 Prometheus 兼容的数据源的提醒规则,但不能对其进行编辑。

查看警报规则

使用 Grafana 警报,您可以在一个页面中查看所有警报。

查看警报详情
  1. 在 Grafana 控制台的 Grafana 菜单中,选择警报(铃铛)图标打开警报页面。默认情况下,规则按数据源类型分组显示。您还可以按每个警报的当前状态进行查看(下文将详细介绍这些警报)。

  2. “查看方式” 中,您可以通过选择自己喜欢的选项在群组视图和状态视图之间切换。

  3. 选择某行旁边的箭头可查看该行的更多详细信息。规则的详细信息包括规则标签、注释、数据源和查询,以及由该规则生成的警报实例列表。

群组视图

群组视图显示按文件夹分组的 Grafana 警报规则以及按 + 分组的 Loki 或 Prometheus 警报规则。namespace group这是默认的规则列表视图,用于管理规则。您可以展开每个组以查看该组中的规则列表。进一步展开规则以查看其详细信息。您还可以展开操作按钮和规则生成的警报,以查看其详细信息。

状态视图

状态视图显示按状态分组的警报规则。使用此视图可以大致了解哪些规则处于什么状态。每条规则都可以展开以查看其详细信息。操作按钮和该规则生成的任何警报,以及每个警报都可以进一步展开以查看其详细信息。

筛选警报规则

您可以通过多种方式筛选 “警报” 页面上显示的警报规则。

  • 您可以筛选以显示查询特定数据源的规则,方法是选择 “选择数据源”,然后选择要筛选的数据源。

  • 您可以通过在 “按标签搜索” 中选择搜索条件来按标签进行筛选。一些示例标准包括environment=productionregion=~US|EUseverity!=warning

  • 您可以通过选择 “按状态筛选警报”,然后选择要查看的状态来筛选以显示处于特定状态的规则。

编辑或删除警报规则

Grafana 托管警报规则只能由对存储规则的文件夹具有编辑权限的用户编辑或删除。具有编辑或管理员角色的用户可以编辑或删除外部 Cortex 或 Loki 实例的警报规则。

编辑或删除规则
  1. 展开规则,直到可以看到 “”、“编辑” 和 “删除” 的规则控件。

  2. 选择 “编辑” 以打开 “创建规则” 页面。使用与创建规则相同的方式进行更新。有关详细信息,请参阅创建 Grafana 托管警报规则或中的说明创建 Cortex 或 Loki 管理的警报规则

  3. (可选)选择删除以删除规则。

Cortex 或 Loki 规则组和命名空间

您可以整理规则。规则是在规则组中创建的,规则组被组织到命名空间中。规则组中的规则按固定间隔按顺序运行。默认间隔为一分钟。您可以重命名 Cortex 或 Loki 命名空间和规则组,也可以编辑规则组评估间隔。

编辑规则组或命名空间
  1. 在 Grafana 控制台的 Grafana 菜单中,选择警报(铃铛)图标打开警报页面。

  2. 导航到要编辑的规则组或命名空间中的规则。

  3. 选择编辑(钢笔)图标。

  4. 更改规则组或命名空间。

    注意

    对于命名空间,您只能编辑名称。对于规则组,您可以更改组中规则的名称或评估间隔。例如,您可以选择1m每分钟评估一次规则,也可以30s选择每 30 秒评估一次。

  5. 选择保存更改