K6自定义报告-抓取阈值失败输出

问题描述 投票:0回答:1

我正在尝试编写自定义报告并从 K6 运行中获取所有消息。我看到的问题是,当我将summaryData保存到txt文件中时,我没有看到这样的阈值失败日志:

错误[0088]指标“PUT_api_buyer_sa_buyer_buyerID_contact_contact、PUT_api_buyer_sa_buyer_buyerID_contact_contactID”的阈值已被超过

我有代码:

export function handleSummary(summaryData) {
  const data = summaryData;
  return {
    stdout: textSummary(data, { indent: " ", enableColors: true }) ,
    [`report_summary_${__ENV.TIMESTAMP}.txt`]: textSummary(data, {
      indent: " ",
      enableColors: false,
    }),
  };
  }

但看起来它没有将 console.log() 重定向到 txt 文件 有没有办法真正获取我在 K6 运行的控制台中看到的所有日志并将它们重定向到 txt 文件?但我绝对看不到 *.txt 输出文件以及 console.log() 中的最后几行

在此谢谢大家的帮助! enter image description here

performance-testing k6
1个回答
0
投票

您无权访问

handleSummary
函数中的(过去的)控制台输出。如果要将控制台输出写入文件,请将
k6
输出重定向到文件:

  1. k6 run ./your_script.js > logs.txt
  2. k6 run ./your_script.js | tee logs.txt
    在终端中查看它们并同时写入文件

或者,如果您只想知道已经超过了哪些阈值,您可以从传递给 handleSummary

 函数的 
第一个参数中提取此信息

export function handleSummary(summaryData) {
  const failedMetrics = [];
  for (const [metric, value] of Object.entries(summaryData.metrics)) {
    const thresholds = value.thresholds;
    if (Object.values(thresholds).some(t => !t.ok)) {
      failedMetrics.push(metric);
    }
  }

  return {
    `failed_thresholds.txt`: JSON.stringify(failedMetrics),
  };
}

summaryData.metrics
对象看起来像文档中的这个示例:

{
  "http_req_duration": {
    "type": "trend",
    "contains": "time",
    "values": {
      "avg": 268.31137452500013,
      "max": 846.198634,
      "p(99.99)": 846.1969478817999
    },
    "thresholds": {
      "p(95)<500": {
        "ok": false
      }
    }
  }
}

当然,您可以按照自己想要的方式自由构建输出数据:打印实际失败的阈值(例如,

P(99) < 500
被交叉),对指标进行分组,写入失败阈值的指标值。

© www.soinside.com 2019 - 2024. All rights reserved.