https://blog.csdn.net/smooth00/article/details/79926294 【综合】
https://www.cnblogs.com/yyhh/p/5990228.html 【综合】
https://blog.csdn.net/qq_41059320/article/details/84231476 【InfluxDB】
https://blog.csdn.net/zuozewei/article/details/82911173 【Grafana】
目录
概述
引言
解决方案
1. 安装InfluxDB
1.1、InfluxDB简介
1.2、Windows 下的 InfluxDB 安装和运行
1.2.1、解压后修改配置文件 influxdb.conf
1.2.2、命令行启动
1.2.3、influxdb 连接测试
2、配置 jmeter
2.1、添加线程组
2.2、添加一个Java请求
2.3、添加结果树,方便查看结果
2.4、添加 “Backend Listener”
2.5、运行测试
3、安装 Grafana
3.1、安装并运行
3.2、配置数据源
3.3、配置图表
3.3.1、自定义图表
3.3.2、导入图表(Dashboard)模板
本文我们将介绍如何使用 jmeter + InfluxDB + Grafana
打造压测可视化实时监控。
本文各软件版本:jmeter-5.1 ; InfluxDB-1.7.6-1 ; Grafana-6.2.5
我们很多时候在使用JMeter做性能测试,我们很难及时察看压测过程中应用的性能状况,总是需要等到测试完成后去看Report,如果是长时间压测,比如压测1~2天,那就更烦人了。
JMeter 3.2 开始 Backend Listener
中引入的 InfluxDBBackendListenerClient
允使用UDP或HTTP协议将统计指标发送到InfluxDB。通过配置 Grafana (开源的WEB可视化看板)数据源连接到 Influxdb,我们就可以创建炫酷的可视化看板,并可以实时获取到测试指标数据。
InfluxDB其实包括了时序数据的上下游:
【官网地址:https://www.influxdata.com/】
【完整版安装包下载地址:https://download.csdn.net/download/nrlovestudy/11263467】
Telegraf(收集数据) —> InfluxDB(存储数据) —> Chronograf(显示数据) —>Kapacitor(处理数据)
与传统数据库中的名词做比较
influxDB中的名词 | 传统数据库中的概念 |
database | 数据库 |
measurement | 数据库中的表 |
points | 表里面的一行数据 |
InfluxDB中独有的一些概念
Point由时间戳(time)、数据(field)、标签(tags)组成。
Point属性 | 传统数据库中的概念 |
time | 每个数据记录时间,是数据库中的主索引(会自动生成) |
fields | 各种记录值(没有索引的属性)也就是记录的值:温度, 湿度 |
tags | 各种有索引的属性:地区,海拔 |
网络端口说明:
InfluxDB默认使用以下网络端口:
(1)新建3个文件夹,并修改3个路径(注意:Windows下 路径必须用双斜杠"\\",否则启动报错)
(2)修改 graphite 部分
[[graphite]]
enabled = true
database = "jmeter"
bind-address = ":2003"
protocol = "tcp"
consistency-level = "one"
(3)修改 http 部分 (第4行那几个小星星不知道啥意思,反正官网是这么写的)
[http]
enabled = true
bind-address = ":8086"
auth-enabled = true # ✨
log-enabled = true
write-tracing = false
pprof-enabled = false
https-enabled = false
CMD到 influxdb 的目录下,直接命令 influxd -config influxdb.conf 启动。
【注意:不能直接 双击 influxd.exe 启动,那样的话刚才的配置是无效的,会造成 jmeter写入influxdb 时报错,参考:https://blog.csdn.net/qq_35304570/article/details/81290072。这个低级错误困扰了我半天的时间】
双击 influx.exe,打开命令行窗口,依次执行以下命令:
【注意:由于配置文件中开启了登录授权,数据库连接上之后,必须首先创建用户并授权,否则一切操作无效。这里也困扰了我半天的时间】
CREATE USER admin WITH PASSWORD 'admin' WITH ALL PRIVILEGES
auth admin admin
CREATE DATABASE jmeter
show databases
use jmeter
show measurements
执行最后一个命令,命令行界面显示为空,当前还没有数据。
jmeter 下载地址: http://jmeter.apache.org/download_jmeter.cgi
方便测试(因为想偷懒,Java请求我什么都不用写,直接运行就能成功)
配置如图:
上述配置好之后,点击运行测试。
(1)结果树页面:
(2) influx.exe 命令行界面,运行 show measurements ,可看到数据:
【本部分主要参考文章:https://blog.csdn.net/zuozewei/article/details/82911173】
Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。它主要有以下六大特点:
1、展示方式:快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式;
2、数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等;
3、通知提醒:以可视方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,在数据达到阈值时通过Slack、PagerDuty等获得通知;
4、混合展示:在同一图表中混合使用不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源;
5、注释:使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记;
6、过滤器:Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。
官网下载地址:Grafana
比起前两者,安装相对简单。
我使用的是 msi 安装文件,【注意:安装之前关闭 360 杀毒(如果用的是压缩包,直接解压即可)】安装好之后,进入 bin 目录,直接双击 grafana-server.exe 运行即可。
通过 msi 文件安装的程序自动进入 服务列表,作为系统服务自动启动,不需要再双击 EXE 运行
(1)用浏览器 打开:http://localhost:3000/ 。输入: admin admin 登录
(2)配置数据源:按照下图中所示操作
下图红框中是必填项:
配置图表有两种方式,一种是利用系统提供的图表自己组合,另一种是导入官方提供的图表展示模板。
下图中右边红框的两个地方配置好
指标说明
线程数/用户相关指标
test.minAT-Min active threads:最小活跃线程数
test.maxAT-Max active threads:最大活跃线程数
test.meanAT-Mean active threads:活跃线程数
test.startedT-Started threads:启动线程数
test.endedT-Finished threads:结束线程数
响应时间指标
.ok.count:采样器的成功响应数
.h.count:每秒点击数
.ok.min:采样器成功最短响应时间
.ok.max:采样器成功最长响应时间
.ok.avg:采样器成功平均响应时间
.ok.pct:采样器成功响应百分比
.ko.count:采样器失败响应数
.ko.min:采样器失败的响应最短时间
.ko.max:采样称失败最长响应时间
.ko.avg:采样器失败平均响应时间
.ko.pct:采样器失败响应百分比
.a.count:采样器响应数(ok.count和ko.count的总和)
.a.min:采样器最小响应时间(ok.count和ko.count的最小值)
.a.max:采样器最大响应时间(ok.count和ko.count的最大值)
.a.avg:采样器平均响应时间(ok.count和ko.count的平均值)
.a.pct:采样器响应百分比(根据和失败样本的总数计算)
Backend Listener的默认百分位设置为“90;95;99”,即百分位数为90%,95%和99%。
Graphite使用点(“.”)去拆分的元素,这可能与十进制百分位值混淆。JMeter转换任何此类值,用下划线(“ - ”)替换点(“.”)。例如,“99.9 ”变为“99_9 ”
默认情况下,JMeter发送在samplerName“all”下累计的所有采样器的指标。 如果配置了 BackendListenerSamplersList,那么JMeter还会发送匹配样本名称的指标,前提是配置 summaryOnly=true
PS:右上角可以选择数据展示的时间段和刷新频次!
jmeter 保持之前的配置不变,运行 采样器。下图是 压测效果:
如果让大家去设计一个好看的Dashboard,估计大家都不太想从零开始自己设计,其实Grafana官网提供丰富的模版的库,大家可以自己上去找,然后进行二次扩展。
官网模版库:https://grafana.com/dashboards
搜索看板模版
此处,我选择下载这个下载量5000+的模版
导入模版
选择数据源
注意下图红框内的设置:【为了快速见效,设置时间都比较短】
JMeter Backend Listener设置 (相应的 线程数 和 持续时间 也可根据需要配置)
压测期间的动画效果
===============================
至此,我初步打造的压测可视化实时监控大功告成~