使用 Prometheus 进行监控和警报

https://min.io/docs/minio/linux/operations/monitoring/collect-minio-metrics-using-prometheus.html

MinIO 使用Prometheus 数据模型发布集群和节点指标。此页面上的过程记录了以下内容:

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

  • 在 MinIO 指标上配置警报规则以触发 AlertManager 操作

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

1)生成抓取配置

通过客户端命令mc使用命令mc admin prometheus generate <ALIAS>生成验证token,将token配置到Prometheus,Prometheus根据token信息访问集群,

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

mc admin prometheus generate <ALIAS>

替换ALIAS为 MinIO 部署的地址。

#设置别名
mc alias set minio http://192.168.1.170:9000 admin 44qwsgxQgmci5KK
#输出
Added `minio` successfully.
#生成配置
mc admin prometheus generate minio
#配置输出
scrape_configs:
- job_name: minio-job
  bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwcm9tZXRoZXVzIiwic3ViIjoiYWRtaW4iLCJleHAiOjQ4Mzc2ODA0NjZ9.U38HXi50Yo34v3Ga7oG9womAUysFrA7_ZgqlItoL2JAnLOmWJwZdgbzf0hQ0eSHXIPGG7PYtNV7iBNwGHFQvGw
  metrics_path: /minio/v2/metrics/cluster
  scheme: http
  static_configs:
  - targets: ['192.168.1.170:9000']

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

scrape_configs:
- job_name: minio-job
  bearer_token: TOKEN
  metrics_path: /minio/v2/metrics/cluster
  scheme: https
  static_configs:
  - targets: [minio.example.net]
  • 将 设置job_name为与 MinIO 部署关联的值。

  • 使用唯一值确保将部署指标与该 Prometheus 服务收集的任何其他指标隔离开来。

  • MINIO_PROMETHEUS_AUTH_TYPE 以 set to 开头的 MinIO 部署”public”可以省略该bearer_token字段。

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

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

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

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

将生成的配置加入到prometheus的配置中,重启服务即可。

global:
   scrape_interval: 15s

scrape_configs:
   - job_name: minio-job
     bearer_token: TOKEN
     metrics_path: /minio/v2/metrics/cluster
     scheme: https
     static_configs:
     - targets: [minio.example.net]

使用配置文件启动 Prometheus 集群:

prometheus –config.file=prometheus.yaml

3) 分析收集的指标

Prometheus 包含一个表达式浏览器。您可以在此处执行查询以分析收集的指标。

以下查询示例返回 Prometheus 收集的指标:

minio_cluster_disk_online_total{job="minio-job"}[5m]
minio_cluster_disk_offline_total{job="minio-job"}[5m]

minio_bucket_usage_object_total{job="minio-job"}[5m]

minio_cluster_capacity_usable_free_bytes{job="minio-job"}[5m]
4) 使用 MinIO 指标配置警报规则

您必须在 Prometheus 部署上配置警报规则,以根据收集的 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_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 配置作为rule_files密钥的一部分:

global:
  scrape_interval: 5s

rule_files:
- minio-alerting.yml

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

5)(可选)配置MinIO控制台查询Prometheus

控制台还支持通过查询配置为从 MinIO 部署中抓取数据的Prometheus服务来显示时间序列和历史数据。

MinIO 控制台显示 Prometheus 支持的监控数据

要在 MinIO 控制台中启用历史数据可视化,请在 MinIO 部署中的每个节点上设置以下环境变量:

  • 设置MINIO_PROMETHEUS_URL为 Prometheus 服务的 URL

  • 设置MINIO_PROMETHEUS_JOB_ID为分配给收集的指标的唯一作业 ID

重新启动 MinIO 部署并访问Monitoring窗格以查看历史数据视图。

作者:Jeebiz  创建时间:2023-05-14 20:51
最后编辑:Jeebiz  更新时间:2024-08-02 11:04