diff --git a/web/package-lock.json b/web/package-lock.json
index e6b47ba17f..0d32d7c3cf 100644
--- a/web/package-lock.json
+++ b/web/package-lock.json
@@ -651,6 +651,17 @@
"statuses": "^2.0.1"
}
},
+ "node_modules/@bundled-es-modules/tough-cookie": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/@bundled-es-modules/tough-cookie/-/tough-cookie-0.1.6.tgz",
+ "integrity": "sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@types/tough-cookie": "^4.0.5",
+ "tough-cookie": "^4.1.4"
+ }
+ },
"node_modules/@colors/colors": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
@@ -1862,16 +1873,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/@mswjs/cookies": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@mswjs/cookies/-/cookies-1.1.1.tgz",
- "integrity": "sha512-W68qOHEjx1iD+4VjQudlx26CPIoxmIAtK4ZCexU0/UJBG6jYhcuyzKJx+Iw8uhBIGd9eba64XgWVgo20it1qwA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
"node_modules/@mswjs/interceptors": {
"version": "0.29.1",
"resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.29.1.tgz",
@@ -2636,9 +2637,9 @@
}
},
"node_modules/@types/node": {
- "version": "20.14.11",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.11.tgz",
- "integrity": "sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==",
+ "version": "20.14.12",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.12.tgz",
+ "integrity": "sha512-r7wNXakLeSsGT0H1AU863vS2wa5wBOK4bWMjZz2wj+8nBx+m5PeIn0k8AloSLpRuiwdRQZwarZqHE4FNArPuJQ==",
"license": "MIT",
"dependencies": {
"undici-types": "~5.26.4"
@@ -3066,9 +3067,9 @@
"license": "ISC"
},
"node_modules/@vitejs/plugin-vue": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.5.tgz",
- "integrity": "sha512-LOjm7XeIimLBZyzinBQ6OSm3UBCNVCpLkxGC0oWmm2YPzVZoxMsdvNVimLTBzpAnR9hl/yn1SHGuRfe6/Td9rQ==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.0.tgz",
+ "integrity": "sha512-QMRxARyrdiwi1mj3AW4fLByoHTavreXq0itdEW696EihXglf1MB3D4C2gBvE0jMPH29ZjC3iK8aIaUMLf4EOGA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6429,9 +6430,9 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
- "version": "1.4.833",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.833.tgz",
- "integrity": "sha512-aVGP9xK70Ysrzip1m5LoJjCp1EDrYzZ7Pg/O3QR1h3PAhmc8SNfSXV3kmmtkg5rNO42EcTYmLX3eFMgqALlGIA==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.0.tgz",
+ "integrity": "sha512-Vb3xHHYnLseK8vlMJQKJYXJ++t4u1/qJ3vykuVrVjvdiOEhYyT1AuP4x03G8EnPmYvYOhe9T+dADTmthjRQMkA==",
"license": "ISC"
},
"node_modules/element-resize-detector": {
@@ -6502,9 +6503,9 @@
}
},
"node_modules/enhanced-resolve": {
- "version": "5.17.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz",
- "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==",
+ "version": "5.17.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
+ "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
"license": "MIT",
"peer": true,
"dependencies": {
@@ -10781,17 +10782,17 @@
"license": "MIT"
},
"node_modules/msw": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/msw/-/msw-2.3.2.tgz",
- "integrity": "sha512-vDn6d6a50vxPE+HnaKQfpmZ4SVXlOjF97yD5FJcUT3v2/uZ65qvTYNL25yOmnrfCNWZ4wtAS7EbtXxygMug2Tw==",
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/msw/-/msw-2.3.4.tgz",
+ "integrity": "sha512-sHMlwrajgmZSA2l1o7qRSe+azm/I+x9lvVVcOxAzi4vCtH8uVPJk1K5BQYDkzGl+tt0RvM9huEXXdeGrgcc79g==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
"@bundled-es-modules/cookie": "^2.0.0",
"@bundled-es-modules/statuses": "^1.0.1",
+ "@bundled-es-modules/tough-cookie": "^0.1.6",
"@inquirer/confirm": "^3.0.0",
- "@mswjs/cookies": "^1.1.0",
"@mswjs/interceptors": "^0.29.0",
"@open-draft/until": "^2.1.0",
"@types/cookie": "^0.6.0",
diff --git a/web/src/composables/useLogs.ts b/web/src/composables/useLogs.ts
index 2e11a75830..499733587c 100644
--- a/web/src/composables/useLogs.ts
+++ b/web/src/composables/useLogs.ts
@@ -1016,7 +1016,8 @@ const useLogs = () => {
} catch (e: any) {
// showErrorNotification("Invalid SQL Syntax");
console.log(e);
- notificationMsg.value = "An error occurred while constructing the search query.";
+ notificationMsg.value =
+ "An error occurred while constructing the search query.";
return "";
}
}
@@ -1045,7 +1046,8 @@ const useLogs = () => {
const parsedSQL: any = fnParsedSQL();
if (searchObj.meta.sqlMode && parsedSQL == undefined) {
- searchObj.data.queryResults.error = "Error while search partition. Search query is invalid.";
+ searchObj.data.queryResults.error =
+ "Error while search partition. Search query is invalid.";
return;
}
@@ -1318,7 +1320,8 @@ const useLogs = () => {
Math.max(parseInt(currentValue.zo_sql_num, 10), 0),
0
);
- partitionDetail.partitionTotal[0] = searchObj.data.queryResults.total;
+ partitionDetail.partitionTotal[0] =
+ searchObj.data.queryResults.total;
}
} else {
searchObj.data.queryResults.total =
@@ -1457,7 +1460,7 @@ const useLogs = () => {
isNaN(searchObj.data.datetime.startTime)
) {
const queryParams: any = router.currentRoute.value.query;
- let currentPeriod: string = queryParams?.period || "15m";
+ const currentPeriod: string = queryParams?.period || "15m";
const extractedDate: any = extractTimestamps(currentPeriod);
searchObj.data.datetime.startTime = extractedDate.from;
searchObj.data.datetime.endTime = extractedDate.to;
@@ -1539,11 +1542,11 @@ const useLogs = () => {
searchObj.data.histogramQuery.query.sql_mode = "full";
// searchObj.data.histogramQuery.query.start_time =
- // queryReq.query.start_time;
-
+ // queryReq.query.start_time;
+
// searchObj.data.histogramQuery.query.end_time =
// queryReq.query.end_time;
-
+
delete searchObj.data.histogramQuery.query.quick_mode;
delete searchObj.data.histogramQuery.query.from;
@@ -1625,7 +1628,7 @@ const useLogs = () => {
searchObj.data.stream.selectedStream.length <= 1 &&
searchObj.data.resultGrid.currentPage == 1)
) {
- if(searchObj.data.queryResults.hits.length > 0) {
+ if (searchObj.data.queryResults.hits.length > 0) {
await getHistogramQueryData(searchObj.data.histogramQuery);
}
refreshPartitionPagination(true);
@@ -1647,7 +1650,11 @@ const useLogs = () => {
if (parsedSQL) {
aggFlag = hasAggregation(parsedSQL?.columns);
}
- if (queryReq.query.from == 0 && searchObj.data.queryResults.hits.length > 0 && !aggFlag) {
+ if (
+ queryReq.query.from == 0 &&
+ searchObj.data.queryResults.hits.length > 0 &&
+ !aggFlag
+ ) {
setTimeout(async () => {
searchObjDebug["pagecountStartTime"] = performance.now();
await getPageCount(queryReq);
@@ -1678,7 +1685,7 @@ const useLogs = () => {
}
} else {
searchObj.loading = false;
- if(!notificationMsg.value) {
+ if (!notificationMsg.value) {
notificationMsg.value = "Search query is empty or invalid.";
}
}
@@ -1692,7 +1699,9 @@ const useLogs = () => {
console.log("=================== getQueryData Debug ===================");
} catch (e: any) {
searchObj.loading = false;
- showErrorNotification(notificationMsg.value || "Error occurred during the search operation.");
+ showErrorNotification(
+ notificationMsg.value || "Error occurred during the search operation."
+ );
notificationMsg.value = "";
}
};
@@ -1822,11 +1831,21 @@ const useLogs = () => {
})
.catch((err) => {
searchObj.loading = false;
- searchObj.data.errorMsg = "Error while processing search total count request.";
+ let trace_id = "";
+ searchObj.data.errorMsg = "Error while processing search request.";
if (err.response != undefined) {
- searchObj.data.errorMsg = err.response.data.error;
+ searchObj.data.errorMsg =
+ err.response.data.error +
+ " TraceID:" +
+ err.response.data?.trace_id;
+ if (err.response.data.hasOwnProperty("trace_id")) {
+ trace_id = err.response.data?.trace_id;
+ }
} else {
- searchObj.data.errorMsg = err.message;
+ searchObj.data.errorMsg = err.message + " TraceID:" + err?.trace_id;
+ if (err.hasOwnProperty("trace_id")) {
+ trace_id = err?.trace_id;
+ }
}
const customMessage = logsErrorMessage(err?.response?.data.code);
@@ -1838,9 +1857,19 @@ const useLogs = () => {
notificationMsg.value = searchObj.data.errorMsg;
- if (err?.response?.data?.code == 429) {
- notificationMsg.value = err.response.data.message;
- searchObj.data.errorMsg = err.response.data.message;
+ if (err?.request?.status >= 429) {
+ notificationMsg.value = err?.response?.data?.message;
+ searchObj.data.errorMsg =
+ err?.response?.data?.message;
+ }
+
+ if (trace_id) {
+ searchObj.data.errorMsg +=
+ "
TraceID:" +
+ trace_id +
+ "";
+ notificationMsg.value += " TraceID:" + trace_id;
+ trace_id = "";
}
reject(false);
});
@@ -2092,11 +2121,24 @@ const useLogs = () => {
})
.catch((err) => {
searchObj.loading = false;
- searchObj.data.errorMsg = "Error while processing search request.";
+ let trace_id = "";
+ searchObj.data.errorMsg =
+ typeof err == "string" && err
+ ? err
+ : "Error while processing histogram request.";
if (err.response != undefined) {
- searchObj.data.errorMsg = err.response.data.error;
+ searchObj.data.errorMsg =
+ err.response.data.error +
+ " TraceID:" +
+ err.response.data?.trace_id;
+ if (err.response.data.hasOwnProperty("trace_id")) {
+ trace_id = err.response.data?.trace_id;
+ }
} else {
- searchObj.data.errorMsg = err.message;
+ searchObj.data.errorMsg = err.message + " TraceID:" + err?.trace_id;
+ if (err.hasOwnProperty("trace_id")) {
+ trace_id = err?.trace_id;
+ }
}
const customMessage = logsErrorMessage(err?.response?.data.code);
@@ -2108,10 +2150,21 @@ const useLogs = () => {
notificationMsg.value = searchObj.data.errorMsg;
- if (err?.response?.data?.code == 429) {
- notificationMsg.value = err.response.data.message;
- searchObj.data.errorMsg = err.response.data.message;
+ if (err?.request?.status >= 429) {
+ notificationMsg.value = err?.response?.data?.message;
+ searchObj.data.errorMsg =
+ err?.response?.data?.message;
}
+
+ if (trace_id) {
+ searchObj.data.errorMsg +=
+ "
TraceID:" +
+ trace_id +
+ "";
+ notificationMsg.value += " TraceID:" + trace_id;
+ trace_id = "";
+ }
+
reject(false);
});
});
@@ -2194,7 +2247,8 @@ const useLogs = () => {
searchObj.data.queryResults.aggs = res.data.hits;
searchObj.data.queryResults.scan_size = res.data.scan_size;
searchObj.data.queryResults.took += res.data.took;
- searchObj.data.queryResults.result_cache_ratio += res.data.result_cache_ratio;
+ searchObj.data.queryResults.result_cache_ratio +=
+ res.data.result_cache_ratio;
// if (hasAggregationFlag) {
// searchObj.data.queryResults.total = res.data.total;
// }
@@ -2233,11 +2287,25 @@ const useLogs = () => {
})
.catch((err) => {
searchObj.loadingHistogram = false;
- searchObj.data.errorMsg = "Error while processing histogram request.";
+ let trace_id = "";
+ searchObj.data.histogram.errorMsg =
+ typeof err == "string" && err
+ ? err
+ : "Error while processing histogram request.";
if (err.response != undefined) {
- searchObj.data.histogram.errorMsg = err.response.data.error;
+ searchObj.data.histogram.errorMsg =
+ err.response.data.error +
+ " TraceID:" +
+ err.response.data?.trace_id;
+ if (err.response.data.hasOwnProperty("trace_id")) {
+ trace_id = err.response.data?.trace_id;
+ }
} else {
- searchObj.data.histogram.errorMsg = err.message;
+ searchObj.data.histogram.errorMsg =
+ err.message + " TraceID:" + err?.trace_id;
+ if (err.hasOwnProperty("trace_id")) {
+ trace_id = err?.trace_id;
+ }
}
const customMessage = logsErrorMessage(err?.response?.data.code);
@@ -2251,9 +2319,21 @@ const useLogs = () => {
notificationMsg.value = searchObj.data.histogram.errorMsg;
- if (err?.response?.data?.code == 429) {
- notificationMsg.value = err.response.data.message;
- searchObj.data.histogram.errorMsg = err.response.data.message;
+ if (err?.request?.status >= 429) {
+ notificationMsg.value = err?.response?.data?.message;
+ searchObj.data.histogram.errorMsg =
+ err?.response?.data?.message;
+ searchObj.data.histogram.errorDetail =
+ err?.response?.data?.error_detail;
+ }
+
+ if (trace_id) {
+ searchObj.data.histogram.errorMsg +=
+ "
TraceID:" +
+ trace_id +
+ "";
+ notificationMsg.value += " TraceID:" + trace_id;
+ trace_id = "";
}
reject(false);
@@ -2869,7 +2949,8 @@ const useLogs = () => {
function getHistogramTitle() {
try {
const currentPage = searchObj.data.resultGrid.currentPage - 1 || 0;
- const startCount = currentPage * searchObj.meta.resultGrid.rowsPerPage + 1;
+ const startCount =
+ currentPage * searchObj.meta.resultGrid.rowsPerPage + 1;
let endCount;
let totalCount = searchObj.data.queryResults.total || 0;
@@ -2903,10 +2984,17 @@ const useLogs = () => {
}
let plusSign: string = "";
- if(searchObj.data.queryResults.partitionDetail.partitions.length > 1 && searchObj.meta.showHistogram == false) {
+ if (
+ searchObj.data.queryResults.partitionDetail.partitions.length > 1 &&
+ searchObj.meta.showHistogram == false
+ ) {
plusSign = "+";
}
- const scanSizeLabel = (searchObj.data.queryResults.result_cache_ratio !== undefined && searchObj.data.queryResults.result_cache_ratio > 0)? "Delta Scan Size" : "Scan Size";
+ const scanSizeLabel =
+ searchObj.data.queryResults.result_cache_ratio !== undefined &&
+ searchObj.data.queryResults.result_cache_ratio > 0
+ ? "Delta Scan Size"
+ : "Scan Size";
const title =
"Showing " +
@@ -2918,7 +3006,9 @@ const useLogs = () => {
plusSign +
" events in " +
searchObj.data.queryResults.took +
- " ms. (" + scanSizeLabel + ": " +
+ " ms. (" +
+ scanSizeLabel +
+ ": " +
formatSizeFromMB(searchObj.data.queryResults.scan_size) +
plusSign +
")";
@@ -3155,10 +3245,21 @@ const useLogs = () => {
// }, 500);
})
.catch((err) => {
+ let trace_id = "";
+ searchObj.data.errorMsg = "Error while processing search request.";
if (err.response != undefined) {
- searchObj.data.errorMsg = err.response.data.error;
+ searchObj.data.errorMsg =
+ err.response.data.error +
+ " TraceID:" +
+ err.response.data?.trace_id;
+ if (err.response.data.hasOwnProperty("trace_id")) {
+ trace_id = err.response.data?.trace_id;
+ }
} else {
- searchObj.data.errorMsg = err.message;
+ searchObj.data.errorMsg = err.message + " TraceID:" + err?.trace_id;
+ if (err.hasOwnProperty("trace_id")) {
+ trace_id = err?.trace_id;
+ }
}
const customMessage = logsErrorMessage(err.response.data.code);
@@ -3166,6 +3267,20 @@ const useLogs = () => {
if (customMessage != "") {
searchObj.data.errorMsg = customMessage;
}
+
+ if (err?.request?.status >= 429) {
+ notificationMsg.value = err?.response?.data?.message;
+ searchObj.data.errorMsg =
+ err?.response?.data?.message;
+ }
+
+ if (trace_id) {
+ searchObj.data.errorMsg +=
+ "
TraceID:" +
+ trace_id +
+ "";
+ trace_id = "";
+ }
})
.finally(() => (searchObj.loading = false));
} catch (e: any) {
@@ -3175,7 +3290,7 @@ const useLogs = () => {
};
const refreshData = () => {
- try{
+ try {
if (
searchObj.meta.refreshInterval > 0 &&
router.currentRoute.value.name == "logs"
@@ -3194,7 +3309,7 @@ const useLogs = () => {
store.dispatch("setRefreshIntervalID", refreshIntervalID);
// only notify if user is in logs page
- if(searchObj.meta.logsVisualizeToggle == "logs"){
+ if (searchObj.meta.logsVisualizeToggle == "logs") {
$q.notify({
message: `Live mode is enabled. Only top ${searchObj.meta.resultGrid.rowsPerPage} results are shown.`,
color: "positive",
diff --git a/web/src/plugins/logs/Index.vue b/web/src/plugins/logs/Index.vue
index 9ab193697c..ba73cf7c5c 100644
--- a/web/src/plugins/logs/Index.vue
+++ b/web/src/plugins/logs/Index.vue
@@ -99,7 +99,8 @@ along with this program. If not, see