第二十四(平台)Centos7.X 搭建Grafana+Jmeter+Influxdb性能实时监控平台 一.工具介绍二.Centos7安装InfluxDB1.备注博主是自己买的阿里云服务器哈就不介绍虚拟机下如何安装了毕竟虚拟机很多坑...2.InfluxDB 官网下载路径https://portal.influxdata.com/downloads/3.直接执行以下命令进行安装wget https://dl.influxdata.com/influxdb/releases/influxdb-1.6.3.x86_64.rpm sudo yum localinstall influxdb-1.6.3.x86_64.rpm4.安装完成后修改InfluxDB的配置主要配置jmeter存储的数据库与端口号vim/etc/influxdb/influxdb.conf5.找到graphite并且修改它的库与端口enabledtruedatabasejmeterretention-policybind-address:2003protocoltcpconsistency-levelone6.找到http将前面的#号去掉7.现在新版本的InfluxDB已取消自带的数据可视化界面旧版的还是有可通过找到admin将前面的#号去掉开放它的UI端口(该步骤非必须)8.可通过InfluxDB可视化工具来查看数据库和数据https://www.cnblogs.com/poloyy/p/12213495.html[admin]#Determineswhether the admin service is enabled.enabledtrue#Thedefaultbind address used by the admin service.bind-address:80839.配置成功后启动InfluxDB9.1.启动命令systemctl start influxdb.service9.2.查看状态命令systemctl status influxdb.service10.到此InfluxDB已安装并配置完成了11.特别说明8083端口InfluxDB的UI界面展示的端口8086端口Grafana用来从数据库取数据的端口2003端口刚刚设置的Jmeter往数据库发数据的端口三.Centos7安装Grafana1.Grafana官网下载路径https://grafana.com/grafana/download2.直接执行以下命令进行安装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.rpm3.然后启动即可3.1.启动命令systemctl start grafana-server.service3.2.查看状态命令systemctl status grafana-server.service4.访问IP加端口http://xxx.xx.xx.xx:3000输入用户名密码登录系统4.1.用户名与密码都是admin如果能打开页面则已经成功了但是...装环境这东西怎么可能这么简单5.当查看状态是active但是访问3000时是失败的话那么有可能就是3000端口还未开放5.1.跟着这篇文章来操作就可以开放3000端口https://www.cnblogs.com/poloyy/p/12213297.html6.访问IP加端口 http://xxx.xx.xx.xx:3000若能访问到grafana就是成功啦四.配置Jmeter1.步骤一在线程组中添加监听器Listener-BackendListener2.步骤二配置BackendListener2.1.可以看到Jmeter默认选中的Implementatin是GraphiteBackendListenerClient它是Jmeter2.13就开始提供2.2.在Jmeter3.2时又加多了一个InfluxDBBackendListenerClient2.3.这里先讲选中GraphiteBackendListenerClient时每个配置项的含义2.3.1.graphiteHostInfluxDB安装的服务器的ip2.3.2.graphitePort端口默认就是2003除非安装InfluxDB时设置了其他端口是2.3.2.1.【可见上面安装InfluxDB后关于graphite的配置】2.3.3.rootMetricsPrefix指标的根前缀将测试结果存入数据库时不同指标会生成不同表2.3.3.1.但这些表都最好要有一个共同的前缀这个就是了后面会讲到不同的指标的含义【重点】2.3.4.summaryOnly当你线程组有多个请求又想知道每个请求的结果数据时最好填false2.3.4.1.因为true只会返回所有请求的集合数据报告不会输出每条请求的数据报告2.3.5.samplersList取样器列表想收集哪些请求就填哪些最好用正则去匹配减轻工作量2.3.6.useRegexpForSamplersList是否使用正则如果true则使用samplersList里可以匹配正则表达式2.3.7.percentiles百分比即类似聚合报告里90%Line95%Line99%Line的数据2.3.7.1.倘若想要99.9时需要写成【99_9】用下划线代替点2.4.建议如果想看每个请求的结果数据的话根据截图进行配置即可只需改动samplerList来匹配需要监控的请求其他不用动3.步骤三运行Jmeter脚本查看数据库3.1.一开始数据库是只有两张表的这里方便演示就只跑get、post请求了3.2.如果成功了代表结果数据也存进InfluxDB里面了接下来来看看使用GraphiteBackendListenerClient时会生成哪些表呢3.3.可以看到生成三种前缀的表分别是jmeter.alljmeter.getjmeter.post3.3.1.最后其实还有jmeter.test开头的表这个后面会单独拿出来说 倘若不想了解每个指标的具体含义可以跳过下面内容 直接点击右侧目录跳转至配置Grafana查看下一步4.步骤四细品指标含义4.1.为什么每个表都有Jmeter前缀呢4.1.1.因为在Jmeter的BackendListener配置rootMetricsPrefix值为jmeter4.1.1.1.不喜欢前缀或者想起其他名在BackendListener里直接改rootMetricsPrefix的值就可以了4.2.来说明下每个前缀的含义4.2.1.jmeter.all代表所有请求当summaryOnlytrue时就只有samplerNameall的表4.2.2.jmeter.get代表HTTP请求的名字是get即samplerNameget4.2.3.jmeter.post代表HTTP请求的名字是post即samplerNamepost4.3.备注假设某个HTTP请求叫【GET请求】辣么数据库就会生成以jmeter.GET请求啊 为前缀的各种表4.4.然后再针对不同指标说下它们的含义4.4.1.Thread/VirtualUsersmetrics-线程/虚拟用户指标4.4.1.1.跟线程组设置相关的4.4.2.Response times metrics-响应时间指标4.4.2.1.划重点每个sampler都包含所有响应时间指标每个sampler的每个指标都会有单独的一个表存储结果数据4.4.2.2.附上按官方文档说明的对比图可以看到如果是a.max 的话跟 ok.count 和 ko.count 是没有半毛钱关系的五.配置Grafana1.首先进入Grafana的首页可以看到官方画了个流程先创建数据源再创建数据面板2.创建数据源2.1.一共有两个入口可以在首页直接点击Createyour first data source也可以看第二张图按步骤进入创建页面2.2.然后选择InfluxDB作为我们的数据源2.3.到此为止数据源就配置成功啦3.配置数据看板3.1.GrafanaInfluxDB集成展示测试结果数据4.panel基础使用4.1.按上面的步骤创建好DashBoard后再通过panel展示具体数据4.2.一般选AddQuery先当然选ChooseVisualization也可以进去后可以相互切换的4.3.Converttorow就是生成一行可以将展示差不多一致类型数据的panel放到里面统一管理收起or展开4.4.如下图将描述线程数和响应数的panel放在同一个Row5.数据绑定5.1.查看总线程数、成功响应数、失败响应数5.2.可以先点AddQuery进入到下面的界面5.3.若想看成功响应数和失败响应数只需要切换表名即可5.4.可以发现跟一开始只展示数字不太一样因为图表类型还没设置5.4.1.当只想看数据而不想看数据趋势图的话可以改变它的类型5.5.在同一个界面点击左侧列表选中第二个icon然后选择Singlestat即可5.6.查看所有请求get请求post请求的TPS5.7.如果想在同一个panel里展示多个指标数据的话可以通过在Panel里AddQuery6.基本的数据绑定已经教会大家想要展示什么数据直接改变表名就行7.附上官方提供的数据看板图也可以照搬照抄用它的panel手动添加每个指标8.至此初级版的GrafanaJmeterInfluxdb性能实时监控平台初步搭好啦9.当然博主是不建议Jmeter使用GraphiteBackendListenerClient来采集数据的9.1.因为请求多起来的时候会有非常多的表维护成本也会增加9.2.后面将会介绍如何通过InfluxDBBackendListenerClient来采集数据10.配置BackendListener之InfluxDBBackendListenerClient10.1.配置项含义10.2.首先来看看每个配置项的含义10.2.1.influxdbUrl安装influxdb的路径 主要格式http://主机地址:8086/write?db数据库名10.2.2.application应用名称 在events表中对应的字段是application10.2.3.measurement表名 数据存储到哪个表默认是jmeter不用改即可10.2.4.summaryOnly同GraphiteBackendListenerClient10.2.5.samplersRegex同GraphiteBackendListenerClient10.2.6percentiles同GraphiteBackendListenerClient10.2.7.testTitle测试名称 在events表中对应的字段是textJMeter在测试的开始和结束时自动生成注释该注释的值以start和end结尾10.2.8.eventTagsGrafana允许为每个注释显示标签 在events表中对应的字段是tags10.3.不懂application和testTitle可以看下面的图同一个testTitle的两条记录的时间差就是执行测试计划的总时长11.建议只需修改application和testTitle即可可以相同也可以不相同其他配置跟着图片走就好当然安装路径还是要改的六.查看InfluxDB1.使用InfluxDBBackendListenerClient好处就是再多的请求也只会生成两张表1.1.events 主要拿存事件的1.2.jmeter 存测试结果数据的Grafana也是从这个表获取数据再展示2.再次GrafanaInfluxDB集成展示测试结果数据2.1.这次就不再需要去创建DashBoard和Panel2.2.因为在官方模板库已经有非常完美的模板2.3.当然前提是要用InfluxDBBackendListenerClient采集数据才能有效的3.首先进入官方模板库 https://grafana.com/dashboards 然后跟着图片导入模板并初始化即可4.只要你的数据源表名配的没有错Jmeter再执行一下测试计划DashBoard中筛选下时间就可以成功看到数据啦5.模板自带了三个下拉筛选框5.1.data_source数据源在Grafana配置了多少个就显示多少个5.2.application在Jmeter配置好的application5.2.1.如果每次测试计划执行时的application都不一样就可以通过这个筛选出对应测试时机的结果数据5.3.transaction在Jmeter配置好的sampleList比如只发get、post请求这里就只会给选get、post5.3.1.可以滑到页面下面看到针对某个请求的数据展示