Metrics
metrics用于实时监控和调试。
etcd不会保留metrics,当成员发生重启,metrics将被重置。所以etcd可结合prometheus,对etcd进行监控。
查看metrics的最简单方法就是curl ip:port/metrics
指标名称有一个 etcd 或者 etcd_debugging前缀作为其命名空间前缀,和一个子系统前缀(例如 wal、etcdserver)
etcd namespace metrics
etcd前缀下的指标用于监控和警报。它们是稳定的高级指标。如果这些指标有任何更改,将包含在发行说明中。
Server
这些指标描述了 etcd 服务器的状态。为了检测故障或故障排除问题,应密切监控每个生产 etcd 集群的服务器指标。
所有这些指标都以 etcd_server_作为前缀
名称 | 描述 | 类型 |
has_leader | 领导者是否存在。1是存在,0不是。 | Gauge |
leader_changes_seen_total | 看到的领导者变更次数。 | Counter |
proposal_committed_total | 提交的共识提案总数。 | Gauge |
proposal_applied_total | 已应用的共识提案总数。 | Gauge |
proposal_pending | 当前待处理提案的数量。 | Gauge |
proposal_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服务器过载。在应用昂贵的查询(例如大范围查询或大型 txn 操作)时可能会发生这种情况。
proposals_pending表示有多少提案排队等待提交。上升的未决提案表明客户端负载很高或成员无法提交提案。
proposals_failed_total 通常与两个问题有关:与领导者选举相关的临时故障或由于集群中的仲裁丢失而导致的更长停机时间。
Disk
这些指标描述磁盘操作的状态。
所有这些指标都以etcd_disk_为前缀
名称 | 描述 | 类型 |
wal_fsync_duration_seconds | wal 调用的 fsync 的延迟分布 | Histogram |
backend_commit_duration_seconds | 后端调用的提交的延迟分布。 | Histogram |
一个wal_fsync被称为当ETCD应用之前仍然存在,它的日志条目到磁盘。
一个backend_commit当ETCD提交的其最近的更改到磁盘的增量快照被调用。
高磁盘操作延迟 (wal_fsync_duration_seconds或backend_commit_duration_seconds) 通常表示磁盘问题。它可能会导致高请求延迟或使集群不稳定。
Network
这些指标描述了网络的状态。
所有这些指标都以 etcd_network_为前缀
名称 | 描述 | 类型 |
peer_sent_bytes_total | 发送到具有 ID 的对等方的总字节数To。 | Counter(To) |
peer_received_bytes_total | 从具有 ID 的对等方接收的总字节数From。 | Counter(From) |
peer_sent_failures_total | 来自具有 ID 的对等方的发送失败总数To。 | Counter(To) |
peer_received_failures_total | 从具有 ID 的对等方接收失败的总数From。 | Counter(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计算从特定对等方接收的总字节数。通常追随者成员只从领导者那里接收数据。
etcd_debugging namespace metrics
etcd_debugging前缀下的指标用于调试。它们非常依赖于实现且易变。在新的 etcd 版本中,它们可能会在没有任何警告的情况下被更改或删除。当某些指标变得更加稳定时,它们可能会移至etcd前缀。
snapshot
名称 | 描述 | 类型 |
snapshot_save_total_duration_seconds | 快照调用的保存总延迟分布 | Histogram |
异常高的快照持续时间 ( snapshot_save_total_duration_seconds) 表示磁盘问题,并可能导致集群不稳定。
Prometheus supplied metrics
Prometheus 客户端库在go和process命名空间下提供了许多指标。有几个特别有趣。
名称 | 描述 | 类型 |
process_open_fds | 打开的文件描述符数。 | Counter |
process_max_fds | 打开的文件描述符的最大数量。 | Counter |
大量的文件描述符 ( process_open_fds) 使用(即接近进程的文件描述符限制process_max_fds)表示潜在的文件描述符耗尽问题。如果文件描述符耗尽,etcd 可能会因为无法创建新的 WAL 文件而发生恐慌。