性能监控平台
搭建容器
拉取CentOS7镜像,下载安装Grafana和Influxdb
# 拉取阿里云的centos7镜像
git pull registry.cn-zhangjiakou.aliyuncs.com/ggls/centos:7.1
# 运行镜像生成容器
docker run -itd --name centos7-influx
-p 8083:8083 -p 8086:8086
-p 2003:2003 -p 3000:3000
-v /opt/centos7_influx:/opt
--privileged=true
registry.cn-zhangjiakou.aliyuncs.com/ggls/centos:7.1 /usr/sbin/init
# 进入容器
docker exec -it centos7-influx bash
端口说明:
- 8083:InfluxDB的UI界面展示的端口
- 8086:Grafana用来从数据库取数据的端口
- 2003:Jmeter往数据库发数据的端口
- 3000:本地访问服务器内部docker容器的端口
安装Influxdb
- 下载influxDB
新版本可以点击influxDB官网进行下载
# 下载安装包 wget https://dl.influxdata.com/influxdb/releases/influxdb-1.6.3.x86_64.rpm # 安装运行 yum localinstall influxdb-1.6.3.x86_64.rpm- influxDB配置
安装运行后,然后对influxDB进行配置,主要是配置Jmeter连接的数据库和端口号
vim /etc/influxdb/influxdb.conf找到graphite
并且修改它的库与端口
1 |
|
- 找到
[http]
,将前面的#号去掉
- 配置成功,启动influxDB
- 启动命令:
systemctl start influxdb.service
- 查看状态命令:
systemctl status influxdb.service
安装Grafana
新版本下载位置:Grafana官网下载:https://grafana.com/grafana/download
1 |
|
然后启动
启动命令: systemctl start grafana-server.service
查看状态命令: systemctl status grafana-server.service
然后在浏览器访问登录http://ip:3000
;
配置Jmeter
一、添加监听器:Backend Listener
- 右键点击
Thread Group
- 点击
Add -> Listener -> Backend Listener
二、配置监听器:Backend Listener
Backend Listener implementation 默认选择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】,用下划线代替点
三:运行Jmeter脚本,查看数据库
数据库里面有两个库,jmeter库就是jmeter运行生成表的数据库
可以看到生成了三类前缀的表,分别是: jmeter.all 、 jmeter.[请求名称];最后还有 jmeter.test 开头的表,这个后面会单独拿出来说
前缀的含义
jmeter.all
:代表了所有请求;当summaryOnly
=true时,就只有samplerName
=all的表了jmeter.[请求名称]
:代表了HTTP请求,即samplerName=[请求名称]
Thread/Virtual Users metrics - 线程/虚拟用户指标
跟线程组设置相关的
指标 | 全称 | 含义 |
---|---|---|
jmeter.test.minAT | Min active threads | 最小活跃线程数 |
jmeter.test.maxAT | Max active threads | 最大活跃线程数 |
jmeter.test.meanAT | Mean active threads | 平均活跃线程数 |
jmeter.test.startedT | Started threads | 启动线程数 |
jmeter.test.endedT | Finished threads | 结束线程数 |
Response times metrics - 响应时间指标
划重点:每个sampler(请求)都包含了所有响应时间指标,每个sampler(请求)的每个指标都会有单独的一个表存储结果数据
指标 | 含义 |
---|---|
sampler的成功响应数 | |
服务器每秒命中次数(每秒点击数,即TPS) | |
sampler响应成功的最短响应时间 | |
sampler响应成功的最长响应时间 | |
sampler响应成功的平均响应时间 | |
sampler响应成功的所占百分比 | |
sampler的失败响应数 | |
sampler响应失败的最短响应时间 | |
sampler响应失败的最长响应时间 | |
sampler响应失败的平均响应时间 | |
sampler响应失败的所占百分比 | |
sampler响应数(ok.count+ko.count) | |
已发送字节 | |
已接收字节 | |
sampler响应的最短响应时间(ok.count和ko.count的最小值) | |
sampler响应的最长响应时间(ok.count和ko.count的最大值) | |
sampler响应的平均响应时间(ok.count和ko.count的平均值) | |
sampler响应的百分比(根据成功和失败的总数来计算) |
四、配置Grafana
步骤:
配置数据源
创建数据面板
配置数据源
点击首页的Create your first data source
,然后进行配置
点击选择influxDB
配置数据面板
选择Add Query
,然后进行配置
当我们只想看数据而不想看数据趋势图的话,可以改变它的类型;
在同一个界面,点击左侧列表选中第二个icon,然后选择Singlestat即可
基本的配置完成,Jmeter使用GraphiteBackendListenerClient
来采集数据的,因为请求多起来的时候会有非常多的表,维护成本也会增加;后面将会介绍如何通过InfluxDBBackendListenerClient
来采集数据
给Jmeter的Backend Listener配置为InfluxDBBackendListenerClient
首先来看看每个配置项的含义
- 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
inDB数据库
使用InfluxDBBackendListenerClient好处就是,再多的请求也只会生成两张表:
events
:主要拿存事件的
jmeter
:存测试结果数据的,Grafana也是从这个表获取数据再展示
配置数据面板
首先,进入官方模板库: https://grafana.com/dashboards ,然后跟着图片导入模板并初始化即可
然后jmeter再次执行一下测试计划
模板自带了三个下拉筛选框
data_source:数据源,在Grafana配置了多少个就显示多少个
application:在Jmeter配置好的application,如果每次测试计划执行时的application都不一样,你就可以通过这个筛选出对应测试时机的结果数据了
transaction:在Jmeter配置好的sampleList,譬如我只发了get、post请求,这里就只会给你选get、post;可以滑到页面下面看到针对某个请求的数据展示
卸载Grafana
停止Grafana服务。
1 |
|
1 |
|
查看要卸载的包的名称
1 |
|
输入命令行卸载Grafana
1 |
|