etcd组件监控
本文主要介绍etcd组件的指标清单、对应大盘的使用指导以及常见指标异常的问题解析。
指标清单
指标是组件对外透出状态和参数的方式之一,etcd组件使用的指标清单如下。
指标 | 类型 | 说明 |
cpu_utilization_core | Gauge | CPU使用量,单位:核(Core)。 |
cpu_utilization_ratio | Gauge | CPU使用率=CPU使用量/内存资源上限,百分比形式。 |
etcd_server_has_leader | Gauge | etcd member是否有Leader。
|
etcd_server_is_leader | Gauge | etcd member是否是Leader。
|
etcd_server_leader_changes_seen_total | Counter | etcd member过去一段时间切主次数。 |
etcd_mvcc_db_total_size_in_bytes | Gauge | etcd member db总大小。 |
etcd_mvcc_db_total_size_in_use_in_bytes | Gauge | etcd member db实际使用大小。 |
etcd_disk_backend_commit_duration_seconds_bucket | Histogram | etcd backend commit延时。 Bucket列表为: |
etcd_debugging_mvcc_keys_total | Gauge | etcd keys总数。 |
etcd_server_proposals_committed_total | Gauge | raft proposals commit提交总数。 |
etcd_server_proposals_applied_total | Gauge | raft proposals apply总数。 |
etcd_server_proposals_pending | Gauge | raft proposals排队数量。 |
etcd_server_proposals_failed_total | Counter | raft proposals失败数量。 |
memory_utilization_byte | Gauge | 内存使用量,单位:字节(Byte)。 |
memory_utilization_ratio | Gauge | 内存使用率=内存使用量/内存资源上限,百分比形式。 |
大盘使用指导
大盘基于组件指标和相关PromQL绘制,大盘可观测性展示和功能解析如下。
可观测性展示

功能解析
名称 | PromQL | 说明 |
etcd存活状态 |
|
|
过去一天切主次数 | changes(etcd_server_leader_changes_seen_total{job="etcd"}[1d]) | 过去一天内etcd集群切主次数。 |
内存使用量 | memory_utilization_byte{container="etcd"} | 内存使用量,单位:字节。 |
CPU使用量 | cpu_utilization_core{container="etcd"}*1000 | CPU使用量,单位:毫核。 |
内存使用率 | memory_utilization_ratio{container="etcd"} | 内存使用率,百分比。 |
CPU使用率 | cpu_utilization_ratio{container="etcd"} | CPU使用率,百分比。 |
磁盘大小 |
|
|
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)) | db commit时延。 |
raft proposal情况 |
|
|
常见指标异常
etcd存活状态
正常情况 | 异常情况 | 异常说明 |
3个etcd member都有Leader,且其中之一必须为Leader。即 | 单个Member异常 | 对应的 |
大于1个Member异常 | 多个 同时观察是否存在Member的 |
backend commit时延
正常情况 | 异常情况 | 异常说明 |
该指标应该处于几十ms级别。 | 长时间出现几百ms甚至秒级别的延迟。 | 说明此时磁盘读写有异常。 |
raft proposal情况
正常情况 | 异常情况 | 异常说明 |
raft proposal failed速率为0。 | raft proposal failed大于0。 | 表明Raft协议提交有失败,如遇到此值很大,则需进一步排查。 |
raft proposal pending总数为0。 | raft proposal pending总数大于0。 | 表明Raft协议提交有积压,一般是Apply慢,可结合backend commit时延进行分析。 |
commit-apply差值为0。 | commit - apply差值大于0。 | 表明此时etcd压力大,客户端请求过多。 若此值大于5000,etcd则会拒绝接后续的请求,并返回 |