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:

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:

  1. Code should pass standard static code analysis in IntelliJ IDEA.
  2. Comments should be for the new code to have clear java docs.
  3. 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的更多相关文章

  1. SteamVR Unity Plugin - v2.0.1中的InteractionSystem

    最近写VR项目的时候用到了SteamVR Unity Plugin - v2.0.1插件,感觉比之前用到的SteamVR plugin for Unity - v1.2.2版本改进了很多,就算不用VR ...

  2. JMeter Nmon Tool V2.0 插件

    很早之前宝路已将nmon监控功能集成到了JMeter中,自己在使用旧版本时,也有诸多不满意的地方.趁着五一假期(基本都是晚上,白天要陪孩子),对插件底层代码进行了重构,自己还要反复测试调整,最晚的一次 ...

  3. jmeter+influxdb+granfana+collectd监控cpu+mem+TPS

    1.安装grafana #####gafana过期安装包安装报错 Error unpacking rpm package grafana-5.1.4-1.x86_64error: unpacking ...

  4. Jmeter+ InfluxDB+Grafana安装配置

    前置条件: 系统:windows jmeter:5.1 InfluxDB安装 下载InfluxDB-v1.7.9和Chronograf-v1.7.14(InfluxDB的可视化web端). 下载完成之 ...

  5. 性能测试监控:Jmeter +InfluxDB +collectd +Grafana

    虚拟机ip 192.168.180.128 Influxdb Influxdb是一个开源的分布式时序.时间和指标数据库,使用go语言编写,无需外部依赖. 它有三大特性: 时序性(Time Series ...

  6. jmeter+influxdb+grafana性能测试监控

    背景: 话说Jmeter原生的监控确实太丑了,听大佬们在讨论Jmeter+InfluxDb+Grafana的监控,于是,为了有一个漂亮的测试报告,就手动开始进行部署. 安装步骤: 1.influxdb ...

  7. Jmeter +InfluxDB +collectd +Grafana16

    Jmeter +InfluxDB +collectd +Grafana(十六) 虚拟机ip 192.168.180.128 Influxdb Influxdb是一个开源的分布式时序.时间和指标数据库, ...

  8. 搭建jmeter+influxdb+grafana压测实时监控平台(超详细,小白适用)

    1.前言 在使用jmeter做性能测试的时候,监控系统性能的时候,无论是使用插件还是报告生成,都没法实现实时监控.使用JMeter+Influxdb+Grafana可以实现实时监控. 本次环境搭建各软 ...

  9. 【JS】heatmap.js v1.0 到 v2.0,详细总结一下:)

    前段时间,项目要开发热力图插件,研究了heatmap.js,打算好好总结一下. 本文主要有以下几部分内容: 部分源码理解 如何迁移到v2.0 v2.0官方文档译文 关于heatmap.js介绍,请看这 ...

  10. ArcGIS Runtime for Android开发教程V2.0(2)开发环境配置

    原文地址: ArcGIS Runtime for Android开发教程V2.0(2)开发环境配置 - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http://blog.c ...

随机推荐

  1. tee 实现双通道输出

    ls -l|tee >(wc -l) >(wc -c) > /dev/null

  2. 神经网络基础篇:关于 python_numpy 向量的说明(A note on python or numpy vectors)

    关于 python_numpy 向量的说明 主要讲Python中的numpy一维数组的特性,以及与行向量或列向量的区别.并说一下在实际应用中的一些小技巧,去避免在coding中由于这些特性而导致的bu ...

  3. 容器、Docker、虚拟机,别再傻傻分不清

    摘要:容器技术起源于Linux,是一种内核虚拟化技术,提供轻量级的虚拟化,以便隔离进程和资源.尽管容器技术已经出现很久,却是随着Docker的出现而变得广为人知. 容器技术起源于Linux,是一种内核 ...

  4. 拔掉电源会怎样?GaussDB(for Redis)双活让你有备无患

    摘要:GaussDB(for Redis)推出双活方案,助力全球化业务部署,为您的数据资产保驾护航! 本文分享自华为云社区<华为云GaussDB(for Redis)揭秘第22期:拔掉电源会怎样 ...

  5. 字节跳动开源数据集成引擎 BitSail 的演进历程与能力解析

    导读 BitSail 是字节跳动开源数据集成引擎,支持多种异构数据源间的数据同步,并提供离线.实时.全量.增量场景下全域数据集成解决方案,目前支撑了字节内部和火山引擎多个客户的数据集成需求.经过字节跳 ...

  6. 克服 ClickHouse 运维难题:ByteHouse 水平扩容功能上线

    前言 对于分析型数据库产品,通过增加服务节点实现集群水平扩容,并提升集群性能和容量,是运维的必要手段. 但是对于熟悉 ClickHouse 的工程师而言,听到"扩容"二字一定会头疼 ...

  7. 还在用 Excel 和 SQL?火山引擎 VeDI 这款产品帮你更快处理数据

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 对大多数职场打工人来说,看数据.用数据一直是项有"门槛"的工作. 特别是在企业业务快速发展的背景下,为 ...

  8. PPT 文字穿插

    软件文字,添加一个形状 先选形状,再选文字 选择拆分 设置对象格式

  9. MongoDB 副本模式,会映射到本地 127.0.0.1 错误

    基于 MongoDB 读写分离--Windows MongoDB 副本集配置 ,里面配置了一个坑,导致出现下列错误 [2021-05-10 10:06:11.981] [cluster-Cluster ...

  10. pyinstaller打包多线程代码,运行死循环?

    描述现象 用pyinstaller打包了一个上传文件的脚本,里面有多个input在while循环内,然后启用了多线程上传,在编辑器中运行没问题,但是打包完后,就一直循环提示你input... 解决 在 ...