当前位置:   article > 正文

Redis~慢查询日志和监视器_redis 慢日志监控采集

redis 慢日志监控采集

慢查询日志

  • Redis的慢查询日志功能用于记录执行时间超过给定时长的命令请求,用户可以通过这个功能产生的日志来监视和优化查询速度

慢查询日志选项

  • slowlog-log-slower-than选项:指定执行时间超过多少微秒(1秒等于1000 000微秒)的命令请求会被记录到日志上

举个例子,如果这个选项的值为100,那么执行时间超过100微秒的命令就会被记录到慢 查询日志
如果这个选项的值为500,那么执行时间超过500微秒的命令就会被记录到慢查询日志

  • slowlog-max-len选项:指定服务器最多保存多少条慢查询日志

慢查询日志的数量溢出

  • 服务器使用先进先出的方式保存多条慢查询日志,当服务器存储的慢查询日志数量等于slowlog-max-len选项的值时,服务器在添加一条新的慢查询日志之前,会先将最旧的一条慢查询日志删除

慢查询日志的格式

  • 以下面的图片为例:
    1)日志的唯一标识符
    2)命令执行时的UNIX时间戳
    3)命令执行的时常(单位微秒)
    4)命令以及命令参数
    5)命令执行的客户端IP与端口
    在这里插入图片描述

SLOWLOG命令

SLOWLOG GET:用来查看服务器所保存的慢查询日志
SLOWLOG RESET:用于清空所有慢查询日志
SLOWLOG LEN:查询慢查询日志的数量

慢查询日志命令的实现

  • 底层分装着一个slowlog链表, 保存了服务器中的所有慢查询日志,链表中的每个节点都保存了一个 slowlogEntry结构,每个slowlogEntry结构代表一条慢查询日志
typedef struct slowlogEntry {
    //唯一标识符
    long long id;
 
    //命令执行时的时间,格式为UNIX 时间戳
    time_t time;
 
    //执行命令消耗的时间,以微秒为单位
    long long duration;
 
    //命令与命令参数
    robj **argv;
 
    //命令与命令参数的数量
    int argc;
} slowlogEntry;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

在这里插入图片描述

监视器介绍

  • 通过执行MONITOR命令,客户端可以将自己变为一个监视器,实时地接收并打印出服务器当前处理的命令请求的相关信息
    在这里插入图片描述
  • 当一个客户端变为监视器之后, 每当其他一个客户端向服务器发送一条命令请求时,服务器除了会处理这条命令请求之外, 还会将关于这条命令请求的信息发送给所有监视器,如下图所示:
    在这里插入图片描述

监视器实现原理

  • 发送MONITOR命令可以让一个普通客户端变为一个监视器, MONITOR命令的实现原理可以用 以下伪代码来实现:
def MONITOR():
    # 打开客户端的监视器标志
    client.flags |= REDIS_MONITOR
    # 将客户端添加到服务器状态的monitors 链表的末尾
    server.monitors.append(client)
    # 向客户端返回OK
    send_reply("OK")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 如果客户端c10086向服务器发送MONITOR命令,那么这个客户端的REDIS_MONITOR标志会被打开,并且这个客户端本身会被添加到monitors链表的表尾
    在这里插入图片描述
  • 服务器在每次处理命令请求之前,都会调用replicationFeedMonitors函数,由这个函数将被处理的命令请求的相关信息遍历monitors链表然后发送给各个监视器
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/501010
推荐阅读
相关标签
  

闽ICP备14008679号