使用 Prometheus 監控和警報
MinIO 使用 Prometheus 資料模型發佈叢集、節點、儲存桶和資源指標。此頁面上的程序記錄了以下內容
設定 Prometheus 服務以從 MinIO 部署中抓取和顯示指標
在 MinIO 指標上設定警報規則以觸發 AlertManager 動作
設定 Prometheus 以使用 MinIO 指標收集和發出警報
1) 產生抓取設定
使用 mc admin prometheus generate
命令來產生抓取設定,以供 Prometheus 在發出抓取請求時使用
以下命令會抓取 MinIO 叢集的指標。
mc admin prometheus generate 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 伺服器上節點的指標。
mc admin prometheus generate ALIAS node
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 伺服器上儲存桶的指標。
mc admin prometheus generate ALIAS bucket
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 伺服器上資源的指標。
mc admin prometheus generate ALIAS resource
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 伺服器上的負載,請選擇滿足您監控要求的最長間隔。
將
job_name
設定為與 MinIO 部署相關聯的值。使用唯一值,以確保部署指標與該 Prometheus 服務收集的任何其他指標隔離。
使用
MINIO_PROMETHEUS_AUTH_TYPE
設定為"public"
啟動的 MinIO 部署可以省略bearer_token
欄位。對於未使用 TLS 的 MinIO 部署,請將
scheme
設定為 http。設定
targets
陣列,其中包含解析為 MinIO 部署的主機名稱。這可以是任何單一節點,或是處理連線至 MinIO 節點的負載平衡器/代理伺服器。
對於與 MinIO 租戶位於相同叢集中的 Prometheus 部署,您可以為
minio
服務指定服務 DNS 名稱。對於叢集外部的 Prometheus 部署,您必須指定一個入口或負載平衡器端點,該端點配置為路由往返 MinIO 租戶的連線。
2) 使用更新的設定重新啟動 Prometheus
將上一步驟中產生的所需 scrape_configs
工作附加到設定檔中
叢集指標會彙總節點層級的指標,並在適當的情況下,將標籤附加到來源節點的指標。
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 包含一個表達式瀏覽器。您可以在此處執行查詢來分析收集到的指標。
以下查詢範例會傳回 Prometheus 每五分鐘為名為 minio-job
的抓取工作收集的指標
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 建議使用以下作為要監控的基本指標集。
請參閱指標和警示以取得有關所有可用指標的資訊。
指標 |
描述 |
---|---|
|
硬碟上可用的總儲存空間。 |
|
可用 inode 總數。 |
|
硬碟 API 儲存作業的平均每分鐘延遲,單位為 µs。 |
|
此節點中離線的硬碟總數。 |
|
此節點中上線的硬碟總數。 |
|
此節點中的硬碟總數。 |
|
硬碟上的總儲存空間。 |
|
硬碟上已使用的總儲存空間。 |
|
自伺服器啟動以來發生的硬碟逾時錯誤總數。 |
|
自伺服器啟動以來發生的硬碟 I/O 錯誤、拒絕存取和逾時錯誤總數。 |
|
在硬碟上等待的 I/O 作業總數。 |
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_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 伺服器