菜单
开源

玩转 Mimir

Grafana Mimir 是一个分布式、水平可伸缩、高可用的 Prometheus 长期存储。

在本教程中,您将

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

前提条件

提示

或者,您可以在我们的交互式学习环境中尝试此示例:玩转 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
    • 三个单体模式 (monolithic-mode) 的 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 仪表盘

打开本地主机上的 Grafana https://:9000,查看显示 Grafana Mimir 集群状态和健康状况的仪表盘。这些仪表盘查询 Grafana Mimir 以显示指标。

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

几点注意事项

  • Grafana Mimir 启动后,通常需要几分钟才能在仪表盘中显示有意义的指标。
  • 由于本教程在没有 Query-scheduler 或 Memcached 的情况下运行 Grafana Mimir,因此相关的面板预计为空。

Grafana 中安装的仪表盘取自 Grafana Mimir mixin,它包含了 Grafana Labs 监控 Grafana Mimir 的最佳实践仪表盘、记录规则和告警。要了解有关 Mixin 的更多信息,请查看 Grafana Mimir Mixin 文档。要了解 Grafana 如何连接到 Grafana Mimir,请查看 Mimir 数据源

配置您的第一个记录规则

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

  1. 打开 Grafana 告警
  2. 点击新建记录规则,这也允许您配置记录规则。
  3. 配置记录规则
    1. 给规则命名,例如 sum:up
    2. 选择数据源字段中选择 Mimir
    3. 在右侧的生成器 | 代码字段中选择 代码
    4. 指标浏览器查询字段中输入 sum(up)
    5. 命名空间字段中输入 example-namespace
    6. 分组字段中输入 example-group
    7. 点击右上角的保存并退出按钮。

您的 sum:up 记录规则将显示处于 up 状态的 Mimir 实例数量,即可以抓取到指标。该规则正在 Grafana Mimir Ruler 中创建,很快就可以进行查询。

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

配置您的第一个告警规则

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

  1. 打开 Grafana 告警
  2. 点击新建告警规则
  3. 配置告警规则
    1. 规则名称字段中输入 MimirNotRunning
    2. 选择数据源字段中选择 Mimir
    3. 指标浏览器查询字段中输入 count(up == 0)。由于所有实例都在运行,这当前显示 no data
  4. 向下滚动到设置评估行为
    1. 选择新建文件夹,并在文件夹名称字段中输入example-folder
    2. 选择新建评估组,并在分组名称字段中输入example-group。将评估间隔设置为30秒
  5. 向下滚动到配置标签和通知
    1. 选择联系点下拉菜单并选择grafana-default-email
  6. 点击保存规则并退出按钮。

您的 MimirNotRunning 告警规则正在 Grafana Mimir Ruler 中创建,预计当 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 的状态,它应该在大约 30 秒后切换到“正常”状态。

总结

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

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

bash
docker-compose down -v