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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM