使用esrally进行es的压测

77 阅读2分钟

安装esrally

1
2
3
pyenv virtualenv 3.8.16 myenv
pyenv activate myenv
pip install esrally

CopyCopy

{B16737F7-C401-4C51-9872-FA8F087F3E28}.png 在.zshrc 中pyenv相关的环境变量

1
2
3
4
5
6
export KUBECONFIG=~/k8s/merged-kubeconfig.yaml
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

CopyCopy

这里会遇到一个问题pyenv: no such command virtualenv-init’`,解决这个问题时需要安装插件

1
git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv

CopyCopy

这里还遇到一个坑

1
Installing Python-3.8.16... Traceback (most recent call last): File "<string>", line 1, in <module> File "/home/xfhuang/.pyenv/versions/3.8.16/lib/python3.8/tkinter/__init__.py", line 36, in <module> import _tkinter # If this fails your Python may not be configured for Tk ModuleNotFoundError: No module named '_tkinter' WARNING: The Python tkinter extension was not compiled and GUI subsystem has been detected. Missing the Tk toolkit? Installed Python-3.8.16 to /home/xfhuang/.pyenv/versions/3.8.16

CopyCopy

解决办法:

1
2
3
在 Arch Linux 上,Tkinter 的依赖包通常包含在 `tk` 包中。使用以下命令安装 `tk`:


sh

sh

CopyCopy

sudo pacman -S tk `

2. 安装 Python 依赖

为了确保编译 Python 时包含 Tkinter 支持,安装以下依赖项:

1
sudo pacman -S base-devel openssl zlib xz

CopyCopy

  1. 可以查看集群状态

  2. curl -u “elastic:123456” -k https://10.7.20.26:35919

  3. {

  4. “name” : “elasticsearch-es-data-nodes-0”,

  5. “cluster_name” : “elasticsearch”,

  6. “cluster_uuid” : “caWatVXyQmSNDLQ7lEO7qg”,

  7. “version” : {

  8. “number” : “7.2.0”,

  9. “build_flavor” : “default”,

  10. “build_type” : “docker”,

  11. “build_hash” : “508c38a”,

  12. “build_date” : “2019-06-20T15:54:18.811730Z”,

  13. “build_snapshot” : false,

  14. “lucene_version” : “8.0.0”,

  15. “minimum_wire_compatibility_version” : “6.8.0”,

  16. “minimum_index_compatibility_version” : “6.0.0-beta1”

  17. },

  18. “tagline” : “You Know, for Search”

  19. }

配置es.sh

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
WORKSPACE=$(pwd)


echo $WORKSPACE




ESADDRESS=1
#########判断docker是否存在
DOCKER=(docker images | grep elastic/rally | awk '{print 3}')
if [ -z "{DOCKER}" ]; then
echo "请先加载docker镜像,参考命令 docker load -i 镜像文件"
exit 0
fi




if [ -z "${ESADDRESS}" ]; then
echo "请输入ES集群地址"
exit 0
fi




TESTTYPE=2
if [ -z "{TESTTYPE}" ]; then
echo "请输入测试类型,目前支持的类型有geonames http_logs"
exit 0
fi




REPORTFILE=3
if [ -z "{REPORTFILE}" ]; then
REPORTFILE=result.csv
echo "没有输入测试名称,使用默认测试名称result.csv,地址为{WORKSPACE}/rally/benchmarks/result.csv"
fi
echo "测试结果地址为{WORKSPACE}/rally/benchmarks/${REPORTFILE}"
docker="docker"




EXECCMD="{docker} run --network host  -v {WORKSPACE}/rally:/rally/.rally elastic/rally:2.2.1  race --pipeline=benchmark-only --target-hosts={ESADDRESS} --track-path=/rally/.rally/benchmarks/data/{TESTTYPE} --offline --report-format=csv --report-file=/rally/.rally/benchmarks/{REPORTFILE}"
echo EXECCMD
{docker} run --network host  -v {WORKSPACE}/rally:/rally/.rally elastic/rally:2.2.1  race --pipeline=benchmark-only --target-hosts={ESADDRESS} --track-path=/rally/.rally/benchmarks/data/{TESTTYPE} --track-params="bulk_indexing_clients:20" --offline --report-format=csv --report-file=/rally/.rally/benchmarks/${REPORTFILE}




docker rm -f (docker ps -a | grep elastic/rally | awk '{print 1}')




echo "程序执行完毕"

echo "程序执行完毕"

CopyCopy

1
--client-options="use_ssl:true,verify_certs:true,basic_auth_user:'elastic',basic_auth_password:'123456'"

CopyCopy

查看执行过程 {36ECE2C2-2F85-4271-B1CC-56ECCAF6660E}.png

当出现这个时,就代表运行成功 {A7319C84-9960-4887-B1D3-519F871E4178}.png 在kibana上查看一下数据集 {5AABC144-E2D6-4D0B-A834-A34E67ADD12F}.png

本文使用 文章同步助手 同步