微信公衆号“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叢集節點均已上線:
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
- k8s叢集内部Prometheus怎麼監控叢集外部MinIO叢集?
- MinIO控制台怎麼展示監控資料?
- 在配置監控過程中可能踩哪些坑?