如何监控Redis

2018-08-26  本文已影响0人  吳下阿蒙

监控Redis其实是一件很容易的事情,因为它本身就记录了相当丰富的统计数据。我们可以通过INFO命令获取这些数据。

INFO

INFO命令提供了详尽的运行信息和统计数据,可分为服务器信息、内存使用状况、CPU使用状况等。这些在官方文档中有详细的说明,本文不再赘述。

信息虽全,但并不是所有都是需要时时监控的。因此,用好INFO的重点在于该选取哪些指标。一般来说,我们会重点关注以下几个指标:


除了INFO外,我们还可以借助SLOWLOGMONITOR这两个命令更加完善我们的监控系统。

SLOWLOG

慢查询是影响应用性能和数据库吐吞的一个重要因素。特別是对于Redis这样的单线程程序,一条命令执行时间过长意味着在它执行过程中发生的任何请求都会被阻塞。

Redis中集成了一个慢查询系统,能够记录执行时间超过一定阈值的命令。它记录的信息包括:

我们可以通过SLOWLOG GET来查看这些记录。我遇到过的一个极端的记录是一个请求超过十万个key的MGET操作,花了超过50ms……

MONITOR

MONITOR命令可以持续不断地返回Redis收到的每一条命令。通过它,我们可以方便地了解到应用与Redis的所有交互,可以细致地分析数据流。

需要注意的是,MONITOR会给Redis带来不小的开销。根据Redis官方的benchmark,仅有一个客户端执行此命令时,服务端的性能就下降了超过50%

我一般会在用终端连接Redis时就直接执行这个命令开始monitor:

redis-cli -h hostname -p port MONITOR

Redis本身并没有提供dashboard,但通过以上几个命令DIY一个dashboard并不是一件难事。基本思路是:

  1. 定时查询INFOSLOWLOG,解析出关注的指标
  2. 直接将指标数据发往前端,或存储在数据库中(可以是Redis本身)
  3. 开发前端以适当的图表展示指标数据

一些开源Redis监控工具,如redis-statRedmon等便是这样实现的。

如果有在使用Graphite这类工具,那监控Redis会更简单,也更容易集成进现有的监控和告警系统中。只需要将定时查询的指标数据发往Graphite即可。

上一篇 下一篇

猜你喜欢

热点阅读