Jmeter + Grafana + InfluxDB 接口性能测试数据监控
通常我们用jmeter做接口性能测试后,会在聚合报告中查看本次脚本的执行结果,最近学习了一套工具来替代那原生的监控数据,这里记录一下我的搭建过程。
★------------------------------------------★
InfluxDB是一个时序数据库;
Grafana是用来展示数据的;
Jmeter来跑压测脚本;通过“Backend Listener”,将测试的数据上传到我的虚拟机上,通过InfluxDB来存储,Grafana来展示出来。我们访问web,稍微配置一下,就可以看到展示的数据了。
★------------------------------------------★
1.安装InfluxDB
这里注意一下 InfluxDB从1.3开始取消自带的web页面,我认为不太方便学习,所以我下载的是1.2.4版本
①下载包
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.2.4.x86_64.rpm
在下载包的时候如果服务器提示失败,可以切换如下命令噢
curl -O https://dl.influxdata.com/influxdb/releases/influxdb-1.2.4.x86_64.rpm
②安装
yum install influxdb-1.2.4.x86_64.rpm
中间出现选项的时候输入 y
③修改InfluxDB的配置,主要配置jmeter存储的数据库与端口号,还有需要将UI端口开放
vi /etc/influxdb/influxdb.conf
找到graphite并且修改它的库与端口,对应我下面的代码将前面的#
[[graphite]]
# Determines whether the graphite endpoint is enabled.
enabled = true
database = "jmeter"
retention-policy = ""
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
找到http,将前面的#号去掉,开放它的端口
[http]
# Determines whether HTTP endpoint is enabled.
enabled = true
# The bind address used by the HTTP service.
bind-address = ":8086"
# Determines whether HTTP authentication is enabled.
# auth-enabled = false
④修改好之后保存并且启动InfluxDB
/etc/init.d/influxdb restart
如果启动成功,则会出现
Stopping influxdb...
influxdb process was stopped [ OK ]
Starting influxdb...
influxdb process was started [ OK ]
如果启动失败,那么就是端口被占用的问题啦~小伙伴们自己修改任意端口噢!
⑤打开浏览器,访问虚拟机IP“http://***:8083”
此时可以看见InfluxDB的web ui界面。查看有没有jmeter库,没有就新建一个。
在左边框中输入以下命令即可
CREATE DATABASE "jmeter"
★------------------------------------------★
此时InfluxDB已经安装成功了,如果需要卸载,可以通过以下命令
[root@localhost shared]# rpm -q influxdb
influxdb-0.8.7-1.x86_64
[root@localhost shared]# rpm -e influxdb
[root@localhost shared]# rpm -q influxdb
package influxdb is not installed
参数说明:
首先通过 rpm -q <关键字> 可以查询到rpm包的名字
然后 调用 rpm -e <包的名字> 删除特定rpm包
如果遇到依赖,无法删除,使用 rpm -e --nodeps <包的名字> 不检查依赖,直接删除rpm包
如果恰好有多个包叫同样的名字,使用 rpm -e --allmatches --nodeps <包的名字> 删除所有相同名字的包, 并忽略依赖
删除完后,清除已有文件:
[root@localhost opt]# ls
influxdb
[root@localhost opt]# rm -rf influxdb
★------------------------------------------★
2.安装Grafana
①使用yum下载Grafana并且安装
yum install https://grafanarel.s3.amazonaws.com/builds/grafana-6.3.2-1.x86_64.rpm
②启动Grafana
/etc/init.d/grafana-server restart
如果启动成功,则会出现
OKopping Grafana Server ... [ OK ]
Starting Grafana Server: .... OK
③打开浏览器,访问虚拟机IP“http://***:3000”
使用默认账号密码 admin admin登录即可
添加需要展示数据的数据库
添加InfluxDB数据库配置。输入帐号密码“admin / admin”,点击Test & Save 提示“Success”说明成功了
【注意】URL的端口是8086,而刚才配置的8083是UI的端口。
- 8083端口是InfluxDB的UI界面展示的端口
- 8086端口是Grafana用来从数据库取数据的端口
- 2003端口则是刚刚设置的,Jmeter往数据库发数据的端口
★------------------------------------------★
3.配置Jmeter
接下来我们就要使用Jmeter来调用接口,并将接口的数据存入InfluxDB,最后数据在Grafana上进行可 视化。在Jmeter中使用监听器Backend Listener
这里的influxdbUrl对应的参数值为influxdb的地址;
application作为我们接下来在grafana里面保存的标志;
samplersRegex这个参数对应的值需包含接口的参数名 ,例:.ymcaoto.;
4.在Grafana里设置可视化模板。
从https://grafana.com/grafana/dashboardsutm_source=grafana_search&orderBy=name&direction=asc网站中挑选了一个合适的模板,并且导入到自己的Grafana中,针对模板的数据源以及参数进行一些调整。使用Jmeter调用接口,就可以在Grafana上实时监控到想要看到的数据,并且针对结果进行一些分析~
还不错吧。这里简单的记录了一下我搭建的过程,Grafana还可以用来做更多的事情,让我们一起玩起来吧~