文档基于2025-10-10日社区最终版构建     
切换到英文版    进入演示系统    进入交流社区

MinIO Documentation

使用 Prometheus 进行监控和告警

MinIO 使用以下方式发布集群、节点、存储桶和资源指标:Prometheus 数据模型本页面的流程记录了以下内容:

  • 配置 Prometheus 服务以抓取和显示 MinIO 部署的指标

  • 在 MinIO 指标上配置告警规则以触发 AlertManager 操作

这些说明使用version 2 metrics.有关指标 API 版本的更多信息,请参阅指标和告警。

前提条件

此过程需要以下条件:

配置 Prometheus 使用 MinIO 指标进行收集和告警

1) 生成抓取配置

使用mc admin prometheus generate用于生成抓取配置的命令,供 Prometheus 在发起抓取请求时使用:

以下命令用于抓取 MinIO 集群的指标。

mc admin prometheus generate ALIAS

替换ALIAS随着aliasMinIO 部署的。

该命令返回的输出类似于以下内容:

global:
   scrape_interval: 60s

scrape_configs:
   - job_name: minio-job
     bearer_token: TOKEN
     metrics_path: /minio/v2/metrics/cluster
     scheme: https
     static_configs:
     - targets: [minio.example.net]

以下命令用于在 MinIO 服务器上抓取节点的指标数据。

mc admin prometheus generate ALIAS node

替换ALIAS随着aliasMinIO 部署的。

global:
   scrape_interval: 60s

scrape_configs:
   - job_name: minio-job-node
     bearer_token: TOKEN
     metrics_path: /minio/v2/metrics/node
     scheme: https
     static_configs:
     - targets: [minio-1.example.net, minio-2.example.net, minio-N.example.net]

以下命令用于抓取 MinIO Server 上存储桶的指标。

mc admin prometheus generate ALIAS bucket

替换ALIAS随着aliasMinIO 部署的。

global:
   scrape_interval: 60s

scrape_configs:
   - job_name: minio-job-bucket
     bearer_token: TOKEN
     metrics_path: /minio/v2/metrics/bucket
     scheme: https
     static_configs:
     - targets: [minio.example.net]

版本 RELEASE.2023-10-07T15-07-38Z 中的新增功能。

以下命令用于抓取 MinIO 服务器上资源的指标。

mc admin prometheus generate ALIAS resource

替换ALIAS随着aliasMinIO 部署的。

global:
   scrape_interval: 60s

scrape_configs:
   - job_name: minio-job-resource
     bearer_token: TOKEN
     metrics_path: /minio/v2/metrics/resource
     scheme: https
     static_configs:
     - targets: [minio.example.net]
  • 设置一个合适的scrape_interval值,以确保每次抓取操作在下一次开始之前完成。 推荐值为 60 秒。

    某些部署由于需要采集的指标数量较多,需要更长的采集间隔。 为减轻MinIO和Prometheus服务器的负载,请选择符合监控要求的最长间隔时间。

  • 设置job_name与 MinIO 部署关联的值。

    使用唯一值确保部署指标与该 Prometheus 服务收集的其他指标相隔离。

  • MinIO部署从MINIO_PROMETHEUS_AUTH_TYPE设置为"public"可以省略bearer_token字段。

  • 设置scheme对于不使用 TLS 的 MinIO 部署,请使用 http。

  • 设置targets解析到 MinIO 部署的主机名的数组。

    这可以是任何单个节点,也可以是处理连接到 MinIO 节点的负载均衡器/代理。

    对于 Kubernetes 基础设施上的 MinIO 租户,当在同一集群中使用 Prometheus 集群时,您可以指定服务 DNS 名称minioservice. 您也可以指定配置用于路由进出 MinIO 租户连接的入口或负载均衡器端点。

2) 使用更新后的配置重启 Prometheus

附加所需的scrape_configs将上一步生成的作业添加到配置文件中:

集群指标聚合节点级指标,并在适当时为来源节点附加标签。

global:
   scrape_interval: 60s

scrape_configs:
   - job_name: minio-job
     bearer_token: TOKEN
     metrics_path: /minio/v2/metrics/cluster
     scheme: https
     static_configs:
     - targets: [minio.example.net]

节点指标专用于节点级监控。您需要列出所有MinIO节点以进行此配置。

global:
   scrape_interval: 60s

scrape_configs:
   - job_name: minio-job-node
     bearer_token: TOKEN
     metrics_path: /minio/v2/metrics/node
     scheme: https
     static_configs:
     - targets: [minio-1.example.net, minio-2.example.net, minio-N.example.net]
global:
   scrape_interval: 60s

scrape_configs:
   - job_name: minio-job-bucket
     bearer_token: TOKEN
     metrics_path: /minio/v2/metrics/bucket
     scheme: https
     static_configs:
     - targets: [minio.example.net]
global:
   scrape_interval: 60s

scrape_configs:
   - job_name: minio-job-resource
     bearer_token: TOKEN
     metrics_path: /minio/v2/metrics/resource
     scheme: https
     static_configs:
     - targets: [minio.example.net]

使用配置文件启动 Prometheus 集群:

prometheus --config.file=prometheus.yaml

3) 分析收集的指标

Prometheus includes an表达浏览器您可以在此处执行查询来分析收集的指标。

以下查询示例返回由 Prometheus 每五分钟收集的名为 scrape job 的指标数据minio-job:

minio_node_drive_free_bytes{job="minio-job"}[5m]
minio_node_drive_free_inodes{job="minio-job"}[5m]

minio_node_drive_latency_us{job="minio-job"}[5m]

minio_node_drive_offline_total{job="minio-job"}[5m]
minio_node_drive_online_total{job="minio-job"}[5m]

minio_node_drive_total{job="minio-job"}[5m]

minio_node_drive_total_bytes{job="minio-job"}[5m]
minio_node_drive_used_bytes{job="minio-job"}[5m]

minio_node_drive_errors_timeout{job="minio-job"}[5m]
minio_node_drive_errors_availability{job="minio-job"}[5m]

minio_node_drive_io_waiting{job="minio-job"}[5m]

MinIO 推荐以下基础监控指标集。

指标和告警有关所有可用指标的信息。

度量

描述

minio_node_drive_free_bytes

驱动器上的总可用存储空间。

minio_node_drive_free_inodes

总可用 inode 数。

minio_node_drive_latency_us

驱动器API存储操作的平均最后时刻延迟(以微秒为单位)。

minio_node_drive_offline_total

此节点中离线驱动器总数。

minio_node_drive_online_total

此节点中在线驱动器总数。

minio_node_drive_total

此节点中的驱动器总数。

minio_node_drive_total_bytes

驱动器上的总存储容量。

minio_node_drive_used_bytes

驱动器已使用的总存储空间。

minio_node_drive_errors_timeout

自服务器启动以来的驱动器超时错误总数。

minio_node_drive_errors_availability

自服务器启动以来的驱动器I/O错误、权限被拒绝和超时总数。

minio_node_drive_io_waiting

驱动器上等待的I/O操作总数。

4) 使用 MinIO 指标配置告警规则

您必须配置Alert Rules在 Prometheus 部署上基于收集的 MinIO 指标触发告警。

以下示例告警规则文件为 MinIO 部署提供了基础告警配置。 您可以根据这些示例进行修改,或将其作为构建自定义告警的参考指南。

groups:
- name: minio-alerts
  rules:
  - alert: NodesOffline
    expr: avg_over_time(minio_cluster_nodes_offline_total{job="minio-job"}[5m]) > 0
    for: 10m
    labels:
      severity: warn
    annotations:
      summary: "Node down in MinIO deployment"
      description: "Node(s) in cluster {{ $labels.instance }} offline for more than 5 minutes"

  - alert: DisksOffline
    expr: avg_over_time(minio_cluster_drive_offline_total{job="minio-job"}[5m]) > 0
    for: 10m
    labels:
      severity: warn
    annotations:
      summary: "Disks down in MinIO deployment"
      description: "Disks(s) in cluster {{ $labels.instance }} offline for more than 5 minutes"

在 Prometheus 配置中,指定告警文件的路径rule_fileskey:

rule_files:
- minio-alerting.yml

一旦触发,Prometheus会将告警发送到配置的AlertManager服务。

仪表板

MinIO 提供 Grafana 仪表板来显示由 Prometheus 收集的指标。 有关更多信息,请参阅使用 Grafana 监控 MinIO 服务器