如何在Ubuntu上配置MinIO监控告警
小樊
42
2025-12-06 22:40:59
在 Ubuntu 上配置 MinIO 监控告警
一 架构与准备
- 组件与数据流:MinIO 暴露 /minio/v2/metrics/{cluster,node,bucket,resource} 指标端点,使用 Prometheus 抓取并存储,借助 Alertmanager 发送告警,最终在 Grafana 进行可视化展示。
- 前置条件:
- 已部署并运行的 MinIO(建议使用 RELEASE.2023-10-07T15-07-38Z 及以上以包含资源指标)。
- 已安装 mc(MinIO 客户端),可访问 MinIO 部署。
- 已部署 Prometheus 与 Alertmanager,网络可达 MinIO 与目标通知渠道(如企业微信、钉钉、Slack、邮件等)。
二 配置 MinIO 指标暴露
- 方式一(推荐,生产可用):使用 mc admin prometheus generate 生成抓取配置,自动包含 bearer_token,适配 HTTP/HTTPS。
- 配置 mc 别名:mc alias set myminio http://<MINIO_ADDR>:9000 <ACCESS_KEY> <SECRET_KEY>
- 生成抓取配置并追加到 Prometheus:
- 集群:mc admin prometheus generate myminio cluster
- 节点:mc admin prometheus generate myminio node
- 桶:mc admin prometheus generate myminio bucket
- 资源:mc admin prometheus generate myminio resource
- 生成的 job 示例(按需选择其一或多个):
- job_name: minio-job
bearer_token:
metrics_path: /minio/v2/metrics/cluster
scheme: https
static_configs:
- targets: [minio.example.net]
- 方式二(仅测试):将环境变量 MINIO_PROMETHEUS_AUTH_TYPE=public,此时可省略 bearer_token,但存在安全风险,不建议生产使用。
- 验证指标端点:
- curl -H “Authorization: Bearer ” https://<MINIO_ADDR>:9000/minio/v2/metrics/cluster
- 若返回 404/403,请检查是否启用指标、是否使用了正确的 token/scheme/host。
三 配置 Prometheus 抓取与告警规则
- 抓取配置要点:
- 建议 scrape_interval: 60s;指标较多时可适当增大间隔以降低负载。
- 将生成的多个 job(cluster/node/bucket/resource)合并到 prometheus.yml 的 scrape_configs 中,确保 targets 指向可达的 MinIO 节点或负载均衡器地址。
- 启动或热更新 Prometheus:prometheus --config.file=prometheus.yml
- 示例告警规则(rules.yml):
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”
- 在 Prometheus 中加载规则:在 prometheus.yml 的 rule_files 指定 rules.yml 路径,或在 UI 中加载并热更新。
四 配置 Alertmanager 与通知
- 基本配置(alertmanager.yml)示例:
route:
receiver: “default-receiver”
group_by: [“alertname”, “job”]
group_wait: 10s
group_interval: 10s
repeat_interval: 1h
receivers:
- name: “default-receiver”
webhook_configs:
- url: “http://<WEBHOOK_URL>”
inhibit_rules:
- source_match:
severity: “critical”
target_match:
severity: “warning”
equal: [“alertname”, “job”, “instance”]
- 启动 Alertmanager:alertmanager --config.file=alertmanager.yml
- 常用通知渠道:企业微信机器人、钉钉机器人、Slack Incoming Webhook、SMTP 邮件网关等,按官方模板配置 webhook_configs。
五 Grafana 可视化与验证
- 安装与启动 Grafana(Ubuntu 示例):
- 下载并安装 .deb 包后执行:sudo systemctl start grafana-server
- 访问 http://<GRAFANA_ADDR>:3000,默认账号 admin/admin。
- 添加数据源:选择 Prometheus,URL 指向 Prometheus 地址。
- 导入面板:在 Dashboard → Import 输入 13502(MinIO 官方仪表盘),选择 Prometheus 数据源即可展示集群/节点/桶/资源指标与告警状态。
- 验证流程:
- Prometheus Targets 页面检查 MinIO 抓取是否 UP。
- 表达式浏览器查询示例:minio_node_drive_free_bytes、minio_node_drive_offline_total 等,确认有数据返回。
- 触发测试告警(如临时停止一个 MinIO 节点或断开一块盘),在 Alertmanager 与 Grafana 中观察告警状态与通知送达情况。