天天看點

MinIO叢集怎麼接入Prometheus監控?(上)

微信公衆号“SRE成長記”可檢視更多精彩内容

前言

minio叢集有暴露監控名額接口給Prometheus,可通過配置Prometheus通路MinIO叢集的權限,将MinIO叢集接入Prometheus監控,并通過MinIO官方釋出的Grafana Dashboard(ID:13502,連結:https://grafana.com/grafana/dashboards/13502-minio-dashboard/)将名額展示在Grafana。

本文記錄Prometheus與MinIO叢集部署在同一k8s叢集内的監控接入過程。

k8s叢集内Prometheus監控MinIO叢集

1.1 MinIO端配置Prometheus通路權限

MinIO給Prometheus提供了兩種通路政策:

1)public方式:

給MinIO叢集設定環境變量export MINIO_PROMETHEUS_AUTH_TYPE=public,Prometheus可以不通過驗證通路MinIO叢集;這種方式友善簡潔,本文采用這種方式。

2)通路驗證token方式:

通過用戶端指令mc使用指令mc admin prometheus generate <ALIAS>生成驗證token,将token配置到Prometheus,Prometheus根據token資訊通路叢集,具體方法可參考官網。

修改MinIO叢集的minio.yaml檔案,修改環境變量env部分,新增Prometheus通路權限:

env:
 - name: MINIO_PROMETHEUS_AUTH_TYPE
   value: public
           

執行kubectcl apply minio.yaml生效。

1.2 service暴露監控名額接口

在service的yaml檔案中增加annotations子產品,暴露監控接口資訊:

[root@rancher-0001 minio]# cat service-minio.yaml 
apiVersion: v1
kind: Service
metadata:
  labels:
    app: minio
  name: minio
  namespace: public
  namespace: monitoring
  annotations:        #增加該子產品資訊
    prometheus.io/scrape: "true"
    prometheus.io/port: "9000"
    prometheus.io/path: "/minio/v2/metrics/cluster"
spec:
  ports:
  - name: minio-port-9000
    port: 9000
    protocol: TCP
    targetPort: 9000
  - name: minio-port-9001
    port: 9001
    protocol: TCP
    targetPort: 9001
  selector:
    app: minio
  type: ClusterIP
           

執行kubectl apply service-minio.yaml配置生效

1.3 建立servicemonitor

[root@rancher-0001 minio]# cat service-monitor-minio.yaml
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: minio
namespace: public
labels:
app: minio-cluster
spec:
endpoints:
- interval: 15s
path: /minio/v2/metrics/cluster
port: minio-port-9000
namespaceSelector:
matchNames:
- public
selector:
matchLabels:
app: minio
[root@rancher-0001 minio]#
           

執行kubectl apply -f service-monitor-minio.yaml建立。

建立好後,通路Prometheus的Target界面,能看到minio叢集節點均已上線:

MinIO叢集怎麼接入Prometheus監控?(上)

1.4 監控看闆接入

将MinIO官方的釋出的Grafana Dashboard (ID為13502)導入Grafana,就能看到監控資訊了。

2.MinIO叢集監控名額彙總

2.1 對象衡量名額

minio_bucket_objects_size_distribution

存儲桶中對象大小的分布,包括存儲桶名稱的标簽。

2.2.複制名額

這些名額僅針對啟用了伺服器端存儲桶複制的 MinIO 叢集進行填充。

minio_bucket_replication_failed_bytes

複制的位元組總數至少失敗一次。

minio_bucket_replication_pending_bytes

等待複制的總位元組數。

minio_bucket_replication_received_bytes

從另一個源存儲桶複制到此存儲桶的位元組總數。

minio_bucket_replication_sent_bytes

複制到目标存儲桶的總位元組數。

minio_bucket_replication_pending_count

此存儲桶挂起的複制操作總數。

minio_bucket_replication_failed_count

此存儲桶的複制操作失敗總數。

2.3 存儲桶名額

minio_bucket_usage_object_total

對象總數

minio_bucket_usage_total_bytes

總存儲桶大小(以位元組為機關)

2.4 緩存名額

minio_cache_hits_total

磁盤緩存命中總數

minio_cache_missed_total

磁盤緩存未命中總數

minio_cache_sent_bytes

從緩存中提供的總位元組數

minio_cache_total_bytes

緩存磁盤的總大小(以位元組為機關)

minio_cache_usage_info

總緩存使用百分比,值 1 表示高,0 表示低,标簽級别也設定

minio_cache_used_bytes

目前緩存使用情況(以位元組為機關)

2.5 叢集名額

minio_cluster_capacity_raw_free_bytes

群集中聯機的總可用容量。

minio_cluster_capacity_raw_total_bytes

群集中聯機的總容量。

minio_cluster_capacity_usable_free_bytes

群集中聯機的總可用容量。

minio_cluster_capacity_usable_total_bytes

群集中聯機的總可用容量。

2.6 節點名額

minio_cluster_nodes_offline_total

脫機的 MinIO 節點總數。

minio_cluster_nodes_online_total

聯機的最小值節點總數。

minio_heal_objects_error_total

在目前自我修複運作中修複失敗的對象

minio_heal_objects_heal_total

在目前自我修複運作中修複的對象

minio_heal_objects_total

在目前自我修複運作中掃描的對象

minio_heal_time_last_activity_nano_seconds

自上次自我修複活動以來經過的時間(以納米秒為機關)。這被設定為 -1,直到初始自我修複

minio_inter_node_traffic_received_bytes

從其他對等節點接收的總位元組數。

minio_inter_node_traffic_sent_bytes

發送到其他對等節點的總位元組數。

minio_node_disk_free_bytes

磁盤上可用的總存儲。

minio_node_disk_total_bytes

磁盤上的總存儲。

minio_node_disk_used_bytes

磁盤上使用的總存儲。

minio_node_file_descriptor_limit_total

限制 MinIO 伺服器程序的打開檔案描述符的總數。

minio_node_file_descriptor_open_total

MinIO 伺服器程序打開的檔案描述符的總數。

minio_node_io_rchar_bytes

程序從底層存儲系統(包括緩存) 讀取的總位元組數,/proc/[pid]/io rchar

minio_node_io_read_bytes

程序從底層存儲系統讀取的總位元組數,/proc/[pid]/io read_bytes

minio_node_io_wchar_bytes

程序寫入底層存儲系統的總位元組數,包括頁面緩存,/proc/[pid]/io wchar

minio_node_io_write_bytes

程序寫入底層存儲系統的總位元組數,/proc/[pid]/io write_bytes

minio_node_process_starttime_seconds

每個節點的 MinIO 程序的開始時間,自 Unix 紀元以來的時間(以秒為機關)。

minio_node_process_uptime_seconds

每個節點的 MinIO 程序的正常運作時間(以秒為機關)。

minio_node_scanner_bucket_scans_finished

自伺服器啟動以來完成的存儲桶掃描總數。

minio_node_scanner_bucket_scans_started

自伺服器啟動以來啟動的存儲桶掃描總數。

minio_node_scanner_directories_scanned

自伺服器啟動以來掃描的目錄總數。

minio_node_scanner_objects_scanned

自伺服器啟動以來掃描的唯一對象總數。

minio_node_scanner_versions_scanned

自伺服器啟動以來掃描的對象版本總數。

minio_node_syscall_read_total

總讀取系統調用核心。/proc/[pid]/io syscr

minio_node_syscall_write_total

總寫入系統調用到核心。/proc/[pid]/io syscw

2.7 S3 名額

minio_s3_requests_error_total

有錯誤的 S3 請求總數

minio_s3_requests_inflight_total

目前正在運作的 S3 請求總數

minio_s3_requests_total

S3 請求總數

minio_s3_time_ttbf_seconds_distribution

跨 API 調用到第一個位元組的時間分布。

minio_s3_traffic_received_bytes

接收的 s3 位元組總數。

minio_s3_traffic_sent_bytes

發送的 s3 位元組總數

2.8 軟體名額

minio_software_commit_info

Git 送出最小值版本的哈希值。

minio_software_version_info

伺服器的最小 IO 釋出标記

::: hljs-right

  1. k8s叢集内部Prometheus怎麼監控叢集外部MinIO叢集?
  2. MinIO控制台怎麼展示監控資料?
  3. 在配置監控過程中可能踩哪些坑?

繼續閱讀