3种方式:JMeter+Grafana+Influxdb搭建可视化性能测试监控平台
用jmeter的朋友越来越多了,毕竟开源、免费、轻量,而且功能、自动化、性能,都能做,
最近不少朋友问JMeter+Grafana+Influxdb可视化性能测试监控平台搭建的问题,虽然网上资料不少,但是有些是错的;
so,抽时间总结了常用的3种搭建方式,供大家参考;
方式一:运行自定义镜像
方式二:docker方式安装
方式三:rpm包方式安装
建议通过云服务器来练习:https://www.cnblogs.com/uncleyong/p/12694334.html
方式一:运行自定义镜像
镜像方式可以快速部署到不同的环境上搭建可视化性能测试监控平台,我们也可以自定义镜像,参考:https://www.cnblogs.com/uncleyong/p/8894133.html
我已经自定义好了镜像,大家直接pull下来,按如下方式操作即可;如果打镜像或者运行过程中有问题,欢迎加作者微信交流;
下面我简单介绍下pull下来如何使用。
拉取:docker pull registry.cn-hangzhou.aliyuncs.com/qzcsbj/qzcsbj-influxdb_grafana:v1.0
运行容器:docker run -tid --name qzcsbj-influxdb_grafana -p 4000:3000 -p 9086:8086 --privileged=true 9756039ba6b4 /sbin/init
已经创建了数据库jemter,如果你要重新创建,进入容器:docker exec -it qzcsbj-influxdb_grafana /bin/bash
influx show databases; create database jmeter; show databases; use xxx; exit;
访问grafana:http://ip:4000,登录:admin/admin
跳过
添加数据源
选择数据源为InfluxDB
配置
配置数据写库的频率(保持默认)
测试数据源是否ok
成功
可以修改数据源
下载模板
https://grafana.com/grafana/dashboards
搜索
或者直接访问:https://grafana.com/grafana/dashboards?dataSource=influxdb&direction=asc&orderBy=name&search=jmeter
导入json模板:
可以直接输入:5496,也可以导入下载的json文件
修改为下面配置,然后点击“Import”
说明:改为1后,jmeter配置文件也要同步修改,建议保持默认5即可
修改模板
可以删除
下面展示的不是我们设置的值,是定义描述(所以,虽然上面把send interval改为1了,但是下面依然展示的是5)
so,如果要修改,建议删除后,重新导入模板
jmeter压测效果展示
jmeter脚本
给大家提个问题:下图measurement的值是否可以改?
https://www.cnblogs.com/uncleyong/p/14426561.html
效果图:
示例配置2:
summaryOnly:线程组有多个请求,展示明细,值改为false
transaction勾选HTTP请求1
因为上面transaction勾选的HTTP请求1
模板还很多配置,感兴趣的可以深入研究下。
方式二:docker方式安装
和方式一类似,只是你需要自己拉取镜像
详见:https://www.cnblogs.com/uncleyong/p/16453691.html
方式三:rpm包方式安装(org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender)
influxdb下载、安装、配置、启动
InfluxDB是一个当下比较流行的时序数据库,InfluxDB使用 Go 语言编写,无需外部依赖,安装配置非常方便,适合构建大型分布式系统的监控系统。
下载:wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.1.x86_64.rpm
安装:yum localinstall influxdb-1.7.1.x86_64.rpm,grafana 的rpm包在本地,只需要解决依赖,就使用 yum localinstall
启动:systemctl start influxdb
查看状态:systemctl status influxdb.service
查看服务,默认启动了2个端口,分别是:8088,8086
netstat -lntp |grep `ps -ef |grep influxdb |grep -v grep |awk '{print $2}'`
其中,我们要用到的8086是Grafana从数据库获取数据的端口、也是jmeter写数据的端口
下面也可以配置数据库认证(配置文件中搜索8086)
命令行方式进入数据库
创建数据库jmeter
再创建一个jmeter2
查看创建的数据库
创建jmeter脚本
influxdbUrl :http://ip:8086/write?db=jmeter,ip写安装influxdb服务的ip地址+端口,db指定常见的数据库jmeter
application名称自定义,后面grafana中会展示
jmeter中添加请求运行, 执行的数据就会记录到influxDB
下面脚本运行一次
有数据就说明jmeter入库成功。
Grafana下载、安装、配置
下载:官网https://grafana.com/,或者用命令下载:wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.3-1.x86_64.rpm
(最好安装新版本grafana-6.7.3.linux-amd64.tar.gz)
安装:yum localinstall grafana-4.6.3-1.x86_64.rpm,grafana 的rpm包在本地,只需要解决依赖,就使用 yum localinstall
配置:vim /etc/grafana/grafana.ini
端口默认是3000
启动:systemctl start grafana-server,或者systemctl start grafana-server.service
查看状态:systemctl status grafana-server,或者systemctl status grafana-server.service
浏览器访问Grafana首页:ip:3000,账号/密码默认是admin/admin
创建用户
输入用户名、邮箱、登录名、登录密码
如果这个账号登录,test/test,下面展示用户名
再创建一个用户:qzcsbj2
账号密码:test2/test2
配置数据源
创建用户qzcsbj的数据源,名称就用用户名,对应的数据库是jmeter
创建用户qzcsbj2的数据源,名称就用用户名,对应的数据库是jmeter2
为qzcsbj用户添加模板
导入模板
下载模板:https://grafana.com/grafana/dashboards?dataSource=influxdb
https://grafana.com/grafana/dashboards?dataSource=influxdb&search=jmeter
复制id5496
填写模板id:5496,然后点击“Load”
选择数据源
可以看到我们创建的两个数据源
选择第一个数据源,另外,下面间隔时间可以改为1s(如果改了,jmeter配置文件中也要同步改),建议保持5默认
效果
也可以导入另外个的模板:4026
建议保持5默认
为qzcsbj2用户添加模板
jmeter2为数据库
建议保持5默认
用户qzcsbj的脚本,5u5min
用户qzcsbj2的脚本,3u5min
下面jmeter2不是数据,是添加模板的measurement名称,需要匹配
先把数据库jmeter和jmeter2的数据清了(delete from jmeter; delete from jmeter2;),然后上面两份脚本分别发一笔请求
下面jmeter是measurement名称(表)
下面jmeter2是measurement名称
第一份脚本场景是:5u5min
第一份脚本场景是:3u5min
运行完成后,
用户qzcsbj看到的
聚合报告845笔,加上最刚刚发的1笔,总共就是846
用户qzcsbj2看到的
聚合报告509笔,加上最刚刚发的1笔,总共就是510
方式三:rpm包方式安装(org.apache.jmeter.visualizers.backend.graphite.TextGraphiteMetricsSender)
如果配置文件保持默认,默认只启动了8086和8088
netstat -lntp |grep `ps -ef |grep influxdb |grep -v grep |awk '{print $2}'`
配置:vim /etc/influxdb/influxdb.conf,搜索:graphite
/graphite
改为:
2003是jmeter往数据库发数据的端口
点击【Graph】
点击【Edit】
修改名称
选择数据库
总结
其实,很多测试朋友喜欢这个监控,是因为炫酷,可以在领导面前装逼,出个很炫的报告,
我觉得真正性能监控分析,用这个是远远不够的(个人观点,只能做一个全局的监控,看到的都是表象,其实,我用命令也都能看到这些指标,最终都是需要定向监控分析,找出问题),
当然,如果你出去面试,可以把这个拿出去吹一下,毕竟工作不好找。
思考题:下图measurement的值是不是必须为jmeter?是否可以修改?
【bak】jmeter后端监听器的坑:measurement的值是不是必须为jmeter?https://www.cnblogs.com/uncleyong/p/14426561.html
【性能项目实战:jmeter+k8s+微服务+skywalking+efk】汇总
详见:https://www.cnblogs.com/uncleyong/p/15475614.html
__EOF__
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!