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-scheduler组件监控指标说明、kube-controller-manager组件监控指标说明、cloud-controller-manager组件监控指标说明。