Kubernetes集群使用etcd作為持久存儲設備,用于保存集群的狀態和元數據信息。作為一個分布式鍵值存儲,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。
|
etcd_server_is_leader | Gauge | etcd Member是否是Leader。
|
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閾值為 |
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繪制,大盤可觀測性展示和功能解析如下。
可觀測性展示
功能解析
名稱 | PromQL | 說明 |
etcd存活狀態 |
|
|
過去一天切主次數 | 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,即 | 單個Member異常。 | 對應的 |
大于1個Member異常。 | 多個 同時,請觀察是否存在Member的 |
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會拒絕接后續的請求,并返回 |
相關文檔
關于其他集群控制面組件監控的指標詳情、大盤使用指引和常見指標異常說明,請參見kube-apiserver組件監控指標說明、kube-scheduler組件監控指標說明、kube-controller-manager組件監控指標說明、cloud-controller-manager組件監控指標說明。