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

打印 上一主题 下一主题

主题 1686|帖子 1686|积分 5058

背景

   如果你要为应用程序构建规范或用户故事,那么务必先把应用程序每个组件的监控指标思量进来,千万不要等到项目竣事或摆设之前再做这件事变。——《Prometheus监控实战》
  去年写了一篇在Docker环境下摆设若依微服务ruoyi-cloud项目标文章,其时使用的是 docker-compose 在单台机器上摆设若依微服务 ruoyi-cloud 项目;在这个基础上,作为演示项目,我们计划实现对所有基础组件和微服务的监控。之前记载了搭建 Prometheus 与 Grafana 监控系统的过程。今天这篇文章重要是记载下对分布式文件存储 MinIO 服务的监测。
虚机资源

共用到了2台虚机,1台作为应用服务节点,1台运维监控节点。
主机名IP说明svc192.168.44.168服务节点ops192.168.44.169监控节点 根本选用当前最新版本,即将安装的 Prometheus 和 Grafana 及组件版本信息如下:


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

  1. [root@ops ~]# uname -a
  2. 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
  3. [root@ops ~]# cat /proc/version
  4. 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服务

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

   安全起见,这里以带认证的方式抓取监测数据。如果以匿名方式开启,可以使用环境变量:MINIO_PROMETHEUS_AUTH_TYPE=public
  下载 mc 客户端工具,通过 mc admin prometheus generate <ALIAS> 命令生成 Prometheus 抓取配置。
  1. ./mc admin prometheus generate my-minio
  2. ./mc admin prometheus generate my-minio bucket
  3. ./mc admin prometheus generate my-minio resource
  4. ./mc admin prometheus generate my-minio node
复制代码
详细命令实行效果如下(实际对效果中的 job_name 以及 localhost 进行了修改,详细见后面的 prometheus 配置):
  1. [root@svc minio-bucket]# ./mc alias set my-minio http://localhost:9000 myMinio youGuess
  2. Added `my-minio` successfully.
  3. [root@svc minio-bucket]# ./mc admin prometheus generate my-minio
  4. scrape_configs:
  5. - job_name: minio-job
  6.   bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwcm9tZXRoZXVzIiwic3ViIjoibWluaW9BZG1pbiIsImV4cCI6NDg4NTk0ODIwNH0.TJCvrtlu_DeGW2lVr6JDPUinRZk8gTGAk7wKXhAilg2XApJHdMIY_1KITkbw1lpiv5G56Mi1mUjzOHrEwG40Sw
  7.   metrics_path: /minio/v2/metrics/cluster
  8.   scheme: http
  9.   static_configs:
  10.   - targets: ['localhost:9000']
  11. [root@svc minio-bucket]# ./mc admin prometheus generate my-minio bucket
  12. scrape_configs:
  13. - job_name: minio-job-bucket
  14.   bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwcm9tZXRoZXVzIiwic3ViIjoibWluaW9BZG1pbiIsImV4cCI6NDg4NTk0ODIxNX0.PizTh7TFF93I2tEj4s_8C8mL08fjKPE661ADcg9N1HeYpUz6MpSwqwWuHKB41VDafdIkw81kdtNKisZGzoC39A
  15.   metrics_path: /minio/v2/metrics/bucket
  16.   scheme: http
  17.   static_configs:
  18.   - targets: ['localhost:9000']
  19. [root@svc minio-bucket]# ./mc admin prometheus generate my-minio resource
  20. scrape_configs:
  21. - job_name: minio-job-resource
  22.   bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwcm9tZXRoZXVzIiwic3ViIjoibWluaW9BZG1pbiIsImV4cCI6NDg4NTk0ODIxOH0.0yY305xDG6fcPl0Bj18PFzS8U0LeSZl7QOz_rn4bU_7h6RLfMJ-u74W_rKZEMed115FDD5Ti5WM9MYtBx_d0tA
  23.   metrics_path: /minio/v2/metrics/resource
  24.   scheme: http
  25.   static_configs:
  26.   - targets: ['localhost:9000']
  27. [root@svc minio-bucket]# ./mc admin prometheus generate my-minio node
  28. scrape_configs:
  29. - job_name: minio-job-node
  30.   bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwcm9tZXRoZXVzIiwic3ViIjoibWluaW9BZG1pbiIsImV4cCI6NDg4NTk0ODIyMn0.rmf4_xB0nS8PVUuAJnYp6S5Wyqo8y4YUzOTjXwjRhr6pXn0-y-Bi60IIo2vJQUUSOFrtbNuehEkt_FhEeplnjA
  31.   metrics_path: /minio/v2/metrics/node
  32.   scheme: http
  33.   static_configs:
  34.   - targets: ['localhost:9000']
复制代码
修改Prometheus配置

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


  • [root@ops monitoring]# vi ./prometheus/conf/prometheus.yml
  1. scrape_configs:
  2.   - job_name: ops-minio-job
  3.     bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwcm9tZXRoZXVzIiwic3ViIjoibWluaW9BZG1pbiIsImV4cCI6NDg4NTk0ODIwNH0.TJCvrtlu_DeGW2lVr6JDPUinRZk8gTGAk7wKXhAilg2XApJHdMIY_1KITkbw1lpiv5G56Mi1mUjzOHrEwG40Sw
  4.     metrics_path: /minio/v2/metrics/cluster
  5.     scheme: http
  6.     static_configs:
  7.     - targets: ['192.168.44.168:9000']
  8.   - job_name: ops-minio-job-bucket
  9.     bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwcm9tZXRoZXVzIiwic3ViIjoibWluaW9BZG1pbiIsImV4cCI6NDg4NTk0ODIxNX0.PizTh7TFF93I2tEj4s_8C8mL08fjKPE661ADcg9N1HeYpUz6MpSwqwWuHKB41VDafdIkw81kdtNKisZGzoC39A
  10.     metrics_path: /minio/v2/metrics/bucket
  11.     scheme: http
  12.     static_configs:
  13.     - targets: ['192.168.44.168:9000']
  14.   - job_name: ops-minio-job-resource
  15.     bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwcm9tZXRoZXVzIiwic3ViIjoibWluaW9BZG1pbiIsImV4cCI6NDg4NTk0ODIxOH0.0yY305xDG6fcPl0Bj18PFzS8U0LeSZl7QOz_rn4bU_7h6RLfMJ-u74W_rKZEMed115FDD5Ti5WM9MYtBx_d0tA
  16.     metrics_path: /minio/v2/metrics/resource
  17.     scheme: http
  18.     static_configs:
  19.     - targets: ['192.168.44.168:9000']
  20.   - job_name: ops-minio-job-node
  21.     bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwcm9tZXRoZXVzIiwic3ViIjoibWluaW9BZG1pbiIsImV4cCI6NDg4NTk0ODIyMn0.rmf4_xB0nS8PVUuAJnYp6S5Wyqo8y4YUzOTjXwjRhr6pXn0-y-Bi60IIo2vJQUUSOFrtbNuehEkt_FhEeplnjA
  22.     metrics_path: /minio/v2/metrics/node
  23.     scheme: http
  24.     static_configs:
  25.     - targets: ['192.168.44.168:9000']
复制代码
重启 Prometheus 容器。
  1. [root@ops monitoring]# docker restart ops-prometheus
复制代码
验证MinIO抓取配置



  • 验证metrics端点

  • http://192.168.44.168:9000/minio/v2/metrics/cluster
  • http://192.168.44.168:9000/minio/v2/metrics/bucket
由于我使用的是带认证方式的抓取配置,因此上述的指标端点不能在浏览器中直接打开访问;下面是在 Postman 中测试的效果。



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

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

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


  • 配置数据源

  • 点击左侧菜单中的"Add new connection"。
  • 选择或搜刮"Data Sources"。
  • 点击"Add data source"并选择"rometheus"。
  • 在"HTTP"部分输入Prometheus地址,eg:http://192.168.44.169:9090
  • 点击"Save & Test"确认毗连成功。


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

  • 13502 MinIO Dashboard
  • 19237 MinIO Bucket Dashboard


  • 导入现成的仪表板

  • 在右侧菜单中点击"New"按钮,然后选择"Import"。
  • 在输入框中,可以直接输入现成仪表板的ID,大概上传JSON文件。常用的主机监控仪表板ID是13502(MinIO Dashboard),19237(MinIO Bucket Dashboard)。
  • 点击"Load",随后选择已配置好的数据源。
  • 点击"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 环境下通过 Prometheus 和 Grafana 实现对 MinIO 服务的监控。详细步调包括在服务节点上使用 mc 生成抓取配置 ,配置 Prometheus 抓取 MinIO 的监控数据,并在 Grafana 中配置数据源和导入现成的监控仪表板,以实现对分布式对象存储服务的性能监控和可视化。
Reference



  • https://github.com/minio/minio/tags
  • https://min.io/docs/minio/container/operations/monitoring/collect-minio-metrics-using-prometheus.html
  • https://min.io/docs/minio/linux/operations/monitoring/grafana.html#minio-server-grafana-metrics
  • https://grafana.com/grafana/dashboards/

If you have any questions or any bugs are found, please feel free to contact me.
Your comments and suggestions are welcome!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

美丽的神话

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表