赞
踩
先 jmeter 是一个优秀的开源性能测试工具,它非常通用,多数公司的压测方案都会选择该工具。但是 jmeter 自带的聚合报告有很明显的缺陷:
如上缺陷可能可以通过安装插件解决部分问题,但是无法完美解决。
因此我选择了 influxDB
+grafana
的方案。
这是该方案的数据流向图
本次也是通过 docker-compose 进行 InfluxDB 和 Grafana 的部署,jmeter在windows上搞一个免安装的。
本次部署的 InfluxDB 版本为 2.7.5 的,以下配置项仅适用于 v2 版本,不兼容 v1 版本和 v3 版本
shell
复制代码
mkdir -p /usr/local/docker/influxdb/{conf,data} chmod 777 /usr/local/docker/influxdb/{conf,data}
shell
复制代码
cd /usr/local/docker/influxdb
docker-compose.yml
文件 以下是 docker-compose.yml 文件内容yml
复制代码
version: '3' networks: web-network: services: docker-influxdb: image: influxdb:2.7.5 container_name: influxdb restart: always ports: - "8086:8086" #HTTP UI and API port environment: DOCKER_INFLUXDB_INIT_MODE: "setup" DOCKER_INFLUXDB_INIT_USERNAME: "root" #创建管理员用户 DOCKER_INFLUXDB_INIT_PASSWORD: "!a123456" #创建管理员密码,太简单会报错 DOCKER_INFLUXDB_INIT_ORG: "org" #组织名称 DOCKER_INFLUXDB_INIT_BUCKET: "jmeter" volumes: - "/usr/local/docker/influxdb/data:/var/lib/influxdb2" - "/usr/local/docker/influxdb/conf:/etc/influxdb2" networks: - web-network
关于 INFLUXDB_TOKEN
的获取:
shell
复制代码
cat /usr/local/docker/influxdb/conf/influx-configs
docker compose
启动shell
复制代码
docker compose up -d
输入你创建容器时的管理员账号和密码
跳转至路径 load data ——> buckets ——> buckets ——> create bucket
新建一个 bucket
命名为 jmeter
telegraf的主要作用是权限,它可以控制写入和读取任意buckets数据的权限范围
tag 切换至 telegraf,然后选择 create configuration
bucket 这里选择 jmeter
,然后 data from
我这里选择的是 Docker
(无影响)
创建成功后这里有一串 token,复制保存下来。
tag 切换至 api tokens,这里可以对之前创建 telegraf 的 token 进行管理,也可以创建读写任意 bucket 的 root 权限 token(需注意安全)
注意:
telegraf
默认生成的token
无法用于grafana
连接influxdb
的bucket
,因为没有读取bucket
的权限。需要创建一个可以操作对应bucket
的token
。
创建一个自定义权限的token
需要对指定bucket,同时拥有读、写权限。
shell
复制代码
docker pull grafana/grafana:10.4.1
- Your_PATH/grafana/data 目录,准备用来挂载放置grafana的数据
- Your_PATH/grafana/plugins 目录,准备用来放置grafana的插件
- Your_PATH/grafana/conf 目录,准备用来挂载放置grafana的配置文件
- Your_PATH/grafana/logs 目录,准备用来挂载放置logs的文件
shell
复制代码
mkdir -p /usr/local/docker/grafana/{data,plugins,conf,logs}
shell
复制代码
chmod 777 /usr/local/docker/grafana/{data,plugins,conf,logs}
shell
复制代码
# 临时启动一个容器 docker run --name grafana-tmp -d grafana/grafana # 将容器中默认的配置文件拷贝到宿主机上 docker cp grafana-tmp:/etc/grafana/grafana.ini /usr/local/docker/grafana/conf/grafana.ini # 移除临时容器 docker rm -f grafana-tmp
/usr/local/docker/grafana
shell
复制代码
cd /usr/local/docker/grafana
docker-compose.yml
文件yml
复制代码
version: "3" services: grafana: image: grafana/grafana:10.4.1 container_name: grafana privileged: true environment: TZ: Asia/Shanghai GF_SECURITY_ADMIN_PASSWORD: admin # 设置默认管理员admin的密码为admin volumes: - /usr/local/docker/grafana/conf:/etc/grafana - /usr/local/docker/grafana/data:/var/lib/grafana - /usr/local/docker/grafana/plugins:/var/lib/grafana/plugins - /usr/local/docker/grafana/logs:/var/log/grafana ports: - "3000:3000"
在 docker-compose.yml
的文件路径下,使用 docker compose
启动
shell
复制代码
docker compose up -d
访问 http://你的ip:3000
, 成功进入 web 页面
如果你的 web 页面想要通过外网访问,最好开启 https
将你的证书文件 your_server.crt
和证书密钥 your_server.key
上传至路径 /usr/local/docker/grafana/conf
下,然后修改挂载目录下的配置文件 grafana.ini
ini
复制代码
[server] protocol = https # 默认配置文件第32行,这里改成https cert_file = /etc/grafana/your_server.crt # 默认配置文件第64行,你的证书文件 cert_key = /etc/grafana/your_server.key # 默认配置文件第65行,你的证书密钥
由于 Grafana 的常用方式是将配置好的 Grafana 图嵌入到系统页面中,
所以需要实现免登录访问,
同样是修改配置文件 grafana.ini
,
搜索 [auth.anonymous]
配置块,将其下的匿名访问控制 enabled 设置为 true
,组织权限设置为 Viewer
(该权限为默认一般不用改)
shell
复制代码
[auth.anonymous] # enable anonymous access enabled = true # specify organization name that should be used for unauthenticated users org_name = Main Org. # specify role for unauthenticated users org_role = Viewer
所有配置文件修改完成之后,重启容器,即可实现上述功能
首页——>连接——>数据源
,选择添加新数据源 Flux
,2.x 版本必须选这个,1.x 选择 influxQLhttp://your_ip:8086
jmeter
设置完成之后,点击 Save&test
,测试连接数据源,连接结果会提示
连接数据源成功后需要新建一个仪表板
路径跳转至首页 ——> 仪表板,选择新建
这里我选择导入一个模板
这里可以通过加载 json 文件,或者输入模板 id 进行加载,模板 id 可以在官网查找
这里我选择填入 id19950
,因为我已经导入了,所以报警。
保存后成功创建面板
Thread Group
Thread group
添加一个Backend Listener
(后端监听器) org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient
。http://你的influx服务器地址/api/v2/write?org=你的Organizations名称&bucket=你的Bucket名称
如果只是照着上面的配置,并不会有实际的数据,需要使用jmeter对你的项目进行接口测试,才会有真实数据。 如下,我先添加两个HTTP请求,然后进行测试,可以查看数据成功写入 influxDB, 然后展示在 grafana 的面板上:
自动化测试相关教程推荐:
2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili
2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili
测试开发相关教程推荐
2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili
postman/jmeter/fiddler测试工具类教程推荐
讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程,学jmeter接口测试一套教程就够了!!_哔哩哔哩_bilibili
2023自学fiddler抓包,请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程!!_哔哩哔哩_bilibili
2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibili
如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。
如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步
在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。
我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,
测试开发视频教程、学习笔记领取传送门!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。