本文档介绍了如何监控 etcd 的健康状况并执行必要的维护操作,以确保 etcd 集群平稳可靠地运行。有关部署和配置 etcd 集群的信息,请参阅 部署与配置,有关升级过程的信息,请参阅 升级。
etcd 提供了多种机制来监控其健康状况和状态,包括 HTTP 端点和指标。
etcd 公开了多个用于健康检查的 HTTP 端点
/health - 通用健康检查,验证服务器是否可以处理请求/livez - Kubernetes 风格的存活检查/readyz - Kubernetes 风格的就绪检查,可以配置为包含或排除某些告警健康检查端点返回的 HTTP 状态码指示服务器是否健康
200 OK - 服务器健康5xx - 服务器不健康来源
来源
etcd 以 Prometheus 格式公开了一套全面的指标,可用于监控其性能、健康状况和资源使用情况。
指标默认在 /metrics 端点上提供
要与 Prometheus 集成,请将 etcd 端点添加到您的 Prometheus 配置中
| 类别 | 指标 | 描述 |
|---|---|---|
| 磁盘 | etcd_mvcc_db_total_size_in_bytes | 数据库文件的总大小 |
etcd_disk_wal_write_duration_seconds | WAL 写入延迟 | |
etcd_disk_backend_commit_duration_seconds | 后端提交延迟 | |
etcd_disk_defrag_inflight | 正在进行的碎片整理操作的数量 | |
| 服务器 | etcd_server_leader_changes_seen_total | 已见的领导者变更次数 |
etcd_server_proposals_committed_total | 已提交的共识提案数量 | |
etcd_server_proposals_failed_total | 失败的共识提案数量 | |
etcd_server_has_leader | 服务器是否有领导者(1)或没有(0) | |
| 网络 | etcd_network_client_grpc_received_bytes_total | 从客户端接收的总字节数 |
etcd_network_client_grpc_sent_bytes_total | 发送给客户端的总字节数 | |
| 资源 | os_fd_used | 使用的文件描述符数量 |
os_fd_limit | 文件描述符限制 | |
| MVCC | etcd_mvcc_put_total | 总 put 操作次数 |
etcd_mvcc_delete_total | 总 delete 操作次数 | |
etcd_mvcc_txn_total | 总事务次数 | |
etcd_mvcc_range_total | 总 range 操作次数 | |
etcd_mvcc_current_revision | etcd 的当前修订版本 | |
etcd_mvcc_compact_revision | 最新的压缩修订版本 |
来源
etcd 提供了一种通过进度通知来监控 watch 进度的机制,这对于确保 watch 客户端正确接收更新非常有用
进度通知告知客户端当前修订版本,使他们能够检测是否遗漏了任何事件。
来源
etcd 需要定期维护以确保最佳性能和可靠性。以下是关键的维护操作:
来源
压缩会删除旧的键修订版本,从而释放存储引擎中的空间。这是防止 etcd 数据库无限增长的关键操作。
压缩可以通过 etcdctl 手动执行,也可以由 etcd 自动执行
为了监控压缩健康状况,etcd 提供了指标
etcd_debugging_mvcc_compact_revision - 最新的压缩修订版本etcd_mvcc_db_total_size_in_bytes - 数据库大小(压缩后应减小)来源
虽然压缩会删除旧的修订版本,但它不会回收磁盘空间。压缩是回收压缩后磁盘空间所必需的。
可以使用 etcdctl 进行碎片整理
关于碎片整理的重要说明
--experimental-stop-grpc-service-on-defrag 以在碎片整理期间启用客户端故障转移。监控碎片整理的指标
etcd_disk_defrag_inflight - 正在进行的碎片整理操作数量来源
定期备份对于数据安全至关重要。etcd 提供快照功能来创建数据库的即时备份
对于自动化备份,您可以设置一个 cron 作业来定期创建快照。
监控备份健康的关键事项
来源
etcd 在遇到需要注意的问题时会发出告警。常见的告警包括:
NOSPACE - 后端数据库大小超过配额CORRUPT - 检测到数据库损坏可以使用 etcdctl 列出和解除告警
健康端点可以配置为排除某些告警影响健康状态
来源
设置全面的监控
os_fd_used 和 os_fd_limit 指标监控文件描述符使用情况定期健康检查
/health、/livez 和 /readyz 端点实现自动化健康检查Watch 进度通知
定期压缩
谨慎的碎片整理
--experimental-stop-grpc-service-on-defrag 标志etcd_disk_defrag_inflight 指标备份策略
etcdctl snapshot status 定期验证快照配额管理
--quota-backend-bytes 标志,以防止空间不足来源
妥善的监控和维护对于在生产环境中可靠地运行 etcd 至关重要。通过实施本指南中描述的实践,您可以确保 etcd 集群保持健康并发挥最佳性能。
请记住
这些实践将帮助您维护一个健壮的 etcd 部署,该部署能够可靠地满足您的应用程序需求。