Debian Redis日志如何分析
小樊
45
2025-12-26 23:20:18
Debian Redis日志分析实操指南
一 定位与查看日志
- 确认日志路径与级别
- 查看服务状态与系统日志:sudo systemctl status redis-server;sudo journalctl -u redis-server.service
- 查看配置文件:grep -E ‘^(logfile|loglevel)’ /etc/redis/redis.conf
- 直接查看日志文件:sudo tail -f /var/log/redis/redis-server.log
- 常用查看与过滤
- 实时查看错误:sudo tail -f /var/log/redis/redis-server.log | grep -i error
- 按时间定位:grep “2025-12-26 10:.*error” /var/log/redis/redis-server.log
- 统计错误数:grep -aic “error” /var/log/redis/redis-server.log
- 若日志输出到控制台
- 检查 logfile 是否为空或被注释;若为空,Redis可能把日志打到 systemd 日志,使用 journalctl 查看。
二 关键日志项与定位方法
- 连接与访问控制
- 拒绝连接/鉴权失败:关注日志中的 “denied”、“NOAUTH”、“max number of clients reached”
- 排查要点:ss -lntp | grep 6379;ufw/firewalld 规则;requirepass 与 bind 配置;必要时调大 maxclients。
- 持久化与磁盘
- RDB/AOF 失败:关键词 “Background saving error”、“rdbSave failed”、“Write error saving DB on disk”、“No space left on device”
- 排查要点:df -h;数据目录与日志目录磁盘空间;RDB/AOF 配置与权限;内核 overcommit 与 vm.overcommit_memory。
- 内存与驱逐策略
- OOM 与策略触发:关键词 “OOM command not allowed”、“maxmemory policy”
- 排查要点:INFO memory;设置合理的 maxmemory 与淘汰策略(如 volatile-lru/allkeys-lru)。
- 慢查询定位
- 配置阈值:slowlog-log-slower-than 10000(单位微秒,示例为 10ms);slowlog-max-len 128
- 拉取与分析:redis-cli SLOWLOG GET 20;按执行时间、客户端与命令定位热点与异常。
三 性能与安全取证增强
- 当前连接与来源 IP
- 列出客户端:redis-cli CLIENT LIST;筛选 db0 的 IP:redis-cli --raw CLIENT LIST | awk -F ’ ’ ‘{for(i=1;i<=NF;i++){if($i~/^addr=/)addr=$i; if($i~/^db=/)db=$i} if(db==“db=0”){print addr}}’
- 命令级审计与实时追踪
- 审计日志(Redis 6.0+):启用 audit-log-enabled yes;audit-log-file /var/log/redis/audit.log;audit-log-command all;按 IP/库/命令检索。
- 实时抓命令(慎用):redis-cli MONITOR | grep “SELECT 0”(生产环境避免,CPU 开销大)。
- 网络层取证
- 抓包:sudo tcpdump -i eth0 port 6379 -A | grep “SELECT 0”
- 防火墙日志:iptables -A INPUT -p tcp --dport 6379 -j LOG --log-prefix "Redis-Access: "
四 日志轮转与长期分析
- 使用 logrotate 切割
- 新建 /etc/logrotate.d/redis:
/var/log/redis/redis-server.log {
daily
rotate 7
missingok
notifempty
compress
delaycompress
postrotate
redis-cli -p 6379 ping >/dev/null 2>&1 || true
endscript
}
- 测试:sudo logrotate -vf /etc/logrotate.d/redis
- 集中化与可视化
- Filebeat → Logstash → Elasticsearch → Kibana:按 service=redis 打标签,Grok 解析日志级别与时间,构建错误趋势、连接趋势、慢查询面板。
- 指标监控:Prometheus + Grafana + Redis Exporter(默认 9121),补充日志无法覆盖的可观测性。
五 快速排查清单与命令小抄
- 服务与端口
- sudo systemctl status redis-server;ss -lntp | grep 6379;sudo ufw status 或 firewall-cmd --list-ports
- 日志与配置
- sudo tail -n50 /var/log/redis/redis-server.log | grep -i error;grep -E ‘^(logfile|loglevel|bind|requirepass|maxclients|maxmemory)’ /etc/redis/redis.conf
- 持久化与空间
- df -h;redis-cli INFO persistence;grep -i “error|fail” /var/log/redis/redis-server.log
- 慢查询与连接
- redis-cli SLOWLOG GET 20;redis-cli CLIENT LIST | wc -l;必要时临时调高日志级别:redis-cli CONFIG SET loglevel debug
- 风险提示
- MONITOR 仅短时调试;修改配置后优先用 CONFIG GET/SET 验证,再持久化到 /etc/redis/redis.conf;变更前备份。