Docker系列——InfluxDB+Grafana+Jmeter性能監控平台搭建(二)

在上一篇博文中,主要是講了InfluxDB的配置,博文鏈接://www.cnblogs.com/hong-fithing/p/14453695.html,今天來分享下Jmeter的配置。

在介紹Jmeter之前,必須是要有Jmeter環境的,至於環境怎麼配,工具怎麼用,可以看以前的博文。環境搭建:Jmeter——環境搭建;Jmeter系列博文:Jmeter系列。所以這些就不多講了,可以自行查看,今天以性能監控平台配置為主,介紹Jmeter運行腳本來採集對應數據。

Jmeter配置

添加監聽器

在線程組中,添加監聽器(Listener)-> Backend Listener,如下圖所示:

配置Backend Listener監聽方式

添加監聽後,監聽方式默認為GraphiteBackendListenerClient,如下圖所示:

監聽方式是可以修改的,監聽器沒擴展的情況下,共有2種,擴展後,支持四種方式,如下所示:

我已經擴展過了,所以展示4種,具體擴展方式,稍後再說。今天介紹主要以前三種監聽方式為主,三種方式採集的數據,也有些許不同,我們詳細來看。

GraphiteBackendListenerClient監聽

界面配置

配置監聽方式為GraphiteBackendListenerClient,不同的監聽方式,配置面板上的配置字段也有不同之處,配置如下所示:

配置界面的詳細字段如下:

  • graphiteHost:InfluxDB安裝的服務器ip
  • graphitePort:端口;默認就是2003。ps:除非你自己安裝InfluxDB時設置了其他端口。按自己的實際端口配置即可
  • rootMetricsPrefix:指標的根前綴;將測試結果存入數據庫時,不同指標會生成不同表
  • summaryOnly:當你線程組有多個請求又想知道每個請求的結果數據時,最好填false,因為true只會返回所有請求的集合數據報告,不會輸出每條請求的數據報告
  • samplersList:取樣器列表;想收集哪些請求就填哪些,最好用正則去匹配
  • useRegexpForSamplersList:是否使用正則;如果true則使用,samplersList里可以匹配正則表達式
  • percentiles:百分比;即類似聚合報告里90% Line,95% Line,99% Line的數據;倘若想要99.9時,需要寫成【99_9】,用下劃線代替點

運行腳本

運行腳本,運行沒報錯,便會產生數據了,可以通過服務器客戶端查看,或者上篇博文中介紹的客戶端工具查詢。查詢數據如下所示:

通過查詢數據發現,總共會生成三種前綴的表,分別是:jmeter.請求名稱jmeter.alljmeter.test。通過數據可以看到,請求數據都是整齊劃一的以jmeter.開頭,是因為我們剛才配置的時候,設置的是jmeter.;如果你配置成其他,那就會以自定義的前綴生成數據了。

  • 前綴說明

jmeter.all :代表了所有請求;當summaryOnly=true時,就只有samplerName=all的表了

jmeter.請求名稱 :如圖所示,HTTP請求的名字是HTTP Request 溫一壺清酒 appium

jmeter.test :線程組設置相關的指標數據

參數指標

參數指標說明,在jmeter官網有介紹,地址是://jmeter.apache.org/usermanual/realtime-results.html,可以查看原文檔。我在這裡就按中文來說明了。

線程/虛擬用戶指標

Thread/Virtual Users metrics – 線程/虛擬用戶指標

運行完腳本,生成的數據中,是有對應的5個指標數據的,如下所示:

指標 全稱 含義
<rootMetricsPrefix>test.minAT Min active threads 最小活躍線程數
<rootMetricsPrefix>test.maxAT Max active threads 最大活躍線程數
<rootMetricsPrefix>test.meanAT Mean active threads 平均活躍線程數
<rootMetricsPrefix>test.startedT Started threads 啟動線程數
<rootMetricsPrefix>test.endedT Finished threads 結束線程數

響應時間指標

Response times metrics – 響應時間指標

每個sampler都包含了所有響應時間指標,每個sampler的每個指標都會有單獨的一個表存儲結果數據

指標 含義
<rootMetricsPrefix><samplerName>.ok.count sampler的成功響應數
<rootMetricsPrefix><samplerName>.h.count 服務器每秒命中次數(每秒點擊數,即TPS)
<rootMetricsPrefix><samplerName>.ok.min sampler響應成功的最短響應時間
<rootMetricsPrefix><samplerName>.ok.max sampler響應成功的最長響應時間
<rootMetricsPrefix><samplerName>.ok.avg sampler響應成功的平均響應時間
<rootMetricsPrefix><samplerName>.ok.pct<percentileValue> sampler響應成功的所佔百分比
<rootMetricsPrefix><samplerName>.ko.count sampler的失敗響應數
<rootMetricsPrefix><samplerName>.ko.min sampler響應失敗的最短響應時間
<rootMetricsPrefix><samplerName>.ko.max sampler響應失敗的最長響應時間
<rootMetricsPrefix><samplerName>.ko.avg sampler響應失敗的平均響應時間
<rootMetricsPrefix><samplerName>.ko.pct<percentileValue> sampler響應失敗的所佔百分比
<rootMetricsPrefix><samplerName>.a.count sampler響應數(ok.count+ko.count)
<rootMetricsPrefix><samplerName>.sb.bytes 已發送位元組
<rootMetricsPrefix><samplerName>.rb.bytes 已接收位元組
<rootMetricsPrefix><samplerName>.a.min sampler響應的最短響應時間 (ok.count和ko.count的最小值)
<rootMetricsPrefix><samplerName>.a.max sampler響應的最長響應時間 (ok.count和ko.count的最大值)
<rootMetricsPrefix><samplerName>.a.avg sampler響應的平均響應時間 (ok.count和ko.count的平均值)
<rootMetricsPrefix><samplerName>.a.pct<percentileValue> sampler響應的百分比(根據成功和失敗的總數來計算)

InfluxDBBackendListenerClient監聽

界面配置

配置方式一樣,只是選擇不同的監聽方式而已,直接上圖,配置也如下圖所示:

每個配置項的含義如下:

  • influxdbUrl:安裝influxdb的路徑;主要格式://主機地址:8086/write?db=數據庫名
  • application:應用名稱;在 events 表中對應的字段是 application
  • measurement:表名;數據存儲到哪個表,默認是jmeter,不用改即可
  • summaryOnly:當你線程組有多個請求又想知道每個請求的結果數據時,最好填false,因為true只會返回所有請求的集合數據報告,不會輸出每條請求的數據報告
  • samplersRegex:取樣器列表;想收集哪些請求就填哪些,最好用正則去匹配
  • percentiles:百分比;即類似聚合報告里90% Line,95% Line,99% Line的數據;倘若想要99.9時,需要寫成【99_9】,用下劃線代替點
  • testTitle:測試名稱;在 events 表中對應的字段是 text ,JMeter在測試的開始和結束時自動生成注釋,該注釋的值以’started’和’ended’結尾
  • eventTags:Grafana允許為每個注釋顯示標籤;在 events 表中對應的字段是 tags

運行腳本

我們還是用客戶端工具查看,這次只生成了2張表,分別是:eventsjmeter。如下所示:

表作用

events表:用於存儲事件的

jmeter表:存儲測試結果數據,Grafana也是從這個表獲取數據再展示

在講配置項含義解釋時,application和testTitle對應數據表中對應的字段,我們查詢events表數據,如下所示:

application默認為jmeter;testTitle對應的是text,落的數據值為Test name started/Test name ended,Test name就是我們在界面配置的名稱;time字段的時間差,就是腳本的運行時間了。

jmeter面板中也看出的確只運行了1s,如下所示:

JmeterInfluxDBBackendListenerClient監聽

這種方式是在查詢Grafana監控模板時找到的,這次博文先不講Grafana的監控指標的配置,先把腳本監聽方式講完。

Grafana官網介紹如下:

插件引用

下載插件

插件下載地址,下載對應的jar包即可。

jmeter配置

將下載的插件放到Jmeter的/lib/ext目錄下,如果jmeter是啟用的,則需要重新啟動下才能生效;jmeter沒啟用的情況下,則不需要。

界面配置

配置方式一樣,只是選擇不同的監聽方式而已,引入插件後,就多了兩種監聽方式,我們選擇JmeterInfluxDBBackendListenerClient,配置如下圖所示:

每個配置項的含義如下:

  • testName:測試名稱;在 testStartEnd 表中對應的字段是 testName
  • nodeName:節點名稱;在 testStartEnd 表中對應的字段是 nodeName
  • influxDBHost:InfluxDB安裝的服務器ip
  • influxDBPort:端口;influxDB端口,默認是8086,不用改即可
  • influxDBUser:數據庫用戶名
  • influxDBPassword:數據庫密碼
  • influxDBDatabase:數據庫名稱,我們之前配置的數據庫是jmeter,所以填入即可
  • retentionPolicy :默認即可
  • samplersList:取樣器列表;想收集哪些請求就填哪些,最好用正則去匹配
  • useRegexForSamplerList:是否使用正則;如果true則使用,samplersList里可以匹配正則表達式

運行腳本

按自己所需配置完成後,運行腳本,我們通過客戶端查看數據,生成如下三張表:

requestsRaw表

主要是存儲請求信息數據,包含:請求時間,請求名稱,線程名稱等信息。如下所示:

testStartEnd表

主要是用於存儲事件信息,如下所示:

virtualUsers表

存儲線程相關信息,如下所示:

腳本生成數據的方式,就介紹到這了,離最終效果圖只差一步了喲。今天介紹了三種方式,配置Grafana監控面板時,也對應有三種模板,下期再來細說。