专栏首页南非骆驼的专栏干货:Elasticsearch 压测工具之 esrally的安装与使用(下)
原创

干货:Elasticsearch 压测工具之 esrally的安装与使用(下)

说明 |

在本主题上节当中,我们讲了esrally工具的部署、安装,那么本节我们来讲一下这个工具的应用、使用技巧。

Esrally版本: esrally 1.4.1

esrally 版本查看

前面我们讲了安装esrally后,我们可以通过 esrally configure命令来查看esrally 的配置信息,我们也可以针对不同的版本进行在线测试:

esrally 配置信息

注意:(值得关注)

使用esrally压测工具需要注意以下注意事项:

1,启动esrally 需要使用普通用户,不能使用ROOT,来启动服务

2,默认的测试数据在AWS上,所以在线测试下载特别慢,我们可以通过这个链接去下载数据,提前准备好

下载数据文件(数据比较大,14G) 链接:https://pan.baidu.com/s/123zgferlhWflOj7qJxFD1w

一、esrally工具如何使用?

1,esrally工具有多种使用方法:

第一种在线基准测试,使用命令 esrally --distribution-version=6.8.2

这个命令的意思是:Esrally可以在没有ES实列的情况下,去基于某一个ES版本,进行性能测试。那么它的工作流程是:esrally会先去elastic官网下载对应的版本存在esrally目录里。下载完ES版本后,再去下载针对ES产品的性能测试数据。数据下载到本地后,再进行性能分析,最后将结果打印出来。

那么以上的命令也等同于 esrally --pipeline=from-distribution --distribution-version=6.8.2,他们的执行流程和效果是一样。

“pipeline”标识esrally的工作流程,就是我的esrally是应该怎么样去工作?规定了它如何执行某个动作。常见的Pipeline有那些?

--pipeline:流水线、流程

from-distribution:默认的,是指esrally在官方打好的包下载下来,解压运行

from-sources-complete:支持从源码本地编译、打包再运行,对于ES开发人员有用 

benchmark-only:自定义集群时需要使用的pipeline,只进行压测而不去管理ES实例,也是最常用的

from-sources-skip-build:与from-sources-complete相互呼应,利用源码方式但是跳过编译、打包

esrally默认执行流程
esrally默认执行流程

那么我们去看一下esrally的配置文件及目录:

esrally配置目录

最重要的两个4个文件:

1,rally.ini配置文件

2,benchmarks esrally最重要的目录

3,logs ---日志目录

4,loggin.json

重点讲一下rally.ini和benchmarks目录

看一下:rally.ini文件

esrally配置文件

再接着看一下benchmarks目录下:

esraly目录

讲解一下:

data":表示进行es测试时用的数据,默认是没有的,需要去下载,下载就到此文件夹

distributions: ES远程下载的目录

races: 目前有拿些压测试验

teams:要去进行的项目,进行压测比赛的考核项,系统已经准备

tracks:表示赛道,定义性能压测的规则、策略。这个非常重要

第二种方法离线测试 既然下载特别慢,那么我们就手动下载测试数据,然后将测试数据上传到DATA目录,然后改一下esrally配置文件路径,使用: esrally --offline --pipeline=from-distribution --distribution-version=6.8.2

--offline 表示离线测试,然后通过配置文件,我们就可以看到性能比分。等待结果即可

离线测试

第三种方法:针对某一特定的ES集群或者说外部集群进行压力测试,怎么操作?使用如下命令:

esrally --target-hosts=127.0.0.1:9200 --pipeline=benchmark-only

针对外部集群进行测试

如果是白金版加密功能的话,使用如下的命令。

esrally --target-hosts=10.5.5.10:9243,10.5.5.11:9243,10.5.5.12:9243 --pipeline=benchmark-only --client-options="use_ssl:true,verify_certs:true,basic_auth_user:'elastic',basic_auth_password:'changeme'"

压测远端ES集群:

esrally --pipeline=benchmark-only --target-hosts=192.168.1.1:9200,192.168.1.2:9200

那么这种方法的意思是:通过ESrally的压测机制对远端或者本机的集群进行压力测试。

第三种:自定义数据集测试ES集群

自定义的目的:就是根据自身的规则创建赛道、数据,然后对自己的ES集群进行压测,而不是使用官方的压测策略。这个是比较高级别的一种。可以把规则定义在几个文件里。

自定义赛道

那么执行的时候,指定路径即可。如下:

esrally --distribution-version=6.8.2 --track-path=~/.rally/benchmarks/tracks/MyTracks/demo_track2

那么同样,经过,数据的测试,很快就会有压力测试结果。

附上esrally本身自带的数据集:主要用来压力测试的数据。默认测试就是选择geonames数据。

  • geonames、geopoint:都是和地理位置相关的,如果需要测试ES在地理位置处理的性能可以选用 
  • http_logs:是http_server的,如果要测服务器日志、redis日志、apache日志可以选用

说明:esrally 自带的测试数据即为 rally_track 文件夹中的内容,主要包括:

  • Geonames(geonames): for evaluating the performance of structured data.
  • Geopoint(geopoint): for evaluating the performance of geo queries.
  • Percolator(percolator): for evaluating the performance of percolation queries.
  • PMC(pmc): for evaluating the performance of full text search.
  • NYC taxis(nyc_taxis): for evaluating the performance for highly structured data.
  • Nested(nested): for evaluating the performance for nested documents.
  • Logging(logging): for evaluating the performance of (Web) server logs.
  • noaa(noaa): for evaluating the performance of range fields.

可以根据自己的需要下载对应的测试数据,不必下载全部,保证对应文件夹下载完全即可

二、总结

一定要熟悉esrally工具的三种方法,在线测试、离线测试、自定义数据集测试。他们的区别是:

1,在线测试可以不用安装配置es实列。由esrally自动下载、搭建、测试、完成整流程。缺点是:慢

2,离线测试:就是先把数据下载下来,选择esrally官方提供的数据进行实际的压测,数据和压测策略都来自esrally官方。可以针对本机的es集群或者远端的机器进行测试。这种情况下,就需要安装ES集群,进而针对本机ES或者远端ES进行测试。一般情况下,我们都用这个方法测试。

3,自定义测试安装,比较复杂,需要企业根据自身情况进行track、index、JSON数据的指定。进而对特定的ES或者远端的主机进行测试。

4,Esrally的压测结果默认是存放在Loggings文件里,当然也可以指定输出到文本文件、ES下,进行可视化分析。

相关名词

Race:压力测试比作Race,就是比赛的意思

Track:赛道的意思。es在track的标准和策略去执行比赛

cars:去执行的标准。比如各种配置的车去ES上测试。

就是一句话:将esrally压测比作一场比赛,看那辆车在哪个跑道需要花费多少时间或者能否完成任务进行的评估测试。并出报告。

关于,Esrally工具,非常复杂,目前我也是在探讨当中,后期,我将再结合实际演练进行更加完善的操作、以及文档更新。过程很复杂,希望后期有时间再来更新,此处标记一下。Tag.

关于Esrally,推荐学习链接:

官网:

https://esrally.readthedocs.io/en/latest/index.html

https://blog.csdn.net/wuxiao5570/article/details/56291834

https://blog.csdn.net/ypc123ypc/article/details/78712087

https://elasticsearch.cn/article/275

https://blog.csdn.net/BearStarX/article/details/103047725

https://blog.csdn.net/wshl1234567/article/details/86383168

https://blog.csdn.net/u013701217/article/details/89702953

https://blog.51cto.com/eric100/1885477

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ELK Stack系列之基础篇(六) - ES6常用插件的推荐安装(六)

    前面我们讲到,ES是一款高可用、分布式的搜索分析存储引擎。那么这么一款软件本身已经非常强大,唯一的问题是什么呢?就是ES并不具备自身管理的功...

    南非骆驼漫谈ELK Stack
  • ELK Stack系列之基础篇(四) - 如何快速搭建 ES集群、实现Kibana 的正常访问?

    Elasticsearch本文统称“ES”。很多情况下,因为工作或者学习需要用到ES集群,但是自身服务器资源又有限,如何解决此问题呢?这里用1台云服务器,...

    南非骆驼漫谈ELK Stack
  • 腾讯云 Elasticsearch 实战篇(二十二) ES6.8权限使用配置

    在前面的章节中我们讲了开源架构ELK、腾讯云Elasticsearch产品系列。我们也知道了,在构建腾讯云ES集群的时候,我们选择的6.8.2白金版具备...

    南非骆驼漫谈ELK Stack
  • 记住,别入错行

    从年后到现在,土哥已然成了很多在校大学生的“人生导师”。这不,前几天,有个女生给土哥微信留言,说:

    闰土大叔
  • 从插件重构看如何提升测试质量与效率

    几个月前技术侧发起了一轮手机管家小火箭的重构,目的是为了更好地梳理小火箭的代码架构逻辑,方便以后更好地提高开发效率和开发质量。

    腾讯移动品质中心TMQ
  • 踩坑django admin删除记录

    自定义类BaseModelAdmin,继承admin.ModelAdmin 并重写save_model delete_model方法。 更改GoodsType...

    lesM10
  • 记住变量类型的三种方式

    Python作为一门动态语言,其变量的类型可以自由变化。这个特性提高了代码的开发效率,却也增加了阅读代码和维护代码的难度。

    青南
  • 开源API测试工具 Hitchhiker v0.8 - 自动化测试结果统计

    Hitchhiker 是一款开源的支持多人协作的 Restful Api 测试工具,支持自动化测试, 数据对比,压力测试,支持脚本定制请求,可以轻松部署到本地,...

    用户1147588
  • Spring Boot 一个依赖搞定 session 共享,没有比这更简单的方案了!

    有的人可能会觉得题目有点夸张,其实不夸张,题目没有使用任何修辞手法!认真读完本文,你就知道松哥说的是对的了!

    江南一点雨
  • 编程语言中那些有趣的命名

          学习NodeJS的时候,一定会用到其包管理器npm。npm的字面意思是node package manager,实际的含义也是这样,但是npm真正的...

    王金龙

扫码关注云+社区

领取腾讯云代金券