菜单
开源

New Relic

注意

内置的 StatsD 输出已在 k6 v0.47.0 中弃用,并在 v0.55.0 中移除。您可以继续使用 xk6-output-statsd 扩展 将指标流式传输到 StatsD,或根据您的用例使用 OpenTelemetry 输出

有关此更改原因的更多信息,您可以关注 k6 仓库中的此 issue

k6 可以通过 New Relic StatsD 集成将遥测数据发送到 New Relic。在 New Relic 中,您可以找到您的 k6 性能数据以及真实用户数据和服务器端性能数据。这些数据可以在 Dashboard 中可视化并与他人共享,用于比较负载影响和系统性能,还可以对指标进行告警。

本指南涵盖运行 New Relic 集成

  • 运行 New Relic StatsD 集成
  • 运行 k6 测试
  • 在 New Relic 中可视化 k6 遥测数据

开始之前

要使用 StatsD 输出选项,您必须使用 xk6-output-statsd 扩展构建 k6 二进制文件。更多详情请参阅 StatsD

运行 New Relic StatsD 集成

为了将 k6 指标导入 New Relic,k6 会将指标发送到 New Relic StatsD 集成,该集成将负责收集、聚合、格式化并将遥测数据发送到 New Relic 遥测数据平台。您可以在有或没有 New Relic Agent 的情况下运行此操作。

使用此命令将 New Relic 集成作为 Docker 容器运行

bash
docker run --rm \
  -d \
  --name newrelic-statsd \
  -h $(hostname) \
  -e NR_ACCOUNT_ID=<NR-ACCOUNT-ID> \
  -e NR_API_KEY="<NR-INSERT-API-KEY>" \
  -p 8125:8125/udp \
  newrelic/nri-statsd:latest

<NR-ACCOUNT-ID> 替换为您的 New Relic 账户 ID,将 <NR-INSERT-API-KEY> 替换为您的 New Relic Insert API Key

如果您的账户托管在 New Relic 欧盟地区,请将以下内容添加到上述命令中:-e NR_EU_REGION=true \

上述命令中使用的必需环境变量包括

名称
NR_ACCOUNT_ID在 New Relic 中使用的账户 ID。您可以在此处找到您的账户 ID。
NR_API_KEY您的 New Relic 账户的 Insert API Key,用于将 k6 遥测数据发送到上述指定的账户 ID。您可以在此处生成 Insert API key。

您可以使用的可选环境变量

名称
NR_EU_REGION将其设置为 true 会告知集成您的账户位于 New Relic 欧盟地区。
TAGS以空格分隔的 key:value 格式设置标签可以让您更深入地了解 New Relic 中的数据。例如,识别不同的测试运行或运行测试的机器。在 docker 命令中添加:-e TAGS="k6Test:myExampleTest someKey:someValue" \
NR_LOG_METRICS将其设置为 true 会激活集成的详细日志记录。

关于 New Relic 集成

上面安装的 New Relic StatsD 集成可以独立运行。安装 New Relic Agent 是可选的。

上述命令中提供的一切足以将 k6 性能指标发送到 New Relic。但是,您可以选择性地添加更多配置进一步定义指标及其格式(您也可以在 New Relic 端配置中完成此操作)、添加自定义标签以及创建告警。下方的可选表格对此进行了介绍。

运行 k6 测试

集成运行后,运行 k6 测试并将指标发送到集成,命令如下

bash
K6_STATSD_ENABLE_TAGS=true k6 run --out output-statsd script.js

请确保您使用的是使用 xk6-output-statsd 扩展构建的 k6 二进制文件。

您可以查看 StatsD 输出页面了解配置选项。

在 New Relic 中可视化

当您的 k6 测试运行时,k6 会将性能指标发送到 New Relic StatsD 集成,该集成又会将这些指标发送到 New Relic 遥测数据平台。这些指标将以 k6. 为前缀,以便您识别它们。

k6 metrics as seen in the New Relic data explorer

您可以在 New Relic 右上角的数据浏览器中可视化此集成发送的指标(查询您的数据)。

Sample New Relic k6 dashboard

您还可以将这些指标添加到仪表盘对 k6 指标进行告警

NRQL 查询示例

注意

New Relic 不支持从指标数据(即此 k6 输出发送的数据格式)计算百分位数。请参阅这篇 New Relic 论坛帖子关于指标数据类型的文档以获取详细信息。

以下是一些 NRQL 查询示例,您可以轻松复制并粘贴到 New Relic 仪表盘的小部件中,但您也可以继续使用图表构建器。在指标选项卡下查找所有以 k6. 为前缀的 k6 指标。

虚拟用户数

plain
SELECT latest(k6.vus) FROM Metric TIMESERIES

最大、中位数和平均请求时长

plain
SELECT max(k6.http_req_duration.summary) AS 'Max Duration', average(k6.http_req_duration.median) AS 'Median', average(k6.http_req_duration.mean) AS 'Avg' FROM Metric TIMESERIES

请求速率

plain
SELECT rate(max(k6.http_reqs), 1 seconds) FROM Metric TIMESERIES

发送数据和接收数据

plain
SELECT sum(k6.data_received) as 'Data Received', max(k6.data_sent) AS 'Data Sent' FROM Metric TIMESERIES

请求的直方图分桶

plain
SELECT histogram(`k6.http_reqs`, 80, 20) FROM Metric

请求数量变化

plain
SELECT derivative(k6.http_reqs, 30 seconds) AS 'Rate /reqs' FROM Metric TIMESERIES

所有 k6 性能指标的滚动列表

plain
SELECT uniques(metricName) FROM Metric WHERE metricName LIKE 'k6%' LIMIT MAX