LeonAdato/xk6-output-statsd
GitHub: LeonAdato/xk6-output-statsd
一个k6扩展,允许用户将负载测试指标实时输出到StatsD服务,以弥补k6官方移除StatsD直接支持后的功能缺口。
Stars: 35 | Forks: 16
# xk6 输出 statsd
提供将 k6 测试指标实时输出到 [StatsD](https://github.com/statsd/statsd) 服务的支持。
k6 将在未来的版本中移除对 _StatsD_ 指标收集器的直接支持。
对于希望继续使用 StatsD 的用户,可以将此功能编译成自定义 k6 二进制文件,作为 [xk6 扩展](https://k6.io/docs/extensions/)。
## 构建
要构建包含此扩展的 `k6` 二进制文件,请先确保您已具备以下前提条件:
- [Go 工具链](https://go101.org/article/go-toolchain.html)
- Git
- [xk6](https://github.com/grafana/xk6)
1. 使用 `xk6` 进行构建:
```
xk6 build --with github.com/LeonAdato/xk6-output-statsd
```
这将在当前目录生成一个 `k6` 二进制文件。
2. 使用刚刚构建的 `k6` 运行:
```
./k6 run -o output-statsd
```
## 配置选项
`xk6-output-statsd` 扩展支持以下配置选项:
| 环境变量 | 默认值 | 描述 |
|------------------------|-----------------|----------------------------------------------------------------------------------------|
| K6_STATSD_ADDR | `localhost:8125` | StatsD 服务的地址,目前仅支持 UDP。 |
| K6_STATSD_NAMESPACE | `k6.` | 用作所有指标名称前缀的命名空间。 |
| K6_STATSD_PUSH_INTERVAL | `1s` | 配置数据批次的发送频率。 |
| K6_STATSD_BUFFER_SIZE | `20` | 缓冲区大小。 |
| K6_STATSD_ENABLE_TAGS | `false` | 如果设置为 `true`,则启用发送标签功能。StatsD v0.9.0 之前的版本不支持标签。 |
| K6_STATSD_TAG_BLOCKLIST | `vu,iter,url` | 以逗号分隔的、不应发送到 StatsD 的标签列表。 |
可以通过系统环境变量指定选项,例如:
```
K6_STATSD_ADDR=localhost:8125 K6_STATSD_ENABLE_TAGS=true ./k6 run -o output-statsd examples/simple.js
```
# 本地测试
本仓库包含一个 [docker-compose.yml](./docker-compose.yml) 文件,用于启动基于 StatsD 的 Graphite 服务,可用于测试 `xk6-output-statsd` 扩展。
1. 启动 Docker Compose 环境。
`docker compose up -d`
输出应类似于以下内容:
```
✔ Network xk6-output-statsd_default Created ... 0.0s
✔ Container xk6-output-statsd-graphite-1 Started ... 0.3s
```
2. 使用你的 [自定义 k6 二进制文件](#build) 运行一个 k6 测试脚本,将指标发送到你在上一步启动的 StatsD 服务。
`./k6 run -o output-statsd examples/ramping-vus.js`
3. 通过访问 [http://localhost:80/](http://localhost/?showTarget=stats.timers.k6.http_req_duration.count&showTarget=stats.timers.k6.http_req_duration.count&from=-5minutes&target=stats.gauges.k6.vus&target=stats.k6.http_reqs&target=stats.timers.k6.iteration_duration.upper_90) 打开 Graphite 应用程序,查看测试中的指标,示例如下:

标签:EVTX分析, Go语言, k6, StatsD, UDP通信, xk6, 实时指标, 实时输出, 性能优化, 性能测试, 性能监控, 扩展开发, 指标输出, 数据推送, 日志审计, 标签过滤, 检测绕过, 测试工具, 测试自动化, 环境变量配置, 监控, 程序破解, 缓冲区管理, 请求拦截