[转帖]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 ...
随机推荐
- 揭秘华为云GaussDB(for Influx):最佳实践之数据建模
摘要:本期将从GaussDB(for Influx)数据模型谈起,分享GaussDB(for Influx)数据建模的最佳方法,避免一些使用过程中的常见问题. 本文分享自华为云社区<华为云Gau ...
- vue2升级vue3: Event Bus 替代方案
在看 https://v3-migration.vuejs.org/breaking-changes/events-api.html 在vue2里面 In 2.x, a Vue instance co ...
- 火山引擎入选《2022 爱分析 · DataOps 厂商全景报告》,旗下 DataLeap 产品能力获认可
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 2 月 9 日,国内领先的数字化市场研究与咨询机构爱分析发布了<2022 爱分析·DataOps 厂商全景报 ...
- Solon Cloud 2.2.10 架构图发布
Solon Cloud 是在 Solon 的基础上构建的微服务开发套件.以标准与规范为核心,构建丰富的开放生态.为微服务开发提供了一个通用防腐层(即不用改代码,切换配置即可更换组件). 本次发布,展示 ...
- Pycharm 2023 年最新激活码、破解教程,亲测有用,永久有效
申明:本教程 Pycharm 破解补丁.激活码均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除.若条件允许,希望大家购买正版 ! PS: 本教程最新更新时间: 2023年2月2日~ ...
- Java 使用 slf4j + log4j 写日志
没有SpringBoot等框架的情况下 pom.xml: <properties> <slf4j.version>1.7.26</slf4j.version> &l ...
- AtCoder ARC 115 E - LEQ and NEQ (延迟标记线段树 or 笛卡尔积 + DP维护)
问题链接:Here 长度为 \(N\) 的数列 \(A_1,-,A_N\) .回答满足以下条件的长度 \(N\) 的数列 \(X_1,-,X_N\) 的个数除以 \(998244353\) 的余数. ...
- 2019年第十届蓝桥杯国赛C++A组
蓝桥杯历年国赛真题汇总:Here 最后编辑时间: 2021年5月27日 统一声明 如果不写默认带有常用头文件 如果不表明主函数默认表示在 void solve(){} 默认使用 using names ...
- Spark 数据倾斜及其解决方案
本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/lqMu6lfk-Ny1ZHYruEeBdA 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双 ...
- java8 Steam流及Optional的使用
目录 Stream流: 获取流 1. list获取: 2. Map获取 3. 数组获取 流方法分类: 1. forEach(终结方法) 2. count计数(终结方法) 3.filter过滤 4.li ...