[转帖]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 ...
随机推荐
- 面试官:禁用Cookie后Session还能用吗?
Cookie 和 Session 是 Web 应用程序中用于保持用户状态的两种常见机制,它们之间既有联系也有区别. Cookie 是由服务器在 HTTP 响应中发送给客户端(通常是浏览器)的一小段数据 ...
- NSSCTF Round#16 Basic crypto misc-wp
CRYPTO pr 题目 CRT from Crypto.Util.number import * import random flag=plaintext = 'NSSCTF{*********** ...
- 2020-12-17:java和go,如何高效的拼接字符串?
福哥答案2020-12-17: java: stringbuilder 线程不安全. stringbuffer 线程安全. go:答案来自此链接: 1.在已有字符串数组的场合,使用 strings.J ...
- 云图说丨DDoS防护解决方案:DDoS大流量攻击防得住
摘要:华为云安全服务打造DDoS防护解决方案,助您防患于未然,筑牢业务安全防线. 本文分享自华为云社区<[云图说]第255期 DDoS防护解决方案:DDoS大流量攻击防得住>,作者:阅识风 ...
- 再获信通院权威认证,优等生华为云GaussDB数据库凭什么?
摘要:在八大项测试中,华为云 GaussDB的两款数据库都以优异的成绩通过.那么这两款数据库究竟是凭借什么获此殊荣呢? 近期,中国信通院公布了第十三批数据库产品基础能力.性能和稳定性评审结果.在本次评 ...
- DataLeap的全链路智能监控报警实践(三): 系统实现
系统实现 整体架构 基线管理模块:负责基线创建.更新.删除等操作,管理基线元信息,包括保障任务,承诺时间,余量及报警配置等): 基线实例生成:系统每天定时触发生成基线实例,生成实例的同时根据保障任务, ...
- 火山引擎 DataTester 背后,抖音的名字原来是 AB 测试来的
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 抖音的名字是怎么来的? 在字节跳动火山引擎技术开放日上,字节跳动副总裁杨震原曾透露过"抖音"名 ...
- 火山引擎 DataLeap:如何构建一套完整、易用的数据标准体系
数据标准是数据治理体系中的核心要素之一. 一方面,统一的数据标准可以在复杂的业务场景下,帮助团队对齐数据口径,提升数据在分析.诊断等场景的质量与效率:另一方面,数仓团队与分析师团队也需要沉淀一套敏 ...
- 火山引擎 DataTester 智能发布平台:智能化 A/B 实验,助力产品快速迭代
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 在互联网竞争炙热的红海时代,精益开发高效迭代越来越成为成为产品竞争的利器.产品迭代过程中,如何保障高效的功能迭代安 ...
- C-Shopping基于Next.js,开源电商平台全新亮相
嗨,大家好!欢迎来到C-Shopping,这是一场揭开科技面纱的电商之旅.我是C-Shopping开源作者"继小鹏",今天将为你介绍一款基于最新技术的开源电商平台.让我们一同探索吧 ...