菜单
开源

Grafana Cloud k6

除了运行云测试外,您还可以在本地运行测试并将结果流式传输到 Grafana Cloud k6

将结果流式传输到云端时,执行 k6 CLI 命令的机器将运行测试并将结果上传到基于云的解决方案。然后,您将能够在 Web 应用中实时可视化和分析结果。

流式传输结果 vs 在云服务器上运行

不要混淆 k6 cloud run --local-execution script.js(本页内容)与 k6 cloud run script.js

根本区别在于运行测试的机器

  • k6 cloud run --local-execution 在本地运行 k6 并将结果流式传输到云端。
  • 另一方面,k6 cloud run 会将您的脚本上传到云解决方案并在云基础设施上运行测试。在这种情况下,您只会在 CLI 中看到状态更新。

在所有情况下,您都可以在 k6 CloudGrafana Cloud 上查看您的测试结果。

注意

数据存储和处理是主要的云成本,因此 k6 cloud run --local-execution 将消耗您订阅中的 VUH 或测试运行次数。

说明

  1. (可选)- 登录云端

    假设您已经安装了 k6,第一步是登录云服务。

    使用 k6 cloud login 命令,您可以在 k6 机器上设置您的 API 令牌以针对云服务进行身份验证。

    k6 CloudGrafana Cloud k6 复制您的令牌并将其作为参数传递

    bash
    k6 cloud login --token <YOUR_API_TOKEN>
  2. 运行测试并上传结果

    现在,k6 将针对云服务对您进行身份验证,您可以使用 --local-execution 选项将 k6 结果发送到云端,如下所示

    bash
    k6 cloud run --local-execution script.js

    或者,您可以在将 API 令牌传递给 k6 cloud run 命令时跳过 k6 cloud login 命令,如下所示

    bash
    K6_CLOUD_TOKEN=<YOUR_API_TOKEN> k6 cloud run --local-execution script.js

    运行命令后,控制台会显示一个 URL。复制此 URL 并将其粘贴到浏览器地址栏中以可视化测试结果。

    bash
    execution: local
        output: cloud (https://acmecorp.grafana.net/a/k6-app/runs/123456)
        script: script.js

Grafana Cloud k6 Test Results

当您使用 k6 cloud run --local-execution 将结果发送到 k6 Cloud 时,数据将持续流式传输到云端。在此期间,测试运行的状态将标记为 Running(运行中)。已完成运行的测试将标记为 Finished(已完成)。运行状态与测试是否通过任何阈值无关,仅表示测试本身运行正常。

如果您故意中止测试(例如,按下 Ctrl-C),您的测试将标记为 Aborted by User(用户中止)。您仍然可以查看和分析您迄今为止流式传输的测试数据。测试运行时间将比原计划短。

另一种可能性是,在测试运行时,您与云服务的网络连接丢失。在这种情况下,云服务将耐心等待您重新连接。与此同时,您测试的运行状态在 Web 应用上将继续显示为 Running(运行中)。

如果未发生重新连接,云服务将在两分钟无数据后超时,并将运行状态设置为 Timed out(超时)。您仍然可以分析超时的测试,但当然只能访问网络问题发生前流式传输的数据。

注意

k6 cloud run --local-execution script.js 命令将 k6 从您的测试脚本和资源生成的测试存档上传到 Grafana Cloud。

可以通过向命令添加 --no-archive-upload 选项来禁用此行为:k6 cloud run --local-execution --no-archive-upload script.js

高级设置

一些环境变量可以控制 k6 如何使用 k6 cloud run script.js --local-execution 流式传输结果。

流式传输时,k6 将收集所有数据并分批发送到云端。

名称描述
K6_CLOUD_METRIC_PUSH_INTERVAL将数据发送到云端的频率(默认为 '1s')。

k6 还可以聚合每批发送到云端的数据。这减少了发送到云端的数据量。默认情况下,聚合是禁用的。

使用聚合时,k6 会将传入的测试数据收集到时间桶中。对于在每个桶中收集的每种数据类型,它将计算中位数周围的离散度(默认为四分位距)。远超出下四分位数和上四分位数之外的离群数据不会被聚合,从而防止丢失潜在的重要测试信息。

名称描述
K6_CLOUD_AGGREGATION_PERIOD>0s 激活聚合(默认禁用,'3s' 是一个不错的尝试示例)
K6_CLOUD_AGGREGATION_CALC_INTERVAL新数据聚合的频率(默认为 '3s')。
K6_CLOUD_AGGREGATION_WAIT_PERIOD等待周期样本累积多长时间再进行聚合(默认为 '5s')。
K6_CLOUD_AGGREGATION_MIN_SAMPLES如果在间隔内到达的样本少于此数量,则跳过聚合(默认为 100)。
K6_CLOUD_AGGREGATION_OUTLIER_IQR_RADIUS使用中位数进行 Q1 和 Q3 四分位数的离群点采样(分数)(默认为 0.25,即 IQR)。
K6_CLOUD_AGGREGATION_OUTLIER_IQR_COEF_LOWER低于下四分位数多少个四分位距的数据被视为不可聚合的离群点(默认为 1.5)
K6_CLOUD_AGGREGATION_OUTLIER_IQR_COEF_UPPER高于上四分位数多少个四分位距的数据被视为不可聚合的离群点(默认为 1.3)

当使用 k6 cloud run 完全在云端运行测试时,k6 会始终进行聚合。但是,在这种情况下,聚合设置由云基础设施决定,无法通过 CLI 控制。