windows 下搭建 Jmeter + InfluxDB + Grafana 测试性能监控平台

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,我们就可以创建炫酷的可视化看板,并可以实时获取到测试指标数据。

1. 安装InfluxDB

1.1、InfluxDB简介

  • 时序数据库:处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。想象它就像一个sql表,其中时间是它的主键
  • InfluxDB:是一款用Go语言编写的开源分布式时序、事件和指标数据库,无需外部依赖。该数据库现在主要用于存储涉及大量的时间戳数据,如DevOps监控数据,APP metrics, loT传感器数据和实时分析数据。
  • 与 同类数据库 OpenTSDB 的比较:
     http://blog.fatedier.com/2016/07/06/test-influxdb-and-opentsdb/

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各种有索引的属性:地区,海拔

1.2、Windows 下的 InfluxDB 安装和运行

1.2.1、解压后修改配置文件 influxdb.conf 

网络端口说明:

InfluxDB默认使用以下网络端口:

  • TCP端口 2003 用于 向 InfluxDB写数据(jmeter通过2003端口连)
  • TCP端口 8086 用于 从 InfluxDB读数据(grafana通过8086端口连)
  • TCP端口 8088 用于RPC服务以进行备份和还原
  • 除了上面的端口,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  

1.2.2、命令行启动

CMD到 influxdb 的目录下,直接命令  influxd -config influxdb.conf  启动。

注意:不能直接 双击 influxd.exe  启动,那样的话刚才的配置是无效的,会造成 jmeter写入influxdb 时报错,参考:https://blog.csdn.net/qq_35304570/article/details/81290072。这个低级错误困扰了我半天的时间】

1.2.3、influxdb 连接测试

双击 influx.exe,打开命令行窗口,依次执行以下命令:
注意:由于配置文件中开启了登录授权,数据库连接上之后,必须首先创建用户并授权,否则一切操作无效。这里也困扰了我半天的时间】

CREATE USER admin WITH PASSWORD 'admin' WITH ALL PRIVILEGES

auth admin admin

CREATE DATABASE jmeter

show databases

use jmeter

show measurements

执行最后一个命令,命令行界面显示为空,当前还没有数据。

 

2、配置 jmeter

jmeter 下载地址: http://jmeter.apache.org/download_jmeter.cgi

2.1、添加线程组

2.2、添加一个Java请求

方便测试(因为想偷懒,Java请求我什么都不用写,直接运行就能成功) 

2.3、添加结果树,方便查看结果

2.4、添加 “Backend Listener”

配置如图:

2.5、运行测试

上述配置好之后,点击运行测试。

(1)结果树页面:

(2) influx.exe 命令行界面,运行  show measurements ,可看到数据:

 

3、安装 Grafana

【本部分主要参考文章: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

3.1、安装并运行

比起前两者,安装相对简单。
我使用的是 msi 安装文件,【注意:安装之前关闭 360 杀毒(如果用的是压缩包,直接解压即可)】
安装好之后,进入 bin 目录,直接双击 grafana-server.exe  运行即可。

通过 msi 文件安装的程序自动进入 服务列表,作为系统服务自动启动,不需要再双击 EXE 运行

3.2、配置数据源

(1)用浏览器 打开:http://localhost:3000/   。输入: admin  admin  登录

(2)配置数据源:按照下图中所示操作

下图红框中是必填项:

3.3、配置图表

配置图表有两种方式,一种是利用系统提供的图表自己组合,另一种是导入官方提供的图表展示模板。

3.3.1、自定义图表

下图中右边红框的两个地方配置好

指标说明

线程数/用户相关指标
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 保持之前的配置不变,运行 采样器。下图是 压测效果:

3.3.2、导入图表(Dashboard)模板

如果让大家去设计一个好看的Dashboard,估计大家都不太想从零开始自己设计,其实Grafana官网提供丰富的模版的库,大家可以自己上去找,然后进行二次扩展。

官网模版库:https://grafana.com/dashboards

搜索看板模版

此处,我选择下载这个下载量5000+的模版

下模版JSON文件

导入模版

选择数据源

注意下图红框内的设置:【为了快速见效,设置时间都比较短】

JMeter Backend Listener设置  (相应的 线程数 和 持续时间 也可根据需要配置)

压测期间的动画效果

最终结果:

===============================

至此,我初步打造的压测可视化实时监控大功告成~?

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值