四、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 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。
當然,會搭建性能監控平臺,也僅僅是作為性能測試工程師成長必備的一個階段,
而要想達到更高級別,那需要的不僅僅是時間的沉淀,項目的洗禮,更需要對性能工程的理解與實戰。
最后:在我的V :atstudy-js,可以免費領取一份10G軟件測試工程師面試寶典文檔資料。以及相對應的視頻學習教程免費分享!其中包括了有基礎知識、Linux必備、Shell、互聯網程序原理、Mysql數據庫、抓包工具專題、接口測試工具、測試進階-Python編程、Web自動化測試、APP自動化測試、接口自動化測試、測試高級持續集成、測試架構開發測試框架、性能測試、安全測試等。
![]()
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.