使用 Mimir

简介

Grafana Mimir 是一个分布式、水平可扩展且高可用的长期存储,用于 Prometheus

在本教程中,您将

  • 使用 Docker Compose 在本地运行 Grafana Mimir
  • 运行 Prometheus 抓取一些指标并远程写入 Grafana Mimir
  • 运行 Grafana 以探索 Grafana Mimir 仪表盘
  • 在 Grafana Mimir 中配置一个测试记录规则和告警

先决条件

下载教程配置

  1. 使用 Git 命令行创建 Grafana Mimir 存储库的副本
    bash
    git clone https://github.com/grafana/mimir.git
    cd mimir
  2. 导航到教程目录
    bash
    cd docs/sources/mimir/get-started/play-with-grafana-mimir/

注意:本教程中的说明假设您的工作目录为 docs/sources/mimir/get-started/play-with-grafana-mimir/

启动 Grafana Mimir 和依赖项

使用以下 Docker 命令开始运行本地设置

bash
docker-compose up -d

此命令启动

  • Grafana Mimir
    • 三个单体模式 Mimir 实例,以提供高可用性
    • 启用多租户(租户 ID 为 demo
  • Minio
    • 与 S3 兼容的持久存储,用于块、规则和告警
  • Prometheus
    • 抓取 Grafana Mimir 指标,然后将它们写回 Grafana Mimir,以确保摄取指标的可用性
  • Grafana
    • 包括一个预安装的数据源,用于查询 Grafana Mimir
    • 包括用于监控 Grafana Mimir 的预安装仪表盘
  • 负载均衡器
    • 一个简单的基于 NGINX 的负载均衡器,它在主机上公开 Grafana Mimir 端点

下图说明了这些组件之间的关系:本 Grafana Mimir 教程的架构图

以下端口将在主机上公开

要详细了解 Grafana Mimir 配置,您可以查看配置文件 config/mimir.yaml

探索 Grafana Mimir 仪表盘

在您的本地主机 https://127.0.0.1:9000 上打开 Grafana,并查看显示 Grafana Mimir 集群状态和运行状况的仪表盘。这些仪表盘查询 Grafana Mimir 以获取它们显示的指标。

首先,我们建议查看这些仪表盘

一些注意事项

  • Grafana Mimir 通常需要几分钟才能在仪表盘中显示有意义的指标。
  • 由于本教程运行 Grafana Mimir 时没有查询调度程序或 memcached,因此相关的面板预计将为空。

在 Grafana 中安装的仪表盘取自 Grafana Mimir mixin,该 mixin 包含 Grafana Labs 的监控 Grafana Mimir 的最佳实践仪表盘、记录规则和告警。要详细了解 mixin,请查看 Grafana Mimir mixin 文档。要详细了解 Grafana 如何连接到 Grafana Mimir,请查看 Mimir 数据源

配置第一个记录规则

记录规则允许您预先计算经常需要或计算量大的表达式,并将它们的结果保存为一组新的时间序列。在本节中,您将使用 Grafana 提供的工具在 Grafana Mimir 中配置一个记录规则。

  1. 打开 Grafana 告警
  2. 单击“新建记录规则”,它也允许您配置记录规则。
  3. 配置记录规则
    1. 在顶部选择器中选择“Mimir 或 Loki 记录规则”。
    2. 在“选择数据源”字段中选择“Mimir”。
    3. 在“规则名称”字段中键入 sum:up
    4. 在右侧的“构建器 | 代码”字段中选择“代码”。
    5. 在 **指标浏览器** 查询字段中输入 sum(up)
    6. 在 **命名空间** 字段中输入 example-namespace
    7. 在 **分组** 字段中输入 example-group
    8. 从右上角点击 **保存并退出** 按钮。

您的 sum:up 记录规则将显示 up 状态的 Mimir 实例数量,这意味着可以访问到以进行抓取。该规则现在正在 Grafana Mimir 规则器中创建,并将很快可供查询。

  1. 打开 Grafana Explore 并查询记录规则生成的系列,这可能需要长达一分钟才能在配置后显示。
    sum:up
  2. 确认查询返回的值为 3,这是当前在本地设置中运行的 Mimir 实例数量。

配置第一个告警规则

告警规则允许您基于 PromQL 表达式定义告警条件,并向 Grafana Mimir Alertmanager 发送有关触发告警的通知。在本节中,您将使用 Grafana 提供的工具在 Grafana Mimir 中配置告警规则。

  1. 打开 Grafana 告警
  2. 点击 **新建告警规则**。
  3. 配置告警规则
    1. 在顶部选择器中选择 **Mimir 或 Loki 告警**。
    2. 在“选择数据源”字段中选择“Mimir”。
    3. 在 **指标浏览器** 查询字段中输入 up == 0
    4. 在 **规则名称** 字段中输入 MimirNotRunning
    5. 在 **命名空间** 字段中选择 example-namespace
    6. 在 **分组** 字段中选择 example-group
    7. 从右上角点击 **保存并退出** 按钮。

您的 MimirNotRunning 告警规则现在正在 Grafana Mimir 规则器中创建,预计在 Grafana Mimir 实例数量少于三个时触发。您可以通过打开 Grafana 告警 页面并展开“example-namespace > example-group”行来检查其状态。由于所有三个实例目前都在运行,状态应为“正常”。

为了看到告警触发,我们可以引入 Grafana Mimir 集群中的故障。

  1. 突然终止三个 Grafana Mimir 实例中的一个。
    bash
    docker-compose kill mimir-3
  2. 打开 Grafana 告警 并查看 MimirNotRunning 告警的状态,它应该在大约一分钟后切换到“待处理”状态,并在另一分钟后切换到“触发”状态。注意:由于我们突然终止了 Mimir 实例,Grafana 告警 UI 可能会暂时显示查询规则时的错误:该错误将在 Grafana Mimir 内部健康检查检测到已终止的实例不健康后不久自动解决。

Grafana Mimir Alertmanager 尚未配置为通过通知渠道通知告警。要配置 Alertmanager,您可以打开 Grafana 中的 联系人点 页面并设置您首选的通知渠道。请注意,电子邮件接收器在此示例中不起作用,因为没有运行 SMTP 服务器。

在添加回已终止的 Mimir 实例以解决告警之前,请进入 Grafana Explore 页面并查询您的 sum:up 记录规则。您应该看到 sum:up 的值已降至 2,因为现在有一个实例已关闭。您还会注意到,即使一个实例已关闭,查询此规则以及所有其他指标仍然可以正常工作。这证明了像此演示中的三个实例部署一样的高可用性 Grafana Mimir 设置能够抵御单个节点故障。

要解决告警并从故障中恢复,请重新启动被突然终止的 Grafana Mimir 实例。

  1. 启动 Grafana Mimir 实例。
    bash
    docker-compose start mimir-3
  2. 打开 Grafana 告警 并查看 MimirNotRunning 告警的状态,它应该在大约一分钟后切换到“正常”状态。

总结

在本教程中,您在本地启动了高可用性设置中的 Grafana Mimir,以及一个将一些指标远程写入 Grafana Mimir 的 Prometheus 实例。然后,您使用 Grafana 查询存储在 Mimir 中的这些指标,并在一些 Grafana 仪表盘中对其进行可视化。最后,您通过 Grafana 告警 UI 配置了一个记录规则和一个告警,并验证了当条件满足时告警按预期触发。

完成本教程后,请运行此 Docker 命令释放所有 Docker 资源。

bash
docker-compose down -v