From 401466d6c0f59147a65f74cdc8188490f469f4f3 Mon Sep 17 00:00:00 2001 From: Kunihiko Toumura Date: Mon, 23 Aug 2021 11:54:05 +0900 Subject: [PATCH] Add timing log --- .../nodes/core/network/21-httprequest.js | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/packages/node_modules/@node-red/nodes/core/network/21-httprequest.js b/packages/node_modules/@node-red/nodes/core/network/21-httprequest.js index c2d6d1d0f..dbf23463f 100644 --- a/packages/node_modules/@node-red/nodes/core/network/21-httprequest.js +++ b/packages/node_modules/@node-red/nodes/core/network/21-httprequest.js @@ -514,6 +514,7 @@ in your Node-RED user directory (${RED.settings.userDir}). if (res.client && res.client.bytesRead) { node.metric("size.bytes", msg, res.client.bytesRead); } + emitTimingMetricLog(res.timings, msg); } // Convert the payload to the required return type @@ -538,6 +539,9 @@ in your Node-RED user directory (${RED.settings.userDir}). } msg.payload = err.toString() + " : " + url; msg.statusCode = err.code || (err.response?err.response.statusCode:undefined); + if (node.metric()) { + emitTimingMetricLog(err.timings, msg); + } nodeSend(msg); nodeDone(); }); @@ -547,6 +551,28 @@ in your Node-RED user directory (${RED.settings.userDir}). node.status({}); }); + function emitTimingMetricLog(timings, msg) { + const props = [ + "start", + "socket", + "lookup", + "connect", + "secureConnect", + "upload", + "response", + "end", + "error", + "abort" + ]; + if (timings) { + props.forEach(p => { + if (timings[p]) { + node.metric(`timings.${p}`, msg, timings[p]); + } + }); + } + } + function extractCookies(setCookie) { var cookies = {}; setCookie.forEach(function(c) {