本篇文章只是浅浅的讲一下实现,不会过多的讲一些细节
Influxdb和Grafana是通过docker部署,所以参考时注意部署方式是否一致
所需软件列表
- JDK–运行Jmeter等工具时依赖
- Jmeter–实现性能压测的开源工具
- docker–容器能实现环境部署,启动非常方便
1、jdk下载及安装
点击此处进入下载页,需要注意选择系统和版本
注意!下载完后要配置一下环境变量,deepseek或者百度搜索搞一下即可
注意!下载完后要配置一下环境变量,deepseek或者百度搜索搞一下即可
注意!下载完后要配置一下环境变量,deepseek或者百度搜索搞一下即可
MAC用户似乎不需要特殊设置,伙伴们自己尝试一下
还想多说一句:
安装完验证下是否安装和配置成功,在dos窗口或者bash内输入:java -version
就这一个操作好多同学都会出现问题,大概率原因是你不是新开的窗口去输入,建议退出所有的dos或bash窗口后再输入命令,出现以下内容即为成功
2、Jmeter安装
直接去Apache Jmeter官网下载最新版即可(5.6.3),下载二进制包
解压操作不会的请自行百度或者deepseek一下
3、docker安装
- docker这玩意还是挺看电脑配置的,大家一定要注意自己电脑配置是否到位。
- 安装到非系统盘参考我的另外一篇文章:Docker安装到D盘(包教包会)
- 安装完后敲docker version命令爽一下
常用命令
列出已下载docker镜像:docker images
列出运行中的docker容器:docker ps
列出运行中+已停止docker容器:docker ps –a
停止容器:docker stop [dockercontainerid]
启动容器:docker start[dockercontainerid]
删除容器:docker rm [dockercontainerid]
4、实战
4.1 Jmeter新建测试脚本
win用户建议使用管理员权限启动Jmeter,重要的不是为什么,重要的是这样比较稳妥
以下仅供参考,只要有用例和Backend Listener,基本上也能实现后面的流程
中间省略调试接口用例的步骤
backkend配置参考如下:
influx v1版本:http://localhost:8086/write?db=jmeter
influx v2版本:http://locahost:8086/api/v2/write?org=组织名&bucket=jmeter&precision=ns
释义: org:组织 查找命令
influx org list
bucket:桶,相当于数据库表。查找命令influx bucket list
precision:时间戳精度。jmeter返回的是nm,如果使用ms会报错。想了解细节的可以自行搜索
最后别忘记保存脚本!!!
4.2 docker部署influxdb
这个就是纯纯的一堆命令,咔咔的跟着敲就行
4.2.1 启动docker
4.2.2下载influxdb镜像
docker pull influxdb:latest/或指定版本2.7.3
这一步很多人都会提示失败,大都一个原因:默认的镜像源是国外的需要我们改成国内的,很简单。
打开docker desktop - 点击settings(一个齿轮图标) - 左侧菜单选择Docker Engine
把我这个镜像完完全全复制到你的文件中,没有这个字段的,直接放在文件的最下方即可。注意格式(可以使用json.cn查看格式是否正确):
“registry-mirrors”: [
“https://docker.xuanyuan.me”,
“https://docker.mirrors.ustc.edu.cn”,
“https://hub-mirror.c.163.com”,
“https://registry.docker-cn.com”
]
最后点击右下角的apply&restart,等待反馈即可
4.2.3 完成上一步后,查询下是否已经部署成功
docker images
4.2.4 启动容器改名为jmeterdb
docker run -d -p 8086:8086 -p 8083:8083 --name=jmeterdb influxdb
参数释义:
-d:Detached 模式(后台运行容器),无界面的意思
-p:端口映射,将容器内的端口映射到主机的端口8086->8086 | 8083->8083
–name=xx:为容器指定名称(便于后续管理,如 docker stop xx)
influxdb:指的是刚才拉取的最新的那个版本的镜像
4.2.5 验证是否启动
docker ps
4.2.6 执行命令进入容器内部
docker exec -it jmeterdb bash
4.2.7 此时还需要敲个命令,来安装influx相关
influx setup 是 InfluxDB v2 中的一个 初始化配置命令,用于首次安装 InfluxDB 2.x 后完成基础设置。
influx setup
当首次启动 InfluxDB 2.x(尤其是通过 Docker 或全新安装时),必须通过 influx setup 完成以下配置:
- 创建管理员账号(用户名/密码)
- 设置初始组织(Organization)
- 创建存储桶(Bucket)
- 生成认证令牌(Token)
以上这些是 InfluxDB 2.x 运行的最小必需配置。
大概就是以下这种文案提示,一步步操作即可,想知道细节的可以自行查找
? Username admin
? Password ********
? Organization my-org
? Bucket my-bucket
? Retention Period 72h
? Token my-token
4.2.8 创建数据库(区分influx版本)
查看influx版本
influx version
v1:create database jmeter
v2:
第一种方式:先执行influx v1 shell
进入兼容模式,然后再敲create database jmeter
第二种方式:influx bucket create --name <数据库名> --org <组织名称或ID> --retention <保留策略>
retention:数据保留时间(如 72h、30d),不指定则永久保留
4.2.9 查看创建的数据库/桶
v1:show databases;
v2:influx bucket list
恭喜你!!!此时就可以运行jmeter的用例进行测试验证了
4.2.10 数据查询
前9步都是为了这一步的验证,以及对我们辛苦劳作的回报
v1:select * from 数据库名
v2:
from(bucket: "your_bucket_name")
|> range(start: -time_range) // 时间范围
|> filter(fn: (r) => r._measurement == "measurement_name") // 筛选测量值
|> filter(fn: (r) => r._field == "field_name") // 筛选字段
其实直接浏览器内输入localhost:8086,输入账号密码登录后查看也很方便,方法自行搜索。
4.3 docker部署grafana
4.3.1 拉取安装
docker pull grafana/grafana:latest/或指定版本
没看错必须是grafana/grafana
4.3.2 启动
docker run -d -p 3000:3000 --name=jmeterGraf grafana/grafana
Windows可能存在无法绑定3000端口的情况,可以先查询下端口占用,换一个端口号
netstat -ano | finstr :8080
如果以上可使用的话就用8080启动
docker run -d -p 8080:3000 --name=jmeterGraf grafana/grafana
4.3.3 验证是否启动
docker ps
4.3.4 访问Grafana控制台
链接:localhost:3000
初始用户名/密码:admin/admin,跳过修改密码即可
4.3.5 创建数据源
依次点击菜单的connections - datasources,懒的人直接复制这里http://localhost:8080/connections/datasources,注意端口号改成自己的
点击Add data source,搜索框内输入influxdb并点击
最关键的一步来了!!!务必仔细看
- Query language基本上选择flux就可以了,因为前面influxdb使用的是v2版本
- HTTP URL填写http://host.docker.internal:8086
Timeout内随便写一个差不多的就行
- Auth选中Basic auth | Basic Auth Details中填写在部署influxdb时创建的user和password(4.2的第7步)
- Custom HTTP Headers 这个必须有,要不然会报错Unauthorization。
填写也需要特殊注意!!
header填写:Authorization
Value填写:Token 你的token【格式是Token+空格+token值】
获取token方法: 进入jmeterdb容器,是不是忘记命令了?
docker exec -it jmeterdb bash
然后输入命令influx auth list --user 你的用户名(保持同Basic Auth Details一个用户名)
顺便插一下:借着刚拿到tokenjmeter的backend也配置一下token,这样能避免问题responseCode: 401, responseBody: {"code":"unauthorized","message":"unauthorized access"}
。填写完保存即可。
- InfluxDB Details配置
Organization:组织名,还记得怎么找吗?
influx org list
database:就是上面你创建的数据库名
OK !!!以上是不是都弄完了?!
最后一步:点击Save&Test,出现如下图所示即可
4.3.6 配置dashboard,按照下图依次点击
进入如下图所示页面(三种方式:导入json文件、输入模板id或者URL、导入文件内容)
导入后进入如下页面
name:可以自定义
DB name:选择influxdb即可
Mesurement name:选择创建自己创建的
点击上图的import按钮,进入如下页面。恭喜你,完成所有配置了!
此时想着体验一把对不对?执行用例发现压根就进不来数据啊!
这里有坑,原来的模板都是基于influx v1的,导致使用influx v2时报错。根本原因是查询语法完全不一样!!!!
怎么查看这个报错到底是哪里错了呢?
首先点击右上角的三个点,选择edit
这样就进入了面板的编辑页,下面红框就是报错原因。
好吧,那我们主动修改一下吧!!!!
Data Source:选择influxdb
语句:
from(bucket: "jmeter")
|> range(start: -1m)
|> filter(fn: (r) => r._measurement == "jmeter")
|> filter(fn: (r) => r._field == "count")
|> group()
|> sum()
|> map(fn: (r) => ({_value: r._value, description: "Total Requests"}))
然后执行一下用例,点击Query inspector按钮,点击Refresh
以下这就是调整好的结果
赶快试一下吧!!!!!!!其他的也需要调整!慢慢调吧!!!