说明:关于MeterSphere是做什么的,这个文章就不说了,有兴趣的小伙伴自行百度。
MeterSphere架构说明
(图和说明来自官网https://metersphere.io/docs/system_arch/)
组件说明
-
Frontend: MeterSphere 的前端工程, 基于 Vue.js 进行开发
-
Backend: MeterSphere 的后端工程, 基于 Spring Boot 进行开发, 为 MeterSphere 的功能主体
-
Chrome plugin: 浏览器插件, 录制 Web 访问请求生成 JMeter 脚本并导入到 MeterSphere 中用于接口测试及能测试
-
Node controller: 为性能测试提供独立节点类型的测试资源池, 接收来自系统的性能测试任务, 动态的启动 JMeter容器完成性能测试
-
MySQL: MeterSphere 项目的主要数据均存储在 MySQL
-
Kafka: 接收 JMeter 产生的性能测试结果数据
-
Data streaming: 从 Kafka 中获取性能测试结果数据进行处理后存入 MySQL 数据库
-
Docker engine: 为 Node Controller 提供 JMeter 容器运行环境
由官网说明可见,Kafka主要用于传递性能测试结果的。但是通过官网一键部署脚本,Kafka是单独容器进行部署,正好公司有一套kafka集群,所以尝试了下配置外置kafka集群。
又要吐槽了,官网竟然没说明,全靠自己摸索........
修改配置文件
查询了安装目录,发现有配置文件,尝试修改了下配置文件。修改如下:
kafka.partitions=50
kafka.replicas=1
#kafka.topic=${MS_KAFKA_TOPIC} 注释不取消,因为docker-compose中还有环境变量
kafka.bootstrap-servers=ip1:9092,ip2:9093,ip3:9094
#kafka.log.topic=${MS_KAFKA_LOG_TOPIC} 注释不取消,因为docker-compose中还有环境变量
修改完成后,重启metersphere服务,msctl restart 。
等服务完全启动后,登陆kafka-manager进行查看,发现自动创建了topic。
在界面进行一次压测,完美解决。