美文网首页
如何监控Redis

如何监控Redis

作者: 吳下阿蒙 | 来源:发表于2018-08-26 15:38 被阅读0次

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

    INFO

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

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

    • instantaneous_ops_per_sec:实时的每秒操作数
    • used_memory:Redis当前使用的内存大小;设置了最大内存限制时尤其需要关注
    • used_memory_rss:Redis进程实际占用的内存大小
    • used_cpu_sys/used_cpu_user:CPU用量
    • instantaneous_input_kbps/instantaneous_output_kbps:实时I/O流量

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

    SLOWLOG

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

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

    • 这条记录的id
    • 开始执行的时间戳
    • 执行了多少微秒
    • 这个命令及它的参数

    我们可以通过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即可。

    相关文章

      网友评论

          本文标题:如何监控Redis

          本文链接:https://www.haomeiwen.com/subject/mbeoiftx.html