Grafana Alerting 入门 - 第 2 部分

Grafana Alerting 入门 - 第 2 部分

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

在本指南中,我们将深入探讨 Grafana Alerting 更复杂但同样重要的元素:告警实例通知策略

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

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

了解告警实例和通知策略非常有用,特别是当您的组织有多个联系点,或者当您的告警规则返回一系列指标,您希望通过将每个告警实例路由到特定的联系点来单独处理这些指标时。本教程将介绍每个概念,然后说明如何在实际场景中应用这两个概念。

开始之前

您可以通过不同方式跟随本教程进行操作。

  • Grafana Cloud

    继续阅读 告警实例

  • 交互式学习环境

  • Grafana OSS

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

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

    • Git

设置 Grafana Stack (OSS 用户)

为了演示使用 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 镜像试图使用您本地安装已占用的端口。如果是这种情况,请停止这些服务,然后再次运行该命令。

告警实例

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

让我们考虑一个使用 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)

通知策略

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

主要特点

  • 通过使用标签匹配告警和策略来路由告警通知
  • 管理何时发送通知
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 账户。

    OSS 和交互式学习环境用户:要登录,请访问 https://:3000,这是 Grafana 应运行的地址。

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

  3. 在默认策略中,点击 + 新建子策略

  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 管理的告警规则创建的默认选项。默认选项允许我们定义查询、一个表达式(用于处理数据——界面中的 WHEN 字段),以及触发告警必须满足的条件(在默认模式下是阈值)。

Grafana 包含一个测试数据源(test data source),用于创建模拟时间序列数据。此数据源包含在本教程的演示环境中。如果您正在使用 Grafana Cloud 或您自己的本地 Grafana 实例,可以通过连接(Connections)菜单添加该数据源。

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

  2. 场景(Scenario)选择 CSV 内容(CSV Content)

  3. 复制以下 CSV 数据

    device,views
    desktop,1200
    mobile,900

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

  4. 告警条件(Alert condition)部分

    • 最后(Last)保留作为归约函数(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)

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

接收告警通知

配置好告警规则后,当告警触发和解决时,您应该在联系点收到告警通知。在我们的示例中,由于我们配置了标签以匹配通知策略,每个告警实例应该被单独路由。评估间隔结束后(1m),您应该在 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 Alerting 如何使用数据源查询生成的标签路由单个告警实例,并将这些标签与通知策略匹配,从而将告警通知路由到特定的联系点。

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

Grafana Alerting 第 3 部分学习更多

提示

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