首页/数据/数据库速查/集群监控与巡检要点
Redis 运维与场景124 条

集群监控与巡检要点

集群监控三件套:cluster_state 与槽覆盖、节点连通(pfail/fail 计数)、迁移与重定向异常;再加上每节点常规 Redis 指标。

数据库速查数据更新于 2026-10-13

集群监控的三个层次

集群监控要同时覆盖三层:集群层看状态是否 ok、槽是否全部指派、有没有节点被判 fail;拓扑层看主从配对是否完整、迁移是否卡住;节点层则沿用单实例的指标,关注内存、连接数、延迟与持久化状态。只监控单节点指标会漏掉集群级故障,只监控集群状态又会漏掉节点资源问题。

基本信息

适用平台Redis 3.0+ 的 Cluster 模式
集群级命令CLUSTER INFO、CLUSTER NODES
体检命令redis-cli --cluster check
关键判断cluster_state 为 ok、slots_assigned 等于 16384
节点级指标used_memory、connected_clients、instantaneous_ops_per_sec

典型使用场景

  • 日常巡检:快速确认集群状态与槽覆盖是否正常
  • 扩容或缩容后核对拓扑,确认主从配对完整
  • 客户端大量报 MOVED 或 CLUSTERDOWN 时定位根因
  • 节点被标记 fail 后确认真实故障还是网络抖动
  • 上线前体检,避免带着未指派槽的集群对外服务

巡检命令

巡检命令
for h in 10.0.0.1 10.0.0.2 10.0.0.3; do
  echo "== $h"
  redis-cli -h $h CLUSTER INFO | grep -E 'cluster_state|slots_assigned|slots_ok|known_nodes|cluster_size'
done
redis-cli --cluster check 10.0.0.1:6379      # 槽、节点、键的一致性体检
redis-cli -h 10.0.0.1 CLUSTER NODES | grep -c 'master'   # 主节点数量
redis-cli -h 10.0.0.1 INFO | grep -E 'used_memory_human|connected_clients|instantaneous_ops_per_sec'

关键指标与判断

指标正常值异常含义
cluster_stateokfail 表示有槽未指派或节点不可达
slots_assigned16384小于该值说明有槽未分配
slots_ok16384小于 assigned 说明部分槽所在节点异常
known_nodes等于拓扑中的节点总数偏少说明节点发现不完整
节点 fail 标记无真实故障或网络分区
used_memory / maxmemory留有安全余量接近上限会触发淘汰或写入失败
告警至少要覆盖:槽未全覆盖、cluster_state 变为 fail、出现 fail 标记的节点、主节点缺少从节点,以及单个节点的内存与连接数异常。
只等 cluster_state 变 fail 才告警往往已经影响业务:槽迁移中途、节点 pfail 状态、主从配对缺失都应在更早阶段被察觉。
巡检频率要有取舍:CLUSTER INFO 与 CLUSTER NODES 开销很小可以高频采集,--cluster check 会遍历键空间开销较高,按天或按周执行即可。统一放到分钟级巡检里,会给自己制造额外的负载。

易错点

  • 只监控单节点指标:某个主节点长期缺失从节点,故障时才发现无法自动晋升
  • 把 pfail 当无害状态:节点被判 pfail 说明通信异常,持续存在会升级为 fail 并触发切换
  • 扩容后不做体检:槽迁移被中断留下空洞,客户端随机报错且难以复现
  • 集群状态与客户端配置不同步:代理或客户端缓存的拓扑过期,长期依赖重定向,延迟偏高

数据来源与参考

  • Redis 官方文档: CLUSTER INFO
  • Redis 官方文档: redis-cli --cluster check

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌