如何使用docker-compose运行Locust并在headless模式下获取聚合CSV结果
Locust docker-compose headless模式获取聚合CSV结果方案
headless模式下的聚合统计数据由master节点统一生成,所有worker的测试数据会自动上报到master做聚合,无需单独采集每个worker的分散数据,最终结果和非headless模式下页面下载的聚合数据完全一致,两种常用实现方式如下:
1. 启动时配置参数自动导出CSV
这是最稳定的生产常用方案,直接修改docker-compose配置即可实现测试结束后自动落盘CSV结果:
- 提前在本地创建结果存储目录并配置权限,避免容器内无写入权限:
mkdir locust-results chmod 777 locust-results - 编辑
docker-compose.yml,给master服务增加本地目录挂载配置:services: master: image: locustio/locust ports: - "8089:8089" volumes: - ./locust-scripts:/mnt/locust # 新增结果目录挂载 - ./locust-results:/home/locust/results command: -f /mnt/locust/locustfile.py --master --headless -u 200 -r 20 -t 1h --csv=/home/locust/results/load_test - 核心参数说明:
--headless:指定以无UI模式运行--csv=<输出路径前缀>:指定CSV文件前缀,运行结束后会自动生成三个结果文件:load_test_stats.csv(请求统计)、load_test_failures.csv(失败请求明细)、load_test_exceptions.csv(异常明细)- 如果需要全程的秒级统计数据,可额外增加
--csv-full-history参数,会额外生成load_test_stats_history.csv文件,记录每秒的全量统计值
测试运行结束后,所有聚合后的CSV结果都会直接保存在本地的locust-results目录下。
2. 运行过程中调用API主动拉取CSV
如果需要在测试运行中途随时获取当前的聚合统计,或者不想提前配置输出参数,可以直接调用master节点的内置接口获取数据:
- master节点默认暴露8089端口,三个对应CSV的接口如下:
- 聚合请求统计:
GET /stats/requests/csv - 失败请求明细:
GET /stats/failures/csv - 异常明细:
GET /stats/exceptions/csv
- 聚合请求统计:
- 可直接用
curl命令导出到本地文件,示例:curl http://<你的master节点IP>:8089/stats/requests/csv > current_stats.csv
接口返回的就是所有worker的实时聚合数据,和非headless模式下页面下载的内容完全一致。
内容的提问来源于stack exchange,提问作者FlyingPickle
相关产品推荐
相关产品推荐

