我已经使用InfluxDB + Grafana来获取我的JMeter测试的实时结果。您可以在此处找到有关基本设置的更多详细信息。在本文中,让我们看看我们如何在InfluxDB测量中添加一些自定义字段,以便在将来可能需要更快的搜索。

问题陈述:

在我的组织中,我们有一组负载生成器用于性能测试。我们使用这些机器来测试多个项目/应用程序。有时,我会为应用程序的组件级别测试创建多个套件。你可以在这里查看我是如何做到这一点的。

我们的后端监听器将所有指标发送到这些测量 - 当天结束 - 我们不确定这些指标属于哪个应用程序/项目。

如果我们可以根据应用程序/项目/套件甚至Jenkins构建#来过滤指标,那就太好了。

解:

幸运的是,我们不必提出自己的实现来实现这一目标。使用现有的JMeter后端监听器本身,解决方案非常简单。

  • 就本文而言,我创建了一个简单的JMeter测试,如下所示。

  • 让我们添加几个用户定义的变量,如下所示。我这里有硬编码值。您可以对其进行参数化 - 从Jenkins传递值。

  • 现在我需要将这些值发送到InfluxDB。最简单的选择是更新后端监听器的rootMetricsPrefix。

jmeter.${project}.${suite}.${jenkins.build.number}.

  • 运行JMeter测试。等几秒钟。
  • 检查JMeter创建的测量值。

  • 这些测量名称有助于我们识别项目/应用程序/套件/ Jenkins构建数量的度量标准。

但是,这不是我想要的!

我不希望在InfluxDB中进行大量的测量,这些测量变得非常难以查询/维护。

让我们看看我们如何做得更好。

JMeter的石墨输入:

JMeter以下列格式向InfluxDB发送2种类型的指标。

  • 响应时间指标:

jmeter.testautomationguru.smoketest.121.Login.a.avg 135

状态  可以通过,ko表示失败,a表示全部

度量可以是min,max,avg,pct90,pct 95等

页面可以是采样器级别详细信息的采样器名称,也可以是聚合信息的采样器名

当InfluxDB接收到这样的数据时,如果它无法找到模板,如果它已经不存在,它将创建带有名称的测量,并将该值记录在测量中的当前时间戳中。

  • 线程/用户指标:

jmeter.testautomationguru.smoketest.121.test.meanAT 10

这与上面相同。这里缺少页面和状态并被' test ' 取代。

石墨输入的模板:

通过使用石墨输入模板,我们可以避免创建多个测量。

有关Graphite输入模板的更多信息,请点击此处

也就是说,响应时间石墨输入“ jmeter.testautomationguru.smoketest.121.Login.a.avg ” 的模板将是“ measurement.project.suite.build.page.status.metric ”

我们需要在不同的度量中记录线程/用户度量,因为它不能成为采样器级别度量的一部分。由于JMeter以略微不同的格式发送2个指标,因此让我们分别捕获它们。

通过使用正则表达式格式,如果输入是特定格式,我们可以指示InfluxDB使用特定模板。

对于此输入 - “ jmeter.testautomationguru.smoketest.121.test.meanAT ”,项目,套件,内部版本号可以是任何内容。但肯定会接着进行“ 测试 ”。

因此,所有用户指标都可以通过此输入格式捕获 - “ jmeter。。*。测试 “

在InfluxDB配置文件中相应更新模板,然后重新启动InfluxDB以获取更新配置。

立即运行JMeter测试并查看。[请注意,InfluxDB仅将模板用于新输入。现有的测量值不能改变]

我们现在只能看到2个测量值。1表示响应时间,1表示用户指标。

如果我查询测量,我将我的项目/应用程序,套件,构建信息,页面,状态等作为不同的列。

“jmeter.test”用于具有类似信息的线程/用户度量。

这要好得多!!

Grafana模板:

当我们记录项目,套件时,Jenkins构建#,metric等作为测量标签/列,我们可以使用Grafana模板来过滤/重复整行。

  • 转到Grafana - > 仪表板 - >管理仪表板 - >模板    创建一个新变量。

查看此视频,了解如何创建模板变量并在查询中使用以进行过滤。

视频播放器

 
 
00:00
 
03:23
 
 
 

页面重复面板:

我们可以为每个变量/页面重复整个面板。观看此视频。

视频播放器

 
 
00:00
 
02:15
 
 
 

摘要:

正如我们所看到的,我们应该能够在InfluxDB中添加一些自定义数据,以便使用Graphite输入模板和Grafana模板变量进行更快速的搜索。

本文仅介绍JMeter性能测试结果。您可能对收集应用程序服务器性能指标+ JVM指标非常感兴趣。检查下面的TestautomationGuru文章。

快乐测试和订阅

JMeter - 实时结果 - InfluxDB和Grafana - 第2部分 - 添加自定义字段的更多相关文章

  1. JMeter - 实时结果 - InfluxDB和Grafana - 第1部分 - 基本设置

    概述: 在本文中,我将解释如何使用JMeter + InfluxDB + Grafana获得实时性能测试结果. 请注意,此主题太大,无法涵盖一篇文章中的所有内容.所以,我试图提供与TestAutoma ...

  2. 【jmeter】基于InfluxDB&Grafana的JMeter实时性能测试数据的监控和展示

    本文主要讲述如何利用JMeter监听器Backend Listener,配合使用InfluxDB+Grafana展示实时性能测试数据 关于JMeter实时测试数据 JMeter从2.11版本开始,命令 ...

  3. 性能测试 CentOS下结合InfluxDB及Grafana图表实时展示JMeter相关性能数据

    CentOS下结合InfluxDB及Grafana图表实时展示JMeter相关性能数据   by:授客 QQ:1033553122 实现功能 1 测试环境 1 环境搭建 2 1.安装influxdb ...

  4. jmeter --- 基于InfluxDB&Grafana的JMeter实时性能测试数据的监控和展示

    转自:https://blog.csdn.net/RickyOne_RR/article/details/50637839 本文主要讲述如何利用JMeter监听器Backend Listener,配合 ...

  5. 转:基于InfluxDB&Grafana的JMeter实时性能测试数据的监控和展示

    本文主要讲述如何利用JMeter监听器Backend Listener,配合使用InfluxDB+Grafana展示实时性能测试数据 关于JMeter实时测试数据 JMeter从2.11版本开始,命令 ...

  6. 性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据

    基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据   by:授客 QQ:1033553122 实现功能 测试环境 环境搭建 使用前提 使用方法 运行程序 效果展 ...

  7. 性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机或Docker容器性能数据

    基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据   by:授客 QQ:1033553122 实现功能 1 测试环境 1 环境搭建 3 使用前提 3 使用方法 ...

  8. 性能测试 基于Python结合InfluxDB及Grafana图表实时监控Android系统和应用进程

    基于Python结合InfluxDB及Grafana图表实时监控Android系统和应用进程   By: 授客 QQ:1033553122     1. 测试环境 2. 实现功能 3. 使用前提 4. ...

  9. jmeter 实时搜索结果

    因为JMeter 2.13你可以得到实时搜索结果发送到后端通过 后端侦听器 使用潜在的任何后端(JDBC.JMS网络服务,€Š) 通过提供一个实现类 AbstractBackendListenerCl ...

随机推荐

  1. 实现两个窗口通信方法-postMessage

    此方案可解决跨域而且跨Iframe,而且http和https之间的交互 首先来看一下基本的语法 otherWindow.postMessage(message, targetOrigin, [tran ...

  2. Mybatis generator配置文件及说明

    项目采用sring mvc + mybatis 组合,这里简单介绍下mybatis的应用: 我的IDE是STS(Spring + Tool + Suite), 安装Mybatis Generator插 ...

  3. ACM学习历程—HDU5422 Rikka with Graph(贪心)

    Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so he ...

  4. 【LeetCode】066. Plus One

    题目: Given a non-negative integer represented as a non-empty array of digits, plus one to the integer ...

  5. Missing key(s) in state_dict: Unexpected key(s) in state_dict

    如果加载的预训练模型之前使用了torch.nn.DataParallel(),而此时的训练并没有使用,则会出现这样的错误.解决方案有两个:1:此时的训练加入torch.nn.DataParallel( ...

  6. python为类定义构造函数

    用python进行OO编程时, 经常会用到类的构造函数来初始化一些变量. class FileData:     def __init__(self, data, name, type):       ...

  7. 服务器FTP配置

    一.如果没有安装FTP服务器,安装如下: 二.添加SSL证书 三.给证书起一个有意义的名字就可以了 四.FTP  SSL设置 五.FTP 身份验证: 进入-如果开启自己需要的-我这里是需要用户输入密码 ...

  8. Boost库之asio io_service以及run、run_one、poll、poll_one区别

    一.io_service的作用 io_servie 实现了一个任务队列,这里的任务就是void(void)的函数.Io_servie最常用的两个接口是post和run,post向任务队列中投递任务,r ...

  9. mysqladmin命令用法

    mysqladmin 工具的使用格式: mysqladmin [option] command [command option] command ...... option 选项: -c  numbe ...

  10. css之布局

    布局一直是页面制作很重要的部分,有个良好的布局不仅在页面上呈现很好的效果,还对后续功能扩展有重要的作用.本文主要讨论一下几种布局: 水平居中布局 垂直居中布局 多列布局 自适应布局 stracky-f ...