Redis 日志详解:运行日志、慢查询日志与延迟监控实战

Redis 日志中文详解:loglevel 与 logfile 配置、syslog 集成、SLOWLOG 慢查询(slowlog-log-slower-than/slowlog-max-len)、MONITOR 的风险、LATENCY 延迟监控、keyspace 通知,以及观测云 DataKit 采集告警落地方案。

最佳实践
Redis 日志详解:运行日志、慢查询日志与延迟监控实战技术指南封面

Redis 的日志体系与传统数据库很不一样:运行日志简洁克制,真正的诊断能力在 SLOWLOG、LATENCY、MONITOR 这些内建命令里。本文讲清 Redis 日志与诊断工具的正确用法,并给出观测云平台落地方案。

核心要点速览

  • Redis 运行日志极其精简:默认只记启动、持久化、复制、告警级事件——它设计上就不是"流水账"。
  • SLOWLOG 是性能诊断主武器:记录执行超时的命令(内存中,不落盘),SLOWLOG GET 读取。
  • MONITOR 是"全量命令实时流",生产慎用:对性能影响巨大,只用于短时抓包式排障。
  • logfile 为空时输出到 stdout:容器部署的天然姿势,DataKit 直接采集。

1. 运行日志配置

# redis.conf
loglevel notice              # debug / verbose / notice / warning
logfile /var/log/redis/redis.log
# logfile "" 表示输出到 stdout(容器推荐)

syslog-enabled yes           # 可选:走系统 syslog
syslog-ident redis
syslog-facility local0

四个级别:debug(最啰嗦)、verbose、notice(默认,生产推荐)、warning(只记重要问题)。Redis 的运行日志主要覆盖:启动加载、RDB/AOF 持久化过程、主从复制事件、内存告警、客户端连接异常。看到 "Background saving failed" 或复制断连,基本就是磁盘或网络出了问题。

2. SLOWLOG:慢查询诊断

slowlog-log-slower-than 10000    # 执行超 10000 微秒(10ms)的命令记录
slowlog-max-len 1024             # 内存中保留 1024 条
SLOWLOG GET 10        # 最近 10 条慢命令
SLOWLOG LEN           # 当前条数
SLOWLOG RESET         # 清空

每条记录含:时间戳、执行耗时、完整命令与参数。注意:耗时只计命令执行时间,不含网络与排队;SLOWLOG 存在内存中(环形缓冲),重启即失。

3. MONITOR 与 LATENCY

MONITOR    # 实时流出所有执行的命令——全量!

MONITOR 是排障的"最后手段":能抓到应用到底发了什么命令(比如意外的 KEYS *),但会让吞吐下降明显,只能在从库或低峰短时使用

LATENCY HISTORY command      # 某命令的延迟历史
LATENCY DOCTOR               # 自动诊断并给出建议
CONFIG SET latency-monitor-threshold 100   # 启用延迟监控(毫秒)

LATENCY DOCTOR 会给出人类可读的延迟分析报告——"Redis 变慢了"的第一站。

4. 键空间通知与其他

notify-keyspace-events "KEA"   # 开启键事件通知(过期、删除等)

键空间通知通过 pub/sub 发布键事件(如 __keyevent@0__:expired),常用于缓存失效联动。注意它走 pub/sub 而非日志文件。

AOF/RDB 相关的持久化日志、复制日志也都在运行日志中——aof_rewrite 失败、MISCONF 错误(磁盘写满时 Redis 拒绝写入并输出 MISCONF)都是必须告警的信号。

观测云落地:Redis 日志采集与分析

  1. 运行日志采集:容器部署 logfile 留空走 stdout,DataKit 容器采集;主机部署 conf.d/log/logging.conf 配置 logfiles 指向 redis.log,source: redisservice 标识实例。
  2. SLOWLOG 接入:DataKit Redis 集成采集器可周期拉取 SLOWLOG 与 INFO 指标,慢命令与运行指标同平台呈现。
  3. 解析与告警:Pipeline 提取级别映射标准 status;监控器对 Background saving failedMISCONFOOM command not allowed、复制断连等关键字告警,通知钉钉/企业微信/飞书。
  4. 分析:日志查看器聚合持久化/复制事件时间线;慢命令按 pattern 聚类,找出热点 key 操作。
  5. 成本控制:Redis 运行日志量小,统一标准索引即可;INFO/SLOWLOG 拉取频率按需调整。

常见问题(FAQ)

Redis 为什么没有查询日志?

设计取舍:Redis 单机每秒数万到十万级命令,全量查询日志会拖垮它。需要审计时用 MONITOR(短时)或代理层(如 twemproxy/自研 proxy)记录;SLOWLOG 已覆盖性能视角。

loglevel 生产环境该用哪个?

notice(默认)。verbose/debug 量大会影响性能且价值低,只在深度排障时临时开启(CONFIG SET loglevel verbose 可运行时调整)。

Redis 日志文件会自动轮转吗?

不会。主机部署用系统 logrotate(copytruncate 模式,Redis 不支持 reopen 信号轮转的完整机制时尤其推荐);容器部署走 stdout 无需关心。

怎么抓"谁在执行 KEYS *"这类危险命令?

短时 MONITOR 抓包确认来源应用;长期方案是 rename-command KEYS "" 禁用危险命令 + SLOWLOG/LATENCY 监控 + 观测云告警兜底。

系列阅读


获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台