[转载] 干货: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,推荐学习链接:
官网:
esrally.readthedocs.io/en/latest/i...
blog.csdn.net/wuxiao5570/article/d...
blog.csdn.net/ypc123ypc/article/de...
blog.csdn.net/BearStarX/article/de...
blog.csdn.net/wshl1234567/article/...
blog.csdn.net/u013701217/article/d...
blog.51cto.com/eric100/1885477
作者:南非骆驼
来源:腾讯云
原文链接:cloud.tencent.com/developer/articl...