You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

k6结合xk6-output-prometheus-pushgateway时自定义标签不生效如何解决?

解决k6 Pushgateway输出缺失自定义标签的问题

问题分析

你遇到的核心问题是:xk6-output-prometheus-pushgateway插件默认不会自动将k6指标的自定义tags转换为Prometheus的labels,同时如果创建Counter时未显式声明自定义标签,插件会直接忽略这些标签。

解决方案

1. 修改脚本,显式声明自定义标签

在创建Counter指标时,必须明确指定要使用的自定义标签键,让k6和插件识别这个标签的合法性:

// 显式声明要使用的status_code标签
const httpErrors = new Counter("http_errors", {
  tags: ["status_code"]
});

// 原有计数逻辑保持不变
if (!success) {
  httpErrors.add(1, { status_code: `${res.status}` });
}

2. 添加环境变量启用标签转换

在运行k6的命令中,增加K6_PROMETHEUS_PUSHGATEWAY_TAGS_AS_LABELS=true环境变量,这个配置会强制插件将k6指标的tags转换为Prometheus的labels:

K6_WEB_DASHBOARD=true K6_WEB_DASHBOARD_EXPORT=./reports/api_spins/smoke-test-report.html K6_PUSHGATEWAY_URL=http://localhost:9091 K6_JOB_NAME=k6_tests K6_PROMETHEUS_PUSHGATEWAY_TAGS_AS_LABELS=true k6 run --out csv=./reports/api_spins/smoke_test_results.csv --out output-prometheus-pushgateway ./dist/tests/api_spins/smoke_test.es.js

3. 验证结果

重新运行测试后,Pushgateway中应该会出现带status_code标签的指标,格式如下:
http_errors{instance="",job="k6_tests",status_code="400"} 2

额外注意事项

  • 自定义标签键必须符合Prometheus的label命名规范:只能包含字母、数字、下划线(_)、冒号(:)和连字符(-),status_code是符合要求的。
  • 你已经使用@latest构建插件,版本兼容性无需额外处理。

内容的提问来源于stack exchange,提问作者Armax7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 15:22:15