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 运行日志与慢命令

排查持久化失败时,先按 DataKit 文件采集配置接入 Redis 实际运行日志,测试级别与时间解析。慢命令则按 Redis 集成配置实例地址和所需权限,验证 SLOWLOG 采集结果;两类数据的来源和采集方式不同。

在同一故障窗口中对照运行日志、慢命令与实例指标,再为需要持续关注的错误配置日志检测。慢命令不一定说明热点 key,仍需结合命令参数与应用访问方式判断。

常见问题(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 监控 ,并验证所需的错误检测规则。

系列阅读


获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

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

立即开始

选择观测云版本

代码托管平台