全部產品
Search
文件中心

Container Service for Kubernetes:etcd組件監控指標及大盤使用說明

更新時間:Aug 30, 2024

Kubernetes叢集使用etcd作為持久存放裝置,用於儲存叢集的狀態和中繼資料資訊。作為一個分布式KVStore for Redis,etcd保證了叢集資料的強一致性和高可用性。本文介紹etcd組件的監控指標清單、大盤使用指導以及常見指標異常解析。

使用前須知

操作入口

請參見查看叢集控制面組件監控大盤

指標清單

指標是組件對外透出狀態和參數的方式之一,etcd組件使用的指標清單如下。

指標

類型

說明

cpu_utilization_core

Gauge

CPU使用量。單位:核(Core)。

etcd_server_has_leader

Gauge

etcd基於Raft實現一致性演算法。在Raft中,etcd會將叢集中的某個成員(Member)選舉為“Leader”,即主節點,而其他成員則作為“Follower”,即從節點。Leader會定期向所有Member發送心跳,以保持叢集穩定。

此指標表示etcd Member中是否存在Leader。

  • 1:有主節點。

  • 0:沒有主節點。

etcd_server_is_leader

Gauge

etcd Member是否是Leader。

  • 1:是。

  • 0:不是。

etcd_server_leader_changes_seen_total

Counter

過去一段時間內,etcd Member的切主次數,即Leader更換的次數。

etcd_mvcc_db_total_size_in_bytes

Gauge

etcd Member Database(資料庫)的總大小。

etcd_mvcc_db_total_size_in_use_in_bytes

Gauge

etcd Member Database的實際使用大小。

etcd_disk_backend_commit_duration_seconds_bucket

Histogram

etcd後端commit延時,即在etcd中,資料變更寫入到儲存後端並成功提交(commit)所花費的時間。

Bucket閾值為[0.001, 0.002, 0.004, 0.008, 0.016, 0.032, 0.064, 0.128, 0.256, 0.512, 1.024, 2.048, 4.096, 8.192]

etcd_debugging_mvcc_keys_total

Gauge

etcd中儲存的所有鍵(Key)的數量

etcd_server_proposals_committed_total

Gauge

etcd基於Raft實現一致性演算法。在Raft中,任何試圖更改系統狀態的動作都以提案(Proposal)的形式被提出。

此指標指在etcd中,成功提交到Raft日誌中的Proposal數量。

etcd_server_proposals_applied_total

Gauge

成功應用或執行(Apply)的Proposal數量。

etcd_server_proposals_pending

Gauge

正在等待處理的Proposal數量。

etcd_server_proposals_failed_total

Counter

處理失敗的Proposal數量。

memory_utilization_byte

Gauge

記憶體使用量量。單位:位元組(Byte)。

說明

如下資源使用率指標已廢棄,請及時去除依賴該指標的警示和監控。

  • cpu_utilization_ratio:CPU使用率。

  • memory_utilization_ratio:記憶體使用量率。

大盤使用指導

大盤基於組件指標和相關PromQL繪製,大盤可觀測性展示和功能解析如下。

可觀測性展示

etcd

功能解析

名稱

PromQL

說明

etcd存活狀態

  • etcd_server_has_leader

  • etcd_server_is_leader == 1

  • etcd Member是否存活。正常值為3。

  • etcd Member是否是主節點。正常情況下,必須有一個Member為主節點。

過去一天切主次數

changes(etcd_server_leader_changes_seen_total{job="etcd"}[1d])

過去一天內etcd叢集切主次數,即Leader更換的次數。

記憶體使用量量

memory_utilization_byte{container="etcd"}

記憶體使用量量。單位:位元組。

CPU使用量

cpu_utilization_core{container="etcd"}*1000

CPU使用量。單位:毫核。

磁碟大小

etcd_mvcc_db_total_size_in_bytes

etcd Backend DB總大小,即etcd後端資料庫總大小。

etcd_mvcc_db_total_size_in_use_in_bytes

etcd Backend DB實際使用大小,即etcd後端資料庫實際使用大小。

kv總數

etcd_debugging_mvcc_keys_total

etcd叢集KV對(鍵對)總數。

backend commit 延遲

histogram_quantile(0.99, sum(rate(etcd_disk_backend_commit_duration_seconds_bucket{job="etcd"}[5m])) by (instance, le))

後端Commit時延,即Proposal在etcd資料庫完成持久化儲存所需要的時間。

raft proposal 情況

rate(etcd_server_proposals_failed_total{job="etcd"}[1m])

Raft Proposal提交失敗的速率(分鐘)。

etcd_server_proposals_pending{job="etcd"}

Pending的Raft Proposal總數。

etcd_server_proposals_committed_total{job="etcd"} - etcd_server_proposals_applied_total{job="etcd"}

Raft Proposal中,Committed和Applied的數量差值,即已提交但尚未執行的Proposal數量。

常見指標異常

如果組件的常見指標異常,請對照下文的情況說明排查是否為預期內情況。如果發生非預期異常,請提交工單處理。

etcd存活狀態

正常情況

異常情況

異常說明

3個etcd Member都有Leader,且其中之一必須為Leader,即sum(etcd_server_has_leader)=3,且僅有一個member etcd_server_is_leader == 1

單個Member異常。

對應的member etcd_server_has_leader!=1,不影響整體etcd叢集對外提供服務。

大於1個Member異常。

多個member etcd_server_has_leader!=1,Member異常大於1,此時etcd叢集無法對外提供服務。

同時,請觀察是否存在Member的etcd_server_is_leader == 1。如果沒有,etcd則處於無主狀態,無法對外提供服務。

Backend Commit時延

正常情況

異常情況

異常說明

指標處於幾ms到幾十ms。

長時間出現幾百ms甚至秒層級的延遲。

磁碟讀寫存在異常。

Raft Proposal異常

正常情況

異常情況

異常說明

Raft Proposal Failed速率為0。

raft proposal failed大於0。

有Raft Proposal提交失敗。如果此值較大,需進一步排查。

Pending的Raft Proposal總數為0。

Pending的Raft Proposal總數大於0。

提交的Raft Proposal有積壓,一般是由於Apply速度較慢,可結合後端Commit時延進行分析。

Raft Proposal的Committed和Applied數量差值為0。

Committed和Applied數量差值大於0。

用戶端請求過多,etcd壓力較大。

若此值大於5000,etcd會拒絕接後續的請求,並返回too many requests,直至積壓的Proposal全部處理完畢。

相關文檔

關於其他叢集控制面組件監控的指標詳情、大盤使用指引和常見指標異常說明,請參見組件監控指標說明kube-scheduler組件監控指標說明kube-controller-manager組件監控指標說明cloud-controller-manager組件監控指標說明