redis集群健康检测与故障日志收集核心是用shell脚本定期调用redis-cli执行cluster nodes等命令,结合进程、端口、日志时间戳三重验证,并结构化归档异常信息。

Redis集群健康检测与故障日志收集,核心是用Shell脚本定期调用redis-cli执行集群检查命令,并结合系统日志、进程状态和网络连通性做多维度判断,再把异常信息结构化归档。
基础健康检查:用redis-cli cluster nodes验证节点状态
每个Redis节点都应能响应CLUSTER NODES命令。脚本需遍历所有节点IP:端口,逐个执行并解析返回结果:
- 检查返回是否超时或报错(如
Connection refused、NOAUTH),说明服务未启动或认证失败 - 解析
cluster nodes输出,筛选出状态非connected或角色为fail?的行 - 确认
myself标记节点是否处于master或slave且无fail标记 - 示例命令:
redis-cli -h $host -p $port -a "$auth" cluster nodes 2>/dev/null | grep -v "fail\|disconnected"
补充验证:进程、端口与日志时间戳三重确认
仅靠redis-cli可能漏判“假存活”(如进程僵死但端口仍监听):
Redis 8.2.3 是一款安全优先的高性能键值存储系统。该版本紧急修复了可能引发远程代码执行(RCE)的高危漏洞(CVE-2025-62507),并解决了 HyperLogLog 及 Cuckoo Filter 等数据结构在特定场景下的崩溃问题。建议所有用户立即升级,以保障生产环境的系统稳定与数据安全。
- 用
ps aux | grep redis-server.*$port确认主进程是否存在且参数含对应端口 - 用
ss -tln | grep ":$port"或netstat -tln | grep ":$port"验证端口真实监听状态 - 检查Redis日志最后修改时间:
find /var/log/redis/ -name "*$port*.log" -mmin -5 2>/dev/null,若5分钟内无新日志,大概率已卡住
故障日志自动收集:按节点打包关键上下文
一旦判定某节点异常,立即抓取可定位问题的最小必要信息:
- 该节点的
redis-cli info all输出(含内存、连接数、持久化状态) - 最近100行Redis日志:
tail -n 100 /var/log/redis/redis_$port.log 2>/dev/null - 系统资源快照:
free -h; df -h; top -b -n1 | head -20 - 打包为
redis-fail-$(date +%s)-$host-$port.tar.gz,存入统一日志目录(如/data/redis-alert/)
集成告警与轻量自愈(可选)
检测脚本可对接企业已有通知渠道,并尝试简单恢复动作:
- 发现进程不存在但配置存在时,执行
systemctl start redis@$port或直接redis-server /etc/redis/$port.conf - 写入标准错误日志的同时,调用
curl -X POST推送简明告警到钉钉/企业微信Webhook - 避免高频重复告警:用
touch /tmp/redis_alert_$host_$port加锁,2小时内同节点只报一次
不复杂但容易忽略的是日志路径一致性与权限——确保脚本运行用户有读取Redis日志和执行redis-cli的权限,生产环境建议用专用低权限账号运行。










