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 容器运行
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 测试并将指标发送到集成,命令如下
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.
为前缀,以便您识别它们。
您可以在 New Relic 右上角的数据浏览器中可视化此集成发送的指标(查询您的数据)。
您还可以将这些指标添加到仪表盘并对 k6 指标进行告警。
NRQL 查询示例
注意
New Relic 不支持从指标数据(即此 k6 输出发送的数据格式)计算百分位数。请参阅这篇 New Relic 论坛帖子和关于指标数据类型的文档以获取详细信息。
以下是一些 NRQL 查询示例,您可以轻松复制并粘贴到 New Relic 仪表盘的小部件中,但您也可以继续使用图表构建器。在指标选项卡下查找所有以 k6.
为前缀的 k6 指标。
虚拟用户数
SELECT latest(k6.vus) FROM Metric TIMESERIES
最大、中位数和平均请求时长
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
请求速率
SELECT rate(max(k6.http_reqs), 1 seconds) FROM Metric TIMESERIES
发送数据和接收数据
SELECT sum(k6.data_received) as 'Data Received', max(k6.data_sent) AS 'Data Sent' FROM Metric TIMESERIES
请求的直方图分桶
SELECT histogram(`k6.http_reqs`, 80, 20) FROM Metric
请求数量变化
SELECT derivative(k6.http_reqs, 30 seconds) AS 'Rate /reqs' FROM Metric TIMESERIES
所有 k6 性能指标的滚动列表
SELECT uniques(metricName) FROM Metric WHERE metricName LIKE 'k6%' LIMIT MAX