云原生之运维监控实践-使用Prometheus与Grafana实现对MinIO服务的监测

背景

如果你要为应用程序构建规范或用户故事,那么务必先把应用程序每个组件的监控指标考虑进来,千万不要等到项目结束或部署之前再做这件事情。------《Prometheus监控实战》

去年写了一篇在Docker环境下部署若依微服务ruoyi-cloud项目的文章,当时使用的是 docker-compose 在单台机器上部署若依微服务 ruoyi-cloud 项目;在这个基础上,作为演示项目,我们计划实现对所有基础组件和微服务的监控。之前记录了搭建 PrometheusGrafana 监控系统的过程。今天这篇文章主要是记录下对分布式文件存储 MinIO 服务的监测。

虚机资源

共用到了2台虚机,1台作为应用服务节点,1台运维监控节点。

主机名 IP 说明
svc 192.168.44.168 服务节点
ops 192.168.44.169 监控节点

基本选用当前最新版本,即将安装的 PrometheusGrafana 及组件版本信息如下:

  • Prometheus版本:v2.54.1
  • Grafana版本:11.2.0
  • MinIO版本:RELEASE.2024-11-07T00-52-20Z

系统环境

bash 复制代码
[root@ops ~]# uname -a
Linux ops 5.10.0-182.0.0.95.oe2203sp3.x86_64 #1 SMP Sat Dec 30 13:10:36 CST 2023 x86_64 x86_64 x86_64 GNU/Linux
[root@ops ~]# cat /proc/version
Linux version 5.10.0-182.0.0.95.oe2203sp3.x86_64 (root@dc-64g.compass-ci) (gcc_old (GCC) 10.3.1, GNU ld (GNU Binutils) 2.37) #1 SMP Sat Dec 30 13:10:36 CST 2023

ops节点:docker-compose安装Prometheus与Grafana

参考云原生之运维监控实践-OpenEuler22.03SP3上安装Prometheus与Grafana实现主机状态监测

svc节点:MinIO服务

无需 exporterMinIO 本身支持 Prometheus 集成,因此只需要简单配置即可开始监控其运行状况、性能和相关指标。

生成抓取配置

安全起见,这里以带认证的方式抓取监测数据。如果以匿名方式开启,可以使用环境变量:MINIO_PROMETHEUS_AUTH_TYPE=public

下载 mc 客户端工具,通过 mc admin prometheus generate <ALIAS> 命令生成 Prometheus 抓取配置。

bash 复制代码
./mc admin prometheus generate my-minio
./mc admin prometheus generate my-minio bucket
./mc admin prometheus generate my-minio resource
./mc admin prometheus generate my-minio node

具体命令执行结果如下(实际对结果中的 job_name 以及 localhost 进行了修改,具体见后面的 prometheus 配置):

bash 复制代码
[root@svc minio-bucket]# ./mc alias set my-minio http://localhost:9000 myMinio youGuess
Added `my-minio` successfully.
[root@svc minio-bucket]# ./mc admin prometheus generate my-minio
scrape_configs:
- job_name: minio-job
  bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwcm9tZXRoZXVzIiwic3ViIjoibWluaW9BZG1pbiIsImV4cCI6NDg4NTk0ODIwNH0.TJCvrtlu_DeGW2lVr6JDPUinRZk8gTGAk7wKXhAilg2XApJHdMIY_1KITkbw1lpiv5G56Mi1mUjzOHrEwG40Sw
  metrics_path: /minio/v2/metrics/cluster
  scheme: http
  static_configs:
  - targets: ['localhost:9000']

[root@svc minio-bucket]# ./mc admin prometheus generate my-minio bucket
scrape_configs:
- job_name: minio-job-bucket
  bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwcm9tZXRoZXVzIiwic3ViIjoibWluaW9BZG1pbiIsImV4cCI6NDg4NTk0ODIxNX0.PizTh7TFF93I2tEj4s_8C8mL08fjKPE661ADcg9N1HeYpUz6MpSwqwWuHKB41VDafdIkw81kdtNKisZGzoC39A
  metrics_path: /minio/v2/metrics/bucket
  scheme: http
  static_configs:
  - targets: ['localhost:9000']

[root@svc minio-bucket]# ./mc admin prometheus generate my-minio resource
scrape_configs:
- job_name: minio-job-resource
  bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwcm9tZXRoZXVzIiwic3ViIjoibWluaW9BZG1pbiIsImV4cCI6NDg4NTk0ODIxOH0.0yY305xDG6fcPl0Bj18PFzS8U0LeSZl7QOz_rn4bU_7h6RLfMJ-u74W_rKZEMed115FDD5Ti5WM9MYtBx_d0tA
  metrics_path: /minio/v2/metrics/resource
  scheme: http
  static_configs:
  - targets: ['localhost:9000']

[root@svc minio-bucket]# ./mc admin prometheus generate my-minio node
scrape_configs:
- job_name: minio-job-node
  bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwcm9tZXRoZXVzIiwic3ViIjoibWluaW9BZG1pbiIsImV4cCI6NDg4NTk0ODIyMn0.rmf4_xB0nS8PVUuAJnYp6S5Wyqo8y4YUzOTjXwjRhr6pXn0-y-Bi60IIo2vJQUUSOFrtbNuehEkt_FhEeplnjA
  metrics_path: /minio/v2/metrics/node
  scheme: http
  static_configs:
  - targets: ['localhost:9000']

修改Prometheus配置

Prometheus 配置中增加对svc主机上 MinIO 运行状态的抓取配置。

  • root@ops monitoring\]# vi ./prometheus/conf/prometheus.yml

scrape_configs:

  • job_name: ops-minio-job
    bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwcm9tZXRoZXVzIiwic3ViIjoibWluaW9BZG1pbiIsImV4cCI6NDg4NTk0ODIwNH0.TJCvrtlu_DeGW2lVr6JDPUinRZk8gTGAk7wKXhAilg2XApJHdMIY_1KITkbw1lpiv5G56Mi1mUjzOHrEwG40Sw
    metrics_path: /minio/v2/metrics/cluster
    scheme: http
    static_configs:

    • targets: ['192.168.44.168:9000']
  • job_name: ops-minio-job-bucket
    bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwcm9tZXRoZXVzIiwic3ViIjoibWluaW9BZG1pbiIsImV4cCI6NDg4NTk0ODIxNX0.PizTh7TFF93I2tEj4s_8C8mL08fjKPE661ADcg9N1HeYpUz6MpSwqwWuHKB41VDafdIkw81kdtNKisZGzoC39A
    metrics_path: /minio/v2/metrics/bucket
    scheme: http
    static_configs:

    • targets: ['192.168.44.168:9000']
  • job_name: ops-minio-job-resource
    bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwcm9tZXRoZXVzIiwic3ViIjoibWluaW9BZG1pbiIsImV4cCI6NDg4NTk0ODIxOH0.0yY305xDG6fcPl0Bj18PFzS8U0LeSZl7QOz_rn4bU_7h6RLfMJ-u74W_rKZEMed115FDD5Ti5WM9MYtBx_d0tA
    metrics_path: /minio/v2/metrics/resource
    scheme: http
    static_configs:

    • targets: ['192.168.44.168:9000']
  • job_name: ops-minio-job-node
    bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwcm9tZXRoZXVzIiwic3ViIjoibWluaW9BZG1pbiIsImV4cCI6NDg4NTk0ODIyMn0.rmf4_xB0nS8PVUuAJnYp6S5Wyqo8y4YUzOTjXwjRhr6pXn0-y-Bi60IIo2vJQUUSOFrtbNuehEkt_FhEeplnjA
    metrics_path: /minio/v2/metrics/node
    scheme: http
    static_configs:

    • targets: ['192.168.44.168:9000']
复制代码
重启 `Prometheus` 容器。

```bash
[root@ops monitoring]# docker restart ops-prometheus

验证MinIO抓取配置

  • 验证metrics端点
  1. http://192.168.44.168:9000/minio/v2/metrics/cluster
  2. http://192.168.44.168:9000/minio/v2/metrics/bucket

由于我使用的是带认证方式的抓取配置,因此上述的指标端点不能在浏览器中直接打开访问;下面是在 Postman 中测试的结果。

  • Prometheus控制台验证minio相关的指标

配置Grafana对主机状态的可视化

浏览器访问http://192.168.44.169:3000

  • 配置数据源
  1. 点击左侧菜单中的"Add new connection"。
  2. 选择或搜索"Data Sources"。
  3. 点击"Add data source"并选择"Prometheus"。
  4. 在"HTTP"部分输入Prometheus地址,eg:http://192.168.44.169:9090
  5. 点击"Save & Test"确认连接成功。
  • 查看现成的仪表板

https://grafana.com/grafana/dashboards/这个页面是 Grafana 的官方仪表板目录,用户可以在这里找到和共享各种现成的 Grafana 仪表板。这些仪表板覆盖了多种监控需求,包括系统性能、应用监控、网络流量等。用户可以根据自己的需求搜索和导入适合的仪表板,提高监控效率和可视化效果。这里我们搜索 MinIO ,结果中有个 MinIO Dashboard 监控Server, MinIO Bucket Dashboard 监控Bucket,点击进去可以查看详细的UI效果,复制仪表板的id,两个ID分别如下:

  1. 13502 MinIO Dashboard
  2. 19237 MinIO Bucket Dashboard
  • 导入现成的仪表板
  1. 在右侧菜单中点击"New"按钮,然后选择"Import"。
  2. 在输入框中,可以直接输入现成仪表板的ID,或者上传JSON文件。常用的主机监控仪表板ID是13502(MinIO Dashboard),19237(MinIO Bucket Dashboard)。
  3. 点击"Load",随后选择已配置好的数据源。
  4. 点击"Import"完成导入。

MinIO监控效果

遇到的问题

Fatal glibc error: CPU does not support x86-64-v2

参考 Issues 解决:https://github.com/minio/minio/issues/18365

小总结

If you can't measure it, you can't improve it!

没有度量就没有改进,实际上,监控系统有以下两个客户 :技术,业务。上述内容即是对技术组件的监控,方便技术方面的改进与优化。

本文记录了在 Docker 环境下通过 PrometheusGrafana 实现对 MinIO 服务的监控。具体步骤包括在服务节点上使用 mc 生成抓取配置 ,配置 Prometheus 抓取 MinIO 的监控数据,并在 Grafana 中配置数据源和导入现成的监控仪表板,以实现对分布式对象存储服务的性能监控和可视化。

Reference


If you have any questions or any bugs are found, please feel free to contact me.

Your comments and suggestions are welcome!

相关推荐
极客天成ScaleFlash3 小时前
极客天成让统一存储从云原生‘进化’到 AI 原生: 不是版本升级,而是基因重组
人工智能·云原生
小闫BI设源码4 小时前
Dockerfile
云原生·eureka·日志收集·自动重启·容器监控·健康检查·生产环境部署
码路工人10 小时前
第8章:K8s 核心概念(上)- 工作负载
docker·云原生·容器
货拉拉技术13 小时前
货拉拉离线大数据跨云迁移 - 数据迁移篇
大数据·云原生
分布式存储与RustFS13 小时前
RustFS与其他新兴存储系统(如SeaweedFS)相比有哪些优势和劣势?
开源软件·文件系统·对象存储·minio·aws s3·seaweedfs·rustfs
qq_5693841217 小时前
K8S (使用步骤)
云原生·容器·kubernetes
老马爱知19 小时前
《红色脉络:一部PLMN在中国的演进史诗 (1G-6G)》 第11篇 | 核心网演进终局:从EPC到5GC——微服务与“云原生”
微服务·云原生·核心网·nfv·epc·5g核心网·sba架构
simon_skywalker19 小时前
阿里云云原生挑战官方用例SPL
阿里云·云原生·kubernetes
斯普信专业组1 天前
Kubernetes(K8S)完全详解:从架构设计到云原生实践
云原生·容器·kubernetes
能不能别报错1 天前
kubeasz二进制部署k8s生产环境集群
云原生·容器·kubernetes