跳转到主要内容

这是本节的多页打印视图。 .

返回本页常规视图.

监控与告警

指标与告警

MinIO 使用 Prometheus 数据模型 发布时点指标。 你可以使用任何支持该数据模型的抓取工具,将这些指标拉取到数据库中,以生成历史视图、执行指标查询与分析,或基于关注的数据点创建告警。

下表列出了将 MinIO 指标接入部分第三方监控软件的教程。

使用 Prometheus 进行监控与告警

配置 Prometheus,对 MinIO 部署进行监控与告警

使用 InfluxDB 进行监控与告警

配置 InfluxDB,对 MinIO 部署进行监控与告警。

其他支持 Prometheus 数据模型的指标与分析软件套件,即使未出现在上表中,也可能同样可用。

日志

MinIO 会将所有 silo server 操作输出到系统控制台。 MinIO 还支持将服务日志和审计日志发布到 HTTP Webhook。

  • 服务日志 包含与系统控制台中相同的 silo server 操作日志。 服务日志适用于常规监控与运维排障。
  • 审计日志 会以更细粒度描述 MinIO 部署上的每一次操作。 审计日志适用于需要对操作进行详细追踪的安全标准与合规要求。

MinIO 会将日志作为 JSON 文档,通过 PUT 请求发送到每个已配置的端点。 端点服务器负责处理这些 JSON 文档。 MinIO 要求显式配置每个 Webhook 端点,默认情况下 不会 向 Webhook 发布日志。

更完整的文档请参见 将服务日志或审计日志发布到外部服务。

健康检查

MinIO 提供无需身份验证的端点,用于探测节点在线状态以及集群 高可用性,从而执行简单健康检查。 这些端点只返回 HTTP 状态码。 更多信息请参见 健康检查 API。

1 - 使用 Prometheus 进行监控与告警

SILO 20261109 / Console 2.7.0: Console 的 Metrics 页面使用 Metrics V3 指标,按节点聚合并明确区分“真实零值”与“缺失数据”。Overview 页面展示的是 Server 上报的裸盘总容量(而非扣除纠删码开销后的可用容量估算);存储桶列表为实时读取,对象数量与空间占用则由后台扫描器(或 Console 2.7.0 可选的 console usage-worker)统计。在 SILO 20261109 中,复制工作协程指标在复制工作池不存在时不会触发 panic,并继续保留历史均值和峰值计数(099b7ddf3);实时批处理指标则保留暂停原因以及跳过或拒绝计数(#325)。详见 Console 2.7.0 发布说明与 Metrics V3 指标映射参考。

MinIO 使用 Prometheus 数据模型 发布集群、节点、存储桶和资源指标。 本页过程说明了以下内容:

  • 配置 Prometheus 服务,抓取并展示 MinIO 部署的指标
  • 基于某个 MinIO 指标配置 Alert Rule,以触发 AlertManager 动作

20261109 推荐的 Metrics V3 抓取

新部署以及 Console 2.7.0 的 Metrics 页面应抓取 Metrics V3 指标。使用 mcli 20261109 显式传入 --api-version v3 即可生成配置:

mcli admin prometheus generate mysilo --api-version v3

生成的配置抓取 /minio/metrics/v3 路径并包含所需的 bearer token。将其合并到 Prometheus 配置中,把 targets 设为待监控的各个 SILO 节点,妥善保管 token,并在确认抓取正常后再启用告警规则。你可以按 cluster、system 等类别限制采集子集,但 Console 的完整监控面板依赖对应的指标族,详见命令参考。

  • 集群级指标去重: 同一集群的 cluster 指标会由多个节点重复导出,查询时应保留集群标识标签并用 max 或 min 聚合去重,切勿直接跨节点 sum 求和。
  • 零值与缺失数据: 部分合法零值默认不导出样本。仅在同生命周期的伴随指标存在时才应补零;抓取失败或后台扫描器尚未产出用量数据时,应保持为“无数据”(no-data)。
  • 标签与单位差异: V3 API 指标使用 name 标签,节点指标带 server 标签,磁盘指标带 pool/set/drive 索引,耗时统一以秒为单位。从 V2 迁移仪表盘时需同步调整 PromQL 查询与告警阈值。

下文保留 V2 指标 的抓取与告警配置步骤,供既有仪表盘参考(省略 --api-version 时仍默认生成 V2 配置)。

说明

前提条件

此过程要求满足以下条件:

配置 Prometheus 收集 MinIO 指标并触发告警

1) 生成抓取配置

使用 mc admin prometheus generate 命令生成 Prometheus 执行抓取请求所需的 scrape 配置:

以下命令用于抓取 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 Server 上某个节点的指标。

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 Server 上存储桶的指标。

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 Server 上资源的指标。

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 Server 的负载,请选择满足监控要求的最长间隔。

  • 将 job_name 设置为与该 MinIO 部署相关的值。

    请使用唯一值,以确保该部署的指标与同一 Prometheus 服务采集的其他指标彼此隔离。

  • 对于以 MINIO_PROMETHEUS_AUTH_TYPE 设置为 "public" 启动的 MinIO 部署,可以省略 bearer_token 字段。

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

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

    这可以是任意单个节点,也可以是负责处理与 MinIO 节点连接的负载均衡器或代理。

    对于 Kubernetes 基础设施上的 MinIO Tenant,如果使用的是同一集群中的 Prometheus 集群,则可以指定 minio service 的 DNS 名称。 否则,你可以指定已配置为向 MinIO Tenant 路由连接的 ingress 或 load balancer 端点。

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 内置 expression browser。 你可以在其中执行查询,以分析已采集的指标。

以下查询示例会返回抓取任务名为 minio-job 的 Prometheus 每五分钟采集一次的指标:

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 存储操作的平均延迟,单位为 µs。
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 自 server 启动以来驱动器超时错误的总数。
minio_node_drive_errors_availability 自 server 启动以来驱动器 I/O 错误、权限拒绝和超时的总数。
minio_node_drive_io_waiting 驱动器上等待中的 I/O 操作总数。

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

你必须在 Prometheus 部署上配置 Alert Rules,以根据已采集的 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_files 键中指定告警文件路径:

rule_files:
- minio-alerting.yml

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

仪表板

MinIO 提供 Grafana 仪表板,用于展示由 Prometheus 采集的指标。 更多信息请参见 使用 Grafana 监控 MinIO Server

2 - 指标与告警

MinIO 使用 Prometheus 数据模型 发布指标。你可以使用任意抓取工具从 SILO 拉取指标数据,以执行进一步分析和配置告警。

SILO 20261109(RELEASE.2026-11-09T00-00-00Z)、Console 2.7.0 与 mcli 20261109 将 Metrics V3(/minio/metrics/v3)作为推荐抓取契约。在 SILO 20261109 中,复制工作协程指标在复制工作池不存在时不会触发 panic,并继续保留历史均值和峰值计数(099b7ddf3);实时批处理作业指标保留暂停原因以及跳过或拒绝计数(#325)。

说明

Metrics version 2

现有部署可以继续使用 version 2 指标 和 Grafana 仪表板。

Version 3 端点

对于 metrics version 3,所有指标都位于基础端点 /minio/metrics/v3 之下。你可以抓取该基础端点一次性收集全部指标,也可以追加可选路径,仅返回特定类别的指标。

警告

重要

权威的指标定义与 Console 聚合查询逻辑请以 pgsty/silo RELEASE.2026-11-09T00-00-00Z 源码 及 Console 2.7.0 Metrics V3 映射参考为准。

例如,以下端点会返回 audit 指标:

http://HOSTNAME:PORT/minio/metrics/v3/audit

将 HOSTNAME:PORT 替换为 SILO 部署的 FQDN 与端口。对于使用负载均衡器管理节点间连接的部署,请指定负载均衡器地址。

默认情况下,SILO 要求在抓取指标端点时进行身份验证。请使用 mcli admin prometheus generate --api-version v3(mcli 20261109)生成所需的 bearer token。你也可以将 MINIO_PROMETHEUS_AUTH_TYPE 设置为 public 以禁用指标端点认证。

相对于基础 URL,SILO 提供以下抓取端点:

类别

路径

API

/api/requests

/bucket/api

审计

/audit

集群

/cluster/config

/cluster/erasure-set

/cluster/health

/cluster/iam

/cluster/usage/buckets

/cluster/usage/objects

调试

/debug/go

ILM

/ilm

日志 Webhook

/logger/webhook

通知

/notification

复制

/replication

/bucket/replication

扫描器

/scanner

系统

/system/drive

/system/memory

/system/cpu

/system/network/internode

/system/process

各端点对应的完整指标列表,请参见可用的 version 3 指标。

如需在 Console 中启用历史数据可视化,请在部署的每个节点上设置以下环境变量:

可用的 version 3 指标

SILO 为集群、API 请求、存储桶以及系统运行状态发布以下各类 V3 指标:

许多指标包含标签,用于标识生成该指标的资源及其他维度信息。

API 指标

当前节点所服务请求的统计指标。

路径 说明
/api/requests 所有请求的聚合指标。
/bucket/api 按存储桶划分的请求指标。

/api/requests

名称 说明 标签
minio_api_requests_rejected_auth_total 因身份验证失败而被拒绝的请求总数。

类型:counter
type, pool_index, server
minio_api_requests_rejected_header_total 因请求头无效而被拒绝的请求总数。

类型:counter
type, pool_index, server
minio_api_requests_rejected_timestamp_total 因时间戳无效而被拒绝的请求总数。

类型:counter
type, pool_index, server
minio_api_requests_rejected_invalid_total 无效请求总数。

类型:counter
type, pool_index, server
minio_api_requests_waiting_total 当前等待队列中的请求数。

类型:gauge
type, pool_index, server
minio_api_requests_incoming_total 当前传入请求总数。

类型:gauge
type, pool_index, server
minio_api_requests_inflight_total 当前正在处理的请求数。

类型:gauge
name, type, pool_index, server
minio_api_requests_total 请求总数。

类型:counter
name, type, pool_index, server
minio_api_requests_errors_total 返回 4xx 或 5xx 错误的请求总数。

类型:counter
name, type, pool_index, server
minio_api_requests_5xx_errors_total 返回 5xx 错误的请求总数。

类型:counter
name, type, pool_index, server
minio_api_requests_4xx_errors_total 返回 4xx 错误的请求总数。

类型:counter
name, type, pool_index, server
minio_api_requests_canceled_total 客户端取消的请求总数。

类型:counter
name, type, pool_index, server
minio_api_requests_ttfb_seconds_distribution 各 API 调用首字节耗时(秒)分布。

类型:counter
name, type, le, pool_index, server
minio_api_requests_traffic_sent_bytes 已发送总字节数。

类型:counter
type, pool_index, server
minio_api_requests_traffic_received_bytes 已接收总字节数。

类型:counter
type, pool_index, server

/bucket/api

名称 说明 标签
minio_bucket_api_traffic_received_bytes 存储桶接收流量字节总数。

类型:counter
bucket, type, server, pool_index
minio_bucket_api_traffic_sent_bytes 存储桶发送流量字节总数。

类型:counter
bucket, type, server, pool_index
minio_bucket_api_inflight_total 存储桶当前正在处理的请求数。

类型:gauge
bucket, name, type, server, pool_index
minio_bucket_api_total 存储桶请求总数。

类型:counter
bucket, name, type, server, pool_index
minio_bucket_api_canceled_total 客户端取消的存储桶请求总数。

类型:counter
bucket, name, type, server, pool_index
minio_bucket_api_4xx_errors_total 存储桶 4xx 错误请求总数。

类型:counter
bucket, name, type, server, pool_index
minio_bucket_api_5xx_errors_total 存储桶 5xx 错误请求总数。

类型:counter
bucket, name, type, server, pool_index
minio_bucket_api_ttfb_seconds_distribution 存储桶 API 调用首字节耗时(秒)分布。

类型:counter
bucket, name, le, type, server, pool_index

审计指标

审计日志发送状态相关指标。

路径 说明
/audit 审计子系统指标。

/audit

名称 说明 标签
minio_audit_failed_messages 自启动以来发送失败的审计消息总数。

类型:counter
target_id, server
minio_audit_target_queue_length 目标队列中待发送的审计消息数。

类型:gauge
target_id, server
minio_audit_total_messages 自启动以来已发送的审计消息总数。

类型:counter
target_id, server

集群指标

整个集群范围的运行指标。

路径 说明
/cluster/config 集群配置指标。
/cluster/erasure-set 纠删码集合指标。
/cluster/health 集群健康指标。
/cluster/iam 集群 IAM 指标。
/cluster/usage/buckets 按存储桶划分的对象统计。
/cluster/usage/objects 集群整体对象统计。

/cluster/config

名称 说明 标签
minio_cluster_config_rrs_parity 低冗余存储类(RRS)校验盘数。

类型:gauge
minio_cluster_config_standard_parity 标准存储类校验盘数。

类型:gauge

/cluster/erasure-set

名称 说明 标签
minio_cluster_erasure_set_overall_write_quorum 跨所有存储池与纠删集的总体写仲裁。

类型:gauge
minio_cluster_erasure_set_overall_health 跨所有存储池与纠删集的总体健康状态(1=健康,0=不健康)。

类型:gauge
minio_cluster_erasure_set_read_quorum 指定存储池内纠删集的读仲裁。

类型:gauge
pool_id, set_id
minio_cluster_erasure_set_write_quorum 指定存储池内纠删集的写仲裁。

类型:gauge
pool_id, set_id
minio_cluster_erasure_set_online_drives_count 纠删集中在线磁盘数。

类型:gauge
pool_id, set_id
minio_cluster_erasure_set_healing_drives_count 纠删集中正在自愈的磁盘数。

类型:gauge
pool_id, set_id
minio_cluster_erasure_set_health 纠删集健康状态(1=健康,0=不健康)。

类型:gauge
pool_id, set_id
minio_cluster_erasure_set_read_tolerance 不中断读操作可容忍的磁盘故障数。

类型:gauge
pool_id, set_id
minio_cluster_erasure_set_write_tolerance 不中断写操作可容忍的磁盘故障数。

类型:gauge
pool_id, set_id
minio_cluster_erasure_set_read_health 纠删集读健康状态(1=健康,0=不健康)。

类型:gauge
pool_id, set_id
minio_cluster_erasure_set_write_health 纠删集写健康状态(1=健康,0=不健康)。

类型:gauge
pool_id, set_id

/cluster/health

名称 说明 标签
minio_cluster_health_drives_offline_count 集群离线磁盘数。

类型:gauge
minio_cluster_health_drives_online_count 集群在线磁盘数。

类型:gauge
minio_cluster_health_drives_count 集群磁盘总数。

类型:gauge
minio_cluster_health_nodes_offline_count 集群离线节点数。

类型:gauge
minio_cluster_health_nodes_online_count 集群在线节点数。

类型:gauge
minio_cluster_health_capacity_raw_total_bytes 集群裸盘总容量(字节)。

类型:gauge
minio_cluster_health_capacity_raw_free_bytes 集群裸盘剩余容量(字节)。

类型:gauge
minio_cluster_health_capacity_usable_total_bytes 集群可用总容量(字节)。

类型:gauge
minio_cluster_health_capacity_usable_free_bytes 集群可用剩余容量(字节)。

类型:gauge

/cluster/iam

名称 说明 标签
minio_cluster_iam_last_sync_duration_millis 最近一次成功 IAM 同步耗时(毫秒)。

类型:counter
minio_cluster_iam_plugin_authn_service_failed_requests_minute 启用插件认证时,上一完整分钟内失败请求数。

类型:counter
minio_cluster_iam_plugin_authn_service_last_fail_seconds 启用插件认证时,距最近一次失败请求的秒数。

类型:counter
minio_cluster_iam_plugin_authn_service_last_succ_seconds 启用插件认证时,距最近一次成功请求的秒数。

类型:counter
minio_cluster_iam_plugin_authn_service_succ_avg_rtt_ms_minute 启用插件认证时,上一完整分钟内成功请求平均 RTT(毫秒)。

类型:counter
minio_cluster_iam_plugin_authn_service_succ_max_rtt_ms_minute 启用插件认证时,上一完整分钟内成功请求最大 RTT(毫秒)。

类型:counter
minio_cluster_iam_plugin_authn_service_total_requests_minute 启用插件认证时,上一完整分钟内请求总数。

类型:counter
minio_cluster_iam_since_last_sync_millis 距最近一次成功 IAM 同步的时间(毫秒)。

类型:counter
minio_cluster_iam_sync_failures 自启动以来失败的 IAM 同步次数。

类型:counter
minio_cluster_iam_sync_successes 自启动以来成功的 IAM 同步次数。

类型:counter

/cluster/usage/buckets

名称 说明 标签
minio_cluster_usage_buckets_since_last_update_seconds 距上次更新存储桶用量指标的秒数。

类型:gauge
minio_cluster_usage_buckets_total_bytes 存储桶总大小(字节)。

类型:gauge
bucket
minio_cluster_usage_buckets_objects_count 存储桶对象总数。

类型:gauge
bucket
minio_cluster_usage_buckets_versions_count 存储桶对象版本总数(含删除标记)。

类型:gauge
bucket
minio_cluster_usage_buckets_delete_markers_count 存储桶删除标记总数。

类型:gauge
bucket
minio_cluster_usage_buckets_quota_total_bytes 存储桶配额(字节)。

类型:gauge
bucket
minio_cluster_usage_buckets_object_size_distribution 存储桶对象大小分布。

类型:gauge
range, bucket
minio_cluster_usage_buckets_object_version_count_distribution 存储桶对象版本数量分布。

类型:gauge
range, bucket

/cluster/usage/objects

名称 说明 标签
minio_cluster_usage_objects_since_last_update_seconds 距上次更新集群对象用量指标的秒数。

类型:gauge
minio_cluster_usage_objects_total_bytes 集群对象总占用字节数。

类型:gauge
minio_cluster_usage_objects_count 集群对象总数。

类型:gauge
minio_cluster_usage_objects_versions_count 集群对象版本总数(含删除标记)。

类型:gauge
minio_cluster_usage_objects_delete_markers_count 集群删除标记总数。

类型:gauge
minio_cluster_usage_objects_buckets_count 集群存储桶总数。

类型:gauge
minio_cluster_usage_objects_size_distribution 集群对象大小分布。

类型:gauge
range
minio_cluster_usage_objects_version_count_distribution 集群对象版本数分布。

类型:gauge
range

调试指标

来自 Prometheus Go Client 基础收集器的标准 Go 运行时指标。

路径 说明
/debug/go Go 运行时指标。

ILM 指标

对象生命周期管理(ILM)子系统指标。

路径 说明
/ilm ILM 生命周期与分层转移指标。

/ilm

名称 说明 标签
minio_cluster_ilm_expiry_pending_tasks 队列中等待执行的 ILM 过期任务数。

类型:gauge
server
minio_cluster_ilm_transition_active_tasks 当前正在执行的 ILM 分层转移任务数。

类型:gauge
server
minio_cluster_ilm_transition_pending_tasks 队列中等待执行的 ILM 分层转移任务数。

类型:gauge
server
minio_cluster_ilm_transition_missed_immediate_tasks 错过的即时 ILM 转移任务数。

类型:counter
server
minio_cluster_ilm_versions_scanned 自启动以来检查 ILM 动作的对象版本总数。

类型:counter
server
minio_ilm_expiry_incomplete_total 自启动以来未能移除目标而结束的 ILM 过期尝试总数,按 reason 区分:not_applicable(在对象锁下重验时规则不再适用)、locked(受 Object Lock 保护)、history_unavailable(无法取得权威版本历史)、error(其他故障)。整键清除还会记录 tier_unsupported(存在远端分层版本)、budget(移除部分版本后达到单轮预算上限,下一轮继续)和 changed(匹配的最新版本已变化),见精确 key 删除。tier_unsupported_skipped 统计扫描器因本池存在远端分层版本而跳过入队的观测次数(每盘每轮扫描计数一次,不等于对象键数或清除次数),见多池生命周期过期。

类型:counter
reason, server

日志 Webhook 指标

日志 Webhook 投递指标。

路径 说明
/logger/webhook 日志 Webhook 相关指标。

/logger/webhook

名称 说明 标签
minio_logger_webhook_failed_messages 发送失败的日志消息数。

类型:counter
server, name, endpoint
minio_logger_webhook_queue_length Webhook 待发送队列长度。

类型:gauge
server, name, endpoint
minio_logger_webhook_total_message 发送至该目标的日志消息总数。

类型:counter
server, name, endpoint

通知指标

存储桶事件通知相关指标。

路径 说明
/notification 事件通知子系统指标。

/notification

名称 说明 标签
minio_notification_current_send_in_progress 当前正在向各目标异步发送的并发调用数。

类型:counter
server
minio_notification_events_errors_total 发送至目标失败的事件总数。

类型:counter
server
minio_notification_events_sent_total 已发送至目标的事件总数。

类型:counter
server
minio_notification_events_skipped_total 因内存队列已满而跳过的事件数。

类型:counter
server

复制指标

站点复制与存储桶复制相关指标。

路径 说明
/bucket/replication 存储桶复制相关指标。
/replication 站点复制与复制工作池相关指标。

/replication

名称 说明 标签
minio_replication_average_active_workers 活跃复制工作协程平均数。

类型:gauge
server
minio_replication_average_queued_bytes 自启动以来排队等待复制的平均字节数。

类型:gauge
server
minio_replication_average_queued_count 自启动以来排队等待复制的平均对象数。

类型:gauge
server
minio_replication_average_data_transfer_rate 平均复制传输速率(字节/秒)。

类型:gauge
server
minio_replication_current_active_workers 当前活跃复制工作协程数。

类型:gauge
server
minio_replication_current_data_transfer_rate 当前复制传输速率(字节/秒)。

类型:gauge
server
minio_replication_last_minute_queued_bytes 上一完整分钟排队复制的字节数。

类型:gauge
server
minio_replication_last_minute_queued_count 上一完整分钟排队复制的对象数。

类型:gauge
server
minio_replication_max_active_workers 自启动以来观测到的最大活跃复制工作协程数。

类型:gauge
server
minio_replication_max_queued_bytes 自启动以来排队等待复制的最大字节数。

类型:gauge
server
minio_replication_max_queued_count 自启动以来排队等待复制的最大对象数。

类型:gauge
server
minio_replication_max_data_transfer_rate 自启动以来的峰值复制传输速率(字节/秒)。

类型:gauge
server
minio_replication_recent_backlog_count 最近 5 分钟内复制积压队列中的对象总数。

类型:gauge
server

/bucket/replication

名称 说明 标签
minio_bucket_replication_last_hour_failed_bytes 最近一小时内存储桶至少复制失败一次的字节总数。

类型:gauge
bucket, server
minio_bucket_replication_last_hour_failed_count 最近一小时内存储桶复制失败的对象总数。

类型:gauge
bucket, server
minio_bucket_replication_last_minute_failed_bytes 上一完整分钟内至少复制失败一次的字节总数。

类型:gauge
bucket, server
minio_bucket_replication_last_minute_failed_count 上一完整分钟内复制失败的对象总数。

类型:gauge
bucket, server
minio_bucket_replication_latency_ms 存储桶复制延迟(毫秒)。

类型:gauge
bucket, operation, range, targetArn, server
minio_bucket_replication_proxied_delete_tagging_requests_total 代理转发至复制目标的 DELETE tagging 请求数。

类型:counter
bucket, server
minio_bucket_replication_proxied_get_requests_failures 代理转发至复制目标的 GET 请求失败数。

类型:counter
bucket, server
minio_bucket_replication_proxied_get_requests_total 代理转发至复制目标的 GET 请求总数。

类型:counter
bucket, server
minio_bucket_replication_proxied_get_tagging_requests_failures 代理转发至复制目标的 GET tagging 请求失败数。

类型:counter
bucket, server
minio_bucket_replication_proxied_get_tagging_requests_total 代理转发至复制目标的 GET tagging 请求总数。

类型:counter
bucket, server
minio_bucket_replication_proxied_head_requests_failures 代理转发至复制目标的 HEAD 请求失败数。

类型:counter
bucket, server
minio_bucket_replication_proxied_head_requests_total 代理转发至复制目标的 HEAD 请求总数。

类型:counter
bucket, server
minio_bucket_replication_proxied_put_tagging_requests_failures 代理转发至复制目标的 PUT tagging 请求失败数。

类型:counter
bucket, server
minio_bucket_replication_proxied_put_tagging_requests_total 代理转发至复制目标的 PUT tagging 请求总数。

类型:counter
bucket, server
minio_bucket_replication_sent_bytes 已复制到目标端的总字节数。

类型:counter
bucket, server
minio_bucket_replication_sent_count 已复制到目标端的对象总数。

类型:counter
bucket, server
minio_bucket_replication_total_failed_bytes 自启动以来至少复制失败一次的总字节数。

类型:counter
bucket, server
minio_bucket_replication_total_failed_count 自启动以来复制失败的对象总数。

类型:counter
bucket, server
minio_bucket_replication_proxied_delete_tagging_requests_failures 代理转发至复制目标的 DELETE tagging 请求失败数。

类型:counter
bucket, server

扫描器指标

后台扫描器运行指标。

路径 说明
/scanner 后台扫描器相关指标。

/scanner

名称 说明 标签
minio_scanner_bucket_scans_finished 自启动以来已完成的存储桶扫描次数。

类型:counter
server
minio_scanner_bucket_scans_started 自启动以来已启动的存储桶扫描次数。

类型:counter
server
minio_scanner_directories_scanned 自启动以来已扫描的目录总数。

类型:counter
server
minio_scanner_last_activity_seconds 距最近一次扫描活动的秒数。

类型:gauge
server
minio_scanner_objects_scanned 自启动以来已扫描的唯一对象总数。

类型:counter
server
minio_scanner_versions_scanned 自启动以来已扫描的对象版本总数。

类型:counter
server

系统指标

SILO 进程及所在节点的系统指标。

路径 说明
/system/cpu 节点 CPU 指标。
/system/drive 节点磁盘指标。
/system/network/internode 节点间网络请求指标。
/system/memory 节点内存指标。
/system/process 进程级资源指标。

/system/drive

名称 说明 标签
minio_system_drive_used_bytes 磁盘已用存储空间(字节)。

类型:gauge
drive, set_index, drive_index, pool_index, server
minio_system_drive_free_bytes 磁盘剩余存储空间(字节)。

类型:gauge
drive, set_index, drive_index, pool_index, server
minio_system_drive_total_bytes 磁盘总存储空间(字节)。

类型:gauge
drive, set_index, drive_index, pool_index, server
minio_system_drive_used_inodes 磁盘已用 inode 数。

类型:gauge
drive, set_index, drive_index, pool_index, server
minio_system_drive_free_inodes 磁盘剩余 inode 数。

类型:gauge
drive, set_index, drive_index, pool_index, server
minio_system_drive_total_inodes 磁盘总 inode 数。

类型:gauge
drive, set_index, drive_index, pool_index, server
minio_system_drive_timeout_errors_total 磁盘超时错误总数。

类型:counter
drive, set_index, drive_index, pool_index, server
minio_system_drive_io_errors_total 磁盘 I/O 错误总数。

类型:counter
drive, set_index, drive_index, pool_index, server
minio_system_drive_availability_errors_total 磁盘可用性错误(I/O 错误与超时)总数。

类型:counter
drive, set_index, drive_index, pool_index, server
minio_system_drive_waiting_io 磁盘上等待中的 I/O 操作数。

类型:gauge
drive, set_index, drive_index, pool_index, server
minio_system_drive_api_latency_micros 最近一分钟磁盘存储操作平均延迟(微秒)。

类型:gauge
drive, api, set_index, drive_index, pool_index, server
minio_system_drive_offline_count 离线磁盘数。

类型:gauge
pool_index, server
minio_system_drive_online_count 在线磁盘数。

类型:gauge
pool_index, server
minio_system_drive_count 磁盘总数。

类型:gauge
pool_index, server
minio_system_drive_health 磁盘健康状态(0=离线,1=健康,2=自愈中)。

类型:gauge
drive, set_index, drive_index, pool_index, server
minio_system_drive_reads_per_sec 磁盘每秒读次数。

类型:gauge
drive, set_index, drive_index, pool_index, server
minio_system_drive_reads_kb_per_sec 磁盘每秒读取千字节数。

类型:gauge
drive, set_index, drive_index, pool_index, server
minio_system_drive_reads_await 磁盘读请求平均等待时间。

类型:gauge
drive, set_index, drive_index, pool_index, server
minio_system_drive_writes_per_sec 磁盘每秒写次数。

类型:gauge
drive, set_index, drive_index, pool_index, server
minio_system_drive_writes_kb_per_sec 磁盘每秒写入千字节数。

类型:gauge
drive, set_index, drive_index, pool_index, server
minio_system_drive_writes_await 磁盘写请求平均等待时间。

类型:gauge
drive, set_index, drive_index, pool_index, server
minio_system_drive_perc_util 磁盘繁忙时间占比。

类型:gauge
drive, set_index, drive_index, pool_index, server

/system/memory

名称 说明 标签
minio_system_memory_used 节点已用内存。

类型:gauge
server
minio_system_memory_used_perc 节点内存使用百分比。

类型:gauge
server
minio_system_memory_free 节点空闲内存。

类型:gauge
server
minio_system_memory_total 节点总内存。

类型:gauge
server
minio_system_memory_buffers 节点缓冲区(buffers)内存。

类型:gauge
server
minio_system_memory_cache 节点页缓存(cache)内存。

类型:gauge
server
minio_system_memory_shared 节点共享内存。

类型:gauge
server
minio_system_memory_available 节点可用内存。

类型:gauge
server

/system/cpu

名称 说明 标签
minio_system_cpu_avg_idle CPU 平均空闲时间占比。

类型:gauge
server
minio_system_cpu_avg_iowait CPU 平均 IOWait 时间占比。

类型:gauge
server
minio_system_cpu_load 1 分钟 CPU 平均负载。

类型:gauge
server
minio_system_cpu_load_perc 1 分钟 CPU 平均负载百分比。

类型:gauge
server
minio_system_cpu_nice CPU nice 时间占比。

类型:gauge
server
minio_system_cpu_steal CPU steal 时间占比。

类型:gauge
server
minio_system_cpu_system CPU 内核态时间占比。

类型:gauge
server
minio_system_cpu_user CPU 用户态时间占比。

类型:gauge
server

/system/network/internode

名称 说明 标签
minio_system_network_internode_errors_total 失败的节点间调用总数。

类型:counter
server, pool_index
minio_system_network_internode_dial_errors_total 节点间 TCP 建连超时与错误总数。

类型:counter
server, pool_index
minio_system_network_internode_dial_avg_time_nanos 节点间 TCP 建连平均耗时(纳秒)。

类型:gauge
server, pool_index
minio_system_network_internode_sent_bytes_total 发送给其他对端节点的总字节数。

类型:counter
server, pool_index
minio_system_network_internode_recv_bytes_total 从其他对端节点接收的总字节数。

类型:counter
server, pool_index

/system/process

名称 说明 标签
minio_system_process_locks_read_total 当前节点持有的读锁数量。

类型:gauge
server
minio_system_process_locks_write_total 当前节点持有的写锁数量。

类型:gauge
server
minio_system_process_cpu_total_seconds 进程累计消耗的用户态与内核态 CPU 秒数。

类型:counter
server
minio_system_process_go_routine_total 当前运行中的 Goroutine 总数。

类型:gauge
server
minio_system_process_io_rchar_bytes 进程从存储子系统(含缓存)读取的总字节数(/proc/[pid]/io rchar)。

类型:counter
server
minio_system_process_io_read_bytes 进程从底层存储读取的总字节数(/proc/[pid]/io read_bytes)。

类型:counter
server
minio_system_process_io_wchar_bytes 进程向存储子系统(含页缓存)写入的总字节数(/proc/[pid]/io wchar)。

类型:counter
server
minio_system_process_io_write_bytes 进程向底层存储写入的总字节数(/proc/[pid]/io write_bytes)。

类型:counter
server
minio_system_process_start_time_seconds 进程启动时间(自 Unix 纪元起的秒数)。

类型:gauge
server
minio_system_process_uptime_seconds 进程运行时长(秒)。

类型:gauge
server
minio_system_process_file_descriptor_limit_total 进程可打开文件描述符总数上限。

类型:gauge
server
minio_system_process_file_descriptor_open_total 进程当前打开的文件描述符总数。

类型:gauge
server
minio_system_process_syscall_read_total 读系统调用总数(/proc/[pid]/io syscr)。

类型:counter
server
minio_system_process_syscall_write_total 写系统调用总数(/proc/[pid]/io syscw)。

类型:counter
server
minio_system_process_resident_memory_bytes 常驻内存(RSS)大小(字节)。

类型:gauge
server
minio_system_process_virtual_memory_bytes 虚拟内存大小(字节)。

类型:gauge
server
minio_system_process_virtual_memory_max_bytes 最大虚拟内存限制(字节)。

类型:gauge
server

3 - 将服务日志或审计日志发布到外部服务

MinIO 会将所有 silo server 操作输出到系统控制台。如何读取这些日志取决于 server 进程的管理方式。例如,如果 server 通过 systemd 服务管理,可以使用 journalctl -u SERVICENAME.service 读取日志(将 SERVICENAME 替换为服务名称,例如 silo)。

MinIO 还支持将服务日志和审计日志发布到 HTTP Webhook。

  • 服务日志 包含与系统控制台中相同的 silo server 操作日志。服务日志适用于常规监控与运维排障。
  • 审计日志 会以更细粒度描述 MinIO 部署上的每一次操作。审计日志适用于要求对操作进行详细追踪的安全标准与合规规范。

MinIO 会将日志作为 JSON 文档,通过 PUT 请求发送到每个已配置端点。端点服务器负责处理这些 JSON 文档。MinIO 要求显式配置每个 Webhook 端点,默认情况下 不会 向 Webhook 发布日志。

通过 mc admin config set 配置时,SILO 会在所有集群节点上动态重载 logger_webhook、audit_webhook 和 audit_kafka 目标,无需整集群重启(若启动时通过环境变量覆盖配置,环境变量优先且修改后仍需重启)。在 SILO 20261109 中,对端节点配置重载会在服务端进程生命周期内保持活跃的 audit_webhook、logger_webhook 和 audit_kafka 目标持续运行,修复了重载请求返回后对端节点停止目标工作协程并丢弃日志的问题(#259)。

将服务日志发布到 HTTP Webhook

你可以通过环境变量 或 运行时配置项,配置一个新的 HTTP Webhook 端点,让 MinIO 将 silo server 日志发布到该端点。

MinIO 支持使用 环境变量 指定 silo server 日志 HTTP Webhook 端点及其相关配置项。

下面的示例设置了配置日志 HTTP Webhook 端点所需的 全部 环境变量。其中最少 必须 配置的变量为:

Linux / macOS
export MINIO_LOGGER_WEBHOOK_ENABLE_<IDENTIFIER>="on"
export MINIO_LOGGER_WEBHOOK_ENDPOINT_<IDENTIFIER>="https://webhook-1.example.net"
export MINIO_LOGGER_WEBHOOK_AUTH_TOKEN_<IDENTIFIER>="TOKEN"
Windows
set MINIO_LOGGER_WEBHOOK_ENABLE_<IDENTIFIER>="on"
set MINIO_LOGGER_WEBHOOK_ENDPOINT_<IDENTIFIER>="https://webhook-1.example.net"
set MINIO_LOGGER_WEBHOOK_AUTH_TOKEN_<IDENTIFIER>="TOKEN"
  • 将 <IDENTIFIER> 替换为该 HTTP Webhook 端点的唯一描述字符串。与新日志 HTTP Webhook 相关的所有环境变量都应使用同一个 <IDENTIFIER>。

    如果指定的 <IDENTIFIER> 与现有日志端点匹配,新设置将 覆盖 该端点的现有设置。可使用 mc admin config get logger_webhook 查看当前已配置的日志 HTTP Webhook 端点。

  • 将 https://webhook-1.example.net 替换为 HTTP Webhook 端点的 URL。

  • 将 TOKEN 替换为适用于该端点的认证令牌类型。对于无需认证的端点,可省略该项。

为支持多种令牌类型,MinIO 会按 原样 使用该值创建请求认证头。根据端点不同,你可能需要包含额外信息。

例如,对于 Bearer token,请在前面加上 Bearer:

Linux / macOS
export MINIO_LOGGER_WEBHOOK_AUTH_TOKEN_myendpoint="Bearer 1a2b3c4f5e"
Windows
set MINIO_LOGGER_WEBHOOK_AUTH_TOKEN_myendpoint="Bearer 1a2b3c4f5e"

请根据端点要求调整该值。自定义认证格式类似如下:

Linux / macOS
export MINIO_LOGGER_WEBHOOK_AUTH_TOKEN_xyz="ServiceXYZ 1a2b3c4f5e"
Windows
set MINIO_LOGGER_WEBHOOK_AUTH_TOKEN_xyz="ServiceXYZ 1a2b3c4f5e"

详情请参阅目标服务的文档。

修改环境变量后需重启 SILO 服务端使其生效,并且必须在部署中的 所有 SILO 节点上指定相同的环境变量与取值。

SILO 支持使用 mc admin config set 命令和 logger_webhook 配置键新增或更新日志 HTTP Webhook 端点。当未被 MINIO_LOGGER_WEBHOOK_* 环境变量覆盖时,SILO 会在全部集群节点上动态重载 logger_webhook 配置,无需重启整个部署;在 SILO 20261109 中,对端节点重载后保持日志目标持续运行(#259)。

下面的示例设置了配置日志 HTTP Webhook 端点相关的 全部 配置项。其中最少 必须 配置的项为 logger_webhook endpoint:

mc admin config set ALIAS/ logger_webhook:IDENTIFIER  \
   endpoint="https://webhook-1.example.net"           \
   auth_token="TOKEN"
  • 将 IDENTIFIER 替换为该 HTTP Webhook 端点的唯一描述字符串。

    如果指定的 IDENTIFIER 与现有日志端点匹配,新设置将 覆盖 该端点的现有设置。可使用 mc admin config get logger_webhook 查看当前已配置的日志 HTTP Webhook 端点。

  • 将 https://webhook-1.example.net 替换为 HTTP Webhook 端点的 URL。

  • 将 TOKEN 替换为适用于该端点的认证令牌类型。对于无需认证的端点,可省略该项。

    为支持多种令牌类型,MinIO 会按 原样 使用该值创建请求认证头。根据端点不同,你可能需要包含额外信息。

    例如,对于 Bearer token,请在前面加上 Bearer:

    mc admin config set ALIAS/ logger_webhook    \
       endpoint="https://webhook-1.example.net"  \
       auth_token="Bearer 1a2b3c4f5e"

    请根据端点要求调整该值。自定义认证格式类似如下:

    mc admin config set ALIAS/ logger_webhook    \
       endpoint="https://webhook-1.example.net"  \
       auth_token="ServiceXYZ 1a2b3c4f5e"

    详情请参阅目标服务的文档。

将审计日志发布到 HTTP Webhook

你可以通过环境变量 或 运行时配置项,配置一个新的 HTTP Webhook 端点,让 MinIO 将审计日志发布到该端点:

MinIO 支持使用 环境变量 指定审计日志 HTTP Webhook 端点及其相关配置项。

下面的示例设置了配置审计日志 HTTP Webhook 端点所需的 全部 环境变量。其中最少 必须 配置的变量为:

Linux / macOS
export MINIO_AUDIT_WEBHOOK_ENABLE_<IDENTIFIER>="on"
export MINIO_AUDIT_WEBHOOK_ENDPOINT_<IDENTIFIER>="https://webhook-1.example.net"
export MINIO_AUDIT_WEBHOOK_AUTH_TOKEN_<IDENTIFIER>="TOKEN"
export MINIO_AUDIT_WEBHOOK_CLIENT_CERT_<IDENTIFIER>="cert.pem"
export MINIO_AUDIT_WEBHOOK_CLIENT_KEY_<IDENTIFIER>="cert.key"
Windows
set MINIO_AUDIT_WEBHOOK_ENABLE_<IDENTIFIER>="on"
set MINIO_AUDIT_WEBHOOK_ENDPOINT_<IDENTIFIER>="https://webhook-1.example.net"
set MINIO_AUDIT_WEBHOOK_AUTH_TOKEN_<IDENTIFIER>="TOKEN"
set MINIO_AUDIT_WEBHOOK_CLIENT_CERT_<IDENTIFIER>="cert.pem"
set MINIO_AUDIT_WEBHOOK_CLIENT_KEY_<IDENTIFIER>="cert.key"
  • 将 <IDENTIFIER> 替换为该 HTTP Webhook 端点的唯一描述字符串。与新审计日志 HTTP Webhook 相关的所有环境变量都应使用同一个 <IDENTIFIER>。

    如果指定的 <IDENTIFIER> 与现有日志端点匹配,新设置将 覆盖 该端点的现有设置。可使用 mc admin config get audit_webhook 查看当前已配置的审计日志 HTTP Webhook 端点。

  • 将 https://webhook-1.example.net 替换为 HTTP Webhook 端点的 URL。

  • 将 TOKEN 替换为适用于该端点的认证令牌类型。对于无需认证的端点,可省略该项。

为支持多种令牌类型,MinIO 会按 原样 使用该值创建请求认证头。根据端点不同,你可能需要包含额外信息。

例如,对于 Bearer token,请在前面加上 Bearer:

Linux / macOS
export MINIO_AUDIT_WEBHOOK_AUTH_TOKEN_myendpoint="Bearer 1a2b3c4f5e"
Windows
set MINIO_AUDIT_WEBHOOK_AUTH_TOKEN_myendpoint="Bearer 1a2b3c4f5e"

请根据端点要求调整该值。自定义认证格式类似如下:

Linux / macOS
export MINIO_AUDIT_WEBHOOK_AUTH_TOKEN_xyz="ServiceXYZ 1a2b3c4f5e"
Windows
set MINIO_AUDIT_WEBHOOK_AUTH_TOKEN_xyz="ServiceXYZ 1a2b3c4f5e"

详情请参阅目标服务的文档。

  • 将 cert.pem 和 cert.key 替换为要向 HTTP Webhook 服务端出示的 X.509 TLS 客户端证书公钥与私钥。对于不要求客户端证书的端点,可省略该项。

修改环境变量后需重启 SILO 服务端使其生效,并且必须在部署中的 所有 SILO 节点上指定相同的环境变量与取值。

SILO 支持使用 mc admin config set 命令和 audit_webhook 配置键新增或更新审计日志 HTTP Webhook 端点(audit_kafka 审计目标同样支持动态重载)。当未被 MINIO_AUDIT_WEBHOOK_* 环境变量覆盖时,SILO 会在所有集群节点上动态应用 audit_webhook 变更,无需重启整个部署;在 SILO 20261109 中,对端节点配置重载会在每个节点上保持活跃的 audit_webhook 和 audit_kafka 工作协程及 queue_dir 磁盘投递队列持续运行(#259)。

下面的示例设置了配置审计日志 HTTP Webhook 端点相关的 全部 配置项。其中最少 必须 配置的项为 audit_webhook endpoint:

mc admin config set ALIAS/ audit_webhook:IDENTIFIER  \
   endpoint="https://webhook-1.example.net"          \
   auth_token="TOKEN"                                \
   client_cert="cert.pem"                            \
   client_key="cert.key"
  • 将 IDENTIFIER 替换为该 HTTP Webhook 端点的唯一描述字符串。

    如果指定的 IDENTIFIER 与现有日志端点匹配,新设置将 覆盖 该端点的现有设置。可使用 mc admin config get audit_webhook 查看当前已配置的审计日志 HTTP Webhook 端点。

  • 将 https://webhook-1.example.net 替换为 HTTP Webhook 端点的 URL。

  • 将 TOKEN 替换为适用于该端点的认证令牌类型。对于无需认证的端点,可省略该项。

    为支持多种令牌类型,MinIO 会按 原样 使用该值创建请求认证头。根据端点不同,你可能需要包含额外信息。

    例如,对于 Bearer token,请在前面加上 Bearer:

    mc admin config set ALIAS/ audit_webhook     \
       endpoint="https://webhook-1.example.net"  \
       auth_token="Bearer 1a2b3c4f5e"

    请根据端点要求调整该值。自定义认证格式类似如下:

    mc admin config set ALIAS/ audit_webhook     \
       endpoint="https://webhook-1.example.net"  \
       auth_token="ServiceXYZ 1a2b3c4f5e"

    详情请参阅目标服务的文档。

  • 将 cert.pem 和 cert.key 替换为要向 HTTP Webhook 服务端出示的 X.509 TLS 客户端证书公钥与私钥。对于不要求客户端证书的端点,可省略该项。

审计日志结构

MinIO 审计日志类似于以下 JSON 文档:

  • api.timeToFirstByte 和 api.timeToResponse 字段以纳秒表示。

  • 对于 纠删码部署, tags.objectErasureMap 提供与对象相关的以下详细信息:

    • 执行该对象操作所在的 服务器池。
    • 执行该对象操作所在的 纠删码集合。
    • 参与该对象操作的纠删码集合驱动器列表。
{
   "version": "1",
   "deploymentid": "8ca2b7ad-20cf-4d07-9efb-28b2f519f4a5",
   "time": "2024-02-29T19:39:25.744431903Z",
   "event": "",
   "trigger": "incoming",
   "api": {
      "name": "CompleteMultipartUpload",
      "bucket": "data",
      "object": "test-data.csv",
      "status": "OK",
      "statusCode": 200,
      "rx": 267,
      "tx": 358,
      "txHeaders": 387,
      "timeToFirstByte": "2096989ns",
      "timeToFirstByteInNS": "2096989",
      "timeToResponse": "2111986ns",
      "timeToResponseInNS": "2111986"
   },
   "remotehost": "127.0.0.1",
   "requestID": "17B86CB0ED88EBE9",
   "userAgent": "MinIO (linux; amd64) minio-go/v7.0.67 mc/RELEASE.2024-02-24T01-33-20Z",
   "requestPath": "/data/test-data.csv",
   "requestHost": "minio.example.net:9000",
   "requestQuery": {
      "uploadId": "OGNhMmI3YWQtMjBjZi00ZDA3LTllZmItMjhiMmY1MTlmNGE1LmU3MjNlNWI4LTNiYWYtNDYyNy1hNzI3LWMyNDE3NTVjMmMzNw"
   },
   "requestHeader": {
      "Accept-Encoding": "zstd,gzip",
      "Authorization": "AWS4-HMAC-SHA256 Credential=minioadmin/20240229/us-east-1/s3/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=ccb3acdc1763509a88a7e4a3d7fe431ef0ee5ca3f66ccb430d5a09326e87e893",
      "Content-Length": "267",
      "Content-Type": "application/octet-stream",
      "User-Agent": "MinIO (linux; amd64) minio-go/v7.0.67 mc/RELEASE.2024-02-24T01-33-20Z",
      "X-Amz-Content-Sha256": "d61969719ee94f43c4e87044229b7a13b54cab320131e9a77259ad0c9344f6d3",
      "X-Amz-Date": "20240229T193925Z"
   },
   "responseHeader": {
      "Accept-Ranges": "bytes",
      "Content-Length": "358",
      "Content-Type": "application/xml",
      "ETag": "1d9fdc88af5e74f5eac0a3dd750ce58e-2",
      "Server": "MinIO",
      "Strict-Transport-Security": "max-age=31536000; includeSubDomains",
      "Vary": "Origin,Accept-Encoding",
      "X-Amz-Id-2": "dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8",
      "X-Amz-Request-Id": "17B86CB0ED88EBE9",
      "X-Content-Type-Options": "nosniff",
      "X-Xss-Protection": "1; mode=block"
   },
   "tags": {
      "objectLocation": {
            "name": "Mousepad Template-v03final.jpg",
            "poolId": 1,
            "setId": 1,
            "disks": [
               "/mnt/drive-1",
               "/mnt/drive-2",
               "/mnt/drive-3",
               "/mnt/drive-4"
            ]
      }
   },
   "accessKey": "minioadmin"
}

4 - 使用 InfluxDB 进行监控与告警

MinIO 使用 Prometheus 数据模型 发布集群和节点指标。 InfluxDB 支持抓取 MinIO 指标数据,用于监控和告警。

本页介绍以下内容:

  • 配置 InfluxDB 服务,抓取并展示 MinIO 部署的指标
  • 基于 MinIO 指标配置告警
说明

前提条件

此过程要求满足以下条件:

  • 已有 InfluxDB 部署,并配置一个或多个通知端点
  • 已有可通过网络访问 InfluxDB 部署的 MinIO 部署
  • 本地主机已安装 mc,并已配置为可 访问 MinIO 部署

本文说明使用 version 2 指标。 关于指标 API 版本的更多信息,请参见 指标与告警。

对于 Kubernetes 上的 MinIO 部署,本文默认已具备 Ingress、负载均衡器等必要的网络控制组件,以便 MinIO 租户与 InfluxDB 服务之间能够互相访问。

配置 InfluxDB 收集 MinIO 指标并触发告警

警告

重要

本过程专门使用 InfluxDB UI 来创建抓取端点。

InfluxDB UI 提供的配置能力不如 Telegraf 及其对应的 Prometheus plugin 完整。 具体来说:

  • 无法通过 InfluxDB UI 为 MinIO 指标端点启用认证访问
  • 无法为已采集指标设置标签(例如 url_tag),以唯一标识特定 MinIO 部署的指标

Telegraf Prometheus plugin 还支持 Kubernetes 特有能力,例如抓取特定 MinIO 租户的 minio service。

配置 Telegraf 不在本文范围内。 可将本文作为配置 Telegraf 抓取 MinIO 指标的一般指导。

  1. 配置对 MinIO 指标的公开访问

    在 MinIO 部署的所有节点上,将 MINIO_PROMETHEUS_AUTH_TYPE 环境变量设置为 "public"。 随后可重启部署,以允许公开访问 MinIO 指标。

    可通过对指标端点执行 curl 来验证变更是否生效:

    curl https://HOSTNAME/minio/v2/metrics/cluster

    将 HOSTNAME 替换为访问 MinIO 部署所使用的负载均衡器或反向代理 URL。 也可以将任意单个节点写成 HOSTNAME:PORT,即在节点主机名之外再指定 MinIO server API 端口。

    响应正文中应包含已采集的 MinIO 指标列表。

  2. 登录 InfluxDB UI 并创建 Bucket

    选择用于存储 MinIO 指标的 Organization。

    创建一个 New Bucket,用于存储该 MinIO 部署的指标。

  3. 创建新的抓取源

    创建一个 新的 InfluxDB Scraper。

    指定 MinIO 部署的完整 URL,其中包含指标端点:

    https://HOSTNAME/minio/v2/metrics/cluster

    将 HOSTNAME 替换为访问 MinIO 部署所使用的负载均衡器或反向代理 URL。 也可以将任意单个节点写成 HOSTNAME:PORT,即在节点主机名之外再指定 MinIO server API 端口。

  4. 验证数据

    使用 DataExplorer 可视化已采集的 MinIO 数据。

    例如,可针对 minio_cluster_capacity_usable_total_bytes 和 minio_cluster_capacity_usable_free_bytes 设置过滤条件,以比较 MinIO 部署中的总可用空间和剩余可用空间。

  5. 配置 Check

    基于某个 MinIO 指标创建一个新的 Check。

    以下示例 Check 规则为 MinIO 部署提供了一组基础告警。 可按需修改这些示例,或将其作为构建自定义 Check 的参考。

    • 创建一个名为 MINIO_NODE_DOWN 的 Threshold Check。

      将过滤条件设置为 minio_cluster_nodes_offline_total 键。

      在值大于 1 时,将 Thresholds 设置为 WARN。

    • 创建一个名为 MINIO_QUORUM_WARNING 的 Threshold Check。

      将过滤条件设置为 minio_cluster_drive_offline_total 键。

      当该值比已配置的 纠删码校验值 少 1 时,将 Thresholds 设置为 CRITICAL。

      例如,使用 EC:4 的部署应将该值设置为 3。

    配置 Notification endpoints 和 Notification rules,使各类 Check 都能触发适当响应。

5 - Metrics version 2

MinIO 使用 Prometheus 数据模型 发布集群和节点指标。你可以使用任意抓取工具从 SILO 拉取指标数据,以执行分析和配置告警。

SILO 20261109 / Console 2.7.0: 新部署以及 Console 2.7.0 的 Metrics 页面建议抓取 Metrics V3(通过 mcli 20261109 执行 mcli admin prometheus generate ALIAS --api-version v3 生成配置;参见 Console 2.7.0 Metrics V3 映射参考)。在 SILO 20261109 中,复制工作协程指标在复制工作池不存在时不会触发 panic,并继续保留历史均值和峰值计数(099b7ddf3);实时批处理作业指标保留暂停原因以及跳过或拒绝计数(#325)。

Version 2 端点

Metrics version 2 将指标划分为以下三个类别:

每个 v2 端点都会返回其所属类别的全部指标。例如,抓取以下端点会返回所有集群指标:

http://HOSTNAME:PORT/minio/v2/metrics/cluster

仅访问基础端点 /minio/v2/metrics/ 也会返回集群指标。

如需更灵活的抓取方式和更完整的指标集合,请使用 metrics version 3。

现有部署仍可继续使用 version 2 指标 和 Grafana 仪表板。

MinIO Grafana 仪表板

MinIO 提供两个 Grafana 仪表板,用于可视化 v2 指标。有关为 Grafana 配置兼容 Prometheus 数据源的完整说明,请参见 Prometheus 关于 Grafana 支持的文档。

可用的 version 2 指标

以下各节描述 version 2 的端点与指标。

你可以使用以下 URL 端点抓取集群级指标:

http://HOSTNAME:PORT/minio/v2/metrics/cluster

将 HOSTNAME:PORT 替换为部署的 FQDN 与端口。对于使用负载均衡器管理节点间连接的部署,请指定负载均衡器地址。

说明

存储桶端点变更与上限

  • RELEASE.2023-07-21T21-12-44Z / RELEASE.2023-08-31T15-31-16Z: 存储桶指标迁移至独立端点。
  • RELEASE.2025-03-12T17-29-24Z: 出于性能原因,v2 存储桶指标最多返回 100 个存储桶。存储桶数量超过 100 时,请改用 v3 指标。

使用以下 URL 端点抓取存储桶级指标:

http://HOSTNAME:PORT/minio/v2/metrics/bucket

将 HOSTNAME:PORT 替换为部署的 FQDN 与端口。对于使用负载均衡器管理节点间连接的部署,请指定负载均衡器地址。

说明

新增: RELEASE.2023-10-07T15-07-38Z

你可以使用以下 URL 端点抓取资源指标:

http://HOSTNAME:PORT/minio/v2/metrics/resource

将 HOSTNAME:PORT 替换为部署的 FQDN 与端口。对于使用负载均衡器管理节点间连接的部署,请指定负载均衡器地址。

集群指标

SILO 在集群级别采集以下指标。指标可能带有一个或多个标签(例如计算该指标的节点标识)。

每次采集可从任意一个 SILO 节点通过以下 URL 拉取:

https://HOSTNAME:PORT/minio/v2/metrics/cluster

将 HOSTNAME:PORT 替换为部署的主机名和端口;部署前存在负载均衡器时,请填写负载均衡器地址。

审计指标

名称 说明
minio_audit_failed_messages 自启动以来发送失败的审计消息总数。
minio_audit_target_queue_length 目标队列中待发送的审计消息数。
minio_audit_total_messages 自启动以来已发送的审计消息总数。

集群容量指标

名称 说明
minio_cluster_capacity_raw_free_bytes 集群在线裸盘剩余容量(字节)。
minio_cluster_capacity_raw_total_bytes 集群在线裸盘总容量(字节)。
minio_cluster_capacity_usable_free_bytes 集群在线可用剩余容量(字节)。
minio_cluster_capacity_usable_total_bytes 集群在线可用总容量(字节)。
minio_cluster_objects_size_distribution 集群对象大小分布。
minio_cluster_objects_version_distribution 集群对象版本数分布。
minio_cluster_usage_object_total 集群对象总数。
minio_cluster_usage_total_bytes 集群已用字节总数。
minio_cluster_usage_version_total 集群对象版本总数(含删除标记)。
minio_cluster_usage_deletemarker_total 集群删除标记总数。
minio_cluster_bucket_total 集群存储桶总数。

集群磁盘指标

名称 说明
minio_cluster_drive_offline_total 集群离线磁盘总数。
minio_cluster_drive_online_total 集群在线磁盘总数。
minio_cluster_drive_total 集群磁盘总数。

集群 ILM 指标

名称 说明
minio_cluster_ilm_transitioned_bytes 已分层转移到远端存储层的总字节数。
minio_cluster_ilm_transitioned_objects 已分层转移到远端存储层的对象总数。
minio_cluster_ilm_transitioned_versions 已分层转移到远端存储层的对象版本总数。

集群 KMS 指标

名称 说明
minio_cluster_kms_online KMS 是否在线(1=在线,0=离线)。
minio_cluster_kms_request_error 返回客户端错误(HTTP 4xx)的 KMS 请求数。
minio_cluster_kms_request_failure 返回内部错误(HTTP 5xx)的 KMS 请求数。
minio_cluster_kms_request_success 成功的 KMS 请求数。
minio_cluster_kms_uptime KMS 运行时长(秒)。

集群健康指标

名称 说明
minio_cluster_nodes_offline_total 离线节点总数。
minio_cluster_nodes_online_total 在线节点总数。
minio_cluster_write_quorum 所有存储池与纠删集中的最大写仲裁。
minio_cluster_health_status 当前集群健康状态。
minio_cluster_health_erasure_set_healing_drives 纠删集中正在自愈的磁盘数。
minio_cluster_health_erasure_set_online_drives 纠删集中在线磁盘数。
minio_cluster_health_erasure_set_read_quorum 纠删集读仲裁。
minio_cluster_health_erasure_set_write_quorum 纠删集写仲裁。
minio_cluster_health_erasure_set_status 纠删集当前健康状态。

集群复制指标

标注为“仅站点复制”的指标仅在配置了站点复制的部署上产出;对于配置了存储桶复制或批量复制的部署,相应指标会在存储桶指标端点下产出。

名称 说明
minio_cluster_replication_last_hour_failed_bytes (仅站点复制)最近一完整小时内至少复制失败一次的字节总数。
minio_cluster_replication_last_hour_failed_count (仅站点复制)最近一完整小时内复制失败的对象总数。
minio_cluster_replication_last_minute_failed_bytes 上一完整分钟内至少复制失败一次的字节总数。
minio_cluster_replication_last_minute_failed_count 上一完整分钟内复制失败的对象总数。
minio_cluster_replication_total_failed_bytes (仅站点复制)自启动以来至少复制失败一次的字节总数。
minio_cluster_replication_total_failed_count (仅站点复制)自启动以来复制失败的对象总数。
minio_cluster_replication_received_bytes (仅站点复制)从其他源集群复制到本集群的总字节数。
minio_cluster_replication_received_count (仅站点复制)从其他源集群复制到本集群的对象总数。
minio_cluster_replication_sent_bytes (仅站点复制)已复制到目标集群的总字节数。
minio_cluster_replication_sent_count (仅站点复制)已复制到目标集群的对象总数。
minio_cluster_replication_credential_errors (仅站点复制)自启动以来的复制凭据错误总数。
minio_cluster_replication_proxied_get_requests_total (仅站点复制)代理转发至复制目标的 GET 请求总数。
minio_cluster_replication_proxied_head_requests_total (仅站点复制)代理转发至复制目标的 HEAD 请求总数。
minio_cluster_replication_proxied_delete_tagging_requests_total (仅站点复制)代理转发至复制目标的 DELETE tagging 请求总数。
minio_cluster_replication_proxied_get_tagging_requests_total (仅站点复制)代理转发至复制目标的 GET tagging 请求总数。
minio_cluster_replication_proxied_put_tagging_requests_total (仅站点复制)代理转发至复制目标的 PUT tagging 请求总数。
minio_cluster_replication_proxied_get_requests_failures (仅站点复制)代理转发至复制目标的 GET 请求失败数。
minio_cluster_replication_proxied_head_requests_failures (仅站点复制)代理转发至复制目标的 HEAD 请求失败数。
minio_cluster_replication_proxied_delete_tagging_requests_failures (仅站点复制)代理转发至复制目标的 DELETE tagging 请求失败数。
minio_cluster_replication_proxied_get_tagging_requests_failures (仅站点复制)代理转发至复制目标的 GET tagging 请求失败数。
minio_cluster_replication_proxied_put_tagging_requests_failures (仅站点复制)代理转发至复制目标的 PUT tagging 请求失败数。

节点复制指标

在配置了站点复制、存储桶复制或批量复制时反映节点级复制队列与链路状态。

名称 说明
minio_node_replication_current_active_workers 当前活跃复制工作协程数。
minio_node_replication_average_active_workers 活跃复制工作协程平均数。
minio_node_replication_max_active_workers 自启动以来观测到的最大活跃复制工作协程数。
minio_node_replication_link_online 复制链路是否在线(1=在线,0=离线)。
minio_node_replication_link_offline_duration_seconds 自上次离线事件以来复制链路持续离线秒数。
minio_node_replication_link_downtime_duration_seconds 自启动以来复制链路累计停机秒数。
minio_node_replication_average_link_latency_ms 复制链路平均延迟(毫秒)。
minio_node_replication_max_link_latency_ms 自启动以来复制链路最大延迟(毫秒)。
minio_node_replication_current_link_latency_ms 当前复制链路延迟(毫秒)。
minio_node_replication_current_transfer_rate 当前复制传输速率(字节/秒)。
minio_node_replication_average_transfer_rate 平均复制传输速率(字节/秒)。
minio_node_replication_max_transfer_rate 自启动以来的最大复制传输速率(字节/秒)。
minio_node_replication_last_minute_queued_count 上一完整分钟排队复制的对象总数。
minio_node_replication_last_minute_queued_bytes 上一完整分钟排队复制的字节总数。
minio_node_replication_average_queued_count 自启动以来排队等待复制的平均对象数。
minio_node_replication_average_queued_bytes 自启动以来排队等待复制的平均字节数。
minio_node_replication_max_queued_bytes 自启动以来排队等待复制的最大字节数。
minio_node_replication_max_queued_count 自启动以来排队等待复制的最大对象数。
minio_node_replication_recent_backlog_count 最近 5 分钟内复制积压队列中的对象总数。

自愈指标

名称 说明
minio_heal_objects_errors_total 当前自愈轮次中自愈失败的对象数。
minio_heal_objects_heal_total 当前自愈轮次中已完成自愈的对象数。
minio_heal_objects_total 当前自愈轮次中已扫描的对象总数。
minio_heal_time_last_activity_nano_seconds 距最近一次自愈活动的时间(纳秒)。

节点间网络指标

名称 说明
minio_inter_node_traffic_dial_avg_time 节点间 TCP 建连平均耗时。
minio_inter_node_traffic_dial_errors 节点间 TCP 建连超时与错误总数。
minio_inter_node_traffic_errors_total 失败的节点间调用总数。
minio_inter_node_traffic_received_bytes 从其他对端节点接收的总字节数。
minio_inter_node_traffic_sent_bytes 发送给其他对端节点的总字节数。

存储桶通知指标

名称 说明
minio_notify_current_send_in_progress 向所有目标并发发送中的调用数(已弃用,请改用 minio_notify_target_current_send_in_progress)。
minio_notify_events_errors_total 发送至目标失败的事件数(已弃用,请改用 minio_notify_target_failed_events)。
minio_notify_events_sent_total 已发送至目标的事件总数(已弃用,请改用 minio_notify_target_total_events)。
minio_notify_events_skipped_total 因内存队列已满而跳过发送的事件数。
minio_notify_target_current_send_in_progress 向指定目标并发发送中的异步调用数。
minio_notify_target_queue_length 指定目标 queue_dir 中当前暂存的事件数。
minio_notify_target_total_events 已发送或已入队至指定目标的事件总数。

S3 API 请求指标

名称 说明
minio_s3_requests_4xx_errors_total 返回 4xx 错误的 S3 请求总数。
minio_s3_requests_5xx_errors_total 返回 5xx 错误的 S3 请求总数。
minio_s3_requests_canceled_total 客户端取消的 S3 请求总数。
minio_s3_requests_errors_total 返回 4xx 和 5xx 错误的 S3 请求总数。
minio_s3_requests_incoming_total 当前传入 S3 请求数。
minio_s3_requests_inflight_total 当前正在处理的 S3 请求总数。
minio_s3_requests_rejected_auth_total 因身份验证失败而被拒绝的 S3 请求总数。
minio_s3_requests_rejected_header_total 因请求头无效而被拒绝的 S3 请求总数。
minio_s3_requests_rejected_invalid_total 无效 S3 请求总数。
minio_s3_requests_rejected_timestamp_total 因时间戳无效而被拒绝的 S3 请求总数。
minio_s3_requests_total S3 请求总数。
minio_s3_requests_waiting_total 等待队列中的 S3 请求数。
minio_s3_requests_ttfb_seconds_distribution 各 API 调用首字节耗时(秒)分布。
minio_s3_traffic_received_bytes S3 接收字节总数。
minio_s3_traffic_sent_bytes S3 发送字节总数。

软件版本指标

名称 说明
minio_software_commit_info 服务端发布的 Git 提交哈希。
minio_software_version_info 服务端发布版本标签。

磁盘指标

名称 说明
minio_node_drive_free_bytes 磁盘可用存储空间(字节)。
minio_node_drive_free_inodes 磁盘空闲 inode 总数。
minio_node_drive_latency_us 最近一分钟磁盘存储操作平均延迟(微秒)。
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_ioerror 自启动以来磁盘 I/O 错误总数。
minio_node_drive_errors_availability 自启动以来磁盘 I/O 错误与超时总数。
minio_node_drive_io_waiting 磁盘上等待中的 I/O 操作总数。

身份与访问管理(IAM)指标

名称 说明
minio_node_iam_last_sync_duration_millis 最近一次成功 IAM 同步耗时(毫秒)。
minio_node_iam_since_last_sync_millis 距最近一次成功 IAM 同步的时间(毫秒)。
minio_node_iam_sync_failures 自启动以来失败的 IAM 同步次数。
minio_node_iam_sync_successes 自启动以来成功的 IAM 同步次数。

信息生命周期管理(ILM)指标

名称 说明
minio_node_ilm_expiry_pending_tasks 队列中等待执行的 ILM 过期任务数。
minio_node_ilm_transition_active_tasks 当前正在执行的 ILM 分层转移任务数。
minio_node_ilm_transition_pending_tasks 队列中等待执行的 ILM 分层转移任务数。
minio_node_ilm_transition_missed_immediate_tasks 错过的即时 ILM 分层转移任务数。
minio_node_ilm_versions_scanned 自启动以来检查 ILM 动作的对象版本总数。
minio_node_ilm_expiry_incomplete_total 自启动以来未能移除目标而结束的 ILM 过期尝试总数,按 reason 标签区分:not_applicable(在对象锁下重验时规则不再适用)、locked(受 Object Lock 保护)、history_unavailable(无法取得权威版本历史)、error(其他故障)。整键清除还会记录 tier_unsupported(存在远端分层版本)、budget(移除部分版本后达到单轮预算上限,下一轮继续)和 changed(匹配的最新版本已变化),见精确 key 删除。tier_unsupported_skipped 统计扫描器因本池存在远端分层版本而跳过入队的观测次数(每盘每轮扫描计数一次,不等于对象键数或清除次数),见多池生命周期过期。
minio_node_ilm_action_count_delete_action 自启动以来删除对象的生命周期检查结果计数。
minio_node_ilm_action_count_delete_version_action 自启动以来删除指定版本的生命周期检查结果计数。
minio_node_ilm_action_count_transition_action 自启动以来分层转移对象的生命周期检查结果计数。
minio_node_ilm_action_count_transition_version_action 自启动以来分层转移指定对象版本的生命周期检查结果计数。
minio_node_ilm_action_count_delete_restored_action 自启动以来删除临时恢复对象副本的生命周期检查结果计数。
minio_node_ilm_action_count_delete_restored_version_action 自启动以来删除临时恢复版本副本的生命周期检查结果计数。
minio_node_ilm_action_count_delete_all_versions_action 自启动以来删除全部版本的生命周期检查结果计数。

远端分层指标

名称 说明
minio_node_tier_tier_ttlb_seconds_distribution 从远端存储层下载对象至末字节的耗时分布(秒)。
minio_node_tier_requests_success 从远端存储层成功下载对象的请求数。
minio_node_tier_requests_failure 从远端存储层下载对象失败的请求数。

系统指标

名称 说明
minio_node_file_descriptor_limit_total 进程可打开文件描述符总数上限。
minio_node_file_descriptor_open_total 进程当前打开的文件描述符总数。
minio_node_go_routine_total 当前运行中的 Goroutine 总数。
minio_node_io_rchar_bytes 进程从底层存储(含缓存)读取的总字节数(/proc/[pid]/io rchar)。
minio_node_io_read_bytes 进程从底层存储读取的总字节数(/proc/[pid]/io read_bytes)。
minio_node_io_wchar_bytes 进程向底层存储(含页缓存)写入的总字节数(/proc/[pid]/io wchar)。
minio_node_io_write_bytes 进程向底层存储写入的总字节数(/proc/[pid]/io write_bytes)。
minio_node_process_cpu_total_seconds 进程累计消耗的用户态与内核态 CPU 秒数。
minio_node_process_resident_memory_bytes 常驻内存(RSS)大小(字节)。
minio_node_process_virtual_memory_bytes 虚拟内存大小(字节)。
minio_node_process_starttime_seconds 节点进程启动时间(自 Unix 纪元起的秒数)。
minio_node_process_uptime_seconds 节点进程运行时长(秒)。

扫描器指标

名称 说明
minio_node_scanner_bucket_scans_finished 自启动以来已完成的存储桶扫描次数。
minio_node_scanner_bucket_scans_started 自启动以来已启动的存储桶扫描次数。
minio_node_scanner_directories_scanned 自启动以来已扫描的目录总数。
minio_node_scanner_objects_scanned 自启动以来已扫描的唯一对象总数。
minio_node_scanner_versions_scanned 自启动以来已扫描的对象版本总数。
minio_node_syscall_read_total 读系统调用总数(/proc/[pid]/io syscr)。
minio_node_syscall_write_total 写系统调用总数(/proc/[pid]/io syscw)。
minio_usage_last_activity_nano_seconds 距最近一次扫描活动的时间(纳秒)。
说明

变更: RELEASE.2025-03-12T17-29-24Z

出于性能原因,v2 指标最多返回 100 个存储桶。如果需要覆盖更多存储桶的指标,请改用 v3 指标。

存储桶指标

SILO 在存储桶级别采集以下指标。每个指标包含 bucket 标签用于标识存储桶,并可能包含计算节点等附加标签。

每次采集可从任意一个 SILO 节点通过以下 URL 拉取:

https://HOSTNAME:PORT/minio/v2/metrics/bucket

将 HOSTNAME:PORT 替换为部署的主机名和端口;部署前存在负载均衡器时,请填写负载均衡器地址。

分布指标

名称 说明
minio_bucket_objects_size_distribution 存储桶内对象大小分布(含存储桶名称标签)。
minio_bucket_objects_version_distribution 存储桶内对象按版本数量的分布。

复制指标

以下指标仅在配置了存储桶复制或批量复制的部署上产出;对于配置了站点复制的部署,对应指标在集群指标端点下产出。

名称 说明
minio_bucket_replication_last_minute_failed_bytes 上一完整分钟内至少复制失败一次的字节总数。
minio_bucket_replication_last_minute_failed_count 上一完整分钟内复制失败的对象总数。
minio_bucket_replication_last_hour_failed_bytes 最近一完整小时内至少复制失败一次的字节总数。
minio_bucket_replication_last_hour_failed_count 最近一完整小时内复制失败的对象总数。
minio_bucket_replication_total_failed_bytes 自启动以来至少复制失败一次的字节总数。
minio_bucket_replication_total_failed_count 自启动以来复制失败的对象总数。
minio_bucket_replication_latency_ms 复制延迟(毫秒)。
minio_bucket_replication_received_bytes 从其他源存储桶复制到本桶的总字节数。
minio_bucket_replication_received_count 从其他源存储桶复制到本桶的对象总数。
minio_bucket_replication_sent_bytes 已复制到目标存储桶的总字节数。
minio_bucket_replication_sent_count 已复制到目标存储桶的对象总数。
minio_bucket_replication_credential_errors 自启动以来的复制凭据错误总数。
minio_bucket_replication_proxied_get_requests_total 代理转发至复制目标的 GET 请求总数。
minio_bucket_replication_proxied_head_requests_total 代理转发至复制目标的 HEAD 请求总数。
minio_bucket_replication_proxied_delete_tagging_requests_total 代理转发至复制目标的 DELETE tagging 请求总数。
minio_bucket_replication_proxied_get_tagging_requests_total 代理转发至复制目标的 GET tagging 请求总数。
minio_bucket_replication_proxied_put_tagging_requests_total 代理转发至复制目标的 PUT tagging 请求总数。
minio_bucket_replication_proxied_get_requests_failures 代理转发至复制目标的 GET 请求失败数。
minio_bucket_replication_proxied_head_requests_failures 代理转发至复制目标的 HEAD 请求失败数。
minio_bucket_replication_proxied_delete_tagging_requests_failures 代理转发至复制目标的 DELETE tagging 请求失败数。
minio_bucket_replication_proxied_get_tagging_requests_failures 代理转发至复制目标的 GET tagging 请求失败数。
minio_bucket_replication_proxied_put_tagging_requests_failures 代理转发至复制目标的 PUT tagging 请求失败数。

流量指标

名称 说明
minio_bucket_traffic_received_bytes 该存储桶接收的 S3 流量总字节数。
minio_bucket_traffic_sent_bytes 该存储桶发送的 S3 流量总字节数。

用量指标

名称 说明
minio_bucket_usage_object_total 对象总数。
minio_bucket_usage_version_total 对象版本总数(含删除标记)。
minio_bucket_usage_deletemarker_total 删除标记总数。
minio_bucket_usage_total_bytes 存储桶总大小(字节)。
minio_bucket_quota_total_bytes 存储桶配额大小(字节)。

请求指标

名称 说明
minio_bucket_requests_4xx_errors_total 存储桶 4xx 错误 S3 请求总数。
minio_bucket_requests_5xx_errors_total 存储桶 5xx 错误 S3 请求总数。
minio_bucket_requests_inflight_total 存储桶当前正在处理的 S3 请求数。
minio_bucket_requests_total 存储桶 S3 请求总数。
minio_bucket_requests_canceled_total 客户端取消的存储桶 S3 请求总数。
minio_bucket_requests_ttfb_seconds_distribution 存储桶各 API 调用首字节耗时分布。

资源指标

SILO 在节点级别采集以下资源指标。每个指标包含 server 标签用于标识所属节点,并可能包含磁盘路径、网卡名称等附加标签。

每次采集可从任意一个 SILO 节点通过以下 URL 拉取:

https://HOSTNAME:PORT/minio/v2/metrics/resource

将 HOSTNAME:PORT 替换为部署的主机名和端口;部署前存在负载均衡器时,请填写负载均衡器地址。

磁盘资源指标

名称 说明
minio_node_drive_total_bytes 磁盘总字节数。
minio_node_drive_used_bytes 磁盘已用字节数。
minio_node_drive_total_inodes 磁盘总 inode 数。
minio_node_drive_used_inodes 磁盘已用 inode 数。
minio_node_drive_reads_per_sec 磁盘每秒读次数。
minio_node_drive_reads_kb_per_sec 磁盘每秒读取千字节数。
minio_node_drive_reads_await 磁盘读请求平均服务时间。
minio_node_drive_writes_per_sec 磁盘每秒写次数。
minio_node_drive_writes_kb_per_sec 磁盘每秒写入千字节数。
minio_node_drive_writes_await 磁盘写请求平均服务时间。
minio_node_drive_perc_util 自启动以来磁盘繁忙时间百分比。

网络接口指标

名称 说明
minio_node_if_rx_bytes 60 秒内网卡接收字节数。
minio_node_if_rx_bytes_avg 自启动以来 60 秒接收字节均值。
minio_node_if_rx_bytes_max 自启动以来 60 秒接收字节最大值。
minio_node_if_rx_errors 60 秒内接收错误数。
minio_node_if_rx_errors_avg 60 秒接收错误均值。
minio_node_if_rx_errors_max 60 秒接收错误最大值。
minio_node_if_tx_bytes 60 秒内网卡发送字节数。
minio_node_if_tx_bytes_avg 60 秒发送字节均值。
minio_node_if_tx_bytes_max 60 秒发送字节最大值。
minio_node_if_tx_errors 60 秒内发送错误数。
minio_node_if_tx_errors_avg 60 秒发送错误均值。
minio_node_if_tx_errors_max 60 秒发送错误最大值。

CPU 指标

名称 说明
minio_node_cpu_avg_user CPU 用户态时间占比。
minio_node_cpu_avg_user_avg CPU 用户态时间占比均值。
minio_node_cpu_avg_user_max CPU 用户态时间占比最大值。
minio_node_cpu_avg_system CPU 内核态时间占比。
minio_node_cpu_avg_system_avg CPU 内核态时间占比均值。
minio_node_cpu_avg_system_max CPU 内核态时间占比最大值。
minio_node_cpu_avg_idle CPU 空闲时间占比。
minio_node_cpu_avg_idle_avg CPU 空闲时间占比均值。
minio_node_cpu_avg_idle_max CPU 空闲时间占比最大值。
minio_node_cpu_avg_iowait CPU IOWait 时间占比。
minio_node_cpu_avg_iowait_avg CPU IOWait 时间占比均值。
minio_node_cpu_avg_iowait_max CPU IOWait 时间占比最大值。
minio_node_cpu_avg_nice CPU nice 时间占比。
minio_node_cpu_avg_nice_avg CPU nice 时间占比均值。
minio_node_cpu_avg_nice_max CPU nice 时间占比最大值。
minio_node_cpu_avg_steal CPU steal 时间占比。
minio_node_cpu_avg_steal_avg CPU steal 时间占比均值。
minio_node_cpu_avg_steal_max CPU steal 时间占比最大值。
minio_node_cpu_avg_load1 1 分钟 CPU 平均负载。
minio_node_cpu_avg_load1_avg 1 分钟 CPU 平均负载均值。
minio_node_cpu_avg_load1_max 1 分钟 CPU 平均负载最大值。
minio_node_cpu_avg_load1_perc 1 分钟 CPU 平均负载百分比。
minio_node_cpu_avg_load1_perc_avg 1 分钟 CPU 平均负载百分比均值。
minio_node_cpu_avg_load1_perc_max 1 分钟 CPU 平均负载百分比最大值。
minio_node_cpu_avg_load5 5 分钟 CPU 平均负载。
minio_node_cpu_avg_load5_avg 5 分钟 CPU 平均负载均值。
minio_node_cpu_avg_load5_max 5 分钟 CPU 平均负载最大值。
minio_node_cpu_avg_load5_perc 5 分钟 CPU 平均负载百分比。
minio_node_cpu_avg_load5_perc_avg 5 分钟 CPU 平均负载百分比均值。
minio_node_cpu_avg_load5_perc_max 5 分钟 CPU 平均负载百分比最大值。
minio_node_cpu_avg_load15 15 分钟 CPU 平均负载。
minio_node_cpu_avg_load15_avg 15 分钟 CPU 平均负载均值。
minio_node_cpu_avg_load15_max 15 分钟 CPU 平均负载最大值。
minio_node_cpu_avg_load15_perc 15 分钟 CPU 平均负载百分比。
minio_node_cpu_avg_load15_perc_avg 15 分钟 CPU 平均负载百分比均值。
minio_node_cpu_avg_load15_perc_max 15 分钟 CPU 平均负载百分比最大值。

内存指标

名称 说明
minio_node_mem_available 节点可用内存。
minio_node_mem_available_avg 节点可用内存均值。
minio_node_mem_available_max 节点可用内存最大值。
minio_node_mem_buffers 节点缓冲区内存。
minio_node_mem_buffers_avg 节点缓冲区内存均值。
minio_node_mem_buffers_max 节点缓冲区内存最大值。
minio_node_mem_cache 节点页缓存内存。
minio_node_mem_cache_avg 节点页缓存内存均值。
minio_node_mem_cache_max 节点页缓存内存最大值。
minio_node_mem_free 节点空闲内存。
minio_node_mem_free_avg 节点空闲内存均值。
minio_node_mem_free_max 节点空闲内存最大值。
minio_node_mem_shared 节点共享内存。
minio_node_mem_shared_avg 节点共享内存均值。
minio_node_mem_shared_max 节点共享内存最大值。
minio_node_mem_total 节点总内存。
minio_node_mem_total_avg 节点总内存均值。
minio_node_mem_total_max 节点总内存最大值。
minio_node_mem_used 节点已用内存。
minio_node_mem_used_avg 节点已用内存均值。
minio_node_mem_used_max 节点已用内存最大值。
minio_node_mem_used_perc 节点内存使用率百分比。
minio_node_mem_used_perc_avg 节点内存使用率百分比均值。
minio_node_mem_used_perc_max 节点内存使用率百分比最大值。

6 - 健康检查 API

MinIO 提供无需身份验证的端点,用于探测节点在线状态以及集群 高可用性,从而执行简单健康检查。这些端点返回一个 HTTP 状态码,用于表示底层资源是否健康,或是否满足读写仲裁。MinIO 不会通过这些端点暴露任何其他数据。

原生探针与应用启动

SILO 内置 silo healthcheck 子命令,可直接探测本地 /minio/health/* HTTP 端点,无需在容器内提供 curl、mc 或 shell:

silo healthcheck [FLAGS] [live|ready|cluster|cluster-read]
  • CHECK 选择探测目标端点:live(默认)、ready、cluster 或 cluster-read。
  • --address(或 MINIO_ADDRESS,默认 :9000,空主机名解析为 127.0.0.1)指定目标 HOST:PORT;当 --certs-dir 中存在 public.crt 与 private.key 时自动切换为 HTTPS。
  • --url(或 MINIO_HEALTHCHECK_URL)使用显式 http[s]://HOST:PORT 基址覆盖 --address 与 TLS 自动判定。
  • --maintenance 仅适用于 cluster,附加 ?maintenance=true,并在服务端返回 HTTP 412 Precondition Failed 时以退出码 1 结束。
  • --timeout 设置探测总超时(live 与 ready 默认 5s;cluster 与 cluster-read 默认 15s)。
  • 全局参数 --certs-dir、--json 与 --quiet 控制证书查找与输出格式。探测健康时退出码为 0,其余情况均为 1。

silo healthcheck ready 调用 /minio/health/ready。该端点检查 HTTP 请求队列容量以及已配置的 KMS 和 etcd 可达性,在存储层和 IAM 完成加载前也可能返回 200 OK。这一行为保证了分布式节点的启动互联;Kubernetes 无头服务必须保留 publishNotReadyAddresses: true。不要将 cluster 配置为容器存活探针或节点互联的前置条件。

-distroless 容器镜像将内置 HEALTHCHECK 配置为 /usr/bin/silo healthcheck ready。因此,Docker Compose 的 depends_on: condition: service_healthy 仅确认该就绪探针通过,不代表 S3 数据面已可读写。即使改查 cluster,仍存在下文说明的远端磁盘重连窗口。需要立即访问对象的依赖应用必须执行有界超时的签名 S3 写入与回读检查,并在失败时中止启动或升级流程。请使用专用存储桶和唯一探测对象键,并在校验完成后清理。

节点存活

使用以下端点测试 SILO 服务端 HTTP 监听器是否正在处理请求:

curl -I https://minio.example.net:9000/minio/health/live

将 https://minio.example.net:9000 替换为待检查服务端的 DNS 主机名和端口。

HTTP 监听器启动后,即使对象层尚未完成加载,/minio/health/live 也会立即返回 200 OK(存储初始化期间响应头包含 x-minio-server-status: offline)。当排队请求数超过 API 请求池容量上限时,该端点返回 503 Service Unavailable。由于存活检查失败在 Kubernetes 中会触发 Pod 重启,/minio/health/live 不访问任何外部系统(不访问 KMS,也不访问 etcd),避免在磁盘初始化缓慢或外部服务故障期间误重启容器。

存活探针仅检查当前客户端能否连通服务端 HTTP 监听器以及请求队列是否有余量。建议配置 Prometheus 告警,使用 指标 v3 的 minio_cluster_health_nodes_offline_count 或 指标 v2 的 minio_cluster_nodes_offline_total 检测集群离线节点。

节点就绪

使用以下端点测试进程就绪状态及已配置的外部依赖:

curl -I https://minio.example.net:9000/minio/health/ready

将 https://minio.example.net:9000 替换为待检查服务端的 DNS 主机名和端口。

/minio/health/ready 检查与 /minio/health/live 相同的 HTTP 请求队列容量,并在配置了 KMS 或 etcd 时进一步验证 KMS 密钥生成与 etcd 健康读写。未配置 KMS 和 etcd 时,/minio/health/ready 与 /minio/health/live 走相同的检查路径。与 /minio/health/live 一样,/minio/health/ready 在对象层或 IAM 完成加载前也可返回 200 OK(附带 x-minio-server-status: offline),以便集群启动阶段完成对端节点发现。

集群写仲裁

使用以下端点测试 MinIO 集群是否具备 写仲裁:

curl -I https://minio.example.net:9000/minio/health/cluster

将 https://minio.example.net:9000 替换为待检查 MinIO 集群中某个节点的 DNS 主机名。 对于使用负载均衡器管理传入连接的集群,请指定负载均衡器的主机名。

返回 200 OK 表示 MinIO 集群当前有足够的 MinIO server 在线,可满足写仲裁。 返回 503 Service Unavailable 表示集群当前不具备写仲裁。

单靠 healthcheck probe 无法判断某个 MinIO server 是否离线,也无法判断其是否正在正常处理写操作。 它只能根据配置的 纠删码校验值 判断当前是否有足够的 MinIO server 在线,以满足写仲裁要求。 建议配置 Prometheus 告警,使用以下指标检测 MinIO 集群中的潜在问题或错误:

  • minio_cluster_nodes_offline_total:在一个或多个 MinIO 节点离线时触发告警。
  • minio_node_drive_free_bytes:在集群可用磁盘空间不足时触发告警。

集群读仲裁

使用以下端点测试 MinIO 集群是否具备 读仲裁:

curl -I https://minio.example.net:9000/minio/health/cluster/read

将 https://minio.example.net:9000 替换为待检查 MinIO 集群中某个节点的 DNS 主机名。 对于使用负载均衡器管理传入连接的集群,请指定负载均衡器的主机名。

返回 200 OK 表示 MinIO 集群当前有足够的 MinIO server 在线,可满足读仲裁。 返回 503 Service Unavailable 表示集群当前不具备读仲裁。

单靠 healthcheck probe 无法判断某个 MinIO server 是否离线,也无法判断其是否正在正常处理读操作。 它只能根据配置的 纠删码校验值 判断当前是否有足够的 MinIO server 在线,以满足读仲裁要求。 建议配置 Prometheus 告警,使用 minio_cluster_nodes_offline_total 指标检测一个或多个 MinIO 节点是否离线。

集群维护检查

使用以下端点测试在将指定 MinIO server 下线维护时, MinIO 集群是否仍能同时维持 读 和 写:

curl -I https://minio.example.net:9000/minio/health/cluster?maintenance=true

将 https://minio.example.net:9000 替换为待检查 MinIO 集群中某个节点的 DNS 主机名。 对于使用负载均衡器管理传入连接的集群,请指定负载均衡器的主机名。

返回 200 OK 表示 MinIO 集群当前有足够的 MinIO server 在线,可满足写仲裁。 返回 412 Precondition Failed 表示如果该 MinIO server 离线,集群将失去仲裁。

单靠 healthcheck probe 无法判断某个 MinIO server 是否离线。 它只能判断在该节点因维护而下线后,是否仍有足够的 MinIO server 在线,以根据配置的 纠删码校验值 满足读写仲裁要求。 建议配置 Prometheus 告警,使用 minio_cluster_nodes_offline_total 指标检测一个或多个 MinIO 节点是否离线。

重启后的就绪窗口

SILO 20261109 保留这一机制:集群健康检查实现根据各对端节点上报的磁盘状态评估仲裁。恢复业务流量前,请先检查两个集群端点,再验证真实 S3 读写。完整的探针规格见健康检查探针语义。

上述 HTTP 健康端点均不能证明收到请求的节点在重启后已能立即服务对象读写。每个节点通过后台监控循环连接对端节点的远端纠删码磁盘。启动时未能连上的远端磁盘会在本节点保持未挂载状态,直到后续轮次重连成功。监控循环在每轮结束后等待 15 秒,因此 15 秒只是两次重连尝试之间的最短间隔,而非恢复耗时上限。

在远端磁盘尚未重连期间,该节点的 /minio/health/live、/minio/health/ready、两个 /minio/health/cluster* 端点、mc admin info 与 mcli ready 都可能报告健康。这是因为集群端点汇总各节点对自身本地磁盘的上报结果,而不检查当前接收节点已挂载哪些远端磁盘。在此窗口内,经由该节点的 PUT 可能返回 503 SlowDownWrite,读取其他节点刚写入的对象也可能在远端磁盘重连完成前失败。

升级与故障切换自动化流程必须以有界超时的 S3 数据面检查作为放行门槛,而不能仅依赖 HTTP 健康端点:

  1. 设置固定的总截止时间,并禁用 SDK 自动重试。
  2. 经由每个重启节点各写入一个签名探测小对象,按剩余截止时间分配单次请求超时。
  3. 经由每个节点回读所有已确认写入的探测对象,校验字节内容和版本 ID。
  4. 将“首次可用 S3 I/O 耗时”与 HTTP 探针就绪状态分开记录,并在校验完成后清理探测对象。

该检查可验证探测对象键所命中纠删集在当时的抽样 S3 读写路径,但不证明所有纠删集磁盘均已齐全或具备再次容忍节点丢失的余量。HTTP 健康端点仍应用于其设计用途:进程存活、外部依赖就绪与上报仲裁检查。

7 - 使用 Grafana 监控 Silo 服务端

无论指标存储在何处,Grafana 都允许你对其进行查询、可视化、告警和分析。

前提条件

说明

Grafana 仪表板使用 metrics version 2

MinIO 的 Grafana 仪表板使用 metrics version 2。 关于指标 API 版本的更多信息,请参见 指标与告警。

对于 version 3 指标,你需要自行创建仪表板。 关于仪表板的更多信息,请参见 Grafana 文档。

MinIO Grafana 仪表板

MinIO 提供了若干官方 Grafana 仪表板,可从 Grafana Dashboard 门户下载。

  1. MinIO Server 指标
  2. MinIO 存储桶指标
  3. MinIO 复制指标

若要跟踪 Grafana 仪表板的变更,可以查看 MinIO Server GitHub 仓库中 server 或 bucket 仪表板对应的 JSON 文件。

MinIO Server 指标仪表板

请从 Grafana 上的 MinIO 组织仪表板目录选择与部署所暴露指标版本兼容的服务端仪表板。

MinIO 为 MinIO Server 指标提供了专用的 Grafana 仪表板。 关于该仪表板配置的详细信息,请参见 GitHub 上的 JSON 文件。

对于启用了 服务端加密 的 MinIO 部署(包括 SSE-KMS 或 SSE-S3),该仪表板还包含 KMS 指标。 这些指标包括状态、请求错误率和请求成功率。

MinIO Grafana 仪表板示例,展示了 MinIO Server 上采集的多种指标。

MinIO 存储桶指标仪表板

请从 Grafana 上的 MinIO 组织仪表板目录选择与部署所暴露指标版本兼容的存储桶仪表板。

存储桶指标可以通过 GitHub 上的 bucket JSON 文件 在 Grafana 仪表板中查看。

MinIO Grafana 仪表板示例,展示了 MinIO 存储桶的多种采集指标。

MinIO 节点指标仪表板

节点指标可以通过 GitHub 上的 node JSON 文件 在 Grafana 仪表板中查看。

MinIO Grafana 仪表板示例,展示了 MinIO 节点的多种采集指标。

MinIO 复制指标仪表板

请从 Grafana 上的 MinIO 组织仪表板目录选择与部署所暴露指标版本兼容的复制仪表板。

集群复制指标可以通过 GitHub 上的 cluster replication JSON 文件 在 Grafana 仪表板中查看。

MinIO Grafana 仪表板示例,展示了复制相关的多种采集指标。