Jmeter + Grafana + InfluxDB 性能测试监控
閱讀目錄
1. 安裝InfluxDB
2. 安裝Grafana
3. 配置Jmeter
?
序章
??????? 前幾天在群里看到大神們?cè)谟懻揓meter + InfluxDB + Grafana監(jiān)控。說(shuō)起來(lái)Jmeter原生的監(jiān)控確實(shí)太丑了。當(dāng)年不斷安慰自己說(shuō)“丑一點(diǎn)沒(méi)關(guān)系,只要能用,好用,就行了!”。但是內(nèi)心并不是這樣,做為一名測(cè)試人員,都有一顆精益求精的心。看到有東西可以替代那原生的監(jiān)控?cái)?shù)據(jù),果斷親自動(dòng)手部署了一套。
??????? 是吧,很帥吧!數(shù)據(jù)是用InfluxDB來(lái)存儲(chǔ)的,展示則是用Grafana來(lái)展示的
??????? InfluxDB是一個(gè)年輕的時(shí)序數(shù)據(jù)庫(kù),是用同樣很年輕的語(yǔ)言“GO”開(kāi)發(fā)出來(lái)的。小數(shù)據(jù)量的時(shí)候還性能還不錯(cuò),但是數(shù)據(jù)量大一點(diǎn),性能問(wèn)題就體現(xiàn)出來(lái)了。不過(guò)只是收集一下我?guī)讉€(gè)小時(shí)測(cè)試的數(shù)據(jù),還是足夠了。要是幾個(gè)月的測(cè)試數(shù)據(jù)那還是挑別的數(shù)據(jù)庫(kù)吧。
??????? Grafana是純粹用js編寫(xiě)出來(lái)的,專門(mén)用來(lái)展示數(shù)據(jù)用的。
??????? 基本上,就是Jmeter通過(guò)“Backend Listener”,將測(cè)試的數(shù)據(jù)上傳到我的虛擬機(jī)上,通過(guò)InfluxDB來(lái)存儲(chǔ),Grafana來(lái)展示出來(lái)。我們?cè)L問(wèn)web,稍微配置一下,就可以看到展示的數(shù)據(jù)了。
??? 我的InfluxDB和Grafana都是部署在一臺(tái)Linux虛擬機(jī)下面的。
虛擬機(jī) --- 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存儲(chǔ)的數(shù)據(jù)庫(kù)與端口號(hào),還有需要將UI端口開(kāi)放
[root@localhost ~]# vi /etc/influxdb/influxdb.conf ? # 找到graphite并且修改它的庫(kù)與端口 [[graphite]] ? enabled = true ? database = "jmeter" ? bind-address = ":2003" ? protocol = "tcp" ? consistency-level = "one" ? # 找到admin,將前面的#號(hào)去掉,開(kāi)放它的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
?
啟動(dòng)InfluxDB
[root@localhost ~]# /etc/init.d/influxdb restart Stopping influxdb... influxdb process was stopped [ OK ] Starting influxdb... influxdb process was started [ OK ]?
打開(kāi)瀏覽器,訪問(wèn)虛擬機(jī)IP“http://192.168.245.131:8083”
如果啟動(dòng)成功應(yīng)該會(huì)InfluxDB的web ui界面。查看有沒(méi)有jmeter庫(kù),沒(méi)有就新建一個(gè)。
在輸入框中,輸入如下,來(lái)新建庫(kù):
CREATE DATABASE "jmeter"?
2. 安裝Grafana
使用yum下載Grafana并且安裝
yum install https://grafanarel.s3.amazonaws.com/builds/grafana-3.0.1-1.x86_64.rpm?
啟動(dòng)Grafana
[root@localhost ~]# /etc/init.d/grafana-server restart OKopping Grafana Server ...??????????????????????????????? [? OK? ] Starting Grafana Server: .... OK?
打開(kāi)瀏覽器,訪問(wèn)虛擬機(jī)IP“http://192.168.245.131:3000”
?
輸入用戶名,密碼登錄系統(tǒng)。用戶名與密碼都是"admin"
?
添加需要展示數(shù)據(jù)的數(shù)據(jù)庫(kù)
?
添加InfluxDB數(shù)據(jù)庫(kù)配置。輸入帳號(hào)密碼“admin / admin”,點(diǎn)擊Test & Save 提示“Success”說(shuō)明成功了
【注意】URL的端口是8086,而剛才配置的8083是UI的端口。
??? - 8083端口是InfluxDB的UI界面展示的端口
??? - 8086端口是Grafana用來(lái)從數(shù)據(jù)庫(kù)取數(shù)據(jù)的端口
??? - 2003端口則是剛剛設(shè)置的,Jmeter往數(shù)據(jù)庫(kù)發(fā)數(shù)據(jù)的端口
?
3. 配置Jmeter
1. jmeter中,添加“監(jiān)聽(tīng)器 -> Backend Listener”
2. 配置“Backend Listener”,主要配置Host,如下圖
3. 添加一個(gè)Java請(qǐng)求,方便測(cè)試。(因?yàn)橄胪祽?#xff0c;Java請(qǐng)求我什么都不用寫(xiě),直接運(yùn)行就能成功)?
4. 添加“監(jiān)聽(tīng)器 -> 查看結(jié)果樹(shù)” 運(yùn)行一下Jmeter,主要看Java請(qǐng)求是否發(fā)送出去了
沒(méi)有什么問(wèn)題,這個(gè)時(shí)候訪問(wèn)InfluxDB“http://192.168.245.131:8083”,?在輸入框中輸入如下,點(diǎn)擊回車(chē):
點(diǎn)擊回車(chē)后,就應(yīng)該有數(shù)據(jù)了,會(huì)出現(xiàn)下圖:
這個(gè)時(shí)候再回來(lái)配置Grafana,來(lái)展示這些數(shù)據(jù)
?
添加一個(gè)展示項(xiàng)目
點(diǎn)擊“Home -> New”
?
添加一個(gè)圖表
點(diǎn)擊旁邊的綠點(diǎn)“Add Panel -> Graph”
?
配置圖表
配置好了,就能看到圖了。如果看不到圖,請(qǐng)用Jmeter多發(fā)幾次Java請(qǐng)求。下圖中選擇監(jiān)控的選項(xiàng),可以在Jmeter的官網(wǎng)上查看到對(duì)應(yīng)的解釋。
?
大致介紹幾種我常用的監(jiān)控。
| 名稱 | 描述 |
| jmeter.all.h.count | 所有請(qǐng)求的TPS |
| jmeter.<請(qǐng)求名稱>.h.count | 對(duì)應(yīng)<請(qǐng)求名稱>的TPS |
| jmeter.all.ok.pct99 | 99%的請(qǐng)求響應(yīng)時(shí)間 |
| jmeter.<請(qǐng)求名稱>.ok.pct99 | 對(duì)應(yīng)<請(qǐng)求名稱>99%的請(qǐng)求響應(yīng)時(shí)間 |
| jmeter.all.test.startedT | 線程數(shù) |
?
【注意】如果要監(jiān)控<請(qǐng)求名稱>的話,Jmeter上的“Backend Listener”修改如下參數(shù)
1. 將“summanyOnly”修改成False,
2. 將“userRegexpForSamplersList”修改成True,
3. 并且要設(shè)置“samplersList”的值,“samplersList”是可以支持正則表達(dá)式的,“samplersList”的設(shè)置要與請(qǐng)求對(duì)應(yīng),否則找不到該請(qǐng)求。如圖
?
設(shè)置好了,運(yùn)行一下,在Grafana里面,就可以看到自己的請(qǐng)求了。
?
如果想要了解這些監(jiān)控都代表什么意思,可以訪問(wèn)Jmeter的官網(wǎng)地址去查看閱讀“http://jmeter.apache.org/usermanual/realtime-results.html”
?
最后來(lái)一張帥氣的圖:
from:http://www.cnblogs.com/yyhh/p/5990228.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Jmeter + Grafana + InfluxDB 性能测试监控的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 接口测试总结
- 下一篇: 使用AOP与注解记录Java日志