MeterSphere 微服务架构文件存储说明
2022年10月,MeterSphere 一站式开源持续测试平台正式发布 v2.3.0 版本,正式从单体应用架构升级至微服务架构。现简单介绍下各个容器存储的文件,方便用户需要做日志查询、文件处理时快速上手。
一、 容器文件存储
如下图所示,MeterSphere 使用到的容器如下:
文件存储情况如下表所示:
容器 | 作用 | 日志/文件存放位置 |
---|---|---|
GateWay | 存储网关信息主要用来统一各个微服务的入口(如 MeterSphere 统一访问端口 8081);按照权限请求避免请求直接调用各个微服务;并针对客户端请求到服务过程做负载均衡:当请求流量过高时,在网关中按照下流微服务能够接受的速度来放行请求,避免服务压力过大。 | 日志:/opt/metersphere/logs/gateway |
Eureka | 各服务组件的注册信息。在MeterSphere功能模块组件启动之后,会在Eureka Server中进行注册,这样Eureka Server中的服务注册表中将会存储所有可用服务组件的信息,方便做各组件请求互通及数据传递。 | 日志:/opt/metersphere/logs/eureka |
MinIO | MeterSphere 做接口、性能测试上传的测试文件、jar包、插件集中放在项目设置-文件管理模块;统一存储在 MinIO 中。 | 文件:/opt/metersphere/data/minio/metersphere/项目id目录 |
MySQL | MeterSphere 项目的主要数据均存储在 MySQL | 数据存储:/opt/metersphere/data/mysql 配置信息:/opt/metersphere/conf/my.cnf |
Redis | 登录用户的 Session 信息及页面查询时缓存的数据和执行的资源池节点缓存 | Redis 大多都在内存中,基本不会写到磁盘 |
Workstation | MeterSphere 项目的工作台模块。包含工作台所有代码 | 日志:/opt/metersphere/logs/workstation |
Test Track | MeterSphere 项目的测试跟踪模块,包含工作台所有代码 | 日志/opt/metersphere/logs/test-track 文件:/opt/metersphere/data/attachment/testcase测试用例附件 |
Api Test | MeterSphere 项目的接口测试模块,包含接口测试所有代码。 | 日志:/opt/metersphere/logs/api-test文件:/opt/metersphere/data/body,作为默认挂载路径兼容历史版本文件,方便接口测试文件传输时做读写交互。执行缓存:/opt/metersphere/data/api-floder |
Ui Test | MeterSphere 项目的UI测试模块,包含接口测试所有代码。 | 日志:/opt/metersphere/logs/ui-test文件:/opt/metersphere/data/image/ui/screenshots存放测试报告截图 |
Selenium Grid | 为 UI自动化测试提供运行环境,支持分布式拓展。 | |
Performance Test | MeterSphere 项目的性能测试模块。包含性能测试所有代码。 | 日志:/opt/metersphere/logs/performance-test |
Node Controller | 为接口或者性能测试提供独立节点类型的测试资源池,使用过程中会下载测试需要使用的执行文件并调起Jmeter执行。 | 日志/opt/metersphere/logs/node-controller |
Kafka | 接收 JMeter 执行产生的接口测试或者性能测试的结果数据如tps 并发数等,各个模块通知消息 | 不能及时消费处理的信息存在/opt/metersphere/data/kafka/kafka |
Prometheus | 收集压力机及被测系统的监控数据,及存储用户自定义的监控信息 | |
Data Streaming | 从 Kafka 中获取接口测试或者性能测试结果数据进行处理后存入 MySQL 数据库。 | 日志:/opt/metersphere/logs/data -streaming |
System Setting | MeterSphere 项目的系统设置模块,包含系统设置所有代码。 | 日志:/opt/metersphere/logs/system-setting |
Report Stat | MeterSphere 项目的报告统计模块,包含项目的报告统计所有代码。 | 日志:/opt/metersphere/logs/report-stat |
Project Management | MeterSphere 项目的项目设置模块。包含项目设置所有代码。 | 日志:/opt/metersphere/logs/project-management |
二、文件路径读取使用示例
在 To B 系统的某些业务场景中,经常有厂家需要用 CSV 数据驱动用于请求体传参、响应体断言等场景。此处主要介绍下用CSV 数据驱动,使用循环控制器循环的请求次数与上传 csv 文件数据的条数一致。
1、找到 MeterSphere 服务器中的文件。在场景变量页面 F12 调试点击 CSV 文件预览即可查看到上传的文件 id;进入服务挂载目录 /opt/metersphere/data/body 即可找到。
2、 在接口请求中,使用 Python 脚本自定义脚本获取 CSV 文件行数用作请求循环次数,传参。用法如下:此处引用 Python 第三方库参考:在 MeterSphere 前后置脚本中引用 Python 第三方库 - FIT2CLOUD 知识库
代码如下
import sys
#注意:此路径容器内部的映射路径,为固定值。
sys.path.append(“/opt/metersphere/data/python/lib/python2.7/site-packages”)
filename = r ‘/opt/metersphere/data/body/f0cf90f9-d51_1015 (2).csv’
total = sum(1 for line in optn(filename))- 1
log.info(‘__________’+srt(total));
vars.putObject(“mum”,total);
4、 蒋获取到的变量${mum},配合循环控制器中即可完成csv 循环控制器里传参测试。