paint-brush
使用 MinIO 运行 Grafana Mimir 以实现持久指标存储的指南by@minio
9,028
9,028

使用 MinIO 运行 Grafana Mimir 以实现持久指标存储的指南

MinIO8m2023/08/15
Read on Terminal Reader

Mimir 将数据存储在对象存储中以实现持久性,从而使其能够利用无处不在、经济高效且高耐用性的 MinIO。
featured image - 使用 MinIO 运行 Grafana Mimir 以实现持久指标存储的指南
MinIO HackerNoon profile picture
0-item
1-item
2-item

分布式系统包含许多移动部件,监控指标、日志和跟踪等遥测数据以获得可见性并允许团队确定问题的根本原因至关重要。许多可观测性计划的目标是提高可用性和性能。 Grafana Labs 制作了最广泛使用的开源可观察性堆栈之一(用于可视化的 Grafana、用于日志的 Loki、用于指标的 Mimir、用于跟踪的 Tempo、用于警报的 Alertmanager),并销售Grafana CloudGrafana Enterprise


Grafana Mimir 是一个 AGPLv3 许可的开源软件项目,与 MinIO 结合使用时,可为 Prometheus 指标提供可扩展的长期存储。 Mimir 使用基于微服务的可水平扩展的架构构建。每个微服务被称为一个组件,Mimir 作为由这些组件组成的单个二进制文件运行。大多数组件都是无状态的,不需要在重新启动之间保留任何数据。


当您将 Mimir 和 MinIO 结合起来时,您将生成一个特别适合满足企业云原生可观察性需求的基础架构,其中包括:


  • 性能: MinIO 将可扩展性和高性能相结合,使每个工作负载(无论要求有多高)都触手可及。 MinIO 具有惊人的性能 -最近的基准测试在 GET 上实现了 325 GiB/s (349 GB/s),在 PUT 上实现了 165 GiB/s (177 GB/s),仅使用 32 个现成 NVMe SSD 节点。


  • 规模: MinIO 没有任何限制,因为它可以通过服务器池水平扩展。每个服务器池都是一组独立的节点,拥有自己的计算、网络和存储资源。在多租户配置中,每个租户都是单个命名空间中的服务器池集群,与其他租户的服务器池完全隔离。通过将 MinIO 指向新的服务器池,可以轻松地将容量添加到现有系统,MinIO 会自动为其做好准备并将其投入使用。


  • 简单性:如果您宁愿使用 Mimir 而不是花几个小时摆弄对象存储,那么您找不到比 MinIO 更简单的解决方案了。 MinIO 只服务于对象——这就是我们所做的一切,并且我们执着于成为最好的。其他产品将对象和文件存储相结合,这会产生多个存储层,从而导致 Mimir 的查询响应时间出现延迟,并创建更复杂的架构,从而导致失败的可能性更大。


  • 多云: MinIO 诞生于云端,可以在任何硬件和软件组合上运行。丰富的集成意味着 MinIO 可以透明地插入现有的安全和管理工具及服务,以集中身份管理、加密密钥管理等。 MinIO 在裸机或任何版本的 Kubernetes(包括 GKE、EKS、AKS、Red Hat OpenShift、VMware Tanzu)上提供 S3 API 兼容的对象存储,并使用主动-主动复制高效同步数据。


Grafana Mimir的一些核心优势包括:


  • 易于安装和维护: Grafana Mimir 丰富的文档、教程和部署工具使其能够快速上手。使用其整体模式,您只需一个二进制文件即可启动并运行 Grafana Mimir,无需任何其他依赖项。部署后,使用 Grafana Mimir 打包的最佳实践仪表板、警报和操作手册可以轻松监控系统的运行状况。


  • 大规模可扩展性:您可以在多台机器上运行 Grafana Mimir 的水平可扩展架构,从而能够比单个 Prometheus 实例处理更多数量级的时间序列。内部测试表明 Grafana Mimir 可处理多达 10 亿个活动时间序列。


  • 指标的全局视图: Grafana Mimir 使您能够运行聚合来自多个 Prometheus 实例的系列的查询,为您提供系统的全局视图。它的查询引擎广泛地并行化查询执行,因此即使是最高基数的查询也能以极快的速度完成。


  • 廉价、耐用的指标存储: Grafana Mimir 使用对象存储进行长期数据存储,使其能够利用这种无处不在、经济高效、高耐用性的技术。它与多种对象存储实现兼容,包括 AWS S3、Google Cloud Storage、Azure Blob Storage、OpenStack Swift 以及任何与 S3 兼容的对象存储。


  • 高可用性: Grafana Mimir 复制传入指标,确保在机器故障时不会丢失数据。其水平可扩展架构还意味着它可以在零停机的情况下重新启动、升级或降级,这意味着指标提取或查询不会中断。


  • 原生多租户: Grafana Mimir 的多租户架构使您能够将数据和查询与独立团队或业务部门隔离,从而使这些组可以共享同一集群。高级限制和服务质量控制可确保容量在租户之间公平共享。


Mimir 被开发为可扩展性最强、性能最强的开源时间序列数据库。 Mimir 可以轻松扩展到 10 亿个指标甚至更多,其查询性能比 Cortex 快 40 倍,TSDB Mimir 就是为了取代 Cortex 而构建的。 Cortex 自 2018 年以来一直是 CNCF 项目,广泛用于存储 Prometheus 指标。在创建 Mimir 时,Grafana Labs 通过 AGPLv3 许可、访问控制以及改进的性能、可扩展性和可用性为企业级可观测性奠定了基础。


Grafana Labs 对 Mimir 的目标是:成为最佳可扩展时间序列数据库,无论指标格式如何。企业应该能够在不修改现有代码的情况下使用 Prometheus 指标(以及其他供应商协作的其他指标)。


现在我们已经了解了 Mimir 是什么,让我们看一下介绍性教程。

Grafana Mimir 和 MinIO 教程

本教程借鉴现有教程Play with Grafana Mimir来展示使用 Docker 开始使用 Mimir 是多么容易。


使用 Git 命令行创建 Grafana Mimir 存储库的副本:

 git clone https://github.com/grafana/mimir.git


导航到教程目录:

 cd mimir/docs/sources/tutorials/play-with-grafana-mimir/


启动 MinIO、Mimir、Prometheus、Grafana 和 NGINX

 docker compose up


这将显示以下内容:


  • Grafana Mimir - Mimir 的三个实例以实现高可用性。已启用多租户(租户 ID 为 demo)。
  • Prometheus - 抓取 Mimir 指标,然后将它们写回到 Mimir 以便它们可用
  • MinIO - 与 S3 兼容的软件定义的块、规则和警报的持久存储
  • Grafana - 包括用于查询 Mimir 的预安装数据源和用于监控 Mimir 的预安装仪表板
  • 负载均衡器 - 基于 NGINX 的负载均衡器,公开 Mimir 实例


使用以下端口:





如果您想深入了解本教程中使用的任何配置,请参阅保存到的 YAML 文件

~/mimir/docs/sources/tutorials/play-with-grafana-mimir/config/ 



要访问 Grafana,请启动浏览器并打开http://localhost:9000 。您将使用 Grafana 查看显示 Mimir 集群状态的仪表板。仪表板向 Mimir 查询它们显示的指标。从左上角的菜单中,单击仪表板,然后单击浏览以查看已为本教程预加载的仪表板。这些仪表板来自 Grafana Mimir mixin,它将 Grafana Labs 的最佳实践仪表板、记录规则和用于监控 Mimir 的警报打包在一起。



启动教程容器后,指标通常需要 3-5 分钟才能显示在 Grafana 仪表板中。我们还在没有入口网关、查询调度程序或内存缓存的情况下运行 Mimir,因此相关仪表板将为空。



在学习 Mimir 的早期阶段,首先浏览仪表板以进行写入、读取、查询和对象存储。例如,对象存储仪表板显示了自从我们启动 Mimir 以来发生的操作。


配置录音规则

记录规则是一种预先计算经常需要的或计算成本较高的表达式并将结果保存为一组新的时间序列的机制。按照以下说明使用 Grafana 在 Mimir 中配置记录规则。


sum:up记录规则将显示已启动且可进行抓取的 Mimir 实例的数量。创建规则后,即可将其查询并包含在仪表板中。


从左侧工具栏打开警报菜单,然后单击“新建警报规则”:



输入以下内容配置录制规则:


  1. 选择Mimir or Loki recording rule
  2. 配置以下内容:
  3. 规则名称 = sum:up
  4. 在选择数据源字段中选择 Mimir
  5. 命名空间 = example-namespace
  6. 组 = example-group
  7. 查询表达式 = sum(up)
  8. 选择右上角的“保存并退出”。


要验证新的记录规则是否正确运行,请从左侧菜单中打开“探索”:



在 Metric 下拉列表中,选择sum:up ,然后单击右上角的 Run query,然后单击 Inspector 按钮。在下面,单击“数据”可查看时间列表和查询结果。结果应该是“3”,表明 Mimir 的三个本地实例正在运行。


配置警报规则

基于 Mimir 构建的警报规则遵循与基于 Prometheus 和 Loki 构建的警报规则相同的PromQL格式。 Grafana 评估表达式,并在必要时使用 Alertmanager 发出警报。我们在之前的博文《使用 Prometheus 和 Grafana 进行多云监控和警报》中对此进行了深入研究。


我们将创建一个警报,当 Mimir 实例的数量降至三个以下时触发。


在左侧菜单中,将鼠标悬停在“警报”上,然后单击“新建警报规则”。



  1. 选择Mimir or Loki alert
  2. 配置以下内容:
  3. 规则名称 = MimirNotRunning
  4. 在选择数据源字段中选择Mimir
  5. 命名空间 = example-namespace
  6. 组 = example-group
  7. 查询表达式 = up == 0
  8. 选择右上角的“保存并退出”。


导航到警报页面,您将看到我们的 Mimir 记录规则和警报规则。请注意,警报旁边显示了一个漂亮、大、舒适的绿色正常状态,因为我们所有的 Mimir 容器仍在运行。



我们将通过终止三个 Mimir 实例之一来模拟错误情况(确保您位于~/mimir/docs/sources/tutorials/play-with-grafana-mimir目录中:

 docker compose kill mimir-3


由于我们突然终止 Mimir 实例,Grafana 在查询规则时会短暂显示错误。一旦 Mimir 的内部运行状况检查检测到已终止的实例运行状况不佳,此问题就会自动解决。


大约一分钟后,警报将很快显示黄色待处理状态。


再过一分钟,警报将变为红色“触发”状态:


如果我们为 Alertmanager 配置了通知通道,警报就会向适当的机制和联系人发出。请参阅使用 Prometheus 和 Grafana 进行多云监控和警报以获取说明。


在我们恢复终止的 Mimir 实例之前,请返回 Grafana 中的“探索”页面并查询我们的sum:up记录规则。我们可以看到,即使 Mimir 实例已关闭,Mimir 仍继续记录指标。



最后,恢复 Mimir 实例:

 docker compose start mimir-3


返回警报页面,您会发现我们的警报状态已恢复为“正常”。

结论

在本教程中,您学习了如何在高可用性配置中运行 Grafana Mimir 和 MinIO。我们使用 Mimir 本身的 Prometheus 指标,然后在 Grafana 中查询和可视化它们。我们还配置了记录规则和警报,并验证了满足条件时警报是否按预期触发。


您还可以配置 Mimir 和 Grafana 从 MinIO 中抓取 Prometheus 指标,并通过 AlertManager 发出警报。 Mimir 将数据存储在对象存储中以实现持久性,从而使其能够利用无处不在、经济高效且高耐用性的 MinIO。


试试格拉法娜·米米尔吧!如果您有疑问,请加入我们的Slack 频道或发送电子邮件至 [email protected]


也发布在这里