Grafana 告警入门 - 第 2 部分

Grafana 告警入门 - 第 2 部分

Grafana 告警入门教程第 2 部分是Grafana 告警入门教程第 1 部分的延续。

本指南深入探讨 Grafana 告警中更复杂但也同样基础的元素:告警实例通知策略

在介绍每个组件后,您将学习如何

  • 配置返回多个告警实例的告警规则
  • 创建将触发中的告警实例路由到不同联系点的通知策略
  • 使用标签匹配告警实例和通知策略

如果您组织中有多个联系点,或者您的告警规则返回多个指标需要将每个告警实例分别路由到特定联系点,那么了解告警实例和通知策略将非常有用。本教程将介绍每个概念,然后说明如何在实际场景中应用这两个概念。

开始之前

您可以通过多种方式跟随本教程学习。

  • Grafana Cloud

    继续阅读告警实例

  • 交互式学习环境

    • 或者,您可以在我们的交互式学习环境中尝试此示例:Grafana 告警入门 - 第 2 部分。这是一个完全配置好的环境,所有依赖项均已安装。
  • Grafana 开源版

    • 如果您选择在本地运行 Grafana Stack,请确保已安装以下应用

    • Docker Compose(包含在 Docker for Desktop for macOS 和 Windows 中)

    • Git

设置 Grafana Stack(开源用户)

为了演示使用 Grafana Stack 观测数据,请下载并运行以下文件。

  1. 克隆教程环境仓库

    git clone https://github.com/grafana/tutorial-environment.git
  2. 切换到您克隆仓库的目录

    cd tutorial-environment
  3. 运行 Grafana Stack

    docker compose up -d

    第一次运行 docker compose up -d 时,Docker 会下载本教程所需的所有资源。这可能需要几分钟,具体取决于您的网络连接。

    注意

    如果您系统上已运行 Grafana、Loki 或 Prometheus,可能会看到错误,因为 Docker 镜像正在尝试使用您本地安装已占用的端口。如果出现这种情况,请停止这些服务,然后再次运行该命令。

告警实例

告警实例是与告警规则查询返回的指标匹配的事件。

我们来考虑一个使用 Grafana 监控网站流量的场景。您设置了一个告警规则,如果在特定时间段内(例如,过去 5 分钟内)页面浏览量超过某个阈值(超过 1000 次),则触发一个告警实例。

如果查询返回多个时间序列,则每个时间序列表示不同的监控指标或方面。在这种情况下,告警规则会单独应用于每个时间序列。

Screenshot displaying alert instances in the context of an alert rule, highlighting the specific alerts triggered by the rule and their respective statuses
告警规则上下文中的告警实例

在此场景中,每个时间序列都会根据告警规则进行独立评估。这会导致为每个时间序列创建一个告警实例。与桌面端页面浏览量对应的时间序列达到了阈值,因此会产生一个处于触发中(Firing)状态的告警实例,并发送告警通知。移动端告警实例状态保持正常(Normal)

通知策略

通知策略将告警路由到不同的通信渠道,从而减少告警噪音并控制何时以及如何发送告警。例如,您可以使用通知策略确保有关服务器停机的关键告警立即发送给 On-call 工程师。另一个用例可能是将性能告警路由到开发团队进行审查和处理。

主要特征

  • 通过标签匹配告警和策略来路由告警通知
  • 管理何时发送通知
Screenshot illustrating the routing of alerts with notification policies, including the configuration and flow of alerts through different notification channels
使用通知策略路由告警

在上述图中,告警实例和通知策略通过标签进行匹配。例如,标签 team=operations 将告警实例“Pod stuck in CrashLoop”和“Disk Usage -80%”匹配到子策略,这些子策略会将告警通知发送到特定的联系点(operations@grafana.com)。

创建通知策略

如果您希望将告警规则返回的指标分别处理,将每个告警实例路由到特定联系点,则需要创建通知策略。

  1. 在浏览器中,登录您的 Grafana Cloud 账号。

    开源版和交互式学习环境用户:要登录,请导航到 https://:3000,Grafana 应该在此处运行。

  2. 导航到 Alerts & IRM > Alerting > Notification policies

  3. 在默认策略中,点击 + New child policy

  4. Label字段中输入 device,在Value字段中输入 desktop

  5. Contact point下拉菜单中,选择 Webhook

    注意

    如果您没有任何联系点,请添加一个联系点

  6. 点击 Save Policy

    这个新的子策略将匹配标签 device=desktop 的告警路由到 Webhook 联系点。

  7. 重复上述步骤创建第二个子策略以匹配另一个告警实例。标签使用:device=mobile。联系点使用 Webhook 集成。或者,尝试使用不同的 Webhook 端点或不同的集成

创建返回告警实例的告警规则

您即将创建的告警规则旨在监控网页流量页面浏览量。目标是探索什么是告警实例以及如何利用标签匹配器和通知策略路由单个告警实例。

创建告警规则

  1. 导航到 Alerts & IRM > Alerting > Alert rules
  2. 点击 New alert rule

输入告警规则名称

使其简短且具有描述性,因为这将出现在您的告警通知中。例如,web-traffic

定义查询和告警条件

在本节中,我们使用 Grafana 托管告警规则创建的默认选项。默认选项允许我们定义查询、表达式(用于处理数据 - UI 中的 WHEN 字段)以及触发告警必须满足的条件(在默认模式下是阈值)。

Grafana 包含一个测试数据源,可生成模拟的时间序列数据。本教程的演示环境包含此数据源。如果您在使用 Grafana Cloud 或您自己的本地 Grafana 实例,可以通过Connections菜单添加数据源。

  1. 从下拉菜单中选择 TestData 数据源。

  2. Scenario 中选择 CSV Content

  3. 复制以下 CSV 数据

    device,views
    desktop,1200
    mobile,900

    上述 CSV 数据模拟了一个返回多个时间序列的数据源,每个时间序列都会导致为此特定时间序列创建一个告警实例。请注意,返回的数据与告警实例章节中的示例匹配。

  4. Alert condition章节

    • Last 保留为 reducer 函数(WHEN)的值,并将 1000 保留为阈值。这是告警规则应触发的上限值。
  5. 点击 Preview alert rule condition 运行查询。

应该返回两个系列。desktop 处于触发中(Firing)状态,mobile 处于正常(Normal)状态。值 10 表示条件为 truefalse

Screenshot showing a preview of a query in Grafana that returns two alert instances, including the query results and relevant alert details
在 Grafana 中返回两个告警实例的查询预览。

添加文件夹和标签

  1. Folder中,点击 + New folder 并输入名称。例如:web-traffic-alerts。此文件夹包含我们的告警规则。

设置评估行为

在告警实例的生命周期中,当不满足告警条件(阈值)时,告警实例状态为正常(Normal)。类似地,当条件被违反(持续时间长于待定周期,在本教程中为 0)时,告警实例状态切换回告警中(Alerting),这意味着告警规则状态为触发中(Firing),并发送通知。

设置评估行为

  1. Evaluation group and interval中,重复上述步骤创建新的评估组。命名为 1m(指“1 分钟”)。
  2. 选择一个Evaluation interval(告警评估频率)。选择 1m
  3. pending period设置为 0s(零秒),这样告警规则在条件满足时立即触发。

配置通知

在本节中,您可以选择如何路由告警实例。由于我们希望通过通知策略进行路由,因此需要确保标签与告警实例匹配。

  1. 选择 Use notification policy

  2. 点击 Preview routing。根据现有标签,您应该看到哪些策略与告警匹配的预览。应该有两个告警实例匹配先前在每个通知策略中设置的标签:device=desktopdevice=mobile

    这些类型的标签由数据源查询生成,可用于匹配我们的通知策略,而无需手动将它们添加到告警规则中。

    Screenshot showing a routing preview of matched notification policies, detailing how alerts are matched and routed to specific notification channels
    匹配的通知策略路由预览

    注意

    即使两个标签都匹配策略,也只有处于触发中(Firing)状态的告警实例会产生告警通知。

  3. 点击 Save rule and exit

现在我们已经设置好告警规则,是时候检查告警通知了。

接收告警通知

配置好告警规则后,无论何时告警触发或解决,您都应该在联系点接收到告警通知。在我们的示例中,由于我们配置了标签来匹配通知策略,每个告警实例都应该被单独路由。评估间隔结束后(1 分钟),您应该在 Webhook 端点接收到告警通知。

Screenshot showing the exploration of alert notification details in a webhook endpoint, displaying the content and structure of the alert payload received by the endpoint
在 Webhook 端点探索告警通知详情

告警通知详情显示,对应于桌面设备网站浏览量的告警实例已通过通知策略正确路由到 Webhook 联系点。通知还显示该实例处于触发中(Firing)状态,并且包含标签 device=desktop,正是此标签使得告警实例的路由成为可能。

您可以随意更改告警规则中的 CSV 数据,以触发匹配标签 device=mobile 的告警实例路由。

总结

在本教程中,您学习了 Grafana 告警如何使用数据源查询生成的标签路由单个告警实例,并将这些标签与通知策略匹配,进而将告警通知路由到特定的联系点。

如果您遇到任何问题,欢迎在我们的Grafana 社区论坛发帖提问。

Grafana 告警第 3 部分中了解更多

提示

Grafana 告警入门 - 第 3 部分中,您将学习如何有效地对告警通知进行分组。