温馨提示×

ubuntu中minio如何监控

小樊
31
2025-12-20 19:14:35
栏目: 智能运维

Ubuntu 上监控 MinIO 的完整方案

一 监控架构与端点

  • 健康检查探针:使用 /minio/health/live(存活)与 /minio/health/ready(就绪),可用于 Kubernetes 的 liveness/readiness 或 Nginx/HAProxy 的健康检查。
  • 指标暴露:MinIO 提供与 Prometheus 兼容的指标。
    • 旧路径:/minio/prometheus/metrics(默认需要认证)。
    • 新路径(自 RELEASE.2023-05-04T21-44-30Z 起):/minio/v2/metrics/{cluster,nodes,buckets},更适合多租户/分维度采集。
  • 认证方式:
    • jwt(默认):用 mc admin prometheus generate 生成抓取片段(含 bearer_token)。
    • public:设置环境变量 MINIO_PROMETHEUS_AUTH_TYPE=public 后无需令牌。

二 快速落地步骤 Ubuntu 主机部署

  • 准备 mc 并生成抓取配置
    1. 安装 mc(见 MinIO 官方安装文档)。
    2. 配置别名:mc alias set myminio http://<MINIO_ADDR>:9000 <ACCESS_KEY> <SECRET_KEY>
    3. 生成 Prometheus 抓取片段:
      • 集群维度:mc admin prometheus generate myminio --from-creds
      • 节点维度:mc admin prometheus generate myminio nodescrape_configs --from-creds
      • 桶维度:mc admin prometheus generate myminio bucketscrape_configs --from-creds
  • Prometheus 配置示例
    • 使用 bearer_token(推荐):将生成的 job 片段直接合并到 prometheus.ymlscrape_configs
    • 使用 public:在 MinIO 节点设置环境变量并重启服务:
      • echo ‘MINIO_PROMETHEUS_AUTH_TYPE=public’ | sudo tee -a /etc/default/minio
      • sudo systemctl restart minio
        抓取示例:
      • job_name: minio
        metrics_path: /minio/v2/metrics/cluster 或 /minio/prometheus/metrics
        scheme: http/https
        static_configs:
        • targets: [‘<MINIO_ADDR>:9000’]
  • Grafana 可视化
    • 添加 Prometheus 数据源(URL:http://:9090)。
    • 导入 MinIO 官方或社区仪表板(如 ID:31191860),或自建面板展示 S3 请求、延迟、容量、节点/磁盘状态等。

三 关键告警规则示例

  • 磁盘离线
    • expr: minio_disks_offline > 0
      for: 5m
      labels: severity=page
      annotations: summary=“MinIO 有磁盘离线”
  • 容量阈值(剩余小于 10GiB
    • expr: minio_disk_storage_free_bytes < 10737418240
      for: 5m
      labels: severity=warn
      annotations: summary=“MinIO 可用空间不足 10GiB”
  • 节点离线(集群维度,新指标)
    • expr: avg_over_time(minio_cluster_nodes_offline_total[5m]) > 0
      for: 10m
      labels: severity=warn
      annotations: summary=“MinIO 集群有节点离线”
  • 高延迟(TTFB P95 超过 1s
    • expr: histogram_quantile(0.95, sum(rate(s3_ttfb_seconds_bucket[5m])) by (le)) > 1
      for: 5m
      labels: severity=warn
      annotations: summary=“MinIO P95 请求延迟过高”

四 容器与编排场景要点

  • Docker 部署
    • 健康检查:
      • http://:9000/minio/health/live
      • http://:9000/minio/health/ready
    • 环境变量开启公共指标:MINIO_PROMETHEUS_AUTH_TYPE=public(或挂载包含该变量的配置文件)。
  • Kubernetes
    • Service 上配置 readinessProbe/livenessProbe 指向上述健康端点。
    • 使用 ServiceMonitor 或手动添加 scrape_configs 抓取 /minio/v2/metrics/cluster(或 /minio/prometheus/metrics)。
    • 建议通过 IngressService 统一暴露指标端口,避免直连节点。

五 进阶与排错

  • 控制台集成监控:在 MinIO 启动前设置环境变量 MINIO_PROMETHEUS_URLMINIO_PROMETHEUS_JOB_ID,重启后在控制台 Monitoring 菜单查看图表(需可访问 Prometheus)。
  • 指标维度与命名差异:
    • 旧版(/minio/prometheus/metrics):如 minio_disks_offlines3_requests_totals3_ttfb_secondsdisk_storage_used/free/total
    • 新版(/minio/v2/metrics/cluster|nodes):如 minio_cluster_disk_offline_totalminio_cluster_nodes_offline_totalminio_bucket_usage_object_totalminio_bucket_usage_total_bytes
  • 常见问题排查
    • 401/403:未配置 bearer_token 或未设置 MINIO_PROMETHEUS_AUTH_TYPE=public
    • 连接超时:确认 9000 端口、网络策略、Service/Ingress 配置正确。
    • 指标为空:确认 MinIO 版本支持 /minio/v2/metrics,并使用 mc admin prometheus generate 生成最新抓取片段。

0