Grafana 报警入门 - 第 2 部分

简介

这是 Grafana 报警入门教程 的第 2 部分。

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

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

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

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

报警实例

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

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

如果查询返回多个时间序列,则每个时间序列代表一个不同的指标或正在监控的方面。在这种情况下,报警规则将分别应用于每个时间序列。

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

在此场景中,每个时间序列都独立地针对报警规则进行评估。这将导致为每个时间序列创建一个报警实例。对应于桌面页面浏览量的时间序列满足阈值,因此导致一个处于**触发**状态的报警实例,并为此发送报警通知。移动报警实例状态保持**正常**。

通知策略

通知策略 将警报路由到不同的通信渠道,从而减少警报噪音并控制警报的发送时间和方式。例如,您可以使用通知策略来确保有关服务器停机的关键警报会立即发送给值班工程师。另一个用例可能是将性能警报路由到开发团队以供审查和采取行动。

主要特征

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

在上图中,报警实例和通知策略通过标签进行匹配。例如,标签 team=operations 将报警实例“**Pod 卡在 CrashLoop 中**”和“**磁盘使用率 -80%**”与发送警报通知到特定联系点([email protected])的子策略相匹配。

创建通知策略

如果您希望通过将每个报警实例路由到特定联系点来单独处理报警规则返回的指标,则可以创建一个通知策略。在 Grafana 中,点击屏幕左上角的图标以访问导航菜单。

  1. 导航到**警报和 IRM > 报警 > 通知策略**。

  2. 在默认策略中,点击**+ 新建子策略**。

  3. 在**标签**字段中输入 device,在**值**字段中输入 desktop

  4. 从**联系点**下拉菜单中选择**Webhook**。

    注意

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

  5. 点击**保存策略**。

    此新的子策略将与标签 device=desktop 匹配的警报路由到 Webhook 联系点。

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

创建一个返回报警实例的报警规则

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

添加数据源

Grafana 包含一个 测试数据源,用于创建模拟的时间序列数据。

  1. 在 Grafana 中,导航到**连接 > 添加新连接**。

  2. 搜索**TestData**。

  3. 点击**添加新的数据源**。

  4. 点击**保存并测试**。

    您应该会看到一条消息确认数据源正在工作。

创建报警规则

  1. 导航到**告警 > 告警规则**。
  2. 点击**新建告警规则**。

输入报警规则名称

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

定义查询和报警条件

在本节中,我们定义查询、表达式(用于操作数据)以及触发告警必须满足的条件。

  1. 从下拉菜单中选择**TestData**数据源。
  2. 从**场景**中选择**CSV 内容**。
  3. 复制以下 CSV 数据
device,views
desktop,1200
mobile,900

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

  1. 移除“B”**缩减表达式**(点击垃圾桶图标)。缩减表达式是默认的,在本例中,由于查询到的数据已经缩减,因此不需要。请注意,阈值表达式现在是您的**告警条件**。
  2. 在“C”**阈值表达式**中
    • 将**输入**更改为“**A**”以选择数据源。
    • 输入1000作为阈值。这是告警规则应触发时超过的值。
  3. 点击**预览**运行查询。

它应该返回两个序列。desktop处于触发状态,mobile处于正常状态。值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 中返回两个告警实例的查询预览。

设置评估行为

在告警实例的生命周期中,当告警条件(阈值)未满足时,告警实例状态为**正常**。类似地,当条件被违反(超过挂起时间,在本教程中为 0)时,告警实例状态切换回**告警**,这意味着告警规则状态为**触发**,并且会发送通知。

设置评估行为

  1. 在**文件夹**中,点击**+ 新建文件夹**并输入名称。例如:web-traffic-alerts。此文件夹将包含我们的告警。
  2. 在**评估组**中,重复上述步骤以创建一个新的评估组。我们将将其命名为1m(指“1 分钟”)。
  3. 选择评估间隔(告警将被评估的频率)。选择1m
  4. 将挂起时间设置为0s(零秒),以便在条件满足时立即触发告警规则。

配置标签和通知

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

  1. 选择**使用通知策略**。

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

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

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

    注意

    即使两个标签都与策略匹配,也只有处于触发状态的告警实例才会生成告警通知。
  3. 点击**保存规则并退出**。

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

接收报警通知

现在告警规则已配置,您应该会在每次告警触发并解决时,在联系人点收到告警通知。在我们的示例中,每个告警实例都应该单独路由,因为我们配置了标签以匹配通知策略。评估间隔结束后(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 联系人点。通知还显示实例处于**触发**状态,并且包含标签device=desktop,这使得告警实例的路由成为可能。

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

总结

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

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

祝您监控愉快!