温馨提示×

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;变更前备份。

0