天天看點

性能技術分享|Jmeter+InfluxDB+Grafana搭建性能平台(四)

四、Jmeter配置InfluxDB

4.1 後端監聽器(BackendListener)介紹

1、什麼是後端監聽器(BackendListener)?

源碼給出的解釋是:BackendListener是一種異步監聽并擷取到測試結果的實作類。

性能技術分享|Jmeter+InfluxDB+Grafana搭建性能平台(四)

也就是說發出的如http等響應請求的結果,都會被封裝在SampleResult對象中并被其監聽接收。

源碼如下:

/**

* Async Listener that delegates SampleResult handling to implementations of {@link BackendListenerClient}

*

* @since 2.13

*/

public class BackendListener

extends AbstractTestElement

implements Backend, Serializable, SampleListener, TestStateListener, NoThreadClone, Remoteable {

}

2、為什麼BackendListener能接收SampleResult?

由于BackendListener實作了SampleListener接口,而SampleListener在JMeterThread類中被使用到。

3、BackendListener的作用是?

由于它是異步接收壓測中繼資料的,會将測試結果的中繼資料傳給BackendListenerClient,後面的核心都是BackendListenerClient。

性能技術分享|Jmeter+InfluxDB+Grafana搭建性能平台(四)

4、BackendListenerClient是什麼?

BackendListenerClient是一個接口類,通過抽象類AbstractBackendListenerClient來擴充其功能,我們要擷取到測試中繼資料都要通過繼承AbstractBackendListenerClient來實作,包括JMeter原生自帶的influxdb、graphite都是通過繼承AbstractBackendListenerClient來擷取中繼資料的。

性能技術分享|Jmeter+InfluxDB+Grafana搭建性能平台(四)

繼承AbstractBackendListenerClient需要實作三種方法,如下:

public interface BackendListenerClient {

//開啟多線程執行壓測之前,傳入線程上下文,進行前置處理

void setupTest(BackendListenerContext context) throws Exception; // NOSONAR

//多線程壓測過程中擷取到測試結果集,傳入目前方法進行處理

void handleSampleResults(List<SampleResult> sampleResults, BackendListenerContext context);

//多線程壓測結束之後進行一個後置處理

void teardownTest(BackendListenerContext context) throws Exception;

4.2 配置後端監聽器

1、啟動Jmeter,添加後端監聽器(BackendListener)

步驟: 線程組右擊→添加→監聽器→後端監聽器

性能技術分享|Jmeter+InfluxDB+Grafana搭建性能平台(四)

後端監聽器添加後,預設頁面。

2、選擇後端監聽器實作類型

因為我們資料庫是InfluxDB,是以這裡選擇:

  org.apache.jmeter.visualizers.backend.influxdb.InfluxbdBackendListenerClinet

性能技術分享|Jmeter+InfluxDB+Grafana搭建性能平台(四)

3、修改配置項内容:

在這個項目中,我修改以下幾項内容,其餘想預設,

① influxdbUrl:http://localhost:8086/write?db=jmeterMC;

② Application:MC

③Measurement:jmeter

關于配置項的解析,如下:

性能技術分享|Jmeter+InfluxDB+Grafana搭建性能平台(四)

到這裡,後端監聽器就配置完成了,當然,你線上程組中的資訊,也需要正确配置,否則,資料是無法入庫的。

這裡,我們就壓測資料,看看能否進入到InfluxDB資料庫中。

在InfluxDB視窗,執行查詢語句“select * from jmeter”,看到如下資料,就說明資料已經進入到InfluxDB了。

性能技術分享|Jmeter+InfluxDB+Grafana搭建性能平台(四)

看到這裡,就說明Jmeter執行的資料,已經進入到InfluxDB中了。

那如何在Grafana中展示呢?

因為第三節,已經在Grafana中配置了InfluxDB的資料源,是以,我們隻需要在Grafana中查詢到InfluxDB資料即可。

五、Grafana擷取InfluxDB的資料進行展示

5.1 Dashboard配置項選擇

①如果你有多個項目,需要在General/home ,選擇項目:

性能技術分享|Jmeter+InfluxDB+Grafana搭建性能平台(四)

②如果你一個項目中有多個接口,那也需要選擇接口:

a)data_source:選擇設定的資料庫名

性能技術分享|Jmeter+InfluxDB+Grafana搭建性能平台(四)

b)application:應用名/接口名

性能技術分享|Jmeter+InfluxDB+Grafana搭建性能平台(四)

c)時間預設5分鐘, 由于我們壓測都需要半個小時以上,是以可以設定now-35m至now

性能技術分享|Jmeter+InfluxDB+Grafana搭建性能平台(四)

5.2 Dashboard資料展示

Dashboard的展示,這裡也是用上面的壓測腳本資料展示,

按照5.2的操作步驟,配置完以後,在Dashboard展示的資料,如下:

性能技術分享|Jmeter+InfluxDB+Grafana搭建性能平台(四)

這裡需要注意:

1、Dashboard展示的是實時資料;

2、如果InfluxDB中沒有資料,則Grafana中的Dashboard資料就展示0。

性能技術分享|Jmeter+InfluxDB+Grafana搭建性能平台(四)

六、總結

到這裡, Jmeter+InfluxDB+Grafana輕量級性能監控平台就搭建完成了。

回顧全篇,我詳細介紹了:

①InfluxDB的特點,應用場景、正常操作指令語句;

②Grafana的安裝,資料源的配置,資料源的展示;

③BackendListener的應用,項目名解析以及配置;

④整個流程通過Jmeter腳本執行後,資料源在Grafana的Dashboard展示;

目的是為了,讓你知道其實搭建性能監控平台并不是那麼困難,

也希望你能在實際的項目中,不僅僅隻會執行性能測試腳本,而是進階到更高的level。

當然,會搭建性能監控平台,也僅僅是作為性能測試工程師成長必備的一個階段,

而要想達到更進階别,那需要的不僅僅是時間的沉澱,項目的洗禮,更需要對性能工程的了解與實戰。

最後:

1)關注+私信回複:“測試”,可以免費領取一份10G軟體測試工程師面試寶典文檔資料。以及相對應的視訊學習教程免費分享!,其中包括了有基礎知識、Linux必備、Mysql資料庫、抓包工具、接口測試工具、測試進階-Python程式設計、Web自動化測試、APP自動化測試、接口自動化測試、測試進階持續內建、測試架構開發測試架構、性能測試等。

繼續閱讀