etcd 3.7
指标
etcd 3.7 开发、运维、升级、API 与内部原理中文指南
etcd 使用 Prometheus 进行指标报告。指标可用于实时监控和调试。etcd 不会持久化其指标;若成员重启,指标将被重置。
查看可用指标最简单的方法是使用 cURL 访问指标端点 /metrics。其格式详见 Prometheus 文档
。
请按照 Prometheus 入门指南 启动 Prometheus 服务器,以收集 etcd 指标。
指标命名遵循建议的 Prometheus 最佳实践
。指标名称以 etcd 或 etcd_debugging 作为命名空间前缀,并可包含子系统前缀(例如 wal 和 etcdserver)。
etcd 命名空间指标
以 etcd 为前缀的指标用于监控和告警。这些是稳定且高层次的指标。若此类指标有任何变更,将包含在发布说明中。
与 etcd2 相关的指标在 v2 指标指南 中有详细说明。
服务器
这些指标描述了 etcd 服务器的运行状态。为检测故障或排查问题,应密切监控每个生产环境 etcd 集群的服务器指标。
所有这些指标均以 etcd_server_ 为前缀
| 名称 | 描述 | 类型 |
|---|---|---|
| has_leader | 是否存在领导者。1 表示存在,0 表示不存在。 | 仪表 |
| leader_changes_seen_total | 观察到的领导者变更次数。 | 计数器 |
| proposals_committed_total | 已提交的共识提案总数。 | 仪表 |
| proposals_applied_total | 已应用的共识提案总数。 | 仪表 |
| proposals_pending | 当前待处理的提案数量。 | 仪表 |
| proposals_failed_total | 观察到的失败提案总数。 | 计数器 |
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 | 对等成员之间的往返时间(RTT)直方图。 | 直方图(To) |
| client_grpc_sent_bytes_total | 发送到 gRPC 客户端的总字节数。 | 计数器 |
| client_grpc_received_bytes_total | 从 gRPC 客户端接收的总字节数。 | 计数器 |
peer_sent_bytes_total 统计发送至特定对等成员的总字节数。通常,领导者成员发送的数据量多于其他成员,因为它负责传输已复制的数据。
peer_received_bytes_total 统计从特定对等成员接收的总字节数。通常,跟随者成员仅从领导者成员接收数据。
gRPC 请求
这些指标通过 go-grpc-prometheus 暴露。
etcd 调试命名空间指标
以 etcd_debugging 为前缀的指标用于调试。这些指标高度依赖实现且不稳定,可能在新的 etcd 版本中未经通知即被修改或移除。当部分指标趋于稳定后,可能会被迁移至 etcd 前缀。
快照
| 名称 | 描述 | 类型 |
|---|---|---|
| snapshot_save_total_duration_seconds | 快照调用保存操作的总延迟分布 | 直方图 |
快照持续时间异常高(snapshot_save_total_duration_seconds)表明存在磁盘问题,可能导致集群不稳定。
Prometheus 供应的指标
Prometheus 客户端库在 go 和 process 命名空间下提供了一系列指标。其中有一些尤为值得关注。
| 名称 | 描述 | 类型 |
|---|---|---|
| process_open_fds | 打开的文件描述符数量。 | 仪表 |
| process_max_fds | 最大打开文件描述符数量。 | 仪表 |
当前版本不支持在 Darwin(macOS)系统上使用进程指标,例如 process_open_fds 和 process_max_fds。
高文件描述符(process_open_fds)使用率(即接近进程的文件描述符限制,process_max_fds)表明可能存在文件描述符耗尽问题。若文件描述符耗尽,etcd 可能因无法创建新的 WAL 文件而发生崩溃。
生成的指标列表
来源与许可
文档取自 pig.center · 上游文档
- 版本
- 3.7
- 许可
- CC-BY-4.0
- 来源修订
dba8dc7e1afd3f6eea300ebf9ecb67c731145f1ee7db1ca0d3ebc49508812609- 译文修订
dba8dc7e1afd3f6eea300ebf9ecb67c731145f1ee7db1ca0d3ebc49508812609