菜单
开源

Amazon CloudWatch

注意

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

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

k6 可以通过 CloudWatch Agent 使用 xk6-output-statsd 扩展将指标数据发送到 Amazon CloudWatch。然后可以在仪表盘中可视化这些指标。

本指南介绍如何

  • 运行 CloudWatch Agent
  • 运行 k6 测试
  • 在 Amazon CloudWatch 中可视化 k6 指标

开始之前

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

运行 CloudWatch Agent

我们假设您已经有一台同时支持运行 k6 和 CloudWatch Agent 的机器,该机器运行 GNU/Linux 或 Windows 系统。请直接下载适合您操作系统的 CloudWatch Agent 版本。

  1. 创建一个 IAM 角色,以便通过 Agent 将指标发送到 CloudWatch。然后,如果您在 Amazon EC2 上运行,只需将该角色附加到您的 EC2 实例,即可向 CloudWatch 发送指标。否则,如果您在本地服务器上运行,请按照此指南操作。

  2. 下载适合您操作系统的 CloudWatch Agent 安装包。例如,在 Debian 10 (Buster) 上,我们使用了以下链接。对于其他操作系统,请参考此指南

    bash
    wget https://s3.amazonaws.com/amazoncloudwatch-agent/debian/amd64/latest/amazon-cloudwatch-agent.deb
  3. 安装安装包

    bash
    sudo dpkg -i amazon-cloudwatch-agent.deb
  4. 配置 Agent 以接收 k6 的数据。为此,创建一个名为“/opt/aws/amazon-cloudwatch-agent/etc/statsd.json”的文件,并将以下 JSON 配置对象粘贴到其中。此配置意味着 Agent 将监听端口号 8125,这是 k6 和 StatsD 的默认端口号。指标收集间隔为 5 秒,我们不对其进行聚合,因为稍后在 CloudWatch 中需要原始数据。

    json
    {
      "metrics": {
        "namespace": "k6",
        "metrics_collected": {
          "statsd": {
            "service_address": ":8125",
            "metrics_collection_interval": 5,
            "metrics_aggregation_interval": 0
          }
        }
      }
    }
  5. 运行以下命令启动 Agent

    bash
    sudo amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/etc/statsd.json
  6. 您可以使用以下命令检查 Agent 的状态

    bash
    amazon-cloudwatch-agent-ctl -a status

运行 k6 测试

Agent 运行后,您可以运行测试:

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

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

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

在 Amazon CloudWatch 中可视化 k6 指标

导出到 CloudWatch 的指标可视化是通过创建仪表盘并选择要显示的所需指标来完成的。

List of k6 metrics

这是我们为可视化测试结果而创建的示例仪表盘。

k6 Dashboard on Amazon CloudWatch

上述仪表盘已导出为 JSON,可在此处获取