1.摘要
本人从事Java Web开发,在项目开发中会用到很多中间件,本文主要介绍Redis监控的一点心得和使用,公司DBA也有相应的监控,但是我们的业务比较重要,想做一个备份监控,对Redis监控需要做监控和预警,首先需要有数据,数据采集之前要知道自己需要监控哪些指标,监控Redis的作用:(1)定时监控MySQL的健康状况,能够及时发现问题;(2)根据一些指标的历史趋势图能够对系统做优化。
2.监控指标
(1)QPS (每秒查询量)
(2)连接数
(3)CPU使用情况
(4)内存使用情况
3.监控结构
Redis的监控分为两部分,一部分是定时器,每一分钟(时间间隔根据自己的需求定义)负责采集数据和监控的预警(针对QPS、连接数、内存等指标超过阈值给出短信和邮件预警),另一部分是监控结果的展示,在前端页面展示方便查看和数据的对比。
4.数据采集和显示
可以在客户端通过info命令来获取redis的信息,信息详解参见:http://blog.csdn.net/zhaowenbo168/article/details/53224189
4.1 QPS
QPS=(total_commands_processed2 - total_commands_processed1)/time,也可以使用instantaneous_ops_per_sec参数,监控的QPS量,如果超出阈值(具体的阈值根据机器的性能),则给预警,另外可以根据历史趋势图,如果发现QPS的值逐渐增高,说明业务量增大了,根据历史的趋势图可以提前做好DB的扩容和优化等。
4.2 连接数
连接数=connected_clients,最大连接数使用命令config get maxclients查询,需要监控连接数,例如当连接数达到最大连接数的60%给出预警,可能是业务量的增大造成连接数的增加,能够提前感知DB的状态。
4.3 CPU
CPU使用情况=used_cpu_sys,计算CPU的使用占比情况,如果redis使用率过高给出预警等。
4.4 内存
内存使用情况=used_memory,通过config get maxmemory计算redis的最大内存,例如已使用内存超出最大值的百分之80能够给出提示,redis当内存不够用的时候会采用LRU算法回收内存,这时可能对服务产生抖动,最好能够提前感知,做出预防。
持久化情况的监控
如果因为你的机器或 Redis 本身的问题导致 Redis 崩溃了,那么你唯一的救命稻草可能就是 dump 出来的rdb文件了,所以,对 Redis dump 文件进行监控也是很重要的。可以通过对rdb_last_save_time 进行监控,了解最近一次 dump 数据操作的时间,还可以通过对rdb_changes_since_last_save进行监控来获得如果这时候出现故障,会丢失(即已改变)多少数据。
本文仅供给参考,还有诸多不足,只是站在自己的角度的一些看法。