Docker+Jmeter+InfluxDB+Grafana 搭建性能監控平臺


實戰 | Docker+Jmeter+InfluxDB+Grafana 搭建性能監控平臺

本文為霍格沃茲測試學院學院學員課程學習系列筆記《電商系統的性能測試實戰》第三篇,希望大家能從中學到想了解的知識。

1. 為什麼要搭建性能監控平臺?

實戰 | Docker+Jmeter+InfluxDB+Grafana 搭建性能監控平臺

1.1 需求背景

在用Jmeter獲取性能測試結果的時候,Jmeter本身帶有聚合報告如下圖所示:

實戰 | Docker+Jmeter+InfluxDB+Grafana 搭建性能監控平臺

這個報告有幾個很明顯的缺點:

  • 只能自己看,無法實時共享;
  • 報告信息的展示比較簡陋單一,不直觀;

1.2 需求方案

為了解決上述問題,必須要請出了 InfluxDB+Grafana:

  • InfluxDB:持續型數據庫,有時間戳組件,以時間的形式去存儲數據
  • Grafana:一款採用 Go 語言編寫的開源應用,主要用於大規模指標數據的可視化展現,是網絡架構和應用分析中最流行的時序數據展示工具

簡單總結起來就是:


將 Jmeter 的數據導入 InfluxDB,再用 Grafana 從 InfluxDB 中獲取數據並以特定的模板進行展示

本次實踐是用目前較為流行的 Docker 的方式進行部署,也推薦使用,作為一名普通的測試,會了點 Docker 的皮毛就已經愛不釋手了,對於頭疼的環境問題真的太好用了,強烈推薦。

2、性能監控平臺部署實踐

實戰 | Docker+Jmeter+InfluxDB+Grafana 搭建性能監控平臺

2.1 Docker環境

本文的重點並不是介紹 Docker,所以不瞭解的小夥伴需要自己去學習一下基本的安裝和操作,可參考之前發送的 Docker 文章。

2.2 InfluxDB部署

1)首先去下載InfluxDB的鏡像,下載很簡單,直接pull就好,默認為下載最新的鏡像:

<code>$ docker pull influxdb/<code>

目前最新的influxdb不支持網頁端的查看,僅可用命令行的形式,不過沒有什麼影響,如果真的想要有網頁端的顯示的話可以嘗試下載較前的鏡像:tutum/influxdb

2)啟動一個容器,並將端口8083和8086映射出來,如果用的是tutum/influxdb鏡像,在訪問8083端口時就可以看到網頁端的展示,我這裡用的是最新的,所以就沒有啦:

<code>$ docker run -d --name jmeter-influx -p 8083:8083 -p 8086:8086 influxdb/<code>

3)進入容器內部,創建名為jmeter的數據庫:

進入jmeter-influx容器

<code>$ docker exec -it jmeter-influx bashroot@517f57017d99:/#/<code>


進入influx,create database jmeter創建名為jmeter的數據庫,show databases命令查看數據庫創建成功


<code>root@517f57017d99:/# influxConnected to http://localhost:8086 version 1.7.10InfluxDB shell version: 1.7.10> create database jmeter> show databasesname: databasesname----_internaljmeter/<code>


4)使用 Jmeter 庫,select 查看數據,這個時候應該是沒有數據的:


<code>$ > use jmeterUsing database jmeter> select * from jmeter>/<code>



2.3 Jmeter腳本設置

這裡需要創建一個登錄註冊場景的Jmeter腳本,往期文章有發佈,本次就以此來進行測試結果演示。具體可參考之前發送的公眾號文章。文章末尾的「往期回顧」第二篇文章即可閱讀。

1)想要將jmeter的測試數據導入influxDB,就需要在Jmeter中使用Backend Listener配置

實戰 | Docker+Jmeter+InfluxDB+Grafana 搭建性能監控平臺

先看一下配置好的Backend Listener:

實戰 | Docker+Jmeter+InfluxDB+Grafana 搭建性能監控平臺

2)主要配置說明:implementation選擇influxdb所對應的:


實戰 | Docker+Jmeter+InfluxDB+Grafana 搭建性能監控平臺


  • influxdbUrl:需要改為自己influxdb的部署ip和映射端口,我這裡是部署在本地,所以就是localhost,端口是容器啟動時映射的8086端口,db後面跟的是剛才創建的數據庫名稱
  • application:可根據需要自由定義,只是注意後面在grafana中選對即可
  • measurement:表名,默認是jmeter,也可以自定義
  • summaryOnly:選擇true的話就只有總體的數據,false會將每個transaction都分別記錄

3)運行驗證
運行Jmeter腳本,然後再次在influxdb中查看數據,發現類似下面的數據說明輸入導入成功:

實戰 | Docker+Jmeter+InfluxDB+Grafana 搭建性能監控平臺

2.4、Grafana部署

1)首先我們需要下載grafana的鏡像:


<code>$ docker pull grafana/grafana/<code>


2)啟動一個grafana容器,將3000端口映射出來:


<code>$ docker run -d --name grafana -p 3000:3000 grafana/grafana/<code>


3)網頁端訪問locahost:3000驗證部署成功


實戰 | Docker+Jmeter+InfluxDB+Grafana 搭建性能監控平臺


4)選擇添加數據源


實戰 | Docker+Jmeter+InfluxDB+Grafana 搭建性能監控平臺


5)找到並選擇influxdb:


實戰 | Docker+Jmeter+InfluxDB+Grafana 搭建性能監控平臺


6)配置數據源


實戰 | Docker+Jmeter+InfluxDB+Grafana 搭建性能監控平臺


數據源創建成功時會有綠色的提示:


實戰 | Docker+Jmeter+InfluxDB+Grafana 搭建性能監控平臺


7)導入模板


實戰 | Docker+Jmeter+InfluxDB+Grafana 搭建性能監控平臺


模板導入分別有以下3種方式:

  • 直接輸入模板id號
  • 直接上傳模板json文件
  • 直接輸入模板json內容


實戰 | Docker+Jmeter+InfluxDB+Grafana 搭建性能監控平臺


8)下載模板,在grafana的官網下載我們需要的展示模板
https://grafana.com/grafana/dashboards?dataSource=influxdb&search=jmeter


實戰 | Docker+Jmeter+InfluxDB+Grafana 搭建性能監控平臺

下面這兩個是我嘗試過的模板:


實戰 | Docker+Jmeter+InfluxDB+Grafana 搭建性能監控平臺


9)導入模板,我這裡選擇的是導入json文件的方式,導入後如下,配置好模板名稱和對應的數據源,然後import即可


實戰 | Docker+Jmeter+InfluxDB+Grafana 搭建性能監控平臺


10)展示設置,首先選擇我們創建的application


實戰 | Docker+Jmeter+InfluxDB+Grafana 搭建性能監控平臺


注意:如果我們修改過表名,也就是在jmeter的Backend Listener的measurement配置(默認為jmeter),這個時候就需要去設置中進行修改(我這裡使用的就是默認的,所以無需修改):


實戰 | Docker+Jmeter+InfluxDB+Grafana 搭建性能監控平臺


3. 效果展示及推薦學習

實戰 | Docker+Jmeter+InfluxDB+Grafana 搭建性能監控平臺


經過一系列的奮鬥之後,該到了我們檢驗成果的時候了。使用 Docker + JMeter + InfluxDB + Grafana 到底可以搭建怎樣的性能監控平臺呢?相比較 JMeter 自帶的監控平臺,我們搭建的性能監控平臺究竟有什麼優勢呢?接下來就是展示成果的時候啦!

實戰 | Docker+Jmeter+InfluxDB+Grafana 搭建性能監控平臺

實戰 | Docker+Jmeter+InfluxDB+Grafana 搭建性能監控平臺

Appium 官方說明文檔:
http://appium.io/docs/en/writing-running-appium/finding-elements/
http://appium.io/docs/en/commands/element/find-elements/


Uiautomator2 源碼路徑:

https://github.com/appium/appium-uiautomator2-server/blob/master/app/src/main/java/io/appium/uiautomator2/handler/FindElement.java




分享到:


相關文章: