之前介绍了 Elasticsearch Rally 的基本概念和使用场景,可以看看上面的链接复习一下。今天准备分享一下 esrally 的用法。
下面我们来看看 esrally 作为自建 Elasticsearch 集群的基准测试工具是怎么用的。当然,过程中还要搭配监控工具,比如 Prometheus + Grafana,这部分今天先不展开。
基于Docker
esrally 基于 Python 3 开发,通过 pip 可以很容易部署,不过你得有 Python 3 的环境。
我更推荐使用 Docker 的方式,比较省事。
你可能会想到,esrally 在测试过程中,会下载测试数据集到本地,然后读取数据发送到 Elasticsearch 集群。
这个过程不是会对于Docker 容器的文件系统进行大量读写操作吗?那么性能测试是否有可能因此不准,比如文件系统IO不行?
这个问题是无需担心的。
我们知道,esrally 对于本地文件系统的读写会在 ~/.rally/benchmarks 目录下,那么我们可以将 Docker 容器中的 ~/.rally/benchmarks 目录通过宿主机目录 bind mount 的方式进行挂载。
Docker 的数据卷有几种方式,其中bind mount 对于宿主机文件系统读写性能几乎没有损耗,以后有时间再来专门讨论。
今天我们先记住这个结论就好。
好了,可以放心的使用 Docker 容器方式了。
我为测试自建 Elasticsearch 集群,做了一个 esrally 的 Docker 镜像。在 Docker Hub 上连接我的 Github 库,创建了自动化构建的项目。
当前的版本是 lyremelody/esrally:0.9.0,基于 esrally 0.9.0。
你可以把镜像拉到本地:
docker pull lyremelody/esrally:0.9.0
基本使用
假设你的 Elasticsearch 集群有三个节点,IP地址分别为:192.168.1.5:9200,192.168.1.6:9200,192.168.1.7:9200。
那么可以这么启动对于 Elasticsearch 集群的测试:
mkdir -p $PWD/.rally/benchmarks
docker run -it --net=host -v $PWD/.rally/benchmarks:/root/.rally/benchmarks -e TARGET_HOST="192.168.1.5:9200,192.168.1.6:9200,192.168.1.7:9200"lyremelody/esrally:0.9.0
这样,esrally 会默认下载geopoint数据集进行基准测试,完成会报告结果。
结果大约形如:
领取专属 10元无门槛券
私享最新 技术干货