Redis作为高性能的内存数据库,在实际生产环境中,监控是保障系统稳定性的关键。通过Redis自带的INFO命令、redis-cli的--stat选项,以及第三方工具如Prometheus+Grafana,可以实时监控内存使用、连接数、QPS、延迟等核心指标。实战中,设置告警阈值如内存使用率超过80%时告警,结合慢查询日志分析,快速定位瓶颈,实现高效运维。
一、Redis基础监控命令
使用redis-cli -p 6379 --stat 可以实时查看redis-server的运行状态,包括已连接客户端数量、内存使用、命令执行频率等。INFO all命令输出详细统计信息,如used_memory_human表示人类可读的内存使用量,connected_clients是连接数,instantaneous_ops_per_sec是瞬时QPS。通过脚本定时执行这些命令并写入文件,便于后续分析。
二、Prometheus监控Redis
安装redis_exporter后,在prometheus.yml配置scrape_configs: - job_name: 'redis' static_configs: - targets: ['redis-exporter:9121']。然后在Grafana导入Redis仪表盘模板ID 763,监控图表包括CPU使用、内存碎片率、键空间命中率等。实战中,发现内存碎片率高时,可执行MEMORY PURGE命令释放碎片。
三、慢查询监控与优化
设置config set slowlog-log-slower-than 10000 表示记录超过10ms的查询,config set slowlog-max-len 128设置日志长度。通过SLOWLOG GET查看慢查询列表,结合redis-cli --latency查看延迟分布。实际案例中,优化大KEY导致的慢查询,将大list拆分成小hash,提升响应速度。
四、Zabbix监控Redis
部署zabbix-agent后,配置userparameter_redis_status[*]返回INFO输出,创建监控项如used_memory、evicted_keys。设置触发器:{主机:redis.used_memory.last()}>90%*总内存,告警邮件通知运维人员。结合图形化大屏,实现多实例Redis集群一目了然监控。
五、主从复制与哨兵监控
INFO replication显示主从状态,role:master/slave,offset同步进度。哨兵模式下,监控sentinel masters显示主节点,is_master_down判断故障。实战脚本检测offset差值超过阈值告警,防止数据丢失,提升高可用性。
六、自定义监控脚本
编写Python脚本使用redis-py连接,获取INFO数据,计算内存增长率、命中率,推送到InfluxDB。Grafana查询展示趋势图。遇到内存泄漏时,通过MEMORY USAGE key检查大KEY,MEMORY DOCTOR给出诊断建议。
FAQ
Q: 如何快速查看Redis内存使用情况?
A: 执行INFO memory,关注used_memory_rss和maxmemory。
Q: Redis QPS高但延迟增加怎么处理?
A: 检查慢查询日志,优化大KEY操作,增加slave分担读压力。
Q: 监控工具太多怎么选择?
A: 小型用redis-cli,大型Prometheus+Grafana,集成现有系统选Zabbix。
Q: 主从同步延迟怎么监控?
A: INFO replication查看master_repl_offset和slave_repl_offset差值。