使用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…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
