MeterSphere 微服务架构文件存储说明

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 循环控制器里传参测试。


当服务器磁盘空间占用过多需要清理,可参考如下方法:
1、清理 Kafka 临时文件:

  • v1.20.x-lts,需要同时删除 Kafka 和 Zookeeper 的临时文件
msctl uninstall
rm -rf /opt/metersphere/data/kafka/kafka   
rm -rf  /opt/metersphere/data/zookeeper/zookeeper
msctl reload   #重新创建目录和基础文件  
  • v2.x 微服务架构, Kafka 使用版本升级,只需删除 Kafka 的临时文件
msctl uninstall
rm -rf /opt/metersphere/data/kafka/kafka   
msctl reload   #重新创建目录和基础文件  

可配合修改 Kafka 的 docker-compose 文件设置减少消息保存时间。vi /opt/metersphere/docker-compose-kafka.yml文件设置配置项:KAFKA CFG LOG RETENTION HOURS: 64 单位为小时。

2、减少系统日志保留天数:

修改vi /opt/metersphere/conf/metersphere.properties 增加配置项设置日志保存天数,如: logger.max.history=3。

3、减少数据库日志保留天数:
修改数据的配置文件vi /opt/metersphere/conf/my.cnf 文件修改保存数据库日志的天数,如:expire_logs_days = 2。

1 个赞

image

当磁盘空间不足时,用户df -h 发现docker 占用了比较大的空间,但是图上路径是docker 的存储路径不能直接删除。可以通过清理日志以及限制docker 日志大小及保留时间,达到清理磁盘空间的目的。

1 查询Docker容器日志并删除脚本
在linux上,容器日志一般存放在/var/lib/docker/containers/container_id/下面,通过创建脚本,删除日志文件 :vi clean.sh

#!/bin/sh
echo "======== start clean docker containers logs ========"
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
        do
                echo "clean logs : $log"
                cat /dev/null > $log
        done
echo "======== end clean docker containers logs ========"

执行清理日志脚本:
chmod +x clean.sh
./chelan.sh
删除后如果要看容器实时日志需要重启下MeterSphere :msctl restart

2 限制docker容器日志
此方法只对新建的容器生效,因此在配置前需要停止并删除MeterSphere 容器
msctl uninstall
vi /etc/docker/daemon.json
内容如下:

{

"log-driver":"json-file",

"log-opts": {"max-size":"10m", "max-file":"3"}

}

说明:max-size=10m,意味着一个容器日志大小上限是10M,max-file=3,意味着一个容器有三个日志。
配置后重启docker并重新拉起MeterSphere 服务
systemctl daemon-reload
systemctl restart docker
msctl reload

api_scenario_report_result 表可以删除吗,占用很大的空间