藉助Docker搭建JMeter+Grafana+Influxdb監控平臺

Tynam.Yang發表於2021-01-15

我們都知道Jmeter提供了原生的結果檢視,既然有原生的檢視結果,為什麼還要多此一舉使用其他工具進行檢視呢,除了檢視內容豐富外還有最主要的原因:
Jmeter提供的檢視結果外掛本身是比較消耗效能的,所以在正式壓測中應當禁用。但是我們又需要在指令碼執行時實時檢視結果,這時就需要藉助外在工具實現。
除此之外,在真實壓測過程中還需要注意Jmeter圖形化模式只適合除錯使用,不要進行壓測。圖形化的壓測方式會消耗較多的客戶端效能,在壓測過程中容易因為客戶端問題導致記憶體溢位。官方也給出了提示通過命令列執行。執行命令:

jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
  • -n 表示在非 GUI 模式下執行 JMeter;
  • -t 表示要執行的 JMeter 測試指令碼檔案,一般是 jmx 結尾的檔案;
  • -l 表示記錄結果的檔案,預設以 jtl 結尾;
  • -e 表示測試完成後生成測試報表;
  • -o 表示指定的生成結果資料夾位置。

實現原理

接下來詳解藉助 docker 使用 InfluxDB 和 Grafana 搭建效能視覺化監控平臺。
InfluxDB概念:InfluxDB是一款用Go語言編寫的開源分散式時序、事件和指標資料庫,無需外部依賴。該資料庫現在主要用於儲存涉及大量的時間戳資料,如DevOps監控資料,APP metrics, loT感測器資料和實時分析資料。
InfluxDB概念特點

  • 無結構(無模式):可以是任意數量的列;
  • 可以設定metric的儲存時間;
  • 支援與時間有關的相關函式(如min、max、sum、count、mean、median等),方便統計;
  • 支援儲存策略:可以用於資料的刪改。(influxDB沒有提供資料的刪除與修改方法);
  • 支援連續查詢:是資料庫中自動定時啟動的一組語句,和儲存策略搭配可以降低InfluxDB的系統佔用量;
  • 原生的HTTP支援,內建HTTP API;
  • 支援類似sql語法;
  • 支援設定資料在叢集中的副本數;
  • 支援定期取樣資料,寫入另外的measurement,方便分粒度儲存資料。

Grafana概念:一個開源軟體,擁有豐富的指標儀表盤和圖形編輯器,適用Graphite, Elasticsearch, OpenTSDB, Prometheus,InfluxDB。簡單點說就是一套開源WEB視覺化平臺。

JMeter引入Backend Listener將在壓測過程中實時傳送統計指標資料傳送到Influxdb資料庫,Grafana(開源的WEB視覺化看板)資料來源連線到Influxdb,建立視覺化看板,並實時獲取到測試指標資料。

安裝InfluxDB

docker 下進行安裝
拉取influxdb映象:docker pull influxdb
執行influxdb容器:docker run --name my_influxdb -p 8086:8086 influxdb

進入容器:docker exec -it 容器id /bin/bash

建立資料庫 jmeter

influx
show databases;
create database jmeter;
show databases;
use jmeter;
select * from jmeter;
exit;

安裝Grafana

拉取grafana映象:docker pull grafana/grafana

執行容器:docker run --name my_grafana -p 3000:3000 grafana/grafana

訪問grafana:http://ip:3000

使用者名稱與密碼都是"admin"

 

進入後新增資料庫

 

 

 

進入後對資料庫進行配置

 

儲存並且測試

 

配置展示模板

模板比較豐富,可以預覽進行檢視,選擇合適的進行下載
下載地址:https://grafana.com/grafana/dashboards

 

 

 

下載json檔案

準備匯入

將下載下來的json檔案匯入之後即可。

設定完成後進入皮膚

在此可設定重新整理頻率

 

配置Jmeter

建立Jmeter指令碼。

設定後端監聽器

執行指令碼後可檢視結果

相關文章