中文文档

使用Prometheus进行监控和报警

MinIO使用 Prometheus数据模型 发布集群、节点、桶和资源的度量。 本页面所述的过程记录了以下内容:

  • 配置Prometheus服务以从MinIO部署中抓取和显示度量指标。

  • 配置警报规则以触发AlertManager操作的MinIO度量指标。

这些指令使用 version 2 指标。 有关度量 API 版本的更多信息,请参阅 度量和警报。

先决条件

此过程需要以下条件:

  • 具备支持的 Alert Manager 的现有 Prometheus部署

  • 具有网络访问Prometheus部署的现有MinIO部署。

  • 在本地主机上安装并配置了可 访问 MinIO部署的 mc

配置Prometheus以收集和警报使用MinIO指标。

1) 生成抓取配置。

使用 mc admin prometheus generate 命令生成抓取配置,以供Prometheus在进行抓取请求时使用:

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

mc admin prometheus generate ALIAS

ALIAS 替换为MinIO部署的 alias

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

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 替换为MinIO部署的 alias

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服务器上桶的指标数据。

mc admin prometheus generate ALIAS bucket

请将 ALIAS 替换为 MinIO 部署的 alias

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 替换为 MinIO 部署的 alias

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_PROMETHEUS_AUTH_TYPE 设置为 "public" 的 MinIO 部署可以省略 bearer_token 字段。

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

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

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

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

将在前面步骤生成的所需 scrape_configs job 追加到配置文件中:

集群指标聚合节点级别的指标,并在适当的情况下,为原始节点的指标附加标签。

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 包含一个 表达式浏览器。 您可以在此处执行查询以分析已收集的指标。

以下查询示例返回由 Prometheus 每隔五分钟收集一次的指标,这些指标是由名为 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 推荐以下作为监控的基本指标集:

有关所有可用指标的信息,请参阅 指标和警报

Metric

描述

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 指标配置警报规则

要基于收集到的 MinIO 指标触发警报,请在 Prometheus 部署上配置 警报规则

以下示例警报规则文件为 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_disk_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"

rule_files 键中指定警报文件的路径:

rule_files:
- minio-alerting.yml

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

展示面板

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

Join Slack 商业支持购买咨询