性能技术分享|Jmeter+InfluxDB+Grafana搭建性能平台(四)
四、Jmeter配置InfluxDB
4.1 后端监听器(BackendListener)介绍
1、什么是后端监听器(BackendListener)?
源码给出的解释是:BackendListener是一种异步监听并获取到测试结果的实现类。

也就是说发出的如http等响应请求的结果,都会被封装在SampleResult对象中并被其监听接收。
源码如下:
/**
* Async Listener that delegates SampleResult handling to implementations of {@link BackendListenerClient}
*
* @since 2.13
*/
public class BackendListener
extends AbstractTestElement
implements Backend, Serializable, SampleListener, TestStateListener, NoThreadClone, Remoteable {
}
2、为什么BackendListener能接收SampleResult?
由于BackendListener实现了SampleListener接口,而SampleListener在JMeterThread类中被使用到。
3、BackendListener的作用是?
由于它是异步接收压测元数据的,会将测试结果的元数据传给BackendListenerClient,后面的核心都是BackendListenerClient。

4、BackendListenerClient是什么?
BackendListenerClient是一个接口类,通过抽象类AbstractBackendListenerClient来扩展其功能,我们要获取到测试元数据都要通过继承AbstractBackendListenerClient来实现,包括JMeter原生自带的influxdb、graphite都是通过继承AbstractBackendListenerClient来获取元数据的。

继承AbstractBackendListenerClient需要实现三种方法,如下:
public interface BackendListenerClient {
//开启多线程执行压测之前,传入线程上下文,进行前置处理
void setupTest(BackendListenerContext context) throws Exception; // NOSONAR
//多线程压测过程中获取到测试结果集,传入当前方法进行处理
void handleSampleResults(List<SampleResult> sampleResults, BackendListenerContext context);
//多线程压测结束之后进行一个后置处理
void teardownTest(BackendListenerContext context) throws Exception;
4.2 配置后端监听器
1、启动Jmeter,添加后端监听器(BackendListener)
步骤: 线程组右击→添加→监听器→后端监听器


后端监听器添加后,默认页面。
2、选择后端监听器实现类型
因为我们数据库是InfluxDB,所以这里选择:
org.apache.jmeter.visualizers.backend.influxdb.InfluxbdBackendListenerClinet

3、修改配置项内容:
在这个项目中,我修改以下几项内容,其余想默认,
① influxdbUrl:http://localhost:8086/write?db=jmeterMC;
② Application:MC
③Measurement:jmeter
关于配置项的解析,如下:

到这里,后端监听器就配置完成了,当然,你在线程组中的信息,也需要正确配置,否则,数据是无法入库的。
这里,我们就压测数据,看看能否进入到InfluxDB数据库中。
在InfluxDB窗口,执行查询语句“select * from jmeter”,看到如下数据,就说明数据已经进入到InfluxDB了。

看到这里,就说明Jmeter执行的数据,已经进入到InfluxDB中了。
那如何在Grafana中展示呢?
因为第三节,已经在Grafana中配置了InfluxDB的数据源,所以,我们只需要在Grafana中查询到InfluxDB数据即可。
五、Grafana获取InfluxDB的数据进行展示
5.1 Dashboard配置项选择
①如果你有多个项目,需要在General/home ,选择项目:

②如果你一个项目中有多个接口,那也需要选择接口:
data_source:选择设置的数据库名

application:应用名/接口名

时间默认5分钟, 由于我们压测都需要半个小时以上,所以可以设置now-35m至now

5.2 Dashboard数据展示
Dashboard的展示,这里也是用上面的压测脚本数据展示,
按照5.2的操作步骤,配置完以后,在Dashboard展示的数据,如下:

这里需要注意:
1、Dashboard展示的是实时数据;
2、如果InfluxDB中没有数据,则Grafana中的Dashboard数据就展示0。

六、总结
到这里, Jmeter+InfluxDB+Grafana轻量级性能监控平台就搭建完成了。
回顾全篇,我详细介绍了:
①InfluxDB的特点,应用场景、常规操作命令语句;
②Grafana的安装,数据源的配置,数据源的展示;
③BackendListener的应用,项目名解析以及配置;
④整个流程通过Jmeter脚本执行后,数据源在Grafana的Dashboard展示;
目的是为了,让你知道其实搭建性能监控平台并不是那么困难,
也希望你能在实际的项目中,不仅仅只会执行性能测试脚本,而是进阶到更高的level。
当然,会搭建性能监控平台,也仅仅是作为性能测试工程师成长必备的一个阶段,
而要想达到更高级别,那需要的不仅仅是时间的沉淀,项目的洗礼,更需要对性能工程的理解与实战。
最后:
可以到我的个人号:atstudy-js,可以免费领取一份10G软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!其中包括了有基础知识、Linux必备、Mysql数据库、抓包工具、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试等。
这些测试资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
相关文章:
性能技术分享|Jmeter+InfluxDB+Grafana搭建性能平台(四)
四、Jmeter配置InfluxDB4.1 后端监听器(BackendListener)介绍1、什么是后端监听器(BackendListener)?源码给出的解释是:BackendListener是一种异步监听并获取到测试结果的实现类。也就是说发出的如http等响应请求的结果,都会被封装在SampleRe…...
图数据建模基础
Neo4j 图的组件 节点(Nodes)标签(Labels)关系(Relationships)属性(Properties)建模过程 了解领域并为应用程序定义特定用例(问题)。开发初始图形数据模型。 对…...
nodejs篇 process模块
目录 前言 监听回调 beforeExit 、exit、uncaughtException beforeExit exit uncaughtException Process常用属性 stdout stdin process方法 process.cwd(),process.chdir() process.nextTick() process.exit() process.kill() 前言 process是nodejs提…...
JavaScript高级程序设计读书分享之3章——3.4数据类型
JavaScript高级程序设计(第4版)读书分享笔记记录 适用于刚入门前端的同志 ECMAScript 有 6 种简单数据类型(也称为原始类型):Undefined、Null、Boolean、Number、String 和 Symbol(es6新增)。 还有一种复杂数据类型叫…...
棱形打印--进阶2(Java)
棱形打印 问题 * *** ***** ******* ********* ******* ***** *** * * * …...
清除 git 所有历史提交记录,使其为新库
清除 git 所有历史提交记录,使其为新库需求方案需求 基于以前的仓库重新开发,这样可保留以前的配置等文件,但是需要删除全部的历史记录、tag、分支等。 方案 创建新的分支 使用 --orphan 选项,可创建1个干净的分支(无…...
pyTorch下载和cuda下载以及学习笔记
pytorch官方网站,cuda官方网站 CUDA下载:https://developer.nvidia.com/cuda-toolkit-archive CUDNN下载:https://developer.nvidia.com/rdp/cudnn-download pytorch下载:pytorch.org 任务管理器中只显示CUDA占用的专用内存&#…...
【学习总结】IMU预积分推导
本文仅用于记录自己学习总结。记录IMU预积分推导过程,不包含具体原理。 符号表示 RRR: 表示旋转矩阵 vvv: 表示速度 ppp: 表示位移 ExpExpExp: 指数映射,将旋转向量映射为旋转矩阵 w~\widetilde{w}w: 角速度观测值 f~\widetilde{f}f: 加速度观测值 bg…...
天猫商城自动化python脚本(仅供初学者学习使用)
作者:Eason_LYC 悲观者预言失败,十言九中。 乐观者创造奇迹,一次即可。 一个人的价值,在于他所拥有的。可以不学无术,但不能一无所有! 技术领域:WEB安全、网络攻防 关注WEB安全、网络攻防。我的…...
代码随想录第十一天(459)
文章目录459. 重复的子字符串答案思路暴力破解移动匹配459. 重复的子字符串 也不知道为啥这个提示简单题…… 答案思路 暴力破解 例如:abcabc 移位一次:cabcab 移位两次:bcabca 移位三次:abcabc 现在字符串和原字符串匹配了…...
线程及线程池学习
1 线程和进程的区别?进程:进程指正在运行的程序。线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。同一个进程中的多个线程之间可以并发的执行。2 创建线程有哪几种方式…...
SpringBoot整合(四)整合Ehcache、Redis、Memcached、jetcache、j2cache缓存
企业级应用主要作用是信息处理,当需要读取数据时,由于受限于数据库的访问效率,导致整体系统性能偏低。 为了改善上述现象,开发者通常会在应用程序与数据库之间建立一种临时的数据存储机制,该区域中的数据在内存…...
想要的古风女生头像让你快速get
如今我看到很多人都喜欢用古风女生当作头像,那么今天我就来教大家如何快速得到一张超美的古风女生头像~ 上图就是我使用 APISpace 的 AI作画(图像生成)服务 快速生成的古风女生头像,不仅可以限定颜色,还可以选择『宝石镶嵌』或『花卉造型』这…...
传统企业数字化转型,到底难在哪里?
数字化转型过程中面临最大的挑战和问题是什么?这篇整理了企业在数字化转型过程中普遍面临的9大问题和挑战以及如何解决这些问题,希望能够对各位企业数字化转型有多启发和帮助。 01 企业数字化转型三大现状 在梳理企业数字化转型问题之前,我想…...
Python:青蛙跳杯子(BFS)
题目描述 X 星球的流行宠物是青蛙,一般有两种颜色:白色和黑色。 X 星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去。 如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个…...
6.10 谱分解
文章目录计算方法代码实现计算方法 单纯矩阵normal matrix指的是符号ATAAATA^TAAA^TATAAAT的矩阵,他们的特征值互异。此外,单纯矩阵还有个特点,他们的特征空间彼此正交。 对于单纯矩阵,存在以下的谱定理Spectral theorem&…...
MySQL入门篇-MySQL 行转列小结
备注:测试数据库版本为MySQL 8.0 需求:求emp表各个岗位的工资之和,如无,用0代替 如需要scott用户下建表及录入数据语句,可参考:scott建表及录入数据sql脚本 CASE语法 SELECT deptno,ifnull(sum(case when job MANAGER then sal else 0 …...
项目管理常见的十大难题及其症状
01缺少维护文档时常,项目工作紧张时,第一个去掉的就是文档工作。有时即使项目有时间,也不会创建文档;或是创建了文档,却很少在项目进行过程中维护它。症状产品与需求文档不符;技术文档过时,无法保证技术的延…...
技术方案模板
0.基本原则 1.可量化,很大、很多、很高 到底是多少?基本没影响,到底有没有影响什么情况下有影响? 2.可实施,结合实际情况最终可落地 3.可指导,非方案制定人能理解,能在尽量少的人工沟通的情况下实现方案 4.可复用,设计的方案,再次出现类似需求时可以做到少开发或不…...
MySQL中对于单表和多表的操作
一、单表查询素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等显示所有职工的基本信息。mysql8.0 [chap03]>select * from worker;查询所有职工所属部门的部门号,不显示重复的部门号。mysql8.0 [cha…...
Playwright-Skill:AI驱动的浏览器自动化解决方案全指南
Playwright-Skill:AI驱动的浏览器自动化解决方案全指南 【免费下载链接】playwright-skill Claude Code Skill for browser automation with Playwright. Model-invoked - Claude autonomously writes and executes custom automation for testing and validation. …...
Eclipse Mosquitto 安全防护实战指南:从漏洞诊断到纵深防御
Eclipse Mosquitto 安全防护实战指南:从漏洞诊断到纵深防御 【免费下载链接】mosquitto eclipse/mosquitto: Eclipse Mosquitto是一个轻量级的消息代理服务器,它支持MQTT协议。它被广泛应用于物联网设备之间的通信。 项目地址: https://gitcode.com/gh…...
Halcon实战:5分钟搞定特征点拼接图片(附完整代码解析)
Halcon特征点拼接实战:从原理到代码的完整指南 在工业视觉检测、医学影像分析和无人机航拍等领域,图像拼接技术扮演着关键角色。Halcon作为机器视觉领域的标杆工具,其强大的特征点匹配算法让复杂场景下的图像拼接变得简单高效。本文将带您深入…...
如何实现Unitree Go2远程控制:OM1的机器人远程操控实践指南
如何实现Unitree Go2远程控制:OM1的机器人远程操控实践指南 【免费下载链接】OM1 Modular AI runtime for robots 项目地址: https://gitcode.com/GitHub_Trending/om/OM1 你是否曾想过在办公室就能指挥家里的Unitree Go2机器人巡逻?或者在外出时…...
RexUniNLU在新闻推荐系统中的个性化匹配技术
RexUniNLU在新闻推荐系统中的个性化匹配技术 每天面对海量新闻资讯,你是否也曾感到信息过载?推荐系统如何从千万篇文章中精准找到你最感兴趣的内容?今天我们一起看看RexUniNLU如何通过深度理解实现更智能的新闻匹配。 1. 新闻推荐的挑战与机遇…...
Windows Server 2008 R2提权实战:用MS15-051漏洞从WebShell到System权限的完整操作记录
Windows Server 2008 R2权限提升实战:从低权限到系统控制的技术剖析 在渗透测试的实战场景中,获取初始立足点往往只是开始。当安全研究人员或红队成员通过Web漏洞获得了一个低权限的WebShell后,如何突破权限限制,获取系统最高控制…...
3步搞定专业简历:yamlresume让求职文书制作效率提升80%
3步搞定专业简历:yamlresume让求职文书制作效率提升80% 【免费下载链接】yamlresume Resumes as code in YAML, brought to you with ❤️ by PPResume. 项目地址: https://gitcode.com/gh_mirrors/ya/yamlresume 当你第5次修改简历格式却发现对齐混乱&#…...
MobaXterm新手必看:5分钟搞定SSH连接Linux的完整配置流程
MobaXterm新手避坑指南:SSH连接Linux的完整实战手册 第一次用MobaXterm连Linux服务器就像学骑自行车——看着别人操作行云流水,自己上手却总在奇怪的地方摔跟头。为什么连接总是超时?粘贴功能怎么时灵时不灵?X-Server服务到底该不…...
从像素到概念:如何用Python+OpenCV一步步提取图像的底层和高层特征
从像素到概念:PythonOpenCV实战图像特征提取全流程 引言:理解图像特征的层次性 当我们注视一张海滩照片时,视觉系统会经历从局部到整体的认知过程——首先捕捉海浪的纹理、沙粒的明暗,然后识别出遮阳伞、游泳者等独立物体…...
Ubuntu 20.04 下 COLMAP 编译安装:从 CUDA 架构到依赖冲突的避坑指南
1. 为什么选择源码编译COLMAP? 很多刚接触三维重建的朋友可能会问:为什么不用apt直接安装COLMAP?我在实际项目中发现,Ubuntu官方仓库的版本往往落后于GitHub主线版本2-3个迭代。比如当前Ubuntu 20.04仓库提供的是3.6版,…...
