Jmeter + Grafana + InfluxDB 性能测试监控

一、前言

  之前有用过Grafana,界面看起来有点高端的样子,后面就想学习下,用Grafana监控jmeter的数据,实际操作了一波后,知道了整个搭建流程和原理,基本上,就是Jmeter通过“Backend Listener”,将测试的数据上传到服务器上,通过InfluxDB来存储,Grafana来展示出来。

主要参考了以下博客https://www.cnblogs.com/yyhh/p/5990228.html,https://www.cnblogs.com/poloyy/p/12219145.html

篇幅比较长,要有耐心哈,其实很简单的。

二、工具介绍

1、InfluxDB

  Go 语言开发的一个开源分布式时序数据库,非常适合存储指标、事件、分析等数据。

2、Grafana

  是纯粹用js编写出来的,专门用来展示数据用的。

3、Jmeter

        压测、接口工具

三、阿里云服务器Linux-Centos 安装InfluxDB

  我是阿里云新用户,可以试用一下服务器,哈哈哈。因为我是搭建好了,所以就不截图了,直接贴执行命令

1、直接执行命令安装

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.6.3.x86_64.rpm
sudo yum localinstall influxdb-1.6.3.x86_64.rpm

2、安装完成后,修改InfluxDB的配置,主要配置jmeter存储的数据库与端口号

vim /etc/influxdb/influxdb.conf

tips:进入配置文件后,i进入编辑模式,esc退出编辑模式,shift+冒号 输入wq 退出并保存,shift+冒号 输入q 退出不保存

3、找到graphite并且修改它的库与端口

4、找到http,将前面的#号去掉

5、安装InfluxDB可视化工具

  可通过InfluxDB可视化工具来查看我们的数据库和数据哦,具体安装和简单使用参照此篇博文:https://www.cnblogs.com/poloyy/p/12213495.html

6、配置成功后,启动InfluxDB

启动命令:

systemctl start influxdb.service

查看状态命令: 

systemctl status influxdb.service

到此,InfluxDB已安装并配置完成了!

特别说明:

  • 8083端口:InfluxDB的UI界面展示的端口
  • 8086端口:Grafana用来从数据库取数据的端口
  • 2003端口:刚刚设置的,Jmeter往数据库发数据的端口

 四、阿里云服务器Linux-Centos 安装Grafana

1、直接执行命令安装

wget https://dl.grafana.com/oss/release/grafana-6.5.2-1.x86_64.rpm
sudo yum localinstall grafana-6.5.2-1.x86_64.rpm

2、然后启动即可

启动命令:

systemctl start grafana-server.service

查看状态命令:

systemctl status grafana-server.service

3、外网访问IP加端口http://xxx.xx.xx.xx:3000

  输入用户名,密码登录系统,用户名与密码都是"admin",若能访问到grafana就是成功

4、附上阿里云服务对外开放端口教程

  参考https://www.cnblogs.com/poloyy/p/12213297.html#gallery-4

  附上教程理由:当grafana和influxdb的状态都是active时,访问3000还是失败,说明可能3000端口未开放

1)一句话:如果你是买的各大厂商的云服务器,去安全组配置对应需要使用到的端口就可以啦!

2)添加安全组规则,需要开放哪个端口就填写哪个端口

 

 tips:再附上linux的些些命令,额外学习——如果要用linux开放端口,首先要启动防火墙,开放端口后,要reload更新防火墙规则

//查看firewall状态
systemctl status firewalld.service
//启动firewall
systemctl start firewalld
//停止firewall
systemctl stop firewalld
//开机启动firewall
systemctl enable firewalld
//开机禁止firewall
systemctl disable firewalld
//查看启动失败的服务列表
systemctl --failed

//查看firewall全部信息
firewall-cmd --list-all
//查看已开放的端口
firewall-cmd --list-ports
//更新防火墙规则
firewall-cmd --reload
//开放端口
firewall-cmd --zone=public --add-port=3000/tcp --permanent
//关闭端口
firewall-cmd --zone=public --remove-port=3000/tcp --permanent

五、配置Jmeter

1、在线程组中,添加监听器(Listener)- Backend Listener

2、配置Backend Listener

  • graphiteHost:InfluxDB安装的服务器的ip
  • graphitePort:端口;默认就是2003
  • rootMetricsPrefix:指标的根前缀;将测试结果存入数据库时,不同指标会生成不同表,但这些表都最好要有一个共同的前缀,在下面可以看到表名前缀都是jmeter开头的
  • summaryOnly:当你线程组有多个请求又想知道每个请求的结果数据时,最好填false,因为true只会返回所有请求的集合数据报告,不会输出每条请求的数据报告
  • samplersList:取样器列表;想收集哪些请求就填哪些,最好用正则去匹配,减轻工作量
  • useRegexpForSamplersList:是否使用正则;如果true则使用,samplersList里可以匹配正则表达式
  • percentiles:百分比;即类似聚合报告里90% Line,95% Line,99% Line的数据;倘若想要99.9时,需要写成【99_9】,用下划线代替点

3、运行Jmeter后,查看influxdb

  可以看到生成了三种前缀的表,分别是:jmeter.all     jmeter.get    jmeter.post

  jmeter.all:代表了所有请求;当summaryOnly=true时,就只有samplerName=all的表了

  jmeter.get:代表了HTTP请求的名字是get,即samplerName=get

  jmeter.post:代表了HTTP请求的名字是post,即samplerName=post 

六、配置Grafana

1、先创建数据源,再创建数据面板

2、选择influxdb作为数据源

3、配置数据看板

4、选择图表类型后,配置数据源

 如果想在同一个panel里展示多个指标数据的话,可以通过在Panel里Add Query,想要展示什么数据直接改变表名就行了

 

以上,初级版的Grafana+Jmeter+Influxdb 性能实时监控平台初步搭好啦,如果想把监控平台做的好,其实是需要了解influxdb查询语句的,目前我只是个渣渣,将就着用先。

上面讲的是基于jmeter的GraphiteBackendListenerClient来采集数据的,因为请求多起来的时候会有非常多的表,维护成本也会增加,所以下面第七章将介绍通过InfluxDBBackendListenerClient来采集数据。

七、配置Backend Listener之InfluxDBBackendListenerClient

1、jmeter的配置项

2、配置项含义

influxdbUrl:安装influxdb的路径;主要格式:http://主机地址:8086/write?db=数据库名

application:应用名称;在events表中对应的字段是application

measurement:表名;数据存储到哪个表,默认是jmeter,不用改即可

summaryOnly:同GraphiteBackendListenerClient 

samplersRegex:同GraphiteBackendListenerClient 

percentiles:同GraphiteBackendListenerClient 

testTitle:测试名称;在events表中对应的字段是text,jmeter在测试的开始和结束时自动生成注释,该注释的值以“start”和“end”结尾

eventTags:Grafana允许为每个注释显示标签;在events表中对应的字段是tags

3、运行jmeter脚本后,查看influxdb

使用InfluxDBBackendListenerClient好处就是,再多的请求也只会生成两张表

events:主要拿存事件的

jmeter:存测试结果数据的,grafana也是从这个表获取数据再展示

 

4、再次Grafana&InfluxDB集成,展示测试结果数据

这次就不再需要自己去创建DashBoard和Panel了,因为在官方模板库,已经有一个非常完美的模板了,当然前提是你要用InfluxDBBackendListenerClient采集数据才能有效的哈。

首先,进入官方模板库:https://grafana.com/dashboards,按着下面的图片导入模板即可

 

 只要你的数据源,表名配的没有错,Jmeter再执行一下测试计划,DashBoard中筛选下时间,就可以成功看到数据啦!

模板自带了三个下拉筛选框

data_source:数据源,在Grafana配置了多少个就显示多少个

application:在Jmeter配置好的application,如果每次测试计划执行时的application都不一样,你就可以通过这个筛选出对应测试时机的结果数据了

transaction:在Jmeter配置好的sampleList,譬如我只发了get、post请求,这里就只会给你选get、post;可以滑到页面下面看到针对某个请求的数据展示

 

posted @ 2021-07-08 13:46  一加一  阅读(586)  评论(0编辑  收藏  举报