能否在k6中为虚拟用户添加标签?多测试场景数据区分需求
解决多k6测试虚拟用户在Grafana中独立展示的问题
核心方案:给测试实例添加全局标签
请求标签仅作用于单个请求维度,而虚拟用户(vus、vus_max)属于测试实例级别的指标,必须给整个测试添加全局标签,让InfluxDB能按测试维度区分存储指标。
具体实现方法
命令行直接指定全局标签
启动测试时通过--tag参数为当前测试绑定唯一标识(如测试名称):k6 run --tag test_name=checkout_flow script.js k6 run --tag test_name=product_search script.js该测试产生的所有指标(包括虚拟用户相关)都会自动带上
test_name标签,InfluxDB会保留这个区分维度。脚本内配置全局标签
在k6脚本的options中定义全局标签,支持硬编码或通过环境变量动态传入:export const options = { tags: { test_name: __ENV.TEST_NAME || "default_test" } };启动时通过环境变量指定不同测试名:
TEST_NAME=checkout_flow k6 run script.js TEST_NAME=product_search k6 run script.js利用k6内置变量生成唯一标签
借助k6自带的K6_RUN_ID(每个测试运行的唯一ID)作为标签,适合无需自定义名称的场景:export const options = { tags: { run_id: __ENV.K6_RUN_ID } };
Grafana端配置
- 创建变量:新增一个类型为
Query的变量,查询InfluxDB中所有test_name的取值:SHOW TAG VALUES FROM "vus" WITH KEY = "test_name" - 图表查询引用变量:在虚拟用户指标的查询语句中添加
WHERE "test_name" = '$test_name',即可通过变量切换查看不同测试的独立曲线。
注意事项
- 确保k6输出配置正确指向InfluxDB,例如:
k6 run --out influxdb=http://localhost:8086/k6 script.js - 全局标签会作用于所有指标,若需仅给特定指标加标签,可在脚本中用
metrics.addTag()单独处理,但虚拟用户指标属于全局维度,全局标签是最优解。
内容的提问来源于stack exchange,提问作者stupid_beaver
相关产品推荐
相关产品推荐

