轻松打造智能化性能测试监控平台:【JMeter+Grafana+Influxdb】的优化整合方案

在当前激烈的市场竞争中,创新和效率成为企业发展的核心要素之一。在这种背景下,如何保证产品和服务的稳定性、可靠性以及高效性就显得尤为重要。

而在软件开发过程中,性能测试是一项不可或缺的环节,它可以有效的评估一个系统、应用或者软件的性能指标。然而,如何提升性能测试效率,把测试结果转化为有价值的信息,则是一个更加重要的问题。

因此,本文提供了一个基于JMeter、Grafana和Influxdb的优化整合方案,将三个工具进行智能化整合,通过实时监控和数据分析,帮助团队更好地发现和解决性能问题,为企业提升产品和服务的质量打下坚实的基础。无论您是团队负责人、测试工程师、运维工程师或其他技术人员,都可以通过本文的方案,轻松打造智能化性能测试监控平台,从而在激烈的市场竞争中获得更大的优势。

【背景说明】

使用jmeter进行性能测试时,工具自带的查看结果方式往往不够直观和明了,所以我们需要搭建一个可视化监控平台来完成结果监控,这里我们采用三种JMeter+Grafana+Influxdb的方法来完成平台搭建

【实现原理】

通过influxdb数据库存储jmeter的结果,再通过grafana采集influxdb数据库数据,完成监控平台展示

【平台搭建】
方法一:Windows或macOS环境下搭建
1.InfluxDB安装

首先进入influxDB官网下载安装包(选择2.0以下版本)

https://portal.influxdata.com/downloads/

Windows可使用以下链接直接下载

https://dl.influxdata.com/influxdb/releases/influxdb-1.7.9_windows_amd64.zip

下载完成后进行解压,以Windows为例:

进入文件夹可看到以下目录

点击influxd.exe启动数据库,启动成功如下图所示

点击influx.exe进入influxdb客户端,进入后创建名字为“jmeter”的数据库

2.grafana安装

首先进入grafana官网下载安装包

https://grafana.com/grafana/download

选择对应系统后下载,以Windows为例:

解压完成后进入bin目录点击grafana-server.exe来启动grafana程序

启动完成后打开浏览器输入http://localhost:3000进入grafana登录页面

默认用户名和密码都为admin,进入首页后点击添加数据库

选择influxdb数据库,填写以下信息即可

点击sava&test,显示data source is working表示数据库连接成功

导入已下载好的仪表盘

也可以到grafana官网寻找模板,在导入模板处输入需要模板的Downlosds编号即可

https://grafana.com/grafana/dashboards

最后如图所示

3.jmeter配置

1.jmeter中,添加“监听器 -> 后端监听器”

配置后端监听器,目的是把jmeter的结果存入influxdb数据库

方法二:Linux环境下搭建
1.influxdb安装

使用命令直接安装influxdb

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.4_linux_amd64.tar.gz

解压influxdb压缩包

tar -zxvf influxdb-1.8.4_linux_amd64.tar.gz 

添加环境变量

cd influxdb-1.8.4-1/usr/bin

sudo cp {influx,influxd} /usr/local/bin/

启动influxdb

influxd

启动influxdb客户端,创建jmeter数据库

influx

create database jmeter

2.grafana安装

使用命令直接安装

wget https://dl.grafana.com/oss/release/grafana-7.5.2.linux-amd64.tar.gz

解压安装包

tar -zxvf grafana-7.5.2.linux-amd64.tar.gz

启动grafana

cd grafana-7.5.2/bin

./grafana-server

访问grafana网页,其余操作和方法一相同

http://ip:3000

3.jdk+jmeter安装

安装jmeter之前需要先安装jdk,下载jdk(可以使用下面地址进行下载,也可以去官网下载,官网需要登录oracle)https://www.jdkdownload.com/,我这选择jdk-8u181-linux-x64.tar.gz版本下载

解压jdk

tar -zxvf jdk-8u181-linux-x64.tar.gz

配置环境变量,修改配置文件vi /etc/profile,文本最后加上以下内容

JAVA_HOME=/usr/local/java/jdk1.8.0_181

CLASSPATH=$JAVA_HOME/lib/

PATH=$PATH:$JAVA_HOME/bin

export PATH JAVA_HOME CLASSPATH

使环境变量生效

source /etc/profile

验证jdk配置成功

java -version

使用命令直接安装jmeter

wget https://mirrors.bfsu.edu.cn/apache//jmeter/binaries/apache-jmeter-5.4.3.tgz

解压jmeter

tar -zxf apache-jmeter-5.4.3.tgz

配置jmeter环境变量,vi /etc/profile,文本最后加上以下内容

export JMETER_HOME=/usr/local/apache-jmeter-5.4.3

export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH

export PATH=$JMETER_HOME/bin:$PATH

使环境变量生效

source /etc/profile

验证jmeter配置成功

jmeter --version

将jmeter脚本上传到当前文件夹中,执行以下命令启动jmeter

jmeter -n -t ***.jmx -l test.jtl

参数说明:

-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter

-t 测试文件 -> 要运行的 JMeter 测试脚本文件

-l 日志文件 -> 记录结果的文件
方法三:docker容器下安装
1.influxdb安装并运行(选择2.0以下版本)
docker run -itd --name influxdb -p 8086:8086 influxdb:1.8.3

进入容器

docker exec -it influxdb /bin/bash

创建数据库

influx

create database jmeter

show databases

2.grafana安装并运行
docker run -itd --name grafana -p 3000:3000 grafana/grafana

进入容器

docker exec -it grafana /bin/bash

访问grafana网页,其余操作和方法一相同(需注意容器内连接influxdb使用容器ip)

http://ip:3000

3.jmeter安装

首先需要先下载jmeter

wget https://mirrors.bfsu.edu.cn/apache//jmeter/binaries/apache-jmeter-5.4.3.tgz

我们使用dockerfile安装,内容如下

FROM java:8



ENV http_proxy ""

ENV https_proxy ""



RUN mkdir /jmeterdocker

RUN mkdir -p /jmeterdocker/test

RUN mkdir -p /jmeterdocker/test/input/jmx

RUN mkdir -p /jmeterdocker/test/input/testdata

RUN mkdir -p /jmeterdocker/test/report/html

RUN mkdir -p /jmeterdocker/test/report/jtl

RUN mkdir -p /jmeterdocker/test/report/outputdata

RUN chmod -R 777 /jmeterdocker



ENV JMETER_VERSION=5.4.3

ENV JMETER_HOME=/jmeterdocker/apache-jmeter-${JMETER_VERSION}

ENV JMETER_PATH=${JMETER_HOME}/bin:${PATH}

ENV PATH=${JMETER_HOME}/bin:${PATH}



COPY apache-jmeter-${JMETER_VERSION}.tgz /jmeterdocker



RUN cd /jmeterdocker \

&& tar xvf apache-jmeter-${JMETER_VERSION}.tgz \

&& rm apache-jmeter-${JMETER_VERSION}.tgz

在dockerfile文件路径下执行命令

docker build -t jmeter .

创建jmeter容器

docker run -itd --name=jmeter -v /tmp/jmeterspace/test/input/jmx:/jmeterdocker/test/input/jmx \

-v /tmp/jmeterspace/test/input/testdata:/jmeterdocker/test/input/testdata \

-v /tmp/jmeterspace/test/report/html:/jmeterdocker/test/report/html \

-v /tmp/jmeterspace/test/report/jtl:/jmeterdocker/test/report/jtl \

-v /tmp/jmeterspace/test/report/outputputdata:/jmeterdocker/test/report/outputdata \

-p 1099:1099 \

jmeter

将jmeter脚本放在容器外的/tmp/jmeterspace/test/input/jmx路径下

进入容器,执行以下命令

docker exec -it jmeter /bin/bash

cd /jmeterdocker/test/input/jmx

jmeter -n -t ***.jmx -l test.jtl

参数说明:

-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter

-t 测试文件 -> 要运行的 JMeter 测试脚本文件

-l 日志文件 -> 记录结果的文件

运行结果如图所示

【小结】

以上三种方式都可以完成JMeter+Grafana+Influxdb平台搭建,这里可根据需要选择相应的方式安装即可

这些方法都需要我们亲身去实践才会有深刻的感受和理解,但最根本的方法就是保持我们对这个行业的热情和对最佳实践的追求,这才是我们能不断突破自我、勇攀高峰的不竭动力源泉!

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:开心螺蛳粉】自提!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述

在这里插入图片描述

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/404844.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

igolang学习3,golang 项目中配置gin的web框架

1.go 初始化 mod文件 go mod init gin-ranking 2.gin的crm框架 go get -u github.com/gin-gonic/gin 3.go.mod爆红解决

渗透测试之RCE漏洞

RCE(remote command execute)远程命令执行。应用程序的某些功能需要调用可以执行的系统命令的函数,如果这些函数或者函数的参数被用户控制,就可能通过命令连接符将恶意的命令拼接到函数中,从而执行系统命令。 常见的命…

WordPress使用

WordPress功能菜单 仪表盘 可以查看网站基本信息和内容。 文章 用来管理文章内容,分类以及标签。编辑文章以及设置分类标签,分类和标签可以被添加到 外观-菜单 中。 分类名称自定义;别名为网页url链接中的一部分,最好别设置为中文…

mybatis 集成neo4j实现

文章目录 前言一、引入jar包依赖二、配置 application.properties三、Mybatis Neo4j分页插件四、Mybatis Neo4j自定义转换器handler五、MybatisNeo4j代码示例总结 前言 MyBatis是一个基于Java语言的持久层框架,它通过XML描述符或注解将对象与存储过程或SQL语句进行…

【C++私房菜】面向对象中的多重继承以及菱形继承

文章目录 一、多重继承1、多重继承概念2、派生类构造函数和析构函数 二、菱形继承和虚继承2、虚继承后的构造函数和析构函数 三、has-a 与 is-a 一、多重继承 1、多重继承概念 **多重继承(multiple inheritance)**是指从多个直接基类中产生派生类的能力…

Open CASCADE学习|绘制砂轮

今天绘制一个砂轮,其轮廓由两条直线段和两段圆弧构成,圆弧分别与直线相切,两条圆弧之间相交而非相切。建模思路是:先给定两条直线段的起始点及长度,画出直线段,然后给定其中一圆弧的半径及圆心角&#xff0…

Elastic Stack--02--核心概念、倒排索引

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1.核心概念1.1 索引1.2 类型1.3 文档1.4 字段 2.倒排索引此处ID是唯一标识 具体拆解的案例 1.核心概念 mysqlESDatabases 数据库索引 indicesTable 数据表类型 Type…

探索D咖智能饮品机器人的工作原理:科技、材料与设计的相互融合

智能饮品机器人是近年来随着人工智能和自动化技术的发展而崭露头角的一种创新产品。它将科技、材料和设计相互融合,为消费者带来了全新的饮品体验。下面D咖来探索智能饮品机器人的工作原理,以及科技、材料和设计在其中的作用。 首先,智能饮品…

抖音小店无货源真的靠谱吗?发展前景如何?2024年值得做吗?

大家好,我是电商花花。 我们通常说的抖音小店无货源就是利用产品之间的信息差、利润差来赚取商品的差价。 无货源模式就是即使没有货源,也能做抖音小店,前期店铺起店,我们需要大量的出单量和数据,我们才能快速把店铺…

Spring Boot应用集成Actuator端点自定义Filter解决未授权访问的漏洞

一、前言 我们知道想要实时监控我们的应用程序的运行状态,比如实时显示一些指标数据,观察每时每刻访问的流量,或者是我们数据库的访问状态等等,需要使用到Actuator组件,但是Actuator有一个访问未授权问题,…

QT基本组件

四、基本组件 Designer 设计师(重点) Qt包含了一个Designer程序,用于通过可视化界面设计开发界面,保存文件格式为.ui(界面文件)。界面文件内部使用xml语法的标签式语言。 在Qt Creator中创建文件时&#xf…

蓝桥杯C++竞赛常用库函数介绍

文章目录 前言一、二分查找1. 二分查找的前提2.binary_search函数3.lower_bound函数和upper_bound函数4.蓝桥杯例题 二、最值查找1. min和max函数2.min_element和max_element函数3.nth_element函数4.蓝桥杯例题 三、排序1.sort函数2.sort自定义比较函数,或lambda表达式(匿名函数…

金和OA UploadFileBlock接口任意文件上传漏洞

声明 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任 1. 产品简介 金和数字化智能办公平台(简称JC6)是…

运维SRE-06 阶段性复习软件管理体系

那些年运维必会操作-第一弹 操作 文件:增删改查 增:touch,vim,>,>>,cp删除:rm修改:内容:vi/vim,>,>> 文件名:mv查看:内容:cat/vim/less/more/head/tail/sed/awk/…

编写LLVM Pass的一个小问题

在阅读官方文档时发现一个很有趣的细节,官方给出了一个测试用例,此处有一个小问题(%无法复制)。但是我在使用自己编译的ll文件时,我发现该pass无法正常使用。最后经过测试发现是利用-O0编译产生的ll文件有optnone的fla…

学生成绩管理系统(C语言课设 )

这个学生成绩管理系统使用C语言编写,具有多项功能以方便管理学生信息和成绩。首先从文件中读取数据到系统中,并提供了多种功能(增删改查等)选项以满足不同的需求。 学生成绩管理系统功能: 显示学生信息增加学生信息删除学生信息…

Spring Security 重点解析

Spring Security 重点解析 文章目录 Spring Security 重点解析1. 简介2. 依赖3. 登录认证3.1 登录校验流程3.2 Spring Security 默认登录的原理3.2.1 Spring Security 完整流程3.2.2 登录逻辑探究 3.3 自定义改动3.3.1 自定义用户密码校验3.3.2 自定义 UserDetails 获取方式 F1…

C++多线程同步(上)

多线程同步 引言总述详情互斥锁示例运行结果分析条件变量示例一实现分析优化运行结果示例二实现代码运行结果示例三实现代码运行结果读写锁示例实现代码注意分析运行结果附言实现运行结果运行结果个人心得引言 项目中使用多线程,会遇到两种问题,一种是对共享资源的访问时需要…

kafka和ZK的关系

zk相当于是kafka的一个基础设施 Kafka是一种高吞吐量、可扩展的分布式发布订阅消息系统,ZooKeeper是一个分布式协调服务,用于管理和协调分布式系统中的各种资源 Zookeeper:管理broker,consumer 创建broker后,向zk注册…

Redis和Mysql如何保证数据一致性

一般情况下,Redis用来实现应用和数据库之间读操作的缓存层,主要目的是减少数据 库IO,还可以提升数据的IO性能。 这是它的整体架构。 当应用程序需要去读取某个数据的时候,首先会先尝试去Redis里面加载,如果命中就 直…