健康检查与监控
区分进程存活、集群就绪、指标、Top、实时监控和临时诊断。
健康检查负责自动准入,监控负责解释趋势,诊断负责回答一个有界问题。三者不能互相替代。
端点与用途
| 信号 | 语义 | 自动化用途 |
|---|---|---|
GET /healthz | 当前 HTTP 进程存活;成功返回 200 {"status":"ok"} | 进程重启探针,不用于接收业务流量 |
GET /readyz | 节点当前满足产品流量门槛;未就绪返回 503 和原因 | 负载均衡与流量准入 |
GET /metrics | 启用指标后导出 Prometheus 指标 | 趋势、告警和容量基线 |
GET /top/v1/snapshot | 节点本地资源与有界历史快照,独立于 Prometheus | 快速观察与短期关联 |
| Manager 实时监控 | 聚合节点、资源、队列和集群投影 | 运维总览,不作为单独安全门槛 |
| Debug/pprof | 开启 Debug API 后的高成本诊断 | 授权、限时的问题分析 |
恢复维护期间,健康、就绪、指标、Debug 和 Top 仍可观察,而产品、路由、Benchmark 等请求会被维护门槛拒绝。不要因为 /healthz 为 200 就重新接入业务流量。
探针示例
curl --fail http://127.0.0.1:5001/healthz
curl --fail http://127.0.0.1:5001/readyz
curl --fail http://127.0.0.1:5001/metrics实际地址以 API 监听配置为准。curl --fail 会把 /readyz 的 503 当作失败;同时保留响应体中的 reason 供告警和排查使用。
最小监控面
- 请求与连接:连接、发送错误、请求率、延迟、重连和路由失败;
- 集群控制面:Controller 可用性、Slot Leader/副本/ISR、控制任务和状态过期;
- 消息运行时:Channel 活动、投递/推送积压、Webhook 与插件失败;
- 资源:CPU、内存、Goroutine、FD、磁盘空间/IO、网络与日志增长;
- 背压:有界队列长度、拒绝、丢弃、重试和处理耗时。
告警阈值必须来自当前版本、硬件和接近真实负载的基线。十万成员群组、高消息率和大量在线连接下,平均值会隐藏热点;同时观察分位延迟、最大队列和单节点偏斜。
必须告警的状态
/readyz持续 503 或节点频繁进出就绪;- Controller/Slot 状态缺失、过期、Leader 不稳定或副本/ISR 异常;
- 持续队列积压、拒绝、丢弃、投递失败或错误率上升;
- 磁盘逼近容量、IO 延迟恶化、内存/FD/Goroutine 无界增长;
- 监控采集本身中断,导致状态未知。
每条告警应包含负责人、影响、仪表盘、第一项只读检查和升级条件。状态未知时保持失败关闭,不自动执行拓扑写操作。