OpenStack接口测试工具rally/tempest环境搭建及使用

      在日常生产环境及测试开发环境的OpenStack使用过程中发现,Horizon页面响应缓慢,为了得到OpenStack各功能接口的性能瓶颈所在及性能耗时分布,为集群性能优化提供数据依据,现使用OpenStack性能压测工具Rally及性能分析工具OSProfiler对OpenStack进行测试及分析,同时可以使用Tempest验证OpenStack各组件接口功能。 

一、工具版本

工具

工具版本

Git地址

Rally

0.11.1

https://github.com/openstack/rally.git

OSProfiler

1.15.1或1.5.0

https://github.com/openstack/osprofiler.git

二、安装

  1. Rally安装

     (1)安装依赖库

yum install python-pip lsb_release gcc gmp-devel libffi-devel libxml2-devel libxslt-devel openssl-devel postgresql-devel python-devel redhat-rpm-config

     (2)下载并安装rally

git clone https://github.com/openstack/rally.git

cd rally && git checkout 0.11.1

./install_rally.sh --branch 0.11.1

  2. OSProfiler安装

pip install osprofiler==1.5.0

三、Rally/Tempest配置及初始化

       1. Rally配置

      Rally安装完成后,默认的配置文件路径为 /etc/rally ,修改该路径下的 rally.conf 文件即可,一般修改项为API 接口的超时时间。为了记录一次API性能测试的详细性能耗时分布,需要在配置文件中开启osprofiler,在配置文件中的 [openstack] 配置组中配置 enable_profiler = True ,从而开启API接口的trace调用记录。 

      在完成Rally的配置调整后,需要初始化Rally的测试环境,即创建deployment与具体的OpenStack环境进行关联。 初始化deployment目前有两种方法,一种是通过环境变量,另一种是通过环境文件方式。在实践过程中,我们采用了环境变量的方式,即环境中的admin-openrc.sh文件,添加:

export OSPROFILER_HMAC_KEY="charlie"

      其中需要说明的一点是环境变量 OSPROFILER_HMAC_KEY ,是为使用osprofiler的功能而设置的,该变量的值需要与 Openstack各服务配置文件中的值相同。编辑好环境变量文件后,需要使环境变量生效:

source admin-openrc.sh

      环境变量生效后,就可以创建deployment了,创建命令如下所示:

rally deployment create --fromenv --name=openstack

      创建完成之后,检查环境是否可用,显示Available表明环境可用:

rally deployment check

OpenStack接口测试工具rally/tempest环境搭建及使用_第1张图片

       2. Tempest配置及测试

      通过Rally进行Tempest测试,执行如下命令创建tempest实例,Rally会自动同步tempest代码至本地:

rally verify create-verifier --type tempest --name mytest

      执行如下命令,进行配置:

rally verify configure-verifier

      执行rally verify start开始测试所有openstack 接口,可以通过指定--pattern参数,仅对部分服务接口进行测试例如,--pattern set=compute可选的set有full, smoke, compute, identity, image, network, object_storage, orchestration, volume, scenario,当然--pattern参数后面的值也可以是正则表达式,此时测试的接口为某一服务的部分接口,例如:--pattern tempest.api.compute.admin.test_flavors.FlavorsAdminTestJSON

rally verify start --pattern set=compute

rally verify start --pattern set=image

rally verify start --pattern set=identity

rally verify start --pattern set=network

rally verify start --pattern set=volume

      测试完毕后即可查看测试结果:

rally verify report --uuid --type html --to name.html

四、OpenStack服务配置 

      OSProfiler是一个Python库,基本所有的OpenStack服务都集成了该Python库用以实现对服务的性能分析和优化,每个服务使用该库在代码中需要的地方埋点,在系统的边界点设置一个起始点,在调用返回的地方设置一个结束点,中间的时间间隔即为子系统的性能耗时。OpenStack服务在开启OSProfiler后,会在每次REST API调用过程中生成一条trace记录,用来记录本次REST API调用全链路中,各子系统的性能耗时分布。 

      为了开启OpenStack各服务的OSProfiler功能,服务配置文件中需添加以下部分:

[profiler]

hmac_keys = swordfish,foxtrot,charlie

trace_sqlalchemy = True

trace_wsgi_transport = True

trace_message_store = True

trace_management_store = True

enabled = True

connection_string = redis://XXXX:XXXX      #redis地址

      最后一个配置项 connection_string 有多种配置选择,默认如果不配置的话,trace记录是发送到Ceilometer的, 如果测试的OpenStack环境没有部署Ceilometer,可以将数据发送到Redis,Elasticsearch,MongoDB,RMQ等,选择不同的backend,配置会随之发生改变。
      开启OSProfiler后,我们可以记录一个REST API调用过程中,服务的HTTP调用耗时,RPC调用耗时,DB API调用耗时,所有服务客户端驱动的调用耗时(如novaclient,neutronclient等),SQL请求耗时等。

五、Rally性能测试

      在测试的过程中,我们使用Rally来发送REST API请求,进行并发的压力测试,在压测的过程中开启了OSProfiler, 以便能够在压测过程中得到接口的性能耗时分布结果。 

      在测试开始之前,首先需要编写测试需要的yaml文件,这些yaml文件的样例可以在Rally的Git仓库中找到,路径是rally/samples/tasks/scenarios,可以参考这些样例完成yaml文件的编写。执行测试命令为:

rally task start

      当压测结束后,使用以下命令导出测试报告:

rally task report --out output.html

      可以在测试结果报告的 Scenario Data 部分,找到trace ID,执行以下命令生成每次调用的性能耗时分布报告:

osprofiler trace show --html --out trace.html

参考资料:
http://niusmallnan.com/_build/html/_templates/openstack/osprofiler.html

https://docs.openstack.org/osprofiler/latest/#five-ways-to-add-a-new-trace-point

转载于:https://www.cnblogs.com/viviane/p/10476628.html

你可能感兴趣的:(OpenStack接口测试工具rally/tempest环境搭建及使用)