使用 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。使用解析為 MinIO 部署的主機名稱設定
targets
陣列。這可以是任何單一節點,或是處理與 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 儲存操作的平均最後一分鐘延遲(以微秒為單位)。 |
|
此節點中離線的磁碟機總數。 |
|
此節點中在線的磁碟機總數。 |
|
此節點中的磁碟機總數。 |
|
磁碟機上的總儲存空間。 |
|
磁碟機上已使用的總儲存空間。 |
|
自伺服器啟動以來發生的磁碟機逾時錯誤總數。 |
|
自伺服器啟動以來發生的磁碟機 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 伺服器