开发者社区> 阿里云文档> 正文

【最佳实践】通过Elasticsearch和rsbeat实时分析Redis slowlog

简介: 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)下。

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

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

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

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

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

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

准备工作

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

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

  1. 创建Redis实例。

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

  1. 创建ECS实例。

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

  1. 配置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-len | slowlog中可以记录的最大慢查询命令的条数。当slowlog中的记录数超过最大值后,Redis会将最早的slowlog删除。 | 本文将该参数值设置为100。表示在slowlog中记录最近100条慢查询命令。 |

步骤二:安装并配置rsbeat

  1. 连接ECS实例。

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

  1. 安装rsbeat。

本文使用5.3.2版本。

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

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

      cd rsbeat-master
      vim rsbeat.yml

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

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

  rebeat配置   

  |     参数     |                                                                                                                说明                                                                                                                |
  |------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
  | period     | 每隔多久将slowlog输出到Elasticsearch。                                                                                                                                                                                                    |
  | redis      | Redis实例的连接地址,获取方式请参见[查看连接地址](https://help.aliyun.com/document_detail/107717.html?spm=a2c4g.11186623.2.33.3b4c96e9lemsfi#concept-apt-fkl-5gb)。 **注意** 由于配置文件中没有定义Redis实例的密码,因此在获取连接地址后,您还需要开启免密访问,才能确保rsbeat能够访问Redis实例,开启方法请参见[开启免密访问](https://help.aliyun.com/document_detail/85168.html?spm=a2c4g.11186623.2.34.3b4c96e9lemsfi#concept-ttq-dst-j2b)。 |
  | slowerThan | 定义将`config set slowlog-log-slower-than`命令发送到Redis服务器的时间。单位为微秒。                                                                                                                                              |
  output.elasticsearch配置

  |         参数         |                                                        说明                                                        |
  |--------------------|------------------------------------------------------------------------------------------------------------------|
  | hosts              | 阿里云Elasticsearch实例的连接地址,可在实例的基本信息页面获取,详情请参见[查看实例的基本信息](https://help.aliyun.com/document_detail/67804.html?spm=a2c4g.11186623.2.35.3b4c96e9lemsfi#task-2449896)。            |
  | username           | 阿里云Elasticsearch实例的访问用户名,默认为elastic。                                                                             |
  | password           | 对应用户的密码。elastic用户的密码在创建实例时设定,如果忘记可重置,重置密码的注意事项和操作步骤请参见[重置实例访问密码](https://help.aliyun.com/document_detail/159883.html?spm=a2c4g.11186623.2.36.3b4c96e9lemsfi#task-2458093)。 |
  | template.overwrite | 是否覆盖已存在的同名模板,默认为true。                                                                                            |
  1. 启动rsbeat服务。

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

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

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

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

  1. 创建索引模式。

    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}](https://ucc.alicdn.com/images/user-upload-01/20200810120441327.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ2Mzk2NTYz,size_16,color_FFFFFF,t_70)

    1. Time Filter field name 中,选择时间过滤器字段名(本文选择 @timestamp )。
    2. 单击 Create index pattern
  2. 查看slowlog的详细信息。

    1. 在左侧导航栏,单击 Discover
    2. Discover 页面左侧,选择目标索引模式rsbeat-*。
    3. 在页面右上角,选择一段时间,查看该时间段内的slowlog信息。

    ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-23WUpcRG-1597031007646)(../images/p132012.png)] {#substep-zhe-81c-3wu}
    {#substep-zhe-81c-3wu}](https://ucc.alicdn.com/images/user-upload-01/20200810120529291.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ2Mzk2NTYz,size_16,color_FFFFFF,t_70)

  3. 统计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}](https://ucc.alicdn.com/images/user-upload-01/20200810120611317.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ2Mzk2NTYz,size_16,color_FFFFFF,t_70)

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

    ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ViBUg24X-1597031007673)(../images/p132051.png)] {#substep-5o7-tza-7qw}
    {#substep-5o7-tza-7qw}](https://ucc.alicdn.com/images/user-upload-01/20200810120732837.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ2Mzk2NTYz,size_16,color_FFFFFF,t_70)

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

    ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FrVP5JiM-1597031007680)(../images/p132049.png)] {#substep-65j-4ex-ri9}
    {#substep-65j-4ex-ri9}](https://ucc.alicdn.com/images/user-upload-01/20200810120721181.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ2Mzk2NTYz,size_16,color_FFFFFF,t_70)

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

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

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【日志审计】极易上手搭建自己日志采集服务器分析日志(winlogbeat+Elasticsearch+Kibana)
【日志审计】极易上手搭建自己日志采集服务器分析日志(winlogbeat+Elasticsearch+Kibana)
113 0
Elasticsearch无索引查询分析介绍
众所周知,Elasticsearch提供的高效而丰富的查询分析能力,是基于Lucene提供的字段存储、倒排索引以及doc values等特性。通过倒排索引,可以快速过滤出符合查询条件的文档集合;结合doc values,可以高效地获取文档特定列的值信息,以便进行排序以及各种聚合操作;而字段存储则允许获取文档的原始内容。不难看出,字段存储、倒排索引以及doc values之间,是存在一定数据冗余的(
142 0
【Elasticsearch 技术分享】—— 十张图带大家看懂 ES 原理 !明白为什么说:ES 是准实时的!
说到 Elasticsearch ,其中最明显的一个特点就是 near real-time 准实时 —— 当文档存储在Elasticsearch中时,将在1秒内以几乎实时的方式对其进行索引和完全搜索。那为什么说 ES 是准实时的呢?
381 0
部署kibana分析系统并连接elasticsearch集群展现索引数据(八)
部署kibana分析系统并连接es展现索引数据 1.kibana分析系统简介 Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级的数据分析与可视化的目的。
484 0
【最佳实践】阿里云Elasticsearch应用性能监控分析(APM)
本文介绍了阿里云Elasticseasrch APM服务概念架构及功能,以及如何快速接入并使用,通过阿里云托管的Elasticsearch 应用性能监控(APM)服务,您可以结合阿里云Elasticsearch实现系统可观测性能力搭建。
985 0
实战 | canal 实现Mysql到Elasticsearch实时增量同步
关系型数据库Mysql/Oracle增量同步Elasticsearch是持续关注的问题,也是社区、QQ群等讨论最多的问题之一。 问题包含但不限于: 1、Mysql如何同步到Elasticsearch? 2、Logstash、kafka_connector、canal选型有什么不同,如何取舍? 3、能实现同步增删改查吗? … 本文给出答案。
172 0
CDN 流媒体服务实时分析 Elasticsearch 实践—Elastic Stack 实战手册
发挥 Elastic Stack 在日志和实时数据分析计算领域的一些优势,对流媒体服务这样规模较大、实时性要求偏高,且分析、业务探索流程要求灵活的业务是一个比较百搭的选择。
391 0
Elasticsearch生态&技术峰会 | Elasticsearch基于Pipeline窗口函数实现实时聚合计算
开源最大的特征就是开放性,云生态则让开源技术更具开放性与创造性,Elastic 与阿里云的合作正是开源与云生态共生共荣的典范。值此合作三周年之际,我们邀请业界资深人士相聚云端,共话云上Elasticsearch生态与技术的未来。
847 0
Elasticsearch生态&技术峰会 | 基于流式计算平台搭建实时分析
开源最大的特征就是开放性,云生态则让开源技术更具开放性与创造性,Elastic 与阿里云的合作正是开源与云生态共生共荣的典范。值此合作三周年之际,我们邀请业界资深人士相聚云端,共话云上Elasticsearch生态与技术的未来。
875 0
一键实时/离线同步至Elasticsearch,数据集成再添新功能!
企业的实时数据除了存储在大数据引擎中,还有很多非结构化的日志数据,通过阿里云的Elasticsearch,用全托管的方式提供低成本的冷热存储方案,轻松助力企业搭建统一的云上全观测运维监控平台,实现海量数据的实时监控分析,提高自动化运维管理效率。DataWorks数据集成提供了 “MySQL一键实时同步至Elasticsearch” 的解决方案,可以将MySQL中的数据库,通过一次性的简单配置,全增量一体化同步到Elasticsearch,达到数据实时落入ElasticSearch,实时可以用于分析的效果。也可以将MySQL数据库离线全量或者增量搬迁到Elasticsearch中
3526 0
+关注
阿里云文档
阿里云文档团队
文章
问答
来源圈子
更多
文章排行榜
最热
最新
相关电子书
更多
《云原生Elasticsearch增强版助力10倍日志写入性能提升》
立即下载
阿里云Elasticsearch体系架构与特性解析
立即下载
《Elasticsearch中国开发者调查报告》
立即下载