JMeter性能測試完成后,可以查看性能報告(參考 JMeter性能測試:JMeter多用戶並發模擬及壓測結果分析),如果想查看實時的性能,可以搭建一個性能監控平台。本文介紹如何搭建JMeter性能測試的性能監控系統。
性能監控系統
JMeter性能測試報告呈現的數據是某個時間段內的平均值,而性能監控平台可以實時的查看性能數據,而且有非常友好的圖形界面。
JMeter性能監控平台組成
- JMeter:性能測試工具,產生壓測數據。官網地址:https://jmeter.apache.org/
- InfluxDB:一種開源分布式時序數據庫,使用Go語言開發,廣泛應用於處理和分析資源監控數據,用於存儲壓測數據。官網地址:https://grafana.com/
- Grafana:開源的度量分析與可視化工具,有非常漂亮的圖表展示功能、齊全的度量儀表盤和圖形編輯器,支持不用種類的數據源(比如InfluxDB和Prometheus),用於將存儲於 InfluxDB中的數據以圖表的形式展示出來。官網地址:https://grafana.com/
JMeter安裝
InfluxDB安裝
GitHub倉庫地址:https://github.com/influxdata/influxdb
下載地址:https://portal.influxdata.com/downloads/
參考文檔:https://docs.influxdata.com/influxdb/v2.0/get-started/
docker安裝:https://hub.docker.com/_/influxdb
拉取influxDB鏡像:
$ docker pull influxdb
Grafana安裝
官方文檔:https://grafana.com/docs/grafana/latest/
Grafana dockerhub地址:https://hub.docker.com/r/grafana/grafana
拉取鏡像:
$ docker pull grafana/grafana
查看鏡像是否安裝成功:
[root@server ~]# docker images | egrep 'grafana|influxdb'
grafana/grafana latest 13afb861111c 6 weeks ago 187MB
influxdb latest 0454d5d215cc 6 weeks ago 307MB
[root@server ~]#
性能監控平台部署
部署 InfluxDB
1. 新建容器網絡
$ docker network create grafana
2. 運行容器
[root@server ~]# docker run -d -p 8086:8086 --name=influxdb --network=grafana -v ${PWD}/influxdb/:/var/lib/influxdb/ influxdb:latest
aa079b4c24cfc95735613dc642c7d60064cf6c6e6c37ab561721de5825368c90
3. 創建數據庫
第一種方式 : HTTP請求方式
$ curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE jmeter"
第二種方式:進入 influxdb容器終端創建
[root@server ~]# docker exec -it influxdb influx
Connected to http://localhost:8086 version 1.8.3
InfluxDB shell version: 1.8.3
> show databases;
name: databases
name
----
_internal
> create database jmeter;
>
> show databases;
name: databases
name
----
_internal
jmeter
> exit
[root@server ~]#
部署 Grafana
1. 運行容器
[root@server ~]# docker run -d -p 3000:3000 --name=grafana --network=grafana grafana/grafana:latest
4a329f916f3182a5a742d921d1ed438ba837f57ab3955a45ff34c8e45ce236c5
[root@server ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4a329f916f31 grafana/grafana:latest "/run.sh" 37 seconds ago Up 32 seconds 0.0.0.0:3000->3000/tcp grafana
aa079b4c24cf influxdb:latest "/entrypoint.sh infl…" 19 minutes ago Up 19 minutes 0.0.0.0:8086->8086/tcp influxdb
2. 登錄Grafana
瀏覽器輸入URL:http://192.168.30.8:3000/
其中192.168.30.8為我的服務器地址(部署Grafana的地址),用戶名和密碼為admin
進入首頁
3. 配置數據源
點擊Configuration -> Data Sources -> Add data source 選擇InfluxDB
配置數據源:
1)URL設置為: http://influxdb:8086 :容器名為influxdb,也可以使用容器的IP地址,查看IP地址方法:
[root@haiyong ~]# docker exec -it influxdb sh
# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.18.0.2 aa079b4c24cf
# exit
[root@haiyong ~]#
或者使用 docker inspect influxdb
命令查看
2)Database為 jmeter
3)Min time interval: 5
設置完成后,點擊Save&Test,提示數據源設置成功
4. 選擇顯示面板
顯示面板可以自己開發,也可以使用其他開發好的面板,在https://grafana.com/grafana/dashboards 中搜索選擇。我使用的是:https://grafana.com/grafana/dashboards/5496
點擊Dashboards -> Manage -> Import
輸入jmeter dashboard url,點擊load,配置DB name、Measurement name和Backend send interval
點擊Import
好了,InfluxDB和Grafana都配置成功了,下面配置JMeter進行壓測
JMeter性能監控
在JMeter創建壓測任務,創建方法可參考:JMeter性能測試:JMeter多用戶並發模擬及壓測結果分析
JMeter配置監聽器
添加Backend Listener,Backend Listener的作用是將壓測數據傳到 InfluxDB中,JMeter支持 InfluxDB和Graphite數據庫
Thread Group -> Add -> Listenter -> Backend Listener
Backend Listener應用選擇InfluxDB
- 配置influxdbUrl:http://192.168.30.8:8086/write?db=jmeter
- application名設置為test666
- measurement名設置為jmeter
- summaryOnly:如果設置為false,在Grafana面板里面的Errors會顯示錯誤的請求信息
配置Grafana
application名和JMeter上設置相同的名稱,設置刷新時間為5s
JMeter運行壓測
查看InfluxDB數據庫
壓測數據存到了InfluxDB數據庫里面,Grafana顯示的就是這里面的數據。
[root@server ~]# docker exec -it influxdb influx
Connected to http://localhost:8086 version 1.8.3
InfluxDB shell version: 1.8.3
>
>
> use jmeter;
Using database jmeter
> select * from jmeter limit 3;
name: jmeter
time application avg count countError endedT hit max maxAT meanAT min minAT pct90.0 pct95.0 pct99.0 rb responseCode responseMessage sb startedT statut transaction
---- ----------- --- ----- ---------- ------ --- --- ----- ------ --- ----- ------- ------- ------- -- ------------ --------------- -- -------- ------ -----------
1614435482883000000 test666 0 0 0 0 0 internal
1614435483240000000 test666 0 0 0 0 1 internal
1614435485281000000 test666 0 0 0 0 1 internal
>
> select * from events;
name: events
time application text title
---- ----------- ---- -----
1614437117192000000 test666 test started ApacheJMeter
1614437488496000000 test666 test ended ApacheJMeter
1614437552834000000 test666 test started ApacheJMeter
1614437566732000000 test666 test ended ApacheJMeter
1614437586119000000 test666 test started ApacheJMeter
1614437722290000000 test666 test ended ApacheJMeter
>
文章標題:JMeter性能監控系統:Jmeter + InfluxDB + Grafana
本文作者:hiyo
本文鏈接:https://www.cnblogs.com/hiyong/p/14471529.html
歡迎關注公眾號:「測試開發小記」及時接收最新技術文章!