[转帖]JMeter InfluxDB v2.0 listener plugin
https://github.com/mderevyankoaqa/jmeter-influxdb2-listener-plugin
Support my Ukrainian Family ️
Like what you see?
Description
The goal of the project is to make a quite similar online dashboard in the same way as JMeter generates. Supported the latest InfluxDB v2.0 and created appropriate dashboard ("Flux" language has been used to create the queries - now there are a lot fo capacities to build amazing charts, tables with a lot of math function). So that it would be possible to build the monitor hardware solution on the latest InfluxDB v2.0 and telegraf (agent to send the hardware metrics to InfluxDB) as well.
The plugin sends metrics to InfluxDB and provides the possibility to visualize the charts in Grafana, have the Aggregate report as JMeter creates. Added the possibly to save the following extra fields in the database:
- Response code;
- Error message;
- Response body of the failed requests (can be configured);
- Connect time;
- Latency;
- The response time (uses from the SampleResult.class, needs to make aggregate report).
Notes: if you need to save the errors you got wile the test to csv like file and then share to the dev team you can use the jmeter-csv-listener-plugin. This plugin can be used while the functional testing and load tests as well.
Important notes
The plugin allows 5 errors happened one by one, then plugin will stop importing the results after that! See details in the logs. Counter will be refreshed at least you have 4 fails. This is protection to avoid OOM error. The option can be configured in the settings (the key name is influxDBThresholdError see the Plugin configuration for the details). You need to be careful with that option and know the hardware resources to store data in the memory.
Pleas monitor the elapsed time of the data importing (see logs) to avoid issues with requests sending from JMeter. Pay attention on "Sending metrics performance tuning" chapter, see below.
Compatibility
The supported versions:
Java 11 - make sure that you have it (its minimum version).
InfluxDB v2.x, see release notes: https://docs.influxdata.com/influxdb/v2.0/reference/release-notes/influxdb/ (1.8 is not supported)
JMeter 5.5.0 only.
The current board and plugin were tested on Grafana 9.1.6 and InfluxDB 2.2.0, JAVA 15.
Maven Support
Please see the latest release here https://search.maven.org/artifact/io.github.mderevyankoaqa/jmeter-plugins-influxdb2-listener.
CI/CD Support
The CI/CD can be done using jmeter-maven-plugin The example of the adding plugin to the project with the jmeter-maven:
<configuration>
<jmeterExtensions>
<artifact>io.github.mderevyankoaqa:jmeter-plugins-influxdb2-listener:2.1</artifact>
</jmeterExtensions>
</configuration>
Some notes cab be found in the article Adding jar's to the /lib/ext directory.
Development and branching strategy
Hello all contributors! Welcome to the project, I'm happy to see you here. Just to avoid the mess and have a nice history, let's keep the simple rules:
- Code should pass standard static code analysis in IntelliJ IDEA.
- Comments should be for the new code to have clear java docs.
- All new development lets - in the "development" branch. So the steps: a. make a branch for the feature you want to develop from "development" (source branch -> "main"). There will be a mirror of the latest release + can be a merge of the new features. b. all pull requests from your feature branch -> "development" branch only. c. once we decide to make the new release after testing, we will merge "development" -> "main" with push to maven central.
While the first pull request please add your self to the build.gradle the section 'developers'
developers {
developer {
id = 'your github if'
name = 'your name'
email = 'email'
}
Deployment
- Put '
jmeter-plugin-influxdb2-listener-<version>.jar' file from Releases to~<JmeterPath<\lib\ext;
Note: "fatJar" gradle task should be used to create the package for the JMeter.

Run JMeter and select the test plan, Add-> Listener -> Backend Listener.

Go to Backend Listener

Select from the dropdown item with the name '
io.github.mderevyankoaqa.influxdb2.visualizer.JMeterInfluxDBBackendListenerClient'.
Upgrade
Close JMeter if its started.
Remove old jar.
Put '
jmeter-plugin-influxdb2-listener-<version>.jar' file from Releases to~<JmeterPath<\lib\ext;Run JMeter again and got Listener.
Select from the dropdown item with the name '
io.github.mderevyankoaqa.influxdb2.visualizer.JMeterInfluxDBBackendListenerClient'.
Click 'Clear all' button

Set right settings (update all properties).
InfluxDB configuration
Create Bucket to store the further testing results.

Create the token with read and write rights.

Plugin configuration
Let’s explain the plugin fields:
testName- the name of the test.nodeName- the name of the server.runId- the identification number of hte test run, can be dynamic.influxDBURL- InfluxDB server URL [protocol://][host][:port], protocol (can be http or https) and the default port is 8086.influxDBToken- the influxdb bucket token, the default value should be updated, copy it from InfluxDB site.
influxDBOrganization- the influxdb bucket organization, the default value should be updated, copy it from InfluxDB site.
influxDBFlushInterval- its interval to send data to InfluxDB, the default value is 4000 (4 seconds).influxDBMaxBatchSize- the max size of the batch with metrics, the default 2000 (2000 items of JMeter results).influxDBThresholdError- the error threshold before stopping the import, the default value is 5. (see Important notes for more detail.)influxDBBucket- the InfluxDB bucket name to store the test results.samplersList- the regex value to sort out the JMeter samplers results; the default is.*. For example if you have the pattern of JMeter test plan development like this - create the 'Transaction controller', add inside of the 'Transaction controller' the Sampler with request, and the name pattern 'GET->Something', like on the see screen below. The regex^(Home Page|Login|Search)(-success|-failure)?$can be used to save only samplers names. The regex can be generated from JMeter menu.
You can modify the generated string in terms of your purposes.

useRegexForSamplerList- allows to use the regexps if set to 'true'.recordSubSamples- allows to save the JMeter sub samples if set to 'true'.saveResponseBodyOfFailures- allows to save the response body of the failures.responseBodyLength- allows saving the response body, not more than the set specified length.
Sending metrics performance tuning
The plugin imports batch with JMeter results each 4 seconds (by default settings). In the logs you will see records like this: INFO o.m.j.i.v.InfluxDatabaseBackendListenerClient: Data has been imported successfully, batch size --> 68, elapsed time is --> 14 ms (the elapsed time is the response time of the batch importing.) So you can control the flush interval depends on the load you have and adjust influxDBFlushInterval setting. Is not recommended having less 1 second.
Max batch protection -> send data when batch max size is occurred. For example, when batch size is 2000 items (it's the default setting of influxDBMaxBatchSize) plugin imports that batch, even when flush interval was not occurred. Using both options you can tune data importing and have optimal performance.
Make sure you have enough ram to aggregate huge batch and optimal flush period.
Notes: when test has been interrupted from UI; the processes may not be finished properly, restart JMeter.
Grafana dashboard capabilities
See deployment instructions here https://grafana.com/grafana/dashboards/13644
Dashboard helps:
- Filter the results by Run Id or Type (can be requests or transactions).


Monitor throughput with active users.

Overview and analise the response time, distribution as well. Added the filters to see requests with status "pass", "fail".

See aggregate report. The table rendering may take an extra time. The table has hardware resources consuming queries from Influxdb side. If you have low hardware on the Influxdb server - recommended make the clone of the original dashboard and remove aggregate report. So the idea - it's to have one 'fast' dashboard for the online monitoring (has no aggregate report) to see the results while the test, the second (original with aggregate report) to see the final results.

Now added the possibility to see the aggregate report for requests with status "pass" only.

Investigate errors. The table is interactive, it's possible to filter data in the columns and see details for the specific error. Added the paging.

See network statistics, latency, processing time.

Check individual request details.

[转帖]JMeter InfluxDB v2.0 listener plugin的更多相关文章
- SteamVR Unity Plugin - v2.0.1中的InteractionSystem
最近写VR项目的时候用到了SteamVR Unity Plugin - v2.0.1插件,感觉比之前用到的SteamVR plugin for Unity - v1.2.2版本改进了很多,就算不用VR ...
- JMeter Nmon Tool V2.0 插件
很早之前宝路已将nmon监控功能集成到了JMeter中,自己在使用旧版本时,也有诸多不满意的地方.趁着五一假期(基本都是晚上,白天要陪孩子),对插件底层代码进行了重构,自己还要反复测试调整,最晚的一次 ...
- jmeter+influxdb+granfana+collectd监控cpu+mem+TPS
1.安装grafana #####gafana过期安装包安装报错 Error unpacking rpm package grafana-5.1.4-1.x86_64error: unpacking ...
- Jmeter+ InfluxDB+Grafana安装配置
前置条件: 系统:windows jmeter:5.1 InfluxDB安装 下载InfluxDB-v1.7.9和Chronograf-v1.7.14(InfluxDB的可视化web端). 下载完成之 ...
- 性能测试监控:Jmeter +InfluxDB +collectd +Grafana
虚拟机ip 192.168.180.128 Influxdb Influxdb是一个开源的分布式时序.时间和指标数据库,使用go语言编写,无需外部依赖. 它有三大特性: 时序性(Time Series ...
- jmeter+influxdb+grafana性能测试监控
背景: 话说Jmeter原生的监控确实太丑了,听大佬们在讨论Jmeter+InfluxDb+Grafana的监控,于是,为了有一个漂亮的测试报告,就手动开始进行部署. 安装步骤: 1.influxdb ...
- Jmeter +InfluxDB +collectd +Grafana16
Jmeter +InfluxDB +collectd +Grafana(十六) 虚拟机ip 192.168.180.128 Influxdb Influxdb是一个开源的分布式时序.时间和指标数据库, ...
- 搭建jmeter+influxdb+grafana压测实时监控平台(超详细,小白适用)
1.前言 在使用jmeter做性能测试的时候,监控系统性能的时候,无论是使用插件还是报告生成,都没法实现实时监控.使用JMeter+Influxdb+Grafana可以实现实时监控. 本次环境搭建各软 ...
- 【JS】heatmap.js v1.0 到 v2.0,详细总结一下:)
前段时间,项目要开发热力图插件,研究了heatmap.js,打算好好总结一下. 本文主要有以下几部分内容: 部分源码理解 如何迁移到v2.0 v2.0官方文档译文 关于heatmap.js介绍,请看这 ...
- ArcGIS Runtime for Android开发教程V2.0(2)开发环境配置
原文地址: ArcGIS Runtime for Android开发教程V2.0(2)开发环境配置 - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http://blog.c ...
随机推荐
- 你真的会用 npx 吗❓❓❓
Hello,大家好! 日常开发中大家应该经常使用 npm install xxx 来安装包依赖,那是否注意到npm升级到 npm@5.2.0 之后,在 npm 二进制命令旁边安装了一个 npx 二进制 ...
- [Python急救站]回文数的判断
回文数判断:回文数是指这个数颠倒后,与原数一致,如32223.12221等. 第一个程序是由用户输入,并判断是否是回文数. a = eval(input("请输入一个五位数")) ...
- 文心一言 VS 讯飞星火 VS chatgpt (34)-- 算法导论5.3 1题
一.Marceau 教授不同意引理 5.5 证明中使用的循环不变式.他对第1次送代之前循环不变式是否为真提出质疑.他的理由是,我们可以很容易宣称一个空数组不包含0排列.因此一个空的子数组包含一个0排列 ...
- 27、flutter Dialog 弹窗
AlertDialog //放在State<>之下 void _alertDialog() async { var result = await showDialog( barrierDi ...
- STM32CubeMX教程14 ADC - 多通道DMA转换
1.准备材料 开发板(正点原子stm32f407探索者开发板V2.4) ST-LINK/V2驱动 STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK ...
- 如何通过一个SDK轻松搞定人脸识别,拯救初入职场的程序猿
摘要:看一个SDK如何拯救初入职场的程序猿小Hi- [职场初体验] 时间过得真快,距离上次给小Hi安排"人脸识别"的开发任务(话接上期:[快速玩转华为云开发]小Hi拍了拍你,基于华 ...
- 案例集锦|科技赋能,华为云GaussDB助千行百业数字化转型
当下,全社会驶入数字化转型快车道,以科技赋能.智慧转型为主旨的数字生态推动着千行百业的变革.数据库作为企业核心数据底座,华为云提供了安全可靠的云原生底座和一站式上云解决方案.其中华为云GaussDB覆 ...
- PanGu-Coder:函数级的代码生成模型
摘要:华为诺亚方舟实验室语音语义实验室联合华为云PaaS技术创新实验室基于PanGu-Alpha研制出了当前业界最新的模型PanGu-Coder 本文分享自华为云社区<PanGu-Coder 函 ...
- 只需2步,教你在Vue中设置登录验证拦截
摘要:两步教你在Vue中设置登录验证拦截! 本文分享自华为云社区<两步教你在Vue中设置登录验证拦截!>,作者: 灰小猿 . 今天在做vue和springboot交互的一个项目的时候,想要 ...
- MySQL java new dat() 后插入数据库的时间不一致
别用时间字段,做为关联字段,代码里的时间和插到数据库中有误差 MySQL java new dat() 后插入数据库的时间不一致,代码里new 的时间插到数据库中不一致