玩转 Mimir
Grafana Mimir 是一个分布式、水平可伸缩、高可用的 Prometheus 长期存储。
在本教程中,您将
- 使用 Docker Compose 在本地运行 Grafana Mimir
- 运行 Prometheus 抓取一些指标并远程写入 Grafana Mimir
- 运行 Grafana 探索 Grafana Mimir 仪表盘
- 在 Grafana Mimir 中配置测试记录规则和告警
前提条件
- Git
- Docker 和 Docker Compose
- 主机上端口
9000
和9009
可用
提示
或者,您可以在我们的交互式学习环境中尝试此示例:玩转 Mimir。
这是一个已完全配置好的环境,所有依赖项均已安装。
下载教程配置
- 使用 Git 命令行克隆 Grafana Mimir 仓库
git clone https://github.com/grafana/mimir.git cd mimir
- 导航到教程目录
cd docs/sources/mimir/get-started/play-with-grafana-mimir/
注意
本教程中的说明假定您的工作目录是
docs/sources/mimir/get-started/play-with-grafana-mimir/
。
启动 Grafana Mimir 及依赖项
使用以下 Docker 命令启动您的本地环境
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 运行在
https://:9000
- Grafana Mimir 运行在
https://:9009
要了解更多关于 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 中配置一个记录规则。
- 打开 Grafana 告警。
- 点击新建记录规则,这也允许您配置记录规则。
- 配置记录规则
- 给规则命名,例如
sum:up
。 - 在选择数据源字段中选择 Mimir。
- 在右侧的生成器 | 代码字段中选择 代码。
- 在指标浏览器查询字段中输入
sum(up)
。 - 在命名空间字段中输入
example-namespace
。 - 在分组字段中输入
example-group
。 - 点击右上角的保存并退出按钮。
- 给规则命名,例如
您的 sum:up
记录规则将显示处于 up
状态的 Mimir 实例数量,即可以抓取到指标。该规则正在 Grafana Mimir Ruler 中创建,很快就可以进行查询。
- 打开 Grafana Explore,并查询记录规则生成的时间序列;配置后可能需要一分钟才能显示
sum:up
- 确认查询结果返回值为
3
,这是您本地环境中当前运行的 Mimir 实例数量。
配置您的第一个告警规则
告警规则允许您基于 PromQL 表达式定义告警条件,并将触发的告警通知发送到 Grafana Mimir Alertmanager。在本节中,您将使用 Grafana 提供的工具在 Grafana Mimir 中配置一个告警规则。
- 打开 Grafana 告警。
- 点击新建告警规则。
- 配置告警规则
- 在规则名称字段中输入
MimirNotRunning
。 - 在选择数据源字段中选择 Mimir。
- 在指标浏览器查询字段中输入
count(up == 0)
。由于所有实例都在运行,这当前显示no data
。
- 在规则名称字段中输入
- 向下滚动到设置评估行为
- 选择
新建文件夹
,并在文件夹名称字段中输入example-folder
。 - 选择
新建评估组
,并在分组名称字段中输入example-group
。将评估间隔设置为30秒
。
- 选择
- 向下滚动到配置标签和通知
- 选择
联系点
下拉菜单并选择grafana-default-email
。
- 选择
- 点击保存规则并退出按钮。
您的 MimirNotRunning
告警规则正在 Grafana Mimir Ruler 中创建,预计当 Grafana Mimir 实例数量少于三个时触发。您可以通过打开 Grafana 告警页面并展开“example-namespace > example-group”行来检查其状态。由于当前所有三个实例都在运行,状态应为“正常”。
为了看到告警触发,我们可以在 Grafana Mimir 集群中引入一个故障
- 突然终止三个 Grafana Mimir 实例中的一个
docker compose kill mimir-3
- 打开 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 实例
- 启动 Grafana Mimir 实例
docker-compose start mimir-3
- 打开 Grafana 告警,查看告警
MimirNotRunning
的状态,它应该在大约 30 秒后切换到“正常”状态。
总结
在本教程中,您在本地以高可用模式启动了 Grafana Mimir,并启动了一个 Prometheus 实例,该实例远程写入了一些指标到 Grafana Mimir。然后,您使用 Grafana 查询了存储在 Mimir 中的指标,并在一些 Grafana 仪表盘中将其可视化。最后,您通过 Grafana 告警 UI 配置了一个记录规则和告警,并在条件满足时验证了告警按预期触发。
完成教程后,运行此 Docker 命令释放所有 Docker 资源
docker-compose down -v