文档版本 v3.7-DRAFT 处于 草稿 状态。如需获取最新的稳定版文档,请参阅 v3.6。
指标
etcd 使用 Prometheus 进行指标上报。这些指标可用于实时监控和调试。etcd 不会持久化其指标;如果某个成员重启,指标将被重置。
查看可用指标的最简单方法是使用 cURL 访问指标端点 /metrics。该格式在此处有说明。
请参考 Prometheus 入门文档 启动一个 Prometheus 服务器来收集 etcd 指标。
指标的命名遵循建议的 Prometheus 最佳实践。指标名称以 etcd 或 etcd_debugging 作为其命名空间前缀,并包含子系统前缀(例如 wal 和 etcdserver)。
etcd 命名空间指标
以 etcd 前缀开头的指标用于监控和告警。它们是稳定的高层级指标。如果这些指标有任何变更,都会在发布说明中注明。
与 etcd2 相关的指标在 v2 指标指南 中有详细记录。
服务器
这些指标描述了 etcd 服务器的状态。为了检测故障或问题以便排查,每个生产环境 etcd 集群的服务器指标都应被密切监控。
所有这些指标均以 etcd_server_ 为前缀
| 名称 | 描述 | 类型 |
|---|---|---|
| has_leader | 是否存在领导者。1 表示存在,0 表示不存在。 | Gauge |
| leader_changes_seen_total | 观察到的领导者变更次数。 | Counter |
| proposals_committed_total | 已提交的一致性提案总数。 | Gauge |
| proposals_applied_total | 已应用的一致性提案总数。 | Gauge |
| proposals_pending | 当前待处理的提案数量。 | Gauge |
| proposals_failed_total | 迄今为止观察到的失败提案总数。 | Counter |
has_leader 指示成员是否拥有领导者。如果某个成员没有领导者,则完全不可用。如果集群中的所有成员都没有领导者,整个集群将完全不可用。
leader_changes_seen_total 统计自成员启动以来所经历的领导权变更次数。频繁的领导权变更会显著影响 etcd 的性能,同时也表明领导者可能不稳定,原因可能是网络连接问题或 etcd 集群负载过高。
proposals_committed_total 记录了已提交的共识提案总数。如果集群健康,该指标应随时间持续增长。etcd 集群中多个健康的成员在某一时刻的已提交提案总数可能不同,这种差异可能是由于启动后从对等节点恢复、落后于领导者,或是本身为领导者因而拥有最多的提交数。重要的是要监控集群中所有成员的这一指标;若某个成员与其领导者之间长期存在较大差距,则表明该成员运行缓慢或不健康。
proposals_applied_total 记录了已应用的共识提案总数。etcd 服务器会异步地应用每一个已提交的提案。proposals_committed_total 与 proposals_applied_total 之间的差值通常应很小(即使在高负载下也应在几千以内)。如果两者之间的差距持续扩大,则表明 etcd 服务器过载。这可能发生在执行代价较高的查询时,例如大量范围查询或大型事务操作。
proposals_pending 表示有多少提案正在排队等待提交。待处理提案数量上升通常意味着客户端负载较高,或者该成员无法提交提案。
proposals_failed_total 通常与两种情况有关:与领导者选举相关的临时性失败,或因集群失去法定人数而导致的较长时间停机。
磁盘
这些指标描述了磁盘操作的状态。
所有这些指标均以 etcd_disk_ 为前缀。
| 名称 | 描述 | 类型 |
|---|---|---|
| wal_fsync_duration_seconds | 由 WAL 调用的 fsync 操作的延迟分布 | 直方图 |
| backend_commit_duration_seconds | 由后端调用的 commit 操作的延迟分布。 | 直方图 |
当 etcd 在应用日志条目前将其持久化到磁盘时,会调用 wal_fsync。
当 etcd 将其最近更改的增量快照提交到磁盘时,会调用 backend_commit。
较高的磁盘操作延迟(wal_fsync_duration_seconds 或 backend_commit_duration_seconds)通常表明存在磁盘问题,可能导致请求延迟升高或使集群变得不稳定。
网络
这些指标描述了网络状态。
所有这些指标均以 etcd_network_ 为前缀。
| 名称 | 描述 | 类型 |
|---|---|---|
| peer_sent_bytes_total | 发送给 ID 为 To 的对等节点的字节总数。 | 计数器(To) |
| peer_received_bytes_total | 从 ID 为 From 的对等节点接收到的字节总数。 | 计数器(From) |
| peer_sent_failures_total | 向 ID 为 To 的对等节点发送失败的总次数。 | 计数器(To) |
| peer_received_failures_total | 来自 ID 为 From 的对等节点的接收失败总次数。 | 计数器(From) |
| peer_round_trip_time_seconds | 对等节点之间的往返时间直方图。 | Histogram(To) |
| client_grpc_sent_bytes_total | 发送到 gRPC 客户端的字节总数。 | Counter |
| client_grpc_received_bytes_total | 从 gRPC 客户端接收到的字节总数。 | Counter |
peer_sent_bytes_total 统计发送到特定对等节点的字节总数。通常领导者成员发送的数据多于其他成员,因为它负责传输复制的数据。
peer_received_bytes_total 统计从特定对等节点接收到的字节总数。通常跟随者成员仅从领导者成员接收数据。
gRPC 请求
这些指标通过 go-grpc-prometheus 暴露。
etcd_debugging 命名空间指标
以 etcd_debugging 为前缀的指标用于调试目的。它们高度依赖具体实现且不稳定,可能会在新的 etcd 版本中被更改或移除而无需警告。其中一些指标在变得稳定后可能会被迁移到 etcd 前缀下。
快照
| 名称 | 描述 | 类型 |
|---|---|---|
| snapshot_save_total_duration_seconds | 由快照调用的保存操作的总延迟分布。 | 直方图 |
异常高的快照持续时间(snapshot_save_total_duration_seconds)表明存在磁盘问题,可能导致集群不稳定。
Prometheus 提供的指标
Prometheus 客户端库在 go 和 process 命名空间下提供了多个指标。其中有一些特别值得关注。
| 名称 | 描述 | 类型 |
|---|---|---|
| process_open_fds | 打开的文件描述符数量。 | Gauge |
| process_max_fds | 最大可打开的文件描述符数量。 | Gauge |
注意:目前在 Darwin(macOS)系统上不支持 process_open_fds 和 process_max_fds 等进程相关指标。
高量级的文件描述符使用(process_open_fds,接近进程的文件描述符上限 process_max_fds)表明可能存在文件描述符耗尽的问题。如果文件描述符被耗尽,etcd 可能会因无法创建新的 WAL 文件而崩溃。
生成的指标列表
| latest |