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 Cloud 或 Grafana Cloud 上查看您的测试结果。
注意
数据存储和处理是主要的云成本,因此
k6 cloud run --local-execution
将消耗您订阅中的 VUH 或测试运行次数。
说明
(可选)- 登录云端
假设您已经安装了 k6,第一步是登录云服务。
使用
k6 cloud login
命令,您可以在 k6 机器上设置您的 API 令牌以针对云服务进行身份验证。从 k6 Cloud 或 Grafana Cloud k6 复制您的令牌并将其作为参数传递
k6 cloud login --token <YOUR_API_TOKEN>
运行测试并上传结果
现在,k6 将针对云服务对您进行身份验证,您可以使用
--local-execution
选项将 k6 结果发送到云端,如下所示k6 cloud run --local-execution script.js
或者,您可以在将 API 令牌传递给
k6 cloud run
命令时跳过k6 cloud login
命令,如下所示K6_CLOUD_TOKEN=<YOUR_API_TOKEN> k6 cloud run --local-execution script.js
运行命令后,控制台会显示一个 URL。复制此 URL 并将其粘贴到浏览器地址栏中以可视化测试结果。
execution: local output: cloud (https://acmecorp.grafana.net/a/k6-app/runs/123456) script: script.js
当您使用 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 控制。