Jmeter + Grafana + InfluxDB 性能測試監控


閱讀目錄

1. 安裝InfluxDB

2. 安裝Grafana

3. 配置Jmeter

 

序章

        前幾天在群里看到大神們在討論Jmeter + InfluxDB + Grafana監控。說起來Jmeter原生的監控確實太丑了。當年不斷安慰自己說“丑一點沒關系,只要能用,好用,就行了!”。但是內心並不是這樣,做為一名測試人員,都有一顆精益求精的心。看到有東西可以替代那原生的監控數據,果斷親自動手部署了一套。

12

        是吧,很帥吧!數據是用InfluxDB來存儲的,展示則是用Grafana來展示的

        InfluxDB是一個年輕的時序數據庫,是用同樣很年輕的語言“GO”開發出來的。小數據量的時候還性能還不錯,但是數據量大一點,性能問題就體現出來了。不過只是收集一下我幾個小時測試的數據,還是足夠了。要是幾個月的測試數據那還是挑別的數據庫吧。

        Grafana是純粹用js編寫出來的,專門用來展示數據用的。

        基本上,就是Jmeter通過“Backend Listener”,將測試的數據上傳到我的虛擬機上,通過InfluxDB來存儲,Grafana來展示出來。我們訪問web,稍微配置一下,就可以看到展示的數據了。

    我的InfluxDB和Grafana都是部署在一台Linux虛擬機下面的。

 
 
 
         
虛擬機 --- IP 192.168.245.131

 

1. 安裝InfluxDB

新建InfluxDB下載源

 
 
 
         
cat << EOF | 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

 

使用yum下載InfluxDB

 
 
 
         
yum install -y influxdb

 

修改InfluxDB的配置,主要配置jmeter存儲的數據庫與端口號,還有需要將UI端口開放

 
 
 
         
[root@localhost ~]# vi /etc/influxdb/influxdb.conf
 
# 找到graphite並且修改它的庫與端口
[[graphite]]
  enabled = true
  database = "jmeter"
  bind-address = ":2003"
  protocol = "tcp"
  consistency-level = "one"
 
# 找到admin,將前面的#號去掉,開放它的UI端口

[admin]
  # Determines whether the admin service is enabled.
  enabled = true

  # The default bind address used by the admin service.
  bind-address = ":8083"

  # Whether the admin service should use HTTPS.
  # https-enabled = false

  # The SSL certificate used when HTTPS is enabled.
  # https-certificate = "/etc/ssl/influxdb.pem

 

啟動InfluxDB

 
 
 
         
[root@localhost ~]# /etc/init.d/influxdb restart
Stopping influxdb...
influxdb process was stopped [ OK ]
Starting influxdb...
influxdb process was started [ OK ]

 

打開瀏覽器,訪問虛擬機IP“http://192.168.245.131:8083”

如果啟動成功應該會InfluxDB的web ui界面。查看有沒有jmeter庫,沒有就新建一個。

在輸入框中,輸入如下,來新建庫:

 
 
 
         
CREATE DATABASE "jmeter"

8083

 

2. 安裝Grafana

使用yum下載Grafana並且安裝

 
 
 
         
yum install https://grafanarel.s3.amazonaws.com/builds/grafana-3.0.1-1.x86_64.rpm

 

啟動Grafana

 
 
 
         
[root@localhost ~]# /etc/init.d/grafana-server restart
OKopping Grafana Server ...                                [  OK  ]
Starting Grafana Server: .... OK

 

打開瀏覽器,訪問虛擬機IP“http://192.168.245.131:3000”

grafana

 

輸入用戶名,密碼登錄系統。用戶名與密碼都是"admin"

login

 

添加需要展示數據的數據庫

addData

 

添加InfluxDB數據庫配置。輸入帳號密碼“admin / admin”,點擊Test & Save 提示“Success”說明成功了

【注意】URL的端口是8086,而剛才配置的8083是UI的端口。

    - 8083端口是InfluxDB的UI界面展示的端口

    - 8086端口是Grafana用來從數據庫取數據的端口

    - 2003端口則是剛剛設置的,Jmeter往數據庫發數據的端口

dataSources

 

3. 配置Jmeter

1. jmeter中,添加“監聽器 -> Backend Listener”

jConfig

2. 配置“Backend Listener”,主要配置Host,如下圖

BackendListener

3. 添加一個Java請求,方便測試。(因為想偷懶,Java請求我什么都不用寫,直接運行就能成功) sJava

4. 添加“監聽器 -> 查看結果樹” 運行一下Jmeter,主要看Java請求是否發送出去了

send


沒有什么問題,這個時候訪問InfluxDB“http://192.168.245.131:8083”, 在輸入框中輸入如下,點擊回車:

# 可以使用這個,這個是查詢所有表,顯示1條記錄
 
 
 
         
select * from /.*/ limit 1
 
# 也可以使用這個,這個是顯示所有表
show measurements

點擊回車后,就應該有數據了,會出現下圖:

inf

這個時候再回來配置Grafana,來展示這些數據

 

添加一個展示項目

點擊“Home -> New”

new

 

添加一個圖表

點擊旁邊的綠點“Add Panel -> Graph”

addGraph

 

配置圖表

配置好了,就能看到圖了。如果看不到圖,請用Jmeter多發幾次Java請求。下圖中選擇監控的選項,可以在Jmeter的官網上查看到對應的解釋。

graphConfig

 

大致介紹幾種我常用的監控。

名稱 描述
jmeter.all.h.count 所有請求的TPS
jmeter.<請求名稱>.h.count 對應<請求名稱>的TPS
jmeter.all.ok.pct99 99%的請求響應時間
jmeter.<請求名稱>.ok.pct99 對應<請求名稱>99%的請求響應時間
jmeter.all.test.startedT 線程數

 

【注意】如果要監控<請求名稱>的話,Jmeter上的“Backend Listener”修改如下參數

1. 將“summanyOnly”修改成False,

2. 將“userRegexpForSamplersList”修改成True,

3. 並且要設置“samplersList”的值,“samplersList”是可以支持正則表達式的,“samplersList”的設置要與請求對應,否則找不到該請求。如圖

image

 

設置好了,運行一下,在Grafana里面,就可以看到自己的請求了。

image_thumb

 

如果想要了解這些監控都代表什么意思,可以訪問Jmeter的官網地址去查看閱讀“http://jmeter.apache.org/usermanual/realtime-results.html

 

最后來一張帥氣的圖:


免責聲明!

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



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