[转帖]Redis检索性能不足,改造rsbeat解决历史慢日志跟踪

redis,检索,性能,不足,改造,rsbeat,解决,历史,日志,跟踪 · 浏览次数 : 0

小编点评

**Redis Slowlog 转储至 Elasticsearch的设计实现** **一、Redis slowlog 简介** * slowlog 是一个内存中一个先出队列结构,用于存储慢查询记录。 * 慢日志较多的情况下,旧命令就会被刷新出slowlog,从而无法跟踪。 * 为解决历史慢日志跟踪问题,可以将slowlog 转储到 Elasticsearch。 **二、rsbeat改造** * rsbeat 是一个开源数据采集器,可用于从 Redis 中获取数据。 * 由于 Redis slowlog 只能使用 ipPort 进行检索,而 rsbeat 需要支持 multiple redis client,因此进行了一些改造。 * 首先,增加支持 sentinel 和 redis clusterrsbeat 的配置。 * 然后,在 `redisc` 函数中添加一些处理逻辑,例如获取角色信息。 * 最后,使用 Kibana 中检索 1,通过 master name 或 redis cluster 的名称进行检索。 **三、配置修改** * Slowlog-max-len 可配置 slowlog 的最大长度,默认值为 128。 * 可以根据需要调整 SlowerLen 属性的值。 **四、其他** * 为了使用 Redis sentinel 和 cluster,需要设置 redis 实例列表。 * 可以使用 master name 或角色来检索 redis 实例。 * 使用 Kibana 中检索 1 可以查看慢查询记录,使用 master name 或 redis cluster 的名称可以查看所有实例的信息。

正文

https://www.sohu.com/a/313061840_411876

 

作者介绍

刘宇,甜橙金融创新中心基础技术架构师,拥有9年IT从业经验、9年数据库开发运维经验、4次大型营销活动经验。目前关注容器、分布式数据库技术等基础技术。

在线上排查redis性能问题时,从redis中找进行优化是一种常规手段。

redis slowlog被设计成内存中一个先进先出的队列结构,在慢日志较多的情况下,旧命令就会被刷新出slowlog,从而无法跟踪。

为了解决历史慢日志跟踪问题,需要将redis slowlog转储,本文介绍使用改造后的rsbeat将slowlog转储到Elasticsearch,进行分析的设计实现。

一、Redis slowlog简介

slowlog核心配置参数及命令

  • slowlog-log-slower-than:slowlog的阈值,只有query执行时间大于slowlog-log-slower-than的记录慢查询,设置的单位是微秒,默认是10000微秒,也就是10ms。
  • slowlog-max-len:表示慢查询最大的条数,默认值为128。当slowlog超过设定的最大值后,会将最早的slowlog删除。
  • Slowlog get N:用来获取指定的条数可以使用SLOWLOG GET N命令。

rsbeat简介

rsbeat来源于官方的Beats平台,Beats集合了多种单一用途数据采集器。它们从成百上千或成千上万台机器和系统向Logstash或Elasticsearch发送数据。

地址:

https://www.elastic.co/guide/en/beats/libbeat/current/community-beats.html

本次用到Elasticsearch、kibana和rsbeat三款产品。Elasticsearch用来存储解析后的redis slowlog,kibana用于图形化分析,rsbeat用于收集redis slowlog。

rsbeat的收集原理如下:

二、rsbeat改造

因为社区的rsbeat只支持ipPort的方式进行检索。不支持redis sentinel还有redis cluster,为了满足我们的需要,这里对rsbeat进行了部分改造。改造点如下:

1、增加支持sentinel及redis cluster

rsbeat的关于原始配置如下:

其中redis参数配置为ipPort形式的redis实例list,我们这个改造成ipPortName的形式:

对于redis sentinel这里的myredis使用注册到sentinel里的master name来进行检索。

对于redis cluster这里的myredis可使用自定义的集群名称,或者是cmdb中的集群名称来进行检索。一般redis cluster节点都比较多,这样可以避免手工需要登陆多个节点来获取慢查询,从而提高效率。

改造rsbeat.go的代码如下所示,增加一个ipPortName字符串的处理函数:

在poolList这个map结构中处理:

2、记录redis实例的角色信息

前面使用到了master name检索,又想对redis的角色进行筛选,需要记录角色信息。则在rebeat中slowlog get、slowlog reset后面增加role命令来获取角色信息。

在func (bt *rsbeat) redisc(beatname string, init bool, c redis.Conn, ipPort string){...}函数中修改

以及beats的event中:

然后在修改poolInit函数,增加slowerLen参数:

3、Slowlog-max-len可配置

修改Slowlog-max-len可配置在config.go 文件中,Config结构中增加SlowerLen属性,以及默认值:

三、使用Kibana中检索

1、通过master name或者是redis cluster的name进行检索:

2、使用master name以及角色检索:

在Add a filter中添加role的过滤:

然后检索master name:

3、在DASHBOARD中检索:

四、总结

Elastic Stack有着强大的开源社区支持。通过简单的改造和折腾,即可扩展rsbeat功能,使其更满足redis sentinel、redis cluster等更灵活的查询检索需要。本文通过对改造内容进行说明,希望能给大家提供帮助及思路。返回搜狐,查看更多

与[转帖]Redis检索性能不足,改造rsbeat解决历史慢日志跟踪 相似的内容:

[转帖]Redis检索性能不足,改造rsbeat解决历史慢日志跟踪

https://www.sohu.com/a/313061840_411876 作者介绍 刘宇,甜橙金融创新中心基础技术架构师,拥有9年IT从业经验、9年数据库开发运维经验、4次大型营销活动经验。目前关注容器、分布式数据库技术等基础技术。 在线上排查redis性能问题时,从redis中找进行优化是一

[转帖]Redis故障检查:识别慢查询操作

https://weibo.com/ttarticle/p/show?id=2309404650615585505652 使用SLOWLOG命令查看Redis中的慢查询操作。 ​​前几篇日志总结了下对Redis部署时的一些配置,Redis启动后,面对各种请求,数据持久化到硬盘,很可能会出现内存不足等

[转帖]Redis 运维实战 第08期:监控

https://cloud.tencent.com/developer/article/1986832 Redis 在很多互联网公司都充当着非常核心的角色,因此,监控 Redis 以保证其稳定显得格外重要。这节内容就来聊聊 Redis 的一些常见监控项。 1 连接检测 连接失败检测:当监控组件无法连

[转帖]调整Redis定期任务的执行频率

https://help.aliyun.com/document_detail/142171.html 通过修改hz参数的值,您可以调整Redis执行定期任务的频率,从而改变Redis清除过期key、清理超时连接的效率。 Redis定期任务与hz参数的关系 为了定期检测资源和服务状态并根据预定策略执

[转帖]Redis 7 参数 修改 说明

2022-06-16 14:491800原创Redis 本文链接:https://www.cndba.cn/dave/article/108066 在之前的博客我们介绍了Redis 7 的安装和配置,如下: Linux 7.8 平台 Redis 7 安装并配置开机自启动 操作手册https://ww

[转帖]Redis 7.0 三节点哨兵(Sentinel)高可用 环境搭建手册

2022-06-17 16:253480原创Redis 本文链接:https://www.cndba.cn/dave/article/108088 1 哨兵高可用架构说明 Redis 最早的高可用方案是主从复制,但这种方案存在一个问题,就是当主库宕机后,从库不会自动切成主库,需要人工干预。 所有在主

[转帖]Redis 备份与恢复(RDB/AOF) 说明

2022-06-16 20:364580原创Redis 本文链接:https://www.cndba.cn/dave/article/108068 1 RDB 方式 1.1 RDB 备份恢复说明 Redis 的备份恢复有两种方法:RDB和AOF。 其中RDB 文件是一个经过压缩的二进制文件,有两个R

[转帖]Redis 性能优化的 13 条军规!史上最全

https://zhuanlan.zhihu.com/p/118532234 Redis性能优化实战方案 Redis 是基于单线程模型实现的,也就是 Redis 是使用一个线程来处理所有的客户端请求的,尽管 Redis 使用了非阻塞式 IO,并且对各种命令都做了优化(大部分命令操作时间复杂度都是 O

[转帖]Redis性能调优万字总结,面试必问!

https://zhuanlan.zhihu.com/p/541745804 于哥你好,最近面试挺多的,尤其是在问到java面试题,Redis被问的特别多,比如 Redis的内存模型? Redis的底层数据结构是怎么的? Redis的多线程模型 Redis的集群原理 Redis的雪崩,击穿,穿透怎么

[转帖]Redis连接未释放,造成TCP连接数过多

https://segmentfault.com/a/1190000022704886 早上看到服务器告警通知,TCP连接数比较高,达到5000多,我设置的阈值是5000,正常TCP连接不会这么高,这样的一个阈值我可以提前知道有问题早点解决,不至于后面引起一系列问题,甚至拖垮服务器。 排查 登陆服务