四、Jmeter配置InfluxDB
4.1 後端監聽器(BackendListener)介紹
1、什麼是後端監聽器(BackendListener)?
源碼給出的解釋是:BackendListener是一種異步監聽并擷取到測試結果的實作類。
也就是說發出的如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。
4、BackendListenerClient是什麼?
BackendListenerClient是一個接口類,通過抽象類AbstractBackendListenerClient來擴充其功能,我們要擷取到測試中繼資料都要通過繼承AbstractBackendListenerClient來實作,包括JMeter原生自帶的influxdb、graphite都是通過繼承AbstractBackendListenerClient來擷取中繼資料的。
繼承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)
步驟: 線程組右擊→添加→監聽器→後端監聽器
後端監聽器添加後,預設頁面。
2、選擇後端監聽器實作類型
因為我們資料庫是InfluxDB,是以這裡選擇:
org.apache.jmeter.visualizers.backend.influxdb.InfluxbdBackendListenerClinet
3、修改配置項内容:
在這個項目中,我修改以下幾項内容,其餘想預設,
① influxdbUrl:http://localhost:8086/write?db=jmeterMC;
② Application:MC
③Measurement:jmeter
關于配置項的解析,如下:
到這裡,後端監聽器就配置完成了,當然,你線上程組中的資訊,也需要正确配置,否則,資料是無法入庫的。
這裡,我們就壓測資料,看看能否進入到InfluxDB資料庫中。
在InfluxDB視窗,執行查詢語句“select * from jmeter”,看到如下資料,就說明資料已經進入到InfluxDB了。
看到這裡,就說明Jmeter執行的資料,已經進入到InfluxDB中了。
那如何在Grafana中展示呢?
因為第三節,已經在Grafana中配置了InfluxDB的資料源,是以,我們隻需要在Grafana中查詢到InfluxDB資料即可。
五、Grafana擷取InfluxDB的資料進行展示
5.1 Dashboard配置項選擇
①如果你有多個項目,需要在General/home ,選擇項目:
②如果你一個項目中有多個接口,那也需要選擇接口:
a)data_source:選擇設定的資料庫名
b)application:應用名/接口名
c)時間預設5分鐘, 由于我們壓測都需要半個小時以上,是以可以設定now-35m至now
5.2 Dashboard資料展示
Dashboard的展示,這裡也是用上面的壓測腳本資料展示,
按照5.2的操作步驟,配置完以後,在Dashboard展示的資料,如下:
這裡需要注意:
1、Dashboard展示的是實時資料;
2、如果InfluxDB中沒有資料,則Grafana中的Dashboard資料就展示0。
六、總結
到這裡, Jmeter+InfluxDB+Grafana輕量級性能監控平台就搭建完成了。
回顧全篇,我詳細介紹了:
①InfluxDB的特點,應用場景、正常操作指令語句;
②Grafana的安裝,資料源的配置,資料源的展示;
③BackendListener的應用,項目名解析以及配置;
④整個流程通過Jmeter腳本執行後,資料源在Grafana的Dashboard展示;
目的是為了,讓你知道其實搭建性能監控平台并不是那麼困難,
也希望你能在實際的項目中,不僅僅隻會執行性能測試腳本,而是進階到更高的level。
當然,會搭建性能監控平台,也僅僅是作為性能測試工程師成長必備的一個階段,
而要想達到更進階别,那需要的不僅僅是時間的沉澱,項目的洗禮,更需要對性能工程的了解與實戰。
最後:
1)關注+私信回複:“測試”,可以免費領取一份10G軟體測試工程師面試寶典文檔資料。以及相對應的視訊學習教程免費分享!,其中包括了有基礎知識、Linux必備、Mysql資料庫、抓包工具、接口測試工具、測試進階-Python程式設計、Web自動化測試、APP自動化測試、接口自動化測試、測試進階持續內建、測試架構開發測試架構、性能測試等。