MONITOR 是调试工具不是监控工具
MONITOR 把实例收到的每条命令实时打印出来,包括时间戳、来源、命令与全部参数。它非常适合短时调试与核对调用方行为,但代价极高:每条命令都要额外格式化并推送给客户端,高 QPS 下会显著增加 CPU 与网络开销。生产使用必须限时、限低峰,并且不要把它当成常规监控手段。
基本信息
| 适用平台 | Redis 全版本 |
|---|---|
| 输出内容 | 时间戳 + 来源标识 + 命令与参数 |
| 典型开销 | 命令量翻倍处理,输出可能达到每秒数万行 |
| 安全风险 | 参数中的敏感数据会被完整打印 |
| 推荐替代 | SLOWLOG、INFO commandstats 做统计 |
典型使用场景
- 核对客户端实际发出的命令与预期是否一致
- 排查某个键被谁在写:短时采样后筛选命令流
- 验证代理或中间件的改写行为是否符合设计
- 临时确认慢命令的实际来源与调用方
- 演练环境复现问题时观察命令序列
安全采样方式
安全采样方式
# 限时 5 秒采样,按命令名统计 Top
# timeout 5 redis-cli MONITOR | awk '{print $4}' | sort | uniq -c | sort -rn | head
# 只关注某个键的访问(先限时再过滤,避免输出洪流)
# timeout 5 redis-cli MONITOR | grep -F 'hot:config'
# 常规统计改用命令统计与慢日志
redis-cli INFO commandstats | head -20
redis-cli SLOWLOG GET 10
redis-cli SLOWLOG LEN
# 需要定位大请求时看客户端来源
redis-cli CLIENT LIST | head -20观测手段对照
| 手段 | 开销 | 适用 |
|---|---|---|
| MONITOR | 高,随命令量线性增长 | 短时限时调试 |
| SLOWLOG | 低,仅记录超阈值命令 | 慢命令排查的常规手段 |
| INFO commandstats | 低,累计计数 | 看命令族资源占比 |
| CLIENT LIST | 低 | 查看连接来源与阻塞情况 |
| --bigkeys / --hotkeys | 中等,需扫描全键 | 低峰执行的结构分析 |
commandstats 与 SLOWLOG 的组合能覆盖大多数排查需求:前者看命令族总量,后者看具体慢调用,都比 MONITOR 安全得多,优先考虑它们。
MONITOR 的输出包含完整命令参数,可能带手机号、令牌、密码等敏感值:生产环境不要落盘、不要贴进工单或聊天工具,只允许限时在受控终端查看。