基於電商模式的性能測試(三)-以Docker+Jmeter+InfluxDB+Grafana的形式搭建性能監控平臺

1、需求

1.1 需求背景

在用Jmeter獲取性能測試結果的時候,Jmeter本身帶有聚合報告如下
在這裏插入圖片描述
這個報告有幾個很明顯的缺點:

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

1.2 需求方案

爲了解決上述問題就請出了InfluxDB+Grafana

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

簡單總結起來就是:
Jmeter的數據導入InfluxDB,再用GrafanaInfluxDB中獲取數據並以特定的模板進行展示

本次實踐是用目前較爲流行的docker的方式進行部署,也推薦使用,作爲一名普通的測試,會了點docker的皮毛就已經愛不釋手了,對於頭疼的環境問題真的太好用了,不瞭解的小夥伴強烈建議去學習或者參考以往的文章

2、部署實踐

2.1 Docker環境

本文的重點並不是介紹Docker,所以不瞭解的小夥伴需要自己去學習一下基本的安裝和操作,也可參考之前的文章:
Docker-docker簡介與虛擬機的區別-以Jenkins安裝啓動講述docker如何安裝使用和常用命令

2.2 InfluxDB部署

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

    $ docker pull influxdb
    

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

  • 2)啓動一個容器,並將端口80838086映射出來,如果用的是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:/#
    

    進入influxcreate 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)使用jmeter庫,select查看數據,這個時候應該是沒有數據的:

    $ > use jmeter
    Using database jmeter
    > select * from jmeter
    >
    

2.3 Jmeter腳本設置

上一篇文章創建了一個登錄註冊場景的Jmeter腳本,本次就以此來進行測試結果演示,具體可參考文章:
基於電商模式的性能測試(二)—使用Jmeter參數化功能+JSR223 PreProcessor+JSON Extractor完成註冊登錄的數據驅動

  • 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的官網下載我們需要的展示模板
    https://grafana.com/grafana/dashboards?dataSource=influxdb&search=jmeter
    在這裏插入圖片描述
    下面這兩個是我嘗試過的模板:
    在這裏插入圖片描述
    選擇一個模板點擊進入,會看到模板的id號和json文件的下載,選擇你喜歡的一種方式即可:
    在這裏插入圖片描述
  • 9)導入模板,我這裏選擇的是導入json文件的方式,導入後如下,配置好模板名稱和對應的數據源,然後import即可
    在這裏插入圖片描述
  • 10)展示設置,首先選擇我們創建的application
    在這裏插入圖片描述

    注:如果我們修改過表名,也就是在jmeterBackend Listenermeasurement配置(默認爲jmeter),這個時候就需要去設置中進行修改(我這裏使用的就是默認的,所以無需修改):
    在這裏插入圖片描述

3、效果展示

在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章