全网最详细!Centos7.X 搭建Grafana+Jmeter+Influxdb 性能实时监控平台 (上)
来源:https://developer.aliyun.com/article/907041
背景
日常工作中,经常会用到Jmeter去压测,毕竟LR还要钱(@¥&*...),而最常用的接口压力测试,我们都是通过聚合报告去查看压测结果的,然鹅聚合报告的真的是丑到家了,作为程序猿这当然不能忍!那我们要怎么给它变得好看点捏?
如何华丽变身?
方式 |
优点 |
缺点 |
场景 |
Jmeter+ant+Jenkins |
快捷,上手简单 |
报告还是不够美观、直观,如果测试接口一多,报告就会显示臃肿不够直观 |
看最终报告 |
Grafana+Jmeter+Influxdb(推荐) |
数据可视化,数据直观,筛选功能强大,拓展能力强 |
当然就是要自己部署环境咯,还得了解Influxdb的语法和常用查询语句,系统方法等..... |
看压测过程中参数的变化 |
工具介绍
工具 |
介绍 |
Jmeter |
Java语言开发的压力测试工具(不多介绍) |
InfluxDB |
Go 语言开发的一个开源分布式时序数据库,非常适合存储指标、事件、分析等数据 |
Grafana |
纯 Javascript 开发的前端工具,用于访问 InfluxDB,自定义报表、显示图表等 |
Centos7安装InfluxDB
备注:博主是自己买的阿里云服务器哈,就不介绍虚拟机下如何安装了(毕竟虚拟机很多坑...)
InfluxDB 官网下载路径:https://portal.influxdata.com/downloads/
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
3、找到graphite并且修改它的库与端口
enabled = true
database = "jmeter"
retention-policy = ""
bind-address = ":2003"
protocol = "tcp"
consistency-level = "one"
5、现在新版本的InfluxDB已取消自带的数据可视化界面了,旧版的还是有,可通过找到admin,将前面的#号去掉,开放它的UI端口;(该步骤非必须!)
可通过InfluxDB可视化工具来查看我们的数据库和数据哦,具体安装和简单使用参照此篇博文:https://www.cnblogs.com/poloyy/p/12213495.html
[admin]
# Determines whether the admin service is enabled.
enabled = true
# The default bind address used by the admin service.
bind-address = ":8083"
6、配置成功后,启动InfluxDB
启动命令: systemctl start influxdb.service
查看状态命令: systemctl status influxdb.service
到此,InfluxDB已安装并配置完成了!!*:ஐ٩(๑´ᵕ`)۶ஐ:*
特别说明:
- 8083端口:InfluxDB的UI界面展示的端口
- 8086端口:Grafana用来从数据库取数据的端口
- 2003端口:刚刚设置的,Jmeter往数据库发数据的端口
Centos7安装Grafana
Grafana官网下载路径:https://grafana.com/grafana/download
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",如果能打开页面则已经成功了!但是...装环境这东西怎么可能这么简单??
4、当你查看状态是active但是访问3000时是失败的话,辣么有可能就是你的3000端口还未开放!
跟着这篇文章来操作就可以开放3000端口啦:https://www.cnblogs.com/poloyy/p/12213297.html
5.访问IP加端口 http://xxx.xx.xx.xx:3000 ,若能访问到grafana就是成功啦!
配置Jmeter
这里就不教如何安装Jmeter了哈,主要讲Jmeter作为采集端是通过什么采集数据的
步骤一:在线程组中,添加监听器(Listener)- Backend Listener
步骤二:配置Backend Listener
可以看到,Jmeter默认选中的Implementatin是 GraphiteBackendListenerClient ,它是Jmeter 2.13就开始提供了;在Jmeter 3.2时又加多了一个 InfluxDBBackendListenerClient ,哎~这两者有什么区别呢?后面会讲到!
这里先讲选中 GraphiteBackendListenerClient 时,每个配置项的含义
- graphiteHost:InfluxDB安装的服务器的ip
- graphitePort:端口;默认就是2003,除非你自己安装InfluxDB时设置了其他端口是哦(可见上面安装InfluxDB后关于graphite的配置)
- rootMetricsPrefix:指标的根前缀;将测试结果存入数据库时,不同指标会生成不同表,但这些表都最好要有一个共同的前缀,这个就是了;后面会讲到不同的指标的含义(重点哦)
- summaryOnly:当你线程组有多个请求又想知道每个请求的结果数据时,最好填false,因为true只会返回所有请求的集合数据报告,不会输出每条请求的数据报告
- samplersList:取样器列表;想收集哪些请求就填哪些,最好用正则去匹配,减轻工作量
- useRegexpForSamplersList:是否使用正则;如果true则使用,samplersList里可以匹配正则表达式
- percentiles:百分比;即类似聚合报告里90% Line,95% Line,99% Line的数据;倘若想要99.9时,需要写成【99_9】,用下划线代替点
建议:如果想看每个请求的结果数据的话,根据我的截图进行配置即可;只需改动samplerList来匹配你需要监控的请求,其他不用动!