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 并生成抓取配置
- 安装 mc(见 MinIO 官方安装文档)。
- 配置别名:mc alias set myminio http://<MINIO_ADDR>:9000 <ACCESS_KEY> <SECRET_KEY>
- 生成 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.yml 的 scrape_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:3119、1860),或自建面板展示 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)。
- 建议通过 Ingress 或 Service 统一暴露指标端口,避免直连节点。
五 进阶与排错
- 控制台集成监控:在 MinIO 启动前设置环境变量 MINIO_PROMETHEUS_URL 与 MINIO_PROMETHEUS_JOB_ID,重启后在控制台 Monitoring 菜单查看图表(需可访问 Prometheus)。
- 指标维度与命名差异:
- 旧版(/minio/prometheus/metrics):如 minio_disks_offline、s3_requests_total、s3_ttfb_seconds、disk_storage_used/free/total。
- 新版(/minio/v2/metrics/cluster|nodes):如 minio_cluster_disk_offline_total、minio_cluster_nodes_offline_total、minio_bucket_usage_object_total、minio_bucket_usage_total_bytes。
- 常见问题排查
- 401/403:未配置 bearer_token 或未设置 MINIO_PROMETHEUS_AUTH_TYPE=public。
- 连接超时:确认 9000 端口、网络策略、Service/Ingress 配置正确。
- 指标为空:确认 MinIO 版本支持 /minio/v2/metrics,并使用 mc admin prometheus generate 生成最新抓取片段。