zoukankan      html  css  js  c++  java
  • 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

           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 <id> --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 <test path>

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

    rally task report <uuid> --out output.html

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

    osprofiler trace show --html --out trace.html <trace-id>

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

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

  • 相关阅读:
    appium+python自动化24-滑动方法封装(swipe)
    selenium+python自动化82-只截某个元素的图
    selenium+python自动化81-html报告优化(饼图+失败重跑+兼容python2&3)
    selenium+python自动化79-文件下载(SendKeys)
    selenium+python自动化77-autoit文件上传
    Appium+python自动化22-Appium Desktop
    Appium+python自动化21-DesiredCapabilities详解
    Appium+python自动化20-查看iOS上app元素属性
    Appium+python自动化19-iOS模拟器(iOS Simulator)安装自家APP
    Appium+python自动化18-brew、carthage和appium-doctor
  • 原文地址:https://www.cnblogs.com/viviane/p/10476628.html
Copyright © 2011-2022 走看看