通过Elasticsearch和rsbeat实时分析Redis slowlog

2023-05-16

Redis是目前流行的高性能key-value数据库,但如果使用不当,很容易出现慢查询。慢查询过多或者一个时间较长(例如20s)的慢查询会导致操作队列(Redis是单进程)堵塞,可能会导致服务不可用。因此您需要实时收集并分析Redis slowlog,在出现问题时快速定位解决。本文介绍如何通过Elasticsearch和rsbeat实时分析Redis slowlog。

背景信息

通过Elasticsearch和rsbeat实时分析Redis slowlog的原理为:使用rsbeat将Redis slowlog采集到Elasticsearch中,然后在Kibana中进行图形化分析。 相关概念说明如下:

  • Elasticsearch:是一个基于Lucene的实时分布式的搜索与分析引擎,是遵从Apache开源条款的一款开源产品,是当前主流的企业级搜索引擎。它提供了一个分布式服务,可以使您快速的近乎于准实时的存储、查询和分析超大数据集,通常被用来作为构建复杂查询特性和需求强大应用的基础引擎或技术。 阿里云Elasticsearch兼容开源Elasticsearch的功能,以及Security、Machine Learning、Graph、APM等商业功能,致力于数据分析、数据搜索等场景服务。支持5.5.3、6.3.2、6.7.0、6.8.0和7.4.0等版本,并提供了商业插件X-Pack服务。在开源Elasticsearch的基础上提供企业级权限管控、安全监控告警、自动报表生成等功能。本文使用阿里云Elasticsearch进行演示,单击即可免费试用。

  • rsbeat:用来收集和分析Redis慢日志的采集器,详情请参见rsbeat官方文档。

  • Redis:是一个开源的、基于内存的数据结构存储器,可以用作数据库、缓存和消息中间件,详情请参见Redis官方说明。

    云数据库Redis版(ApsaraDB for Redis)是兼容开源Redis协议标准、提供内存加硬盘的混合存储方式的数据库服务,基于高可靠双机热备架构及可平滑扩展的集群架构,满足高读写性能场景及弹性变配的业务需求。本文使用云数据库Redis版进行演示,更多详情请参见什么是云数据库Redis版。

操作流程

  1. 准备工作

    创建阿里云Elasticsearch实例、云数据库Redis版实例(以下简称Redis实例)和ECS实例,三者在同一专有网络VPC(Virtual Private Cloud)下。

  2. 步骤一:配置Redis慢查询参数

    根据需求设置Redis slowlog生成的条件,以及可记录的slowlog的最大条数。

  3. 步骤二:安装并配置rsbeat

    在ECS中安装rsbeat,并在其配置文件中指定Redis和Elasticsearch服务。

  4. 步骤三:通过Kibana图形化分析slowlog

    通过Kibana查看日志详细信息,并根据需求进行统计分析。

准备工作

  1. 创建阿里云Elasticsearch实例,并开启自动创建索引功能。

    具体操作步骤请参见创建阿里云Elasticsearch实例和开启自动创建索引。本文使用的实例版本为通用商业版6.7。

  2. 创建Redis实例。

    具体操作步骤请参见步骤1:创建实例。本文使用的实例版本为Redis 5.0社区版,并且与阿里云Elasticsearch实例在同一VPC下,便于内网访问。

  3. 创建ECS实例。

    具体操作步骤请参见使用向导创建实例。本文使用的实例镜像为CentOS 7.6 64位,并且与Redis和Elasticsearch实例在同一VPC下。

  4. 配置Redis实例的访问白名单。

    将ECS实例的内网IP地址添加到Redis实例的白名单中,具体操作步骤请参见设置IP白名单。

步骤一:配置Redis慢查询参数

  1. 登录Redis管理控制台。

  2. 在顶部菜单栏处,选择地域。

  3. 实例列表 页,单击目标实例ID或者其右侧 操作 栏的 管理

  4. 在左侧导航栏,单击 参数设置

  5. 在参数设置列表中,找到 slowlog-log-slower-thanslowlog-max-len 参数,将其修改为您期望的值。

    参数说明示例
    slowlog-log-slower-than当命令执行时间(不包括排队时间)超过该参数值时,该命令会被定义为慢查询,并记录到slowlog中。单位为微秒,默认为10000,即10毫秒。 注意 负数表示关闭慢查询日志功能,0表示记录所有命令操作。本文将该参数值设置为20000。表示在slowlog中记录执行时长超过20ms的命令。
    slowlog-max-lenslowlog中可以记录的最大慢查询命令的条数。当slowlog中的记录数超过最大值后,Redis会将最早的slowlog删除。本文将该参数值设置为100。表示在slowlog中记录最近100条慢查询命令。

步骤二:安装并配置rsbeat

  1. 连接ECS实例。

    具体操作步骤请参见连接实例。

  2. 安装rsbeat。

    本文使用5.3.2版本。

    wget https://github.com/Yourdream/rsbeat/archive/master.zip
    unzip master.zip
    
  3. 修改rsbeat配置。

    1. 执行以下命令打开rsbeat.yml文件。

      cd rsbeat-master
      vim rsbeat.yml
      
    2. 按照以下说明修改rsbeat和output.elasticsearch参数配置,并保存。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BPE6XYej-1597031007598)(../images/p131929.png)]

      rebeat配置

      参数说明
      period每隔多久将slowlog输出到Elasticsearch。
      redisRedis实例的连接地址,获取方式请参见查看连接地址。 注意 由于配置文件中没有定义Redis实例的密码,因此在获取连接地址后,您还需要开启免密访问,才能确保rsbeat能够访问Redis实例,开启方法请参见开启免密访问。
      slowerThan定义将config set slowlog-log-slower-than命令发送到Redis服务器的时间。单位为微秒。

      output.elasticsearch配置

      参数说明
      hosts阿里云Elasticsearch实例的连接地址,可在实例的基本信息页面获取,详情请参见查看实例的基本信息。
      username阿里云Elasticsearch实例的访问用户名,默认为elastic。
      password对应用户的密码。elastic用户的密码在创建实例时设定,如果忘记可重置,重置密码的注意事项和操作步骤请参见重置实例访问密码。
      template.overwrite是否覆盖已存在的同名模板,默认为true。
  4. 启动rsbeat服务。

    ./rsbeat.linux.amd64 -c rsbeat.yml -e -d "*"
    

步骤三:通过Kibana图形化分析slowlog

  1. 登录目标阿里云Elasticsearch实例的Kibana控制台。

    具体操作步骤请参见登录Kibana控制台。

  2. 创建索引模式。

    1. 在左侧导航栏,单击 Management

    2. Kibana 区域,单击 Index Patterns

    3. 单击 Create index pattern

    4. 输入 Index pattern 名称,单击 Next step

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Aknn8zZ5-1597031007638)(../images/p132004.png)] {#substep-itn-drq-4lu}{#substep-itn-drq-4lu}

    5. Time Filter field name 中,选择时间过滤器字段名(本文选择 @timestamp )。

    6. 单击 Create index pattern

  3. 查看slowlog的详细信息。

    1. 在左侧导航栏,单击 Discover

    2. Discover 页面左侧,选择目标索引模式rsbeat-*。

    3. 在页面右上角,选择一段时间,查看该时间段内的slowlog信息。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-23WUpcRG-1597031007646)(../images/p132012.png)] {#substep-zhe-81c-3wu}{#substep-zhe-81c-3wu}

  4. 统计slowlog数量最多的前10个key,并以降序排列展示。

    1. 在左侧导航栏,单击 Visualize

    2. Visualize 页面,单击**+**图标。

    3. New Visualization 对话框中,单击 Pie

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ec0YpMUX-1597031007669)(../images/p132052.png)] {#substep-wto-vkb-ldr}{#substep-wto-vkb-ldr}

    4. 选择索引模式rsbeat-*。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ViBUg24X-1597031007673)(../images/p132051.png)] {#substep-5o7-tza-7qw}{#substep-5o7-tza-7qw}

    5. 按照下图配置Metrics和Buckets。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FrVP5JiM-1597031007680)(../images/p132049.png)] {#substep-65j-4ex-ri9}{#substep-65j-4ex-ri9}

    6. 单击运行图标,查看结果。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iCqCUaYI-1597031007687)(../images/p132048.png)]

      说明 更多Kibana的使用方法,请参见Kibana官方文档。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过Elasticsearch和rsbeat实时分析Redis slowlog 的相关文章

  • Java输入数判断是否为回文数

    最近看黑马的Java 顺带做了些课后练习 xff0c 感觉代码还是得自己多打打 xff0c 记录比较简陋 import java util Scanner public class HuiWeng public static void ma
  • copilot申请使用流程(自用)

    整体流程 1 申请github学生包 申请网址 xff1a https education github com 2 copilot学生申请 申请网址 xff1a https copilot github com 3 IDE下载插件配置 下
  • 在VMware Workstation以及云服务器上安装华为FusionCompute

    文章目录 前言使用镜像安装CNAVMware Workstation配置虚拟机步骤一步骤二步骤三步骤四步骤五步骤六步骤七步骤八步骤九步骤十步骤十一步骤十二步骤十二 云服务器远程登录CNA安装步骤一 xff1a 开始安装步骤二 xff1a 配
  • 华为FusionCompute:虚拟机创建与配置

    文章目录 前言创建裸虚拟机删除虚拟机导入虚拟机虚拟机规格调整CPU热添加内存热添加磁盘扩容添加网卡查看 虚拟机配置对象权限 前言 如何在CNA中创建虚拟机 xff0c 创建虚拟机的方法有多种 创建的好的虚拟机我们可以进行虚拟机规格的调整 x
  • Postman接口之token获取及数据关联和断言

    1 环境变量的创建及使用 2 变量名设置 xff0c 点击上一步的环境变量 xff0c 弹出下面的页面 xff1a 3 设置完后记得选择对应的环境变量 4 查看接口运行后参数是否存入到环境变量中 xff1a 好了基础设置如上 xff0c 下
  • OSPF(六)OSPF特殊区域之Stub和Totally Stub区域详解及配置

    文章目录 前言Stub区域和Totally Stub区域传输区域和末端网络Stub Area配置命令 Totally Stub Area配置 整体实验配置过程及命令步骤一 xff1a 搭建拓扑步骤二 xff1a 配置路由器接口IP地址步骤三
  • OSPF(二)DR与BDR选举

    文章目录 MA网络中的问题DR amp DBRDR与BDR的选举 MA网络中的问题 在运行OSPF的MA网络包括广播型网络和NBMA网络 xff0c 都会存在两个问题 在一个有n个路由器的网络 xff0c 会形成 n n 1 2个邻接关系
  • 防火墙详解(三)华为防火墙基础安全策略配置(命令行配置)

    实验要求 根据实验要求配置防火墙 xff1a 合理部署防火墙安全策略以及安全区域实现内网用户可以访问外网用户 xff0c 反之不能访问内网用户和外网用户均可以访问公司服务器 实验配置 步骤一 xff1a 配置各个终端 防火墙端口IP地址 终
  • 常见信息安全威胁与经典案例

    文章目录 信息安全威胁现状网络战争的开端 xff1a 震网 病毒信息安全攻击事件的演变安全威胁分类 网络安全威胁案例美国Dyn DNS服务遭受DDoS攻击Mirai病毒发动攻击过程 xff08 DDos攻击过程 xff09 扫描获取控制权限
  • 华为FusionCompute详解(一)FusionSphere虚拟化套件介绍

    文章目录 虚拟化FusionSphere虚拟化套件特点管理简单性能至优 FusionSphere虚拟化套件组成FusionSphere服务器虚拟化架构FusionSphere架构特点与用途FusionSphere应用场景单虚拟化场景多虚拟化
  • 华为FusionCompute详解(二)FusionCompute总体介绍以及规划部署

    文章目录 FusionCompute产品定位FusionCompute产品架构FusionCompute软件逻辑组成 FusionCompute产品功能虚拟化计算虚拟化存储虚拟化网络 FusionCompute带来的价值FusionComp
  • Docker基础篇(1)

    文章目录 Docker简介是什么概念容器VS虚拟机能干什么技术职级变化一次构建 xff08 镜像 xff09 xff0c 到处运行 xff1a 去哪下 Docker简介 是什么 为什么会有Docker出现 xff1a 解决重复的环境部署开销
  • openStack:学习openStack的前提知识(1)虚拟化以及KVM简介

    文章目录 KVM简介KVM核心组件Libvirt组件 KVM简介 KVM 目前X86平台上最热门 xff0c 运用最多的虚拟化解决方案 xff0c openStack对KVM支持也是最好的 所以后续使用KVM作为Hypervisor xff
  • 解决WSL2/ubuntu安装软件报错 E: Invalid operation insatll 问题

    文章目录 解决WSL2安装软件报错E Invalid operation insatll 问题方法一方法二 解决WSL2安装软件报错E Invalid operation insatll 问题 此问题为系统定位不到软件包 xff0c 无法安
  • github-copilot的使用步骤

    1 首先登录你的github账号 xff0c 点击头像 xff0c 点击设置 2 在设置界面点击Copilot 并点击try Colilot 3 点击绿色按钮继续 4 设置为允许 xff0c 并取消允许使用你的代码来改进这一选项 xff0c
  • Arduino IDE配置esp8266开发环境

    目录 前言arduino IDE安装配置ESP8266开发环境通过开发板管理器安装手动安装开发版管理器备用的网址 参考 前言 之前本科那会疫情在家用esp8266 ESP 01s Relay模块做了一个远程浇花的设备 xff0c 当时使用a
  • 三、Ubuntu 18.04系统调试(命令/换源)

    目录 一 常用命令 二 Ubuntu 18 04换源 2 1便捷方法 2 2命令行方法 xff08 较为复杂 xff0c 但可查看防止后期有些错误是因为源导致的源文件 xff09 一 常用命令 目录操作 pwd 查看当前目录 cd 返回上一
  • 使用VScode远程操作虚拟机(ubuntu)

    1 VSCode安装 2 打开Ubuntu 使用ifconfig 获取系统接口 3 打开remote ssh 4 配置好相关属性 5 开启远程连接输入密码即可连接
  • 学习率(Learing Rate)的作用以及如何调整

    1 什么是学习率 学习率 Learning rate 作为监督学习以及深度学习中重要的超参 xff0c 其决定着目标函数能否收敛到局部最小值以及何时收敛到最小值 合适的学习率能够使目标函数在合适的时间内收敛到局部最小值 这里以梯度下降为例
  • Pytorch 中net.train() 和 net.eval()的作用和如何使用?

    一般在训练模型的代码段加入 xff1a model train 在测试模型时候加入 xff1a model eval 同时发现 xff0c 如果不写这两个程序也可以运行 xff0c 这是因为这两个方法是针对在网络训练和测试时采用不同方式的情

随机推荐

  • Qt 子窗口内嵌到父窗口中

    有时需要把一个子窗口内嵌进入父窗口当中 我们可以这样做 1 新建一个QWidget 或者QDialog的子类 ClassA xff08 父类为ClassB xff09 2 在新建类的构造函数中添加设置窗口属性 setWindowFlags
  • 用Cmake 编译OpenCV常见的错误

    minGW32 make遇到的错误1 xff1a 37 Linking CXX shared library bin libopencv core341 dll CMakeFiles opencv core dir objects a me
  • 卷积 反卷积 上采样 下采样 区别

    1 卷积 就是利用卷积核 步长前进 卷积整个图片 2 反卷积 反卷积的具体操作 原图输入尺寸为 1 xff0c 3 xff0c 3 xff0c 3 对应 batch size channels width height 反卷积tconv 6
  • Go语言操作数据库MySQL

    连接 Go语言中的database sql包提供了保证SQL或类SQL数据库的泛用接口 xff0c 并不提供具体的数据库驱动 使用database sql包时必须注入 xff08 至少 xff09 一个数据库驱动 我们常用的数据库基本上都有
  • 解决Git请求错误问题

    git clone gits github com Cloning into 39 FdogSerialize 39 git 39 remote gits 39 is not a git command See 39 git help 39
  • Reactor 模式

    Reactor 翻译过来的意思是 反应堆 xff0c 可能大家会联想到物理学里的核反应堆 xff0c 实际上并不是的这个意思 这里的反应指的是 对事件反应 xff0c 也就是来了一个事件 xff0c Reactor 就有相对应的反应 响应
  • MATLAB画图调整分辨率

    问题 xff1a 经常需要用MATLAB画图 xff0c 但是保存之后分辨率不高 xff0c 特别是需要放大的情况下 解决 xff1a 对于下面这种画出的图形 选择 文件 61 gt 导出设置 61 gt 渲染 61 gt 分辨率 选择60
  • C语言中常见的逻辑错误

    常见错误一 xff1a 61 和 61 61 混在一起 int main int ret if ret 61 1 return 0 结果 xff1a 变量被错误赋值 xff0c 逻辑判断错误 错误二 xff1a 定义较大的全局变量造成 编译
  • Qt中常见的位置和尺寸

    QPoint类的介绍 QPoint 类封装了我们常用用到的坐标点 x y 常用的 API 如下 构造函数 构造一个坐标原点 即 0 0 QPoint QPoint 参数为 x轴坐标 y轴坐标 QPoint QPoint int xpos i
  • 关于QT线程运用的三种方式

    QThread 类函数 QThread 类常用 API 构造函数 QThread QThread QObject parent 61 Q NULLPTR 判断线程中的任务是不是处理完毕了 bool QThread isFinished co
  • 安装Ubuntu22.04+nvidia驱动+CUDA-11.7+GRPMACS patch PLUMED

    首先是Ubuntu22 4的安装 Ubuntu系统一般直接可以使用RUFUS软件制作U盘启动项 xff0c 再依照顺序安装Ubuntu系统 xff0c 这里不赘述 CUDA 11 7 span class token function su
  • Linux部署Nexus私服

    这篇文章主要介绍了Linux搭建自己Nexus私服的实现方法 xff0c 文中通过示例代码介绍的非常详细 xff0c 对大家的学习或者工作具有一定的参考学习价值 一 Nexus介绍 对maven来说仓库分为两类 xff1a 本地仓库和远程仓
  • 元学习和机器学习的对比

    目录 引言机器学习元学习什么是元学习元学习的流程学习学习函数评价学习函数好坏迭代优化 整体框架 元学习和机器学习的对比定义的区别数据集划分的区别损失函数的区别两者之间的共通之处 总结 引言 本篇博客是李宏毅老师元学习课程的笔记 深度学习大部
  • 如何使用C++实现10个数的冒泡排序

    96 96 冒泡排序是一种计算机科学领域的较简单的排序算法 xff0c 是一种简单的适合初学者学习的算法 上图为冒泡排序简单的图片理解 xff0c 将第一个数依次与后面的数进行比较 将数值大的数沉到底部或将数值小的数浮到顶部 简称 大数沉淀
  • 通过Cerebro访问Elasticsearch

    本文以阿里云Elasticsearch为例 xff0c 介绍通过Cerebro访问Elasticsearch的方法 阿里云Elasticsearch兼容开源Elasticsearch的功能 xff0c 以及Security Machine
  • 手把手教您完成Elasticsearch数据迁移

    您可以通过Logstash reindex和OSS等多种方式在Elasticsearch之间迁移数据 本文以阿里云Elasticsearch xff08 简称ES xff09 为例 xff0c 介绍阿里云Elasticsearch间数据迁移
  • Solr集群数据迁移至Elasticsearch

    Elasticsearch是一款非常强大的搜索引擎 xff0c 可以让你在海量的数据中快速找到想要的内容 例如 xff0c 代码搜索 xff1a 可以帮助您找到相应的代码仓库 xff0c 还可以实现代码级的搜索及高亮显示 xff1b 网上s
  • k8s创建Deployment报错:no matches for kind “Deployment“ in version “extensions/v1beta1“

    报错类型 xff1a root 64 master kubectl create f lzb test yaml error unable to recognize 34 lzb test yaml 34 no matches for ki
  • 3分钟学会使用Elasticsearch跨集群复制功能(CCR)

    当您需要将本地Elasticsearch集群中的索引数据迁移到一个远程集群中 xff0c 或者将一个远程集群中的索引数据迁移到本地集群 xff0c 可通过跨集群复制CCR xff08 Cross Cluster Replication xf
  • 通过Elasticsearch和rsbeat实时分析Redis slowlog

    Redis是目前流行的高性能key value数据库 xff0c 但如果使用不当 xff0c 很容易出现慢查询 慢查询过多或者一个时间较长 xff08 例如20s xff09 的慢查询会导致操作队列 xff08 Redis是单进程 xff0