使用 k6 进行负载测试
Grafana k6 是一个现代的负载测试工具。其简洁易用的脚本 API 可以在本地或云端工作。其配置使其非常灵活。
xk6-loki 扩展 允许向 Loki 实例推送日志和查询日志。它作为一个 Loki 客户端,模拟真实世界的负载来测试您的 Loki 安装的可扩展性、可靠性和性能。
开始之前
k6 用 Go 语言编写。请 下载并安装 Go 环境。
安装
xk6-loki
是 k6 二进制文件的一个扩展。构建一个包含 xk6-loki
扩展的自定义 k6 二进制文件。
安装
xk6
扩展捆绑器go install go.k6.io/xk6/cmd/xk6@latest
检出
grafana/xk6-loki
仓库git clone https://github.com/grafana/xk6-loki cd xk6-loki
构建包含扩展的 k6
make k6
使用方法
使用自定义构建的 k6 二进制文件的方式与使用非自定义 k6 二进制文件的方式相同
./k6 run test.js
test.js
是一个 Javascript 负载测试脚本。请参阅 k6 文档 以开始使用。
脚本 API
自定义构建的 k6 二进制文件提供一个 Javascript loki
模块。
您的 Javascript 负载测试脚本导入该模块
import loki from 'k6/x/loki';
此模块的类包括
类 | 描述 |
---|---|
Config | Client 类的配置 |
Client | 用于从 Loki 写入和读取日志的客户端 |
Config
和 Client
必须在默认函数外部的 k6 初始化上下文 (参见 测试生命周期) 中调用,以便客户端只配置一次并在所有 VU 迭代之间共享。
Client
类暴露以下实例方法
方法 | 描述 |
---|---|
push() | pushParameterized(5, 800*1024, 1024*1024) 的快捷方式 |
pushParameterized(streams, minSize, maxSize) | 执行 push 请求 (POST /loki/api/v1/push |
instantQuery(query, limit) | 执行即时查询 (GET /loki/api/v1/query |
client.rangeQuery(query, duration, limit) | 执行范围查询 (GET /loki/api/v1/query_range |
client.labelsQuery(duration) | 执行标签查询 (GET /loki/api/v1/labels |
client.labelValuesQuery(label, duration) | 执行标签值查询 (GET /loki/api/v1/label/<name>/values |
client.seriesQuery(matchers, duration) | 执行系列查询 (GET /loki/api/v1/series |
Javascript 负载测试示例
import loki from 'k6/x/loki';
const timeout = 5000; // ms
const conf = loki.Config("https://:3100", timeout);
const client = loki.Client(conf);
export default () => {
client.pushParameterized(2, 512*1024, 1024*1024);
};
请参阅 grafana/xk6-loki 以获取完整的 k6/x/loki
模块 API 参考。