玩转 Mimir

玩转 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 启动几分钟后,仪表盘中才会显示有意义的指标。
  • 由于本教程运行的 Grafana Mimir 没有 query-scheduler 或 memcached,因此相关面板预计会是空的。

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

配置您的第一个记录规则

记录规则允许您预先计算频繁使用或计算成本高昂的表达式,并将其结果保存为一组新的时序数据。在本节中,您将使用 Grafana 提供的工具在 Grafana Mimir 中配置一个记录规则。

  1. 打开 Grafana 告警
  2. 点击 New recording rule(新建记录规则),您也可以在此配置记录规则。
  3. 配置记录规则
    1. 给规则命名,例如 sum:up
    2. Select data source(选择数据源)字段中选择 Mimir
    3. 在右侧的 Builder | Code(构建器 | 代码)字段中选择 Code(代码)。
    4. Metrics browser(指标浏览器)查询字段中输入 sum(up)
    5. Namespace(命名空间)字段中输入 example-namespace
    6. Group(分组)字段中输入 example-group
    7. 从右上角点击 Save and exit(保存并退出)按钮。

您的 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. 点击 New alert rule(新建告警规则)。
  3. 配置告警规则
    1. Rule name(规则名称)字段中输入 MimirNotRunning
    2. Select data source(选择数据源)字段中选择 Mimir
    3. Metrics browser(指标浏览器)查询字段中输入 count(up == 0)。这目前显示 no data(无数据),因为所有实例都在运行。
  4. 向下滚动到 Set evaluation behavior(设置评估行为)
    1. 选择 New folder(新建文件夹)并在 Folder name(文件夹名称)字段中输入 example-folder
    2. 选择 New evaluation group(新建评估组)并在 Group name(分组名称)字段中输入 example-group。将评估间隔设置为 30s
  5. 向下滚动到 Configure labels and notifications(配置标签和通知)
    1. 选择 Contract point(联系点)下拉菜单并选择 grafana-default-email
  6. 点击 Save rule and exit(保存规则并退出)按钮。

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

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

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

Grafana Mimir Alertmanager 尚未配置通过通知通道发送告警。要配置 Alertmanager,您可以在 Grafana 中打开 Contact points(联系点)页面并设置您偏好的通知通道。请注意,在此示例中电子邮件接收器不起作用,因为没有 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 秒后切换回“Normal”(正常)状态。

总结

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

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

bash
docker-compose down -v