在上一篇博文中,主要是講了InfluxDB的配置,博文鏈接:https://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安裝的服務器ipgraphitePort
:端口;默認就是2003。ps:除非你自己安裝InfluxDB時設置了其他端口。按自己的實際端口配置即可rootMetricsPrefix
:指標的根前綴;將測試結果存入數據庫時,不同指標會生成不同表summaryOnly
:當你線程組有多個請求又想知道每個請求的結果數據時,最好填false,因為true只會返回所有請求的集合數據報告,不會輸出每條請求的數據報告samplersList
:取樣器列表;想收集哪些請求就填哪些,最好用正則去匹配useRegexpForSamplersList
:是否使用正則;如果true則使用,samplersList里可以匹配正則表達式percentiles
:百分比;即類似聚合報告里90% Line,95% Line,99% Line的數據;倘若想要99.9時,需要寫成【99_9】,用下划線代替點
運行腳本
運行腳本,運行沒報錯,便會產生數據了,可以通過服務器客戶端查看,或者上篇博文中介紹的客戶端工具查詢。查詢數據如下所示:
通過查詢數據發現,總共會生成三種前綴的表,分別是:jmeter.請求名稱
、jmeter.all
、jmeter.test
。通過數據可以看到,請求數據都是整齊划一的以jmeter.開頭,是因為我們剛才配置的時候,設置的是jmeter.;如果你配置成其他,那就會以自定義的前綴生成數據了。
- 前綴說明
jmeter.all :代表了所有請求;當summaryOnly=true時,就只有samplerName=all的表了
jmeter.請求名稱 :如圖所示,HTTP請求的名字是HTTP Request 溫一壺清酒 appium
jmeter.test :線程組設置相關的指標數據
參數指標
參數指標說明,在jmeter官網有介紹,地址是:https://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的路徑;主要格式:http://主機地址:8086/write?db=數據庫名application
:應用名稱;在 events 表中對應的字段是 applicationmeasurement
:表名;數據存儲到哪個表,默認是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張表,分別是:events
和 jmeter
。如下所示:
表作用
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 表中對應的字段是 testNamenodeName
:節點名稱;在 testStartEnd 表中對應的字段是 nodeNameinfluxDBHost
:InfluxDB安裝的服務器ipinfluxDBPort
:端口;influxDB端口,默認是8086,不用改即可influxDBUser
:數據庫用戶名influxDBPassword
:數據庫密碼influxDBDatabase
:數據庫名稱,我們之前配置的數據庫是jmeter,所以填入即可retentionPolicy
:默認即可samplersList
:取樣器列表;想收集哪些請求就填哪些,最好用正則去匹配useRegexForSamplerList
:是否使用正則;如果true則使用,samplersList里可以匹配正則表達式
運行腳本
按自己所需配置完成后,運行腳本,我們通過客戶端查看數據,生成如下三張表:
requestsRaw表
主要是存儲請求信息數據,包含:請求時間,請求名稱,線程名稱等信息。如下所示:
testStartEnd表
主要是用於存儲事件信息,如下所示:
virtualUsers表
存儲線程相關信息,如下所示:
腳本生成數據的方式,就介紹到這了,離最終效果圖只差一步了喲。今天介紹了三種方式,配置Grafana監控面板時,也對應有三種模板,下期再來細說。