我正在尝试编写自定义报告并从 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() 中的最后几行
您无权访问
handleSummary
函数中的(过去的)控制台输出。如果要将控制台输出写入文件,请将 k6
输出重定向到文件:
k6 run ./your_script.js > logs.txt
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
被交叉),对指标进行分组,写入失败阈值的指标值。