JMeter性能監控系統:Jmeter + InfluxDB + Grafana



JMeter性能測試完成后,可以查看性能報告(參考 JMeter性能測試:JMeter多用戶並發模擬及壓測結果分析),如果想查看實時的性能,可以搭建一個性能監控平台。本文介紹如何搭建JMeter性能測試的性能監控系統。

性能監控系統

JMeter性能測試報告呈現的數據是某個時間段內的平均值,而性能監控平台可以實時的查看性能數據,而且有非常友好的圖形界面。

JMeter性能監控平台組成

  • JMeter:性能測試工具,產生壓測數據。官網地址:https://jmeter.apache.org/
  • InfluxDB:一種開源分布式時序數據庫,使用Go語言開發,廣泛應用於處理和分析資源監控數據,用於存儲壓測數據。官網地址:https://grafana.com/
  • Grafana:開源的度量分析與可視化工具,有非常漂亮的圖表展示功能、齊全的度量儀表盤和圖形編輯器,支持不用種類的數據源(比如InfluxDB和Prometheus),用於將存儲於 InfluxDB中的數據以圖表的形式展示出來。官網地址:https://grafana.com/

JMeter安裝

參考:JMeter性能測試: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
> 
--THE END--

文章標題:JMeter性能監控系統:Jmeter + InfluxDB + Grafana
本文作者:hiyo
本文鏈接:https://www.cnblogs.com/hiyong/p/14471529.html
歡迎關注公眾號:「測試開發小記」及時接收最新技術文章!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM