WuKongIM Docs

健康检查与监控

用三个地址判断进程是否存活、节点能否接流量,以及问题发生在哪里。

编辑此页报告文档问题

判断 WuKongIM 是否正常时,先检查 /readyz,再看监控。不要只看“进程还在不在”。

先运行这三个命令

curl -sS -i http://127.0.0.1:5001/healthz
curl -sS -i http://127.0.0.1:5001/readyz
curl -sS http://127.0.0.1:5001/metrics

127.0.0.1:5001 换成节点真实的 API 地址。如果没有开启 Prometheus 指标,第三个地址可能不可用。

地址它回答的问题正确用法
/healthzWuKongIM 进程还活着吗?用于进程存活检查和自动重启
/readyz这个节点现在能接收业务流量吗?用于负载均衡、发布和恢复流量
/metrics最近的错误、延迟、队列和资源有什么变化?由 Prometheus 采集,用于图表和告警

最容易记住的规则是:/healthz 成功只代表进程活着;只有 /readyz 成功才代表节点可以接业务流量。 /readyz 失败时会返回 HTTP 503,并在响应中说明原因,请把完整响应保存下来。

维护期间进程可能存活,但业务仍不可用

数据恢复等维护操作期间,/healthz、监控和诊断接口仍可能正常,/readyz 则会保持失败。不要因为进程存活就提前恢复业务流量。

最少需要监控什么

刚开始可以先覆盖下面四组,不必一次做出很复杂的仪表盘。

监控组关注内容常见问题
流量与连接连接数、发送错误、请求量、延迟、重连用户连不上或消息变慢
队列与投递队列长度、拒绝、丢弃、重试、Webhook/插件失败消息积压或下游收不到
集群状态Controller、Slot Leader、副本、ISR 和任务节点就绪但集群状态异常
机器资源CPU、内存、Goroutine、文件句柄、磁盘和网络资源耗尽导致服务不稳定

Manager 的“实时监控”和 Top 适合快速查看当前节点;Prometheus 适合看一段时间内的趋势。它们互相补充,不能替代 /readyz

先设置这些告警

  • /readyz 持续返回 503,或者状态频繁变化;
  • 发送错误或延迟持续上升;
  • 队列持续增长,出现拒绝、丢弃或投递失败;
  • 磁盘剩余空间不足,或内存、文件句柄、Goroutine 持续增长;
  • Controller、Slot Leader、副本或 ISR 状态异常;
  • 监控采集中断,导致无法判断集群状态。

不要直接照搬别人的告警数值。先观察当前版本在真实业务高峰时的正常范围,再设置阈值。大群、高消息率和大量连接容易产生单节点或单频道热点,因此还要看最大值和高分位延迟,不能只看平均值。

告警出现后怎么做

  1. 记录开始时间、影响范围和 /readyz 完整响应。
  2. 对齐同一时间段的指标、Manager 状态和错误日志。
  3. 如果仍无法解释,再按故障排查逐步使用 Top、诊断或 pprof。

监控开关与日志配置见日志与可观测性。不要让告警自动执行 Leader 迁移、删除节点或其他拓扑变更。

本页内容