效能測試監控工具--Jmeter + Grafana + InfluxDB
JMeter執行完壓測指令碼後,會自動生成html格式的測試報告,之前我也是一直用這種形式看報告。看到InfluxDB + Grafana展示的測試報告後,忍不住想嘗試下。
而且用JMeter自帶的報告,有時會生成報告失敗,需要再重跑壓測指令碼,而且生成的html報告也會佔用較多時間,使用Grafana+InfluxDB避免了這個問題。
先上個報告模板對比圖:
JMeter自動生成的HTML報告 :
Grafana儀表盤展示的測試報告:
Grafana的報告是不是很炫酷?那就開始搞起!
先大概梳理下報告展示原理:見下圖,JMeter本身有個監聽器叫“Backend Listener”,這個監聽器可以將jmeter統計的TPS、響應時間、錯誤率等資料非同步傳送到InfluxDB資料庫中;而Grafana是一個視覺化展示工具,可以從InfluxDB中獲取資料進行展示。
接下來就是安裝InfluxDB和Grafana,前提條件:InfluxDB和Grafana部署的伺服器網路要通, JMeter部署到的機器和InfuxDB伺服器網路要通。
我是將InfuxDB、Grafana部署在了同一臺Linux伺服器上,JMeter安裝在Windows機上。
1)安裝InfluxDB
InfluxDB官網有詳細的安裝文件,根據伺服器的系統選擇對應的安裝方式,我的伺服器是CentOS,所以進行如下安裝。
Tips:最新的2.0版本更新了資料互動方式,我選擇了1.8版本。
先將InfluxDB版本匯入到yum manager中,然後用yum install直接安裝,啟動服務即可。
cat <<EOF | sudo tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF
sudo yum install influxdb
sudo service influxdb start
InfluxDB可以通過http協議方式和JMeter、Grafana通訊,預設的埠號8086,如果想修改埠號和其它配置,可修改其配置檔案,配置檔案:/etc/influxdb/influxdb.conf。
網上也有一些說是可以修改一些配置在web端訪問InfluxDB,不過我試了下高版本的沒辦法通過web訪問。
InfluxDB部署的伺服器IP:XXX.XXX.XX.XX,後面會用到。
服務啟動成功後,可以使用了。直接輸入influx,進入到資料庫中,可以檢視下當前有哪些庫和表。
預設是隻顯示一個_internal,我們可以新建一個database,比如jmeter。
create database jmeter
show databases
ok,那這個jmeter資料庫就可以作為jmeter監控指標輸出庫,先記下,後面會用到。
InfluxDB官網安裝文件: https://docs.influxdata.com/influxdb/v1.8/introduction/install/
2)部署Grafana
Grafana的安裝比較簡單了,去官網選擇對應伺服器系統的安裝方式,還是CentOS,服務和InfluxDB為同一臺。
wget https://dl.grafana.com/oss/release/grafana-7.3.6-1.x86_64.rpm
sudo yum install grafana-7.3.6-1.x86_64.rpm
安裝成功後,啟動Grafana。
sudo service grafana-server start
Grafana預設的http埠號是3000,由於之前我在這臺伺服器部署了別的服務,佔用了3000。 所以修改Grafana的配置檔案,將埠號修改為3001,儲存後,就可以通過瀏覽器訪問Grafana啦。
訪問 http://XXX.XXX.XX.XX:3001,如果出現登入頁面就說明部署沒問題啦。 預設賬號密碼都是admin,可以修改。
Grafana官網:https://grafana.com/grafana/download?platform=linux
3)配置Grafana
開篇說了展示邏輯,Grafana需要從InfluxDB取資料展示,所以我們先來配置資料庫。登入進去後,點選“Configuration→Data Source”,新增剛才建立的jmeter資料庫。
新增資料庫型別選擇“InfluxDB”,"URL"填寫InfluxDB所在的伺服器連線地址,上面已經說了部署在了XXX.XXX.XX.XX這臺伺服器,InfluxDB預設http通訊埠為8086,所以URL配置為:http://XXX.XXX.XX.XX:8086。
當然,因為我們的Grafana和InfluxDB部署在同一臺伺服器,也可以配置為:http://localhost:8086。
點選“Save&Test”,如果提示“Data source is working”,說明配置資料庫成功。
接下來還需要新增一個Dashboard,用來展示JMeter的測試報告。點選“Dashboards → Manager”,這裡可以使用官方提供模板,匯入ID為5496的模板,
點選“load”後,會自動獲取模板名稱,DBname我們選擇InfluxDB,measurement name輸入jmeter,就是剛才我們建立的資料庫。
因為我已經新增過這個dashboard,所有會提示是不是要覆蓋,如果你是第一次新增,不會出現下圖的紅色文字。
最後點選下方的“load”後,就成功新增dashboard了,這時候就可以展示出來了,只是此時jmeter資料庫中還沒有資料。
4)配置JMeter,在Grafana中展示測試報告
一開始說了JMeter自帶的Backend Listener可以將資料傳送到InfluxDB,所以我們在Jmeter的壓測指令碼中,新增這個監聽器,並且配置對應引數就可以了。
influxurl:就是InfluxDB的通訊地址,還記得上面的配置嗎?IP是XXX.XXX.XX.XX,它的http預設通訊埠為8086,我們建立的資料庫名稱為jmeter,所以配置為 http://XXX.XXX.XX.XX:8086/write?db=jmeter。
application:我理解的這個是用來標識不同的job的,在Grafana選擇展示的儀表盤時會用到。
measurement:是InfluxDB的語法,代表資料庫表的意思。我們建立的是jmeter。
Summaryonly:我選擇了false,這樣在Grafana裡不僅會展示這個測試計劃的概括報告,還會展示每個事務的TPS,響應時間和錯誤率資訊。
至此,Backend Listener就配置好了。
我們把指令碼除錯通,配置上執行緒數(壓測量),執行指令碼。壓測時一般不在GUI 模式下,我們可以使用命令列執行 jmeter -n -l [壓測指令碼路徑]。執行完畢後,我們可以先去伺服器上查詢下jmeter資料庫表中的資料。
#influx
> use jmeter
> select * from jmeter
如果是加了n個執行緒組,那麼資料庫表中就會有n條資料。這說明JMeter通過監聽器已經將資料傳送到了InfluxDB中了,接下來我們在Grafana中我們新增的Dashboard中檢視測試結果啦。
這裡可以看到我們想要的效能引數,TPS,響應時間、錯誤率等。我們也可以點選“share”將報告儲存下來,儲存的是個連結地址。下次檢視可直接訪問該連結。
application為test01,就是剛才在JMeter中配置的。如果有多個測試計劃,可以用不同的application標誌。
可以點選每項,放大顯示。
執行完壓測指令碼後,Grafana裡不會立刻展示測試報告,需要等幾分鐘,然後我們可以重新整理檢視。
效能測試過程中,我們需要不斷的加執行緒數來找到系統的最大併發量,每設定一次執行緒組執行一次,會往InfluxDB寫入資料,而Grafana會展示該measurement裡所有的資料。
所以,我覺得可以先建立多個measurement,不同的測試計劃寫入到不同的表中,在Grafana中建立多個dashboard選擇不同的measurement展示測試報告。
相關文章
- Jmeter監控平臺搭建:JMeter+InfluxDB+GrafanaJMeterUXGrafana
- Docker系列——InfluxDB+Grafana+Jmeter效能監控平臺搭建(三)DockerUXGrafanaJMeter
- Docker系列——InfluxDB+Grafana+Jmeter效能監控平臺搭建(二)DockerUXGrafanaJMeter
- jmeter+influxdb+grafana監控平臺搭建JMeterUXGrafana
- Docker 快速實現 【JMeter + InfluxDB + Grafana】 監控方案DockerJMeterUXGrafana
- 藉助Docker搭建JMeter+Grafana+Influxdb監控平臺DockerJMeterGrafanaUX
- 效能測試之JVM的監控GrafanaJVMGrafana
- 效能測試之資料庫監控分析工具Grafana+Prometheus資料庫GrafanaPrometheus
- JMeter+InfluxDB+GrafanaJMeterUXGrafana
- [效能測試+資料採集展示分析+告警策略]Jmeter+Collectd+Influxdb+GrafanaJMeterUXGrafana
- 搭建jmeter+influxdb+grafana壓測實時監控平臺(超詳細,小白適用)JMeterUXGrafana
- Jmeter效能測試 —— jmeter之使用ServerAgent監控伺服器JMeterServer伺服器
- Jmeter+Influxdb+Grafana搭建JMeterUXGrafana
- 效能監控工具之Grafana+Prometheus+ExportersGrafanaPrometheusExport
- 使用cAdvisor+Influxdb+Grafana監控系統UXGrafana
- [docker][influxdb][grafana][jmeter] 配置 jmeter 資料至 grafana 展示DockerUXGrafanaJMeter
- Telegraf+Influxdb+Grafana構建監控平臺UXGrafana
- Locust+InfluxDB+Grafana 效能測試資料視覺化展示UXGrafana視覺化
- 最強效能監控工具之Grafana+Prometheus+ExportersGrafanaPrometheusExport
- Telegraf+Influxdb+Grafana自動化運維監控UXGrafana運維
- Jmeter系列(38)- 詳解效能監控工具 nmonJMeter
- 利用Grafana監控influxdb表中資料有效性GrafanaUX
- InfluxDB、Grafana等開源軟體的監控後門UXGrafana
- 測試開發技能:JMeter高階教程——效能測試與自動化雲監控JMeter
- 效能測試之Docker監控Docker
- JMeter效能測試工具使用入門JMeter
- 效能測試之資料庫監控分析工具PMM資料庫
- JMeter效能測試JMeter
- Jmeter介面測試+效能測試JMeter
- 效能測試 -- docker安裝influxdbDockerUX
- Linux 效能監控工具Linux
- Kubernetes監控之InfluxDBUX
- jmeter之效能測試JMeter
- jmeter做效能測試JMeter
- locust+influxdb+grafana 實現自定義測試報告UXGrafana測試報告
- 通過 Telegraf + InfluxDB + Grafana 快速搭建監控體系的詳細步驟UXGrafana
- Jmeter(四十九)_常用的效能測試監聽器JMeter
- 效能測試工具 jmeter 原始碼剖析:jmeter 分散式壓測啟動過程JMeter原始碼分散式