用于创建和填充 k6 指标的函数

Posted

技术标签:

【中文标题】用于创建和填充 k6 指标的函数【英文标题】:Function for creating and populating k6 metrics 【发布时间】:2019-07-26 06:25:18 【问题描述】:

我正在尝试在 js 中为 k6 工具脚本创建一个函数,这将使我能够为“事务名称”创建多种类型的指标作为输入,然后创建另一个函数来填充这些指标。这将有助于避免为不同的事务名称编写类似的代码,并有助于保持指标名称的一致。

// line of code to define the metrics
let Search_RT_Trend = new Trend("Search_duration");
let Search_PassRate = new Rate("Search_PassRate");
let Search_PassCount = new Counter("Search_PassCount");
let Search_FailCount = new Counter("Search_FailCount");

// line of code populating the data in metrics
Search_RT_Trend.add(res.timings.duration);
Search_PassRate.add(1);
Search_PassCount.add(1);
Search_FailCount.add(1);

希望创建两个函数来输入交易名称,可能如下:

CreateMetric ("Search") 

PopulateMetric ("Search")

如何做到这一点?

【问题讨论】:

【参考方案1】:

这样的?

function MetaMetric(name) 
    this.RT_Trend = new Trend(`$name_duration`);
    this.PassRate = new Rate(`$name_PassRate`);
    this.PassCount = new Counter(`$name_PassCount`);
    this.FailCount = new Counter(`$name_FailCount`);


MetaMetric.prototype.track = function (req) 
    this.RT_Trend.add(req.timings.duration);
    if (req.timings.duration < 200 /* or whatever */) 
        this.PassRate.add(1);
        this.PassCount.add(1);
     else 
        this.PassRate.add(0);
        this.FailCount.add(1);
    
;

let myMetaMetric = new MetaMetric("Search")

export default function () 
    let resp = http.get("https://httpbin.test.loadimpact.com/");
    myMetaMetric.track(resp);
    sleep(3 * Math.random());

需要考虑的一些事项:

当您拥有Rate 指标时,您不需要通过和失败Counter 指标。 Rate 本质上是通过和失败之间的比率,所以它基本上是这两个计数器的组合:) 您可能会发现 k6 checks 和 thresholds 很有用。

【讨论】:

以上是关于用于创建和填充 k6 指标的函数的主要内容,如果未能解决你的问题,请参考以下文章

为啥 .json 输出中的内置指标“vus”不反映控制台输出?

哪些损失函数和指标用于具有非常高的负数与正数比率的多标签分类?

Prometheus 没有抓取 stats d exporter

XGBoost的损失函数和评价指标

x509:由未知权威 CMD K6.io 签署的证书

使用 K6 来给你的服务做一次负载和压力测试吧