測試開發實戰 | Docker+Jmeter+InfluxDB+Grafana 搭建效能監控平臺

語言: CN / TW / HK

本文為霍格沃茲測試學院學院學員課程學習系列筆記《電商系統的效能測試實戰》第三篇,系統進階學習文末加群。

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

1.1 需求背景

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

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

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

1.2 需求方案

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

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

簡單總結起來就是:
將 Jmeter 的資料匯入 InfluxDB ,再用 Grafana 從 InfluxDB 中獲取資料並以特定的模板進行展示

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

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

2.1 Docker環境

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

2.2 InfluxDB部署

1)首先去下載InfluxDB的映象,下載很簡單,直接pull就好,預設為下載最新的映象:

$ docker pull influxdb

目前最新的influxdb不支援網頁端的檢視,僅可用命令列的形式,不過沒有什麼影響,如果真的想要有網頁端的顯示的話可以嘗試下載較前的映象:tutum/influxdb

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

$ docker run -d --name jmeter-influx -p 8083:8083 -p 8086:8086 influxdb

3)進入容器內部,建立名為jmeter的資料庫:

進入 jmeter-influx 容器

$ docker exec -it jmeter-influx bash


root@517f57017d99:/#

進入 influx , create database jmeter 建立名為 jmeter 的資料庫, show databases 命令檢視資料庫建立成功

root@517f57017d99:/# influx


Connected to http://localhost:8086 version 1.7.10


InfluxDB shell version: 1.7.10


> create database jmeter


> show databases


name: databases


name


----


_internal


jmeter

4)使用 J meter 庫, select 檢視資料,這個時候應該是沒有資料的:

$ > use jmeter


Using database jmeter


> select * from jmeter


>

2.3 Jmeter指令碼設定

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

1)想要將 jmeter 的測試資料匯入 influxDB ,就需要在 Jmeter 中使用 Backend Listener 配置

先看一下配置好的 Backend Listener :

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

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

3)執行驗證
執行 Jmeter 指令碼,然後再次在 influxdb 中檢視資料,發現類似下面的資料說明輸入匯入成功:

2.4、Grafana部署

1)首先我們需要下載grafana的映象:

$ docker pull grafana/grafana

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

$ docker run -d --name grafana -p 3000:3000 grafana/grafana

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

4)選擇新增資料來源

5)找到並選擇 influxdb :

6)配置資料來源

資料來源建立成功時會有綠色的提示:

7)匯入模板

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

  • 直接輸入模板id號
  • 直接上傳模板json檔案
  • 直接輸入模板json內容

8)下載模板,在grafana的官網下載我們需要的展示模板

Grafana Labs

Grafana Dashboards - discover and share dashboards for Grafana.14

Grafana.com provides a central repository where the community can come together to discover and share dashboards.

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

9)匯入模板,我這裡選擇的是匯入json檔案的方式,匯入後如下,配置好模板名稱和對應的資料來源,然後 import 即可

10)展示設定,首先選擇我們建立的application

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

3. 效果展示及推薦學習

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

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