使用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平台搭建,这里可根据需要选择相应的方式安装即可
总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。
相关文章:

使用JMeter+Grafana+Influxdb搭建可视化性能测试监控平台
【背景说明】 使用jmeter进行性能测试时,工具自带的查看结果方式往往不够直观和明了,所以我们需要搭建一个可视化监控平台来完成结果监控,这里我们采用三种JMeterGrafanaInfluxdb的方法来完成平台搭建 【实现原理】 通过influxdb数据库存储…...
django模板下,vue的使用(前后端不分离)
目录 关于djangovue的结合使用一、在你的templates中引入vue.js二、关于vue与django模板变量的冲突问题三、示例结语 关于djangovue的结合使用 网上的相关教程基本上都是部署node.js,npm安装vue,生成vue项目,然后将vue项目部署至django,这些…...
python笔记(7)List(列表)
目录 创建列表 取列表中的值 更新列表 删除元素 脚本操作符 嵌套列表 Python列表函数&方法 创建列表 创建一个列表(List)用方括号[]括起来就可以,数据项之间用逗号作为分隔符,数据项可以是字符串,数字,甚至…...

java 抠取红色印章(透明背景)
一个亲戚让我帮他把照片里的红色印章抠出来,,,记录下处理过程,代码如下,可直接用: public static void signatureProcess(String sourceImagePath, String targetImagePath) {Graphics2D graphics2D null…...

CSS及javascript
一、CSS简介 css是一门语言,用于控制网页的表现。 cascading style sheet:层叠样式表 二、css的导入方式 css代码与html代码的结合方式 (1)css导入html有三种方式: 1.内联样式:<div style"color:red&quo…...
LeetCode 1997.访问完所有房间的第一天:动态规划(DP)——4行主要代码(不需要什么前缀和)
【LetMeFly】1997.访问完所有房间的第一天:动态规划(DP)——4行主要代码(不需要什么前缀和) 力扣题目链接:https://leetcode.cn/problems/first-day-where-you-have-been-in-all-the-rooms/ 你需要访问 n 个房间,房间从 0 到 n - 1 编号。同…...

BootsJS上新!一个库解决大部分难题!
不知不觉距离第一次发文章介绍自己写的库BootsJS已经过去一个月了,这个月里收到了许许多多JYM的反馈与建议,自己也再一次对BootsJS进行了改进与完善,又一次增加了很多功能,为此我想应该给JYM们汇报汇报这个月的工作进展。 BootJS仓…...

智慧公厕,让数据和技术更好服务社会生活
智慧公厕,作为智慧城市建设中不可忽视的一部分,正逐渐受到越来越多人的关注。随着科技的不断进步,智能化公厕已经成为一种趋势,通过数据的流转和技术的整合,为社会生活带来了更好的服务。本文以智慧公厕源头实力厂家广…...

Spark基于DPU Snappy压缩算法的异构加速方案
一、总体介绍 1.1 背景介绍 Apache Spark是专为大规模数据计算而设计的快速通用的计算引擎,是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些不同之处使 Spark 在某些工作负载方面表现得更加优越。换句话说&am…...
如何使用python链表
在Python中,可以使用类来实现链表的数据结构。链表是一种数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的引用。 下面是一个简单的链表类的示例: class Node:def __init__(self, data):self.data …...
ADB的主要操作命令及详解
ADB,全称Android Debug Bridge,即安卓调试桥,是一个通用的命令行工具,其允许你与模拟器实例或连接的安卓设备进行通信。它可为各种设备操作提供便利,如安装和调试应用,并提供对Unix shell(可用来…...

傻瓜式启动关闭重启docker容器的脚本
运行脚本后,界面如下: 选择对应的编号后,会列举所有关闭的容器或者所有开启的容器列表,当我要启动一个容器 时输入1,就会出现下面的页面。 然后输入指定的编号后,就会启动对应的容器。 脚本代码如下&#…...

R语言使用dietaryindex包计算NHANES数据多种营养指数(2)
健康饮食指数 (HEI) 是评估一组食物是否符合美国人膳食指南 (DGA) 的指标。Dietindex包提供用户友好的简化方法,将饮食摄入数据标准化为基于指数的饮食模式,从而能够评估流行病学和临床研究中对这些模式的遵守情况,从而促进精准营养。 该软件…...

Elasticsearch 索引模板、生命周期策略、节点角色
简介 索引模板可以帮助简化创建和二次配置索引的过程,让我们更高效地管理索引的配置和映射。 索引生命周期策略是一项有意义的功能。它通常用于管理索引和分片的热(hot)、温(warm)和冷(cold)数…...

buy me a btc 使用数字货币进行打赏赞助
最近在调研使用加密货币打赏的平台,发现idatariver平台 https://idatariver.com 推出的buymeabtc功能刚好符合使用场景,下图为平台的演示项目, 演示项目入口 https://buymeabtc.com/idatariver 特点 不少人都听说过buymeacoffee,可以在上面发…...

Solidity Uniswap V2 Router swapTokensForExactTokens
最初的router合约实现了许多不同的交换方式。我们不会实现所有的方式,但我想向大家展示如何实现倒置交换:用未知量的输入Token交换精确量的输出代币。这是一个有趣的用例,可能并不常用,但仍有可能实现。 GitHub - XuHugo/solidit…...
网络安全渗透测试工具
网络安全渗透测试常用的开发工具包括但不限于以下几种: Nmap:一款网络扫描工具,用于探测目标主机的开放端口和正在运行的服务,是网络发现和攻击界面测绘的首选工具。Wireshark:一个流量分析工具,用于监测网…...

springcloud+nacos服务注册与发现
快速开始 | Spring Cloud Alibaba 参考官方快速开始教程写的,主要注意引用的包是否正确。 这里是用的2022.0.0.0-RC2版本的springCloud,所以需要安装jdk21,参考上一个文章自行安装。 nacos-config实现配置中心功能-CSDN博客 将nacos-conf…...

【C++程序员的自我修炼】基础语法篇(一)
心中若有桃花源 何处不是水云间 目录 命名空间 💞命名空间的定义 💞 命名空间的使用 输入输出流 缺省参数 函数的引用 引用的定义💞 引用的表示💞 引用的特性💞 常量引用💞 引用的使用场景 做参数 做返回值…...

小狐狸JSON-RPC:钱包连接,断开连接,监听地址改变
detect-metamask 创建连接,并监听钱包切换 一、连接钱包,切换地址(监听地址切换),断开连接 使用npm安装 metamask/detect-provider在您的项目目录中: npm i metamask/detect-providerimport detectEthereu…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...

排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...

热烈祝贺埃文科技正式加入可信数据空间发展联盟
2025年4月29日,在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上,可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞,强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...

云原生安全实战:API网关Envoy的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关 作为微服务架构的统一入口,负责路由转发、安全控制、流量管理等核心功能。 2. Envoy 由Lyft开源的高性能云原生…...

RFID推动新能源汽车零部件生产系统管理应用案例
RFID推动新能源汽车零部件生产系统管理应用案例 一、项目背景 新能源汽车零部件场景 在新能源汽车零部件生产领域,电子冷却水泵等关键部件的装配溯源需求日益增长。传统 RFID 溯源方案采用 “网关 RFID 读写头” 模式,存在单点位单独头溯源、网关布线…...