在发送到 Datadog 的 k6 指标中包含测试运行 ID

lys*_*sov 2 javascript load-testing datadog k6

我在本地计算机上使用 k6 来执行负载测试,并使用Datadog 代理来可视化 Datadog 中的指标。

我想在 Datadog 中过滤 k6 指标,因为测试无法区分。

此时$test_run_id唯一显示的是*(参考下面的截图): 在此输入图像描述

我按照官方文档建议在 k6 配置中设置include_test_run_id标志true,但没有成功。

这是我当前使用的 k6 配置(<YOUR_DATADOG_API_KEY>替换为实际的 Datadog API 密钥):

export const options = {
  vus: 5,
  duration: "10s",
  noConnectionReuse: true,
  ext: {
    loadimpact: {
      apm: [
        {
          provider: "datadog",
          api_key: "<YOUR_DATADOG_API_KEY>",
          include_test_run_id: true
        }
    ]
    }
  }
};
Run Code Online (Sandbox Code Playgroud)

小智 6

您正在使用商业k6 云服务的 DataDog 配置( k6 cloud),而不是本地运行 k6 测试 ( k6 run)。test_run_id是云服务中的一个概念,尽管它也很容易在本地模拟作为区分测试运行的一种方式。

对于本地测试,您应该通过运行 k6 来启用 D​​ataDog 输出k6 run --out datadog script.js。我假设您已经这样做了,否则您将不会在 DataDog 中看到任何指标。

然后,您可以使用该tags选项为特定 k6 运行生成的所有指标注入唯一的额外标签,以便您可以在 DataDog 中区分它们。例如:

k6 run --out datadog --tag test_run_id=1 script.js
k6 run --out datadog --tag test_run_id=2 script.js
k6 run --out datadog --tag test_run_id=3 script.js
...
Run Code Online (Sandbox Code Playgroud)

当然,你可以选择任何key=value组合,并不限于test_run_id