diff --git a/conf/getapiyaml.sh b/conf/getapiyaml.sh index efdba66c..3e9ce097 100755 --- a/conf/getapiyaml.sh +++ b/conf/getapiyaml.sh @@ -4,7 +4,7 @@ FILE="./api.yaml" read -p "MCIAM USE? (y/n): " MCIAM_USE case "$MCIAM_USE" in - y|Y ) URL="https://raw.githubusercontent.com/MZC-CSC/mc-admin-cli/develop/conf/api.yaml";; # m-cmp/mc-admin-cli + y|Y ) URL="https://raw.githubusercontent.com/m-cmp/mc-admin-cli/refs/heads/main/conf/api.yaml";; # m-cmp/mc-admin-cli n|N ) URL="https://raw.githubusercontent.com/cloud-barista/cm-mayfly/main/conf/api.yaml";; # cloud-barista/cm-mayfly esac diff --git a/front/assets/css/application.scss b/front/assets/css/application.scss index 9f6c5460..893f793a 100644 --- a/front/assets/css/application.scss +++ b/front/assets/css/application.scss @@ -13,6 +13,9 @@ // tomselect Custom CSS @import "./tomselect_for_tabler.scss"; +// xtermjs +@import "~@xterm/xterm/css/xterm.css"; + .section { display: none; } diff --git a/front/assets/js/common/api/services/monitoring_api.js b/front/assets/js/common/api/services/monitoring_api.js index 8c7ad88e..4b79e40f 100644 --- a/front/assets/js/common/api/services/monitoring_api.js +++ b/front/assets/js/common/api/services/monitoring_api.js @@ -345,7 +345,7 @@ export async function getMonitoringLog(nsId, mciId, targetId, keyword) { data.request = request; - var controller = "/api/" + "mc-observability/" + "GET_OpensearchLogs"; + var controller = "/api/" + "mc-observability/" + "GETOpensearchLogs"; const response = await webconsolejs["common/api/http"].commonAPIPost( controller, data @@ -428,7 +428,6 @@ export async function getTargetsNsMci(nsId, mciId) { controller, data ) - // target이 있다는 이야기는 agent가 설치되었다는 뜻으로 보면 되는가? maybe var respMeasureMent = response.data.responseData; diff --git a/front/assets/js/common/api/services/remotecmd_api.js b/front/assets/js/common/api/services/remotecmd_api.js new file mode 100644 index 00000000..d6dcffe5 --- /dev/null +++ b/front/assets/js/common/api/services/remotecmd_api.js @@ -0,0 +1,173 @@ +import { Terminal } from 'xterm'; +import { FitAddon } from '@xterm/addon-fit'; + +let terminalInstance = null; + +export async function initTerminal(id, nsId, mciId, vmid) { + console.log("Trying to connect to " + nsId + " / " + mciId); + + // 기존 터미널이 존재한다면 삭제 + if (terminalInstance) { + terminalInstance.dispose(); + terminalInstance = null; + } + + // 새 터미널 및 FitAddon 생성 + const term = new Terminal({ + theme: { + background: '#1e1e1e', + foreground: '#ffffff', + cursor: '#ffcc00' + }, + cursorBlink: true + }); + const fitAddon = new FitAddon(); + term.loadAddon(fitAddon); + + // 터미널을 지정된 컨테이너에 열기 + const container = document.getElementById(id); + term.open(container); + + terminalInstance = term; + + const ipcmd = "client_ip=$(echo $SSH_CLIENT | awk '{print $1}'); echo SSH client IP is: $client_ip"; + await processCommand(nsId, mciId, vmid, ipcmd, term, () => { + // console.log("done get ip") + }); + + function prompt() { + term.write('\r\n $ '); + } + prompt(); + + let userInput = ''; + + term.onData(async (data) => { + if (data === '\r') { + const command = userInput; + userInput = ''; + term.write(`\r\n`); + + await processCommand(nsId, mciId, vmid, command, term, () => { + prompt(); + }); + } else if (data === '\u007f') { + if (userInput.length > 0) { + term.write('\b \b'); + userInput = userInput.slice(0, -1); + } + } else { + if (/^[a-zA-Z0-9 !@#$%^&*()_\-+=\[\]{}|;:'",.<>/?]$/.test(data)) { + term.write(data); + userInput += data; + } + } + }); +} + +async function processCommand(nsid, mciid, vmid, command, term, callback) { + const loadingSymbols = ['|', '/', '-', '\\']; + let loadingIndex = 0; + + const loadingInterval = setInterval(() => { + term.write(`\r${loadingSymbols[loadingIndex]} Processing...`); + loadingIndex = (loadingIndex + 1) % loadingSymbols.length; + }, 250); + + try { + // API 호출 및 결과 받기 + const result = await postcmdmci(nsid, mciid, vmid, [command]); + + clearInterval(loadingInterval); // 로딩 애니메이션 중지 + term.write('\r \r'); // 로딩 텍스트 지우기 + + const response = result.results[0]; + const stdout = response.stdout; + const stderr = response.stderr; + + // STDOUT 출력 + if (stdout && Object.values(stdout).some(value => value.trim() !== '')) { + term.write('\r\nSTDOUT:\r\n'); + Object.values(stdout).forEach(value => { + const lines = value.split('\n'); + lines.forEach(line => { + writeAutoWrap(term, line); + }); + }); + } else { + term.write('\r\nSTDOUT: (No output)\r\n'); + } + + // STDERR 출력 + if (stderr && Object.values(stderr).some(value => value.trim() !== '')) { + term.write('\r\nSTDERR:\r\n'); + Object.values(stderr).forEach(value => { + const lines = value.split('\n'); + lines.forEach(line => { + if (line.trim() !== "") { + writeAutoWrap(term, line); + } + }); + }); + } + + callback(); // 완료 콜백 호출 + + } catch (error) { + clearInterval(loadingInterval); // 에러 발생 시 로딩 애니메이션 중지 + term.write('\r \r'); // 로딩 텍스트 지우기 + term.write(`Error: ${error.message}\r\n`); // 에러 메시지 전달 + callback(); + } +} + +// 자동 줄바꿈 처리 함수 +function writeAutoWrap(term, text) { + const cols = term.cols; + console.log("@@@@@@@@@@ cols", cols) + let currentLine = ''; + + for (let i = 0; i < text.length; i++) { + const char = text[i]; + + if (char === '\n') { + term.write(currentLine + '\r\n'); + currentLine = ''; + continue; + } + + currentLine += char; + if (currentLine.length >= cols) { + term.write(currentLine + '\r\n'); + currentLine = ''; + } + } + + if (currentLine) { + term.write(currentLine); + } +} + +export async function postcmdmci(nsid, mciid, vmid, cmdarr) { + const data = { + pathParams: { + nsId: nsid, + mciId: mciid + }, + queryParams: { + vmId: vmid + }, + Request: { + command: cmdarr, + userName: "cb-user" + } + } + const controller = "/api/" + "mc-infra-manager/" + "Postcmdmci"; + const response = await webconsolejs["common/api/http"].commonAPIPost( + controller, + data + ); + console.log("lookup disk info response : ", response); + const responseData = response.data.responseData; + return responseData; +} diff --git a/front/assets/js/pages/operation/analytics/monitoringconfig.js b/front/assets/js/pages/operation/analytics/monitoringconfig.js index af69bf9e..8254fe82 100644 --- a/front/assets/js/pages/operation/analytics/monitoringconfig.js +++ b/front/assets/js/pages/operation/analytics/monitoringconfig.js @@ -99,41 +99,40 @@ $("#workloadlist").on('change', async function () { // 1. mci의 vm 목록 조회(install 여부를 위해 필요.) try { - var response = await webconsolejs["common/api/services/mci_api"].getMci(currentNsId, currentWorkloadId); - var aMci = response.responseData - console.log("aMci ", aMci) - for (var vmIndex in aMci.vm) { - var aVm = aMci.vm[vmIndex] - aVm.workloadType = "MCI";// [MCI/PMK] - aVm.workloadName = currentWorkloadName; - aVm.monAgentStatus = "Not Installed"; - //console.log("aVm ", aVm) - vmMap.set(aVm.id, aVm); - } - console.log(vmMap) + var response = await webconsolejs["common/api/services/mci_api"].getMci(currentNsId, currentWorkloadId); + var aMci = response.responseData + console.log("aMci ", aMci) + for (var vmIndex in aMci.vm) { + var aVm = aMci.vm[vmIndex] + aVm.workloadType = "MCI"; // [MCI/PMK] + aVm.workloadName = currentWorkloadName; + + aVm.monAgentStatus = "Not Installed"; + vmMap.set(aVm.id, aVm); + } + console.log(vmMap) // 2. mci에 agent 설치된 목록 조회 var monitorTargetList = await webconsolejs["common/api/services/monitoring_api"].getTargetsNsMci(currentNsId, currentWorkloadId) + console.log("monitorTargetList",monitorTargetList ) console.log("monitorTargetList",monitorTargetList.data ) for (var i in monitorTargetList.data) { - console.log("monitorTargetList.data[i].id", monitorTargetList.data[i].id) - // [ - // { - // "alias_name": "77+9", - // "description": "77+9bQ==", - // "id": "g1-1-1", - // "mci_id": "mci01", - // "name": "g1-1-1", - // "ns_id": "ns01", - // "state": "ACTIVE" - // } - // ] - //var findVm = vmMap.get(monitorTargetList.data[i].id) - var findVm = vmMap.get("vm01-1") - console.log("findVm", findVm) - if( findVm){ - console.log("findVm2", findVm) - //findVm.workloadType = "MCI"; - + console.log("monitorTargetList.data[i].id", i, monitorTargetList.data[i].id) + + // [ + // { + // "alias_name": null, + // "description": "dm0x", + // "id": "vm-1", + // "mci_id": "mci01", + // "name": null, + // "ns_id": "ns01", + // "state": "ACTIVE" + // } + // ] + + // FIXME : 하드코드 for demo + var findVm = vmMap.get(monitorTargetList.data[i].id) + if(findVm){ findVm.monAgentStatus = monitorTargetList.data[i].state;// [ACTIVE/INACTIVE] vmMap.set(findVm.id, findVm); } @@ -141,12 +140,12 @@ $("#workloadlist").on('change', async function () { }catch(e){ console.log(e) } - // 3. mci에 log 설정?? + // 3. mci에 log 설정?? console.log("vmMap", Array.from(vmMap.values())) + // 4. table에 필요한 data set monitorConfigListTable.setData(Array.from(vmMap.values())); - }) // getMciList 호출 성공 시 @@ -166,20 +165,13 @@ function getSelectedMonitorConfigData(servernodeId) { console.log("return ", servernodeId) return; } - - // - // Toggle Monitoring Config Info - // 기본은 detailTab : monitoringconfig_info - // var div = document.getElementById("monitoringconfig_info");//monitoring_configuration - // console.log("monitoringconfig_info ", div) - // webconsolejs["partials/layout/navigatePages"].toggleElement(div) - + console.log("selectedServerNode.id", selectedServerNode.id) setMonitorConfigInfoData(); } // 클릭한 mci의 info값 세팅 -function setMonitorConfigInfoData() { +async function setMonitorConfigInfoData() { // var row = monitorConfigListTable.getRow(currentServernodeId); // console.log(row) @@ -187,20 +179,30 @@ function setMonitorConfigInfoData() { //selectedServerNode 안에 현재 선택한 rowData가 들어있음 console.log("setMonitorConfigInfoData ", selectedServerNode) + + + + var htmlCardIdPrefix = "#monitoringconfig_info_" try { - // var mciID = mciData.id; - // var mciName = mciData.name; - // var mciDescription = mciData.description; - // var mciStatus = mciData.status; - // console.log("setMciInfoData ", mciStatus) - // var mciDispStatus = webconsolejs["common/api/services/mci_api"].getMciStatusFormatter(mciStatus); - // var mciStatusIcon = webconsolejs["common/api/services/mci_api"].getMciStatusIconFormatter(mciDispStatus); - // var mciProviderNames = webconsolejs["common/api/services/mci_api"].getMciInfoProviderNames(mciData); //MCIS에 사용 된 provider - // var totalvmCount = mciData.vm.length; //mci의 vm개수 - - // console.log("totalvmCount", totalvmCount) - - // $("#mci_info_text").text(" [ " + mciName + " ]") + const generateOnOffIndicator = (result, status) => ``; + const generateStatusIndicator = (result, status) => `${status}`; + console.log("selectedServerNode.label", selectedServerNode.label) + var response = await webconsolejs["common/api/services/monitoring_api"].getMonitoringLog( + selectedServerNode.label["sys.namespace"], + selectedServerNode.label["sys.mciId"], + selectedServerNode.label["sys.id"], + "", + ); + console.log(response) + $(htmlCardIdPrefix+"name").text(selectedServerNode.name+" / "+selectedServerNode.id) + $(htmlCardIdPrefix+"desc").text(selectedServerNode.description) + $(htmlCardIdPrefix+"workload").text(selectedServerNode.workloadType+" / "+selectedServerNode.workloadName) + $(htmlCardIdPrefix+"monitor").html(generateOnOffIndicator(selectedServerNode.monAgentStatus === "ACTIVE" ? "true" : "false", selectedServerNode.monAgentStatus === "ACTIVE" ? "On" : "Off")) + $(htmlCardIdPrefix+"agent_status").html(generateStatusIndicator(selectedServerNode.monAgentStatus === "ACTIVE" ? "success" : "waring", selectedServerNode.monAgentStatus === "ACTIVE" ? "Running" : "Stopped")) + $(htmlCardIdPrefix+"collect_status").html(generateStatusIndicator(selectedServerNode.monAgentStatus === "ACTIVE" ? "success" : "waring", selectedServerNode.monAgentStatus === "ACTIVE" ? "running" : "waring")) // $("#mci_server_info_status").empty(); // $("#mci_server_info_status").text(" [ " + mciName + " ]") // $("#mci_server_info_count").text(" Server(" + totalvmCount + ")") @@ -623,9 +625,8 @@ function initMonitorConfigTable() { // 상세 정보 표시 여부 if (tempServernodeId === currentServernodeId) { webconsolejs["partials/layout/navigatePages"].deactiveElement(document.getElementById("monitoring_configuration")) - - this.deselectRow(); - return + this.dese + returnlectRow(); } else { webconsolejs["partials/layout/navigatePages"].activeElement(document.getElementById("monitoring_configuration")) this.deselectRow(); diff --git a/front/assets/js/pages/operation/manage/mci.js b/front/assets/js/pages/operation/manage/mci.js index cb430403..9fd81f04 100644 --- a/front/assets/js/pages/operation/manage/mci.js +++ b/front/assets/js/pages/operation/manage/mci.js @@ -1054,4 +1054,21 @@ document.getElementById("filter-clear").addEventListener("click", function () { }); /////////////////////////Tabulator Filter END///////////////////////// -////////////////////////////////////////////////////// END TABULATOR /////////////////////////////////////////////////// \ No newline at end of file +////////////////////////////////////////////////////// END TABULATOR /////////////////////////////////////////////////// + + + + + + +/////////////////// TEST TERMINAL MODAL ///////////////////////// + +export async function initremotecmdModal(){ + const nsId = webconsolejs["common/api/services/workspace_api"].getCurrentProject().NsId + await webconsolejs["common/api/services/remotecmd_api"].initTerminal('xterm-container',nsId,currentMciId,selectedVmId) // vmStatus 별로 상태 색상 set + const modalElement = document.getElementById('cmdtestmodal'); + const modalInstance = new bootstrap.Modal(modalElement); + modalInstance.show(); +} + + diff --git a/front/assets/js/partials/layout/navigatePages.js b/front/assets/js/partials/layout/navigatePages.js index c42fbddd..6cb2f6df 100644 --- a/front/assets/js/partials/layout/navigatePages.js +++ b/front/assets/js/partials/layout/navigatePages.js @@ -1,6 +1,10 @@ function showSection() { const sections = document.querySelectorAll('.section'); + const subSections = document.querySelectorAll('.sub_section'); + sections.forEach(section => section.classList.remove('active')); + subSections.forEach(subSections => subSections.classList.remove('active')); + const hash = window.location.hash || '#index'; const activeSection = document.querySelector(hash); if (activeSection) { diff --git a/front/assets/js/partials/operation/manage/remotecmd.js b/front/assets/js/partials/operation/manage/remotecmd.js new file mode 100644 index 00000000..e69de29b diff --git a/front/package-lock.json b/front/package-lock.json index 4b3ee7e5..9f31951d 100644 --- a/front/package-lock.json +++ b/front/package-lock.json @@ -13,6 +13,8 @@ "@melloware/coloris": "^0.19.1", "@popperjs/core": "^2.0.0", "@tabler/core": "^1.0.0-beta20", + "@xterm/addon-fit": "^0.10.0", + "@xterm/xterm": "^5.5.0", "apexcharts": "^3.45.2", "axios": "^1.6.7", "bootstrap": "^5.0.0", @@ -32,6 +34,7 @@ "tabulator-tables": "^5.6.1", "tinymce": "^6.8.3", "tom-select": "^2.3.1", + "xterm-addon-fit": "^0.8.0", "yarn": "^1.22.22" }, "devDependencies": { @@ -2204,6 +2207,21 @@ } } }, + "node_modules/@xterm/addon-fit": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@xterm/addon-fit/-/addon-fit-0.10.0.tgz", + "integrity": "sha512-UFYkDm4HUahf2lnEyHvio51TNGiLK66mqP2JoATy7hRZeXaGMRDr00JiSF7m63vR5WKATF605yEggJKsw0JpMQ==", + "license": "MIT", + "peerDependencies": { + "@xterm/xterm": "^5.0.0" + } + }, + "node_modules/@xterm/xterm": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.5.0.tgz", + "integrity": "sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==", + "license": "MIT" + }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "dev": true, @@ -6194,6 +6212,24 @@ "dev": true, "license": "ISC" }, + "node_modules/xterm": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/xterm/-/xterm-5.3.0.tgz", + "integrity": "sha512-8QqjlekLUFTrU6x7xck1MsPzPA571K5zNqWm0M0oroYEWVOptZ0+ubQSkQ3uxIEhcIHRujJy6emDWX4A7qyFzg==", + "deprecated": "This package is now deprecated. Move to @xterm/xterm instead.", + "license": "MIT", + "peer": true + }, + "node_modules/xterm-addon-fit": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/xterm-addon-fit/-/xterm-addon-fit-0.8.0.tgz", + "integrity": "sha512-yj3Np7XlvxxhYF/EJ7p3KHaMt6OdwQ+HDu573Vx1lRXsVxOcnVJs51RgjZOouIZOczTsskaS+CpXspK81/DLqw==", + "deprecated": "This package is now deprecated. Move to @xterm/addon-fit instead.", + "license": "MIT", + "peerDependencies": { + "xterm": "^5.0.0" + } + }, "node_modules/yallist": { "version": "4.0.0", "dev": true, diff --git a/front/package.json b/front/package.json index 81963fac..9079869c 100644 --- a/front/package.json +++ b/front/package.json @@ -13,6 +13,8 @@ "@melloware/coloris": "^0.19.1", "@popperjs/core": "^2.0.0", "@tabler/core": "^1.0.0-beta20", + "@xterm/addon-fit": "^0.10.0", + "@xterm/xterm": "^5.5.0", "apexcharts": "^3.45.2", "axios": "^1.6.7", "bootstrap": "^5.0.0", @@ -32,6 +34,7 @@ "tabulator-tables": "^5.6.1", "tinymce": "^6.8.3", "tom-select": "^2.3.1", + "xterm-addon-fit": "^0.8.0", "yarn": "^1.22.22" }, "devDependencies": { diff --git a/front/templates/pages/operations/manage/workloads/mciworkloads.html b/front/templates/pages/operations/manage/workloads/mciworkloads.html index 5ac3f34a..37e24be4 100644 --- a/front/templates/pages/operations/manage/workloads/mciworkloads.html +++ b/front/templates/pages/operations/manage/workloads/mciworkloads.html @@ -754,6 +754,10 @@

Steps

+ +<%= javascriptTag("common/api/services/remotecmd_api.js") %> + + <%= partial("partials/operation/manage/mcicreate.html") %> @@ -770,3 +774,6 @@

Steps

<%= javascriptTag("pages/operation/manage/mci.js") %> <%= javascriptTag("common/api/services/mci_api.js") %> <%= javascriptTag("common/api/services/vmimage_api.js") %> + + + diff --git a/front/templates/partials/layout/_pageheader.html b/front/templates/partials/layout/_pageheader.html index c0f79085..d3558fba 100644 --- a/front/templates/partials/layout/_pageheader.html +++ b/front/templates/partials/layout/_pageheader.html @@ -7,4 +7,7 @@ +
+ +
\ No newline at end of file diff --git a/front/templates/partials/operation/dashboard/_mci_dashboard.html b/front/templates/partials/operation/dashboard/_mci_dashboard.html index b41b70e7..88175ff8 100644 --- a/front/templates/partials/operation/dashboard/_mci_dashboard.html +++ b/front/templates/partials/operation/dashboard/_mci_dashboard.html @@ -334,4 +334,7 @@

MCI / server

<%= javascriptTag("partials/operation/dashboard/mci_dashboard.js") %> <%= javascriptTag("common/api/services/mci_api.js") %> + + + diff --git a/front/templates/partials/operation/manage/_mci_status_summary.html b/front/templates/partials/operation/manage/_mci_status_summary.html index 6fca7e63..606e9041 100644 --- a/front/templates/partials/operation/manage/_mci_status_summary.html +++ b/front/templates/partials/operation/manage/_mci_status_summary.html @@ -23,7 +23,7 @@

0

0

- Running + Running @@ -35,7 +35,7 @@

style="display: flex; flex-direction: column; align-items: center" >

0

- Stopped + Stopped @@ -49,7 +49,7 @@

0

- Terminated + Terminated diff --git a/front/templates/partials/operation/manage/_server_status_summary.html b/front/templates/partials/operation/manage/_server_status_summary.html index 882aea81..802baee1 100644 --- a/front/templates/partials/operation/manage/_server_status_summary.html +++ b/front/templates/partials/operation/manage/_server_status_summary.html @@ -21,7 +21,7 @@

0

style="border: 0px; display: flex; flex-direction: column" >

0

- Running + Running @@ -33,7 +33,7 @@

0

style="display: flex; flex-direction: column; align-items: center" >

0

- Stopped + Stopped @@ -47,7 +47,7 @@

0

0

- Terminated + Terminated diff --git a/front/templates/partials/operation/manage/_serverinfo.html b/front/templates/partials/operation/manage/_serverinfo.html index 515ff516..f42a361a 100644 --- a/front/templates/partials/operation/manage/_serverinfo.html +++ b/front/templates/partials/operation/manage/_serverinfo.html @@ -4,7 +4,21 @@

Server Info

-
+
+ + + + + Remote CMD + + Install SW +
@@ -172,3 +187,22 @@
Zone
+ + + +<%= javascriptTag("common/api/services/remotecmd_api.js") %> diff --git a/front/templates/partials/operations/analytics/monitorings/_monitoringconfig_detail.html b/front/templates/partials/operations/analytics/monitorings/_monitoringconfig_detail.html index 3bbcf29c..de6ae0dc 100644 --- a/front/templates/partials/operations/analytics/monitorings/_monitoringconfig_detail.html +++ b/front/templates/partials/operations/analytics/monitorings/_monitoringconfig_detail.html @@ -1,97 +1,89 @@ +
+

Monitor Setting / Server(vm)

+
+
+
+
-
-
-

- Monitoring Setting -

- -
-
-
-
-
-
-
-
-
Name / ID
-
-
-
-
-
-
Description
-
-
-
+
+
+
Name / ID
+
+
+
-
-
-
Description
-
-
-
+
+
+
Description
+
+
+
-
-
-
Workload
-
-
-
+
+
+
Workload(type/name)
+
+
+
-
-
-
Monitor
-
-
-
+
+
+
Monitor
+
+
+
+
-
-
-
Agent Status
-
-
-
+
+
+
Agent Status
+
+
-
-
-
Collect Status
-
-
-
+
+
-
-
-
Collect datetime
-
-
-
+
+
+
Collect Status
+
+
+
-
-
-
Monitor Storage
-
-
-
+
+
+
Collect datetime
+
+
+
-
-
-
Monitor Metrics
-
-
-
+
+
+
Monitor
+
+
+ +
+
-
-
-
Log
-
-
-
-
-
+
+
+
Monitor Metrics
+
+
+
- -
- -
\ No newline at end of file +
+
+
Log
+
+
+ +
+
+ +
+
+
\ No newline at end of file diff --git a/front/templates/partials/operations/analytics/monitorings/_monitoringconfig_metric.html b/front/templates/partials/operations/analytics/monitorings/_monitoringconfig_metric.html index f6ceccef..662e5675 100644 --- a/front/templates/partials/operations/analytics/monitorings/_monitoringconfig_metric.html +++ b/front/templates/partials/operations/analytics/monitorings/_monitoringconfig_metric.html @@ -1 +1 @@ -metric \ No newline at end of file +metric aaaa \ No newline at end of file diff --git a/front/templates/partials/operations/analytics/monitorings/_monitoringconfigtab_monitorStorages.html b/front/templates/partials/operations/analytics/monitorings/_monitoringconfigtab_monitorStorages.html new file mode 100644 index 00000000..2f77c492 --- /dev/null +++ b/front/templates/partials/operations/analytics/monitorings/_monitoringconfigtab_monitorStorages.html @@ -0,0 +1 @@ +_monitoringconfigtab_monitorStorages \ No newline at end of file diff --git a/front/templates/partials/operations/analytics/monitorings/_monitoringconfigtabcards.html b/front/templates/partials/operations/analytics/monitorings/_monitoringconfigtabcards.html index f2b33d6d..feabfaa8 100644 --- a/front/templates/partials/operations/analytics/monitorings/_monitoringconfigtabcards.html +++ b/front/templates/partials/operations/analytics/monitorings/_monitoringconfigtabcards.html @@ -6,13 +6,16 @@ @@ -29,6 +32,10 @@
<%= partial("partials/operations/analytics/monitorings/monitoringconfig_log.html") %>
+ +
+ <%= partial("partials/operations/analytics/monitorings/monitoringconfig_log.html") %> +
diff --git a/front/yarn.lock b/front/yarn.lock index 3414fdb6..8c62479d 100644 --- a/front/yarn.lock +++ b/front/yarn.lock @@ -43,20 +43,20 @@ __metadata: linkType: hard "@babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0": - version: 7.26.0 - resolution: "@babel/code-frame@npm:7.26.0" + version: 7.26.2 + resolution: "@babel/code-frame@npm:7.26.2" dependencies: "@babel/helper-validator-identifier": "npm:^7.25.9" js-tokens: "npm:^4.0.0" picocolors: "npm:^1.0.0" - checksum: 10c0/46f7e367714be736b52ea3c01b24f47e2102e210fb83021d1c8237d8fc511b9538909e16e2fcdbb5cb6173e0794e28624309a59014e52fcfb7bde908f5284388 + checksum: 10c0/7d79621a6849183c415486af99b1a20b84737e8c11cd55b6544f688c51ce1fd710e6d869c3dd21232023da272a79b91efb3e83b5bc2dc65c1187c5fcd1b72ea8 languageName: node linkType: hard "@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.9, @babel/compat-data@npm:^7.26.0": - version: 7.26.0 - resolution: "@babel/compat-data@npm:7.26.0" - checksum: 10c0/6325c9151a3c9b0a3a807e854a26255ef66d989bff331475a935af9bb18f160e0fffe6aed550e4e96b63f91efcd874bfbaab2a1f4a2f8d25645d712a0de590fb + version: 7.26.2 + resolution: "@babel/compat-data@npm:7.26.2" + checksum: 10c0/c9b5f3724828d17f728a778f9d66c19b55c018d0d76de6d731178cca64f182c22b71400a73bf2b65dcc4fcfe52b630088a94d5902911b54206aa90e3ffe07d12 languageName: node linkType: hard @@ -84,15 +84,15 @@ __metadata: linkType: hard "@babel/generator@npm:^7.25.9, @babel/generator@npm:^7.26.0": - version: 7.26.0 - resolution: "@babel/generator@npm:7.26.0" + version: 7.26.2 + resolution: "@babel/generator@npm:7.26.2" dependencies: - "@babel/parser": "npm:^7.26.0" + "@babel/parser": "npm:^7.26.2" "@babel/types": "npm:^7.26.0" "@jridgewell/gen-mapping": "npm:^0.3.5" "@jridgewell/trace-mapping": "npm:^0.3.25" jsesc: "npm:^3.0.2" - checksum: 10c0/b6bb9185f19a97eaf58e04a6d39a13237076678e7ed16b6321dea914535d4bf6a8d7727c9dcb65539845aa0096b326eb67be4bab764bd74bcfd848e2eda68609 + checksum: 10c0/167ebce8977142f5012fad6bd91da51ac52bcd752f2261a54b7ab605d928aebe57e21636cdd2a9c7757e552652c68d9fcb5d40b06fcb66e02d9ee7526e118a5c languageName: node linkType: hard @@ -310,14 +310,14 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0": - version: 7.26.1 - resolution: "@babel/parser@npm:7.26.1" +"@babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.2": + version: 7.26.2 + resolution: "@babel/parser@npm:7.26.2" dependencies: "@babel/types": "npm:^7.26.0" bin: parser: ./bin/babel-parser.js - checksum: 10c0/dc7d4e6b7eb667fa0784e7e2c3f6f92ca12ad72242f6d4311995310dae55093f02acdb595b69b0dbbf04cb61ad87156ac03186ff32eacfa35149c655bc22c14b + checksum: 10c0/751a743087b3a9172a7599f1421830d44c38f065ef781588d2bfb1c98f9b461719a226feb13c868d7a284783eee120c88ea522593118f2668f46ebfb1105c4d7 languageName: node linkType: hard @@ -1335,106 +1335,114 @@ __metadata: languageName: node linkType: hard -"@parcel/watcher-android-arm64@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-android-arm64@npm:2.4.1" +"@parcel/watcher-android-arm64@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-android-arm64@npm:2.5.0" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@parcel/watcher-darwin-arm64@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-darwin-arm64@npm:2.4.1" +"@parcel/watcher-darwin-arm64@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-darwin-arm64@npm:2.5.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@parcel/watcher-darwin-x64@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-darwin-x64@npm:2.4.1" +"@parcel/watcher-darwin-x64@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-darwin-x64@npm:2.5.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@parcel/watcher-freebsd-x64@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-freebsd-x64@npm:2.4.1" +"@parcel/watcher-freebsd-x64@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-freebsd-x64@npm:2.5.0" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@parcel/watcher-linux-arm-glibc@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-linux-arm-glibc@npm:2.4.1" +"@parcel/watcher-linux-arm-glibc@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-linux-arm-glibc@npm:2.5.0" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@parcel/watcher-linux-arm64-glibc@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-linux-arm64-glibc@npm:2.4.1" +"@parcel/watcher-linux-arm-musl@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-linux-arm-musl@npm:2.5.0" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm64-glibc@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-linux-arm64-glibc@npm:2.5.0" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@parcel/watcher-linux-arm64-musl@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-linux-arm64-musl@npm:2.4.1" +"@parcel/watcher-linux-arm64-musl@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-linux-arm64-musl@npm:2.5.0" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@parcel/watcher-linux-x64-glibc@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-linux-x64-glibc@npm:2.4.1" +"@parcel/watcher-linux-x64-glibc@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-linux-x64-glibc@npm:2.5.0" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@parcel/watcher-linux-x64-musl@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-linux-x64-musl@npm:2.4.1" +"@parcel/watcher-linux-x64-musl@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-linux-x64-musl@npm:2.5.0" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@parcel/watcher-win32-arm64@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-win32-arm64@npm:2.4.1" +"@parcel/watcher-win32-arm64@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-win32-arm64@npm:2.5.0" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@parcel/watcher-win32-ia32@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-win32-ia32@npm:2.4.1" +"@parcel/watcher-win32-ia32@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-win32-ia32@npm:2.5.0" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@parcel/watcher-win32-x64@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-win32-x64@npm:2.4.1" +"@parcel/watcher-win32-x64@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-win32-x64@npm:2.5.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@parcel/watcher@npm:^2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher@npm:2.4.1" - dependencies: - "@parcel/watcher-android-arm64": "npm:2.4.1" - "@parcel/watcher-darwin-arm64": "npm:2.4.1" - "@parcel/watcher-darwin-x64": "npm:2.4.1" - "@parcel/watcher-freebsd-x64": "npm:2.4.1" - "@parcel/watcher-linux-arm-glibc": "npm:2.4.1" - "@parcel/watcher-linux-arm64-glibc": "npm:2.4.1" - "@parcel/watcher-linux-arm64-musl": "npm:2.4.1" - "@parcel/watcher-linux-x64-glibc": "npm:2.4.1" - "@parcel/watcher-linux-x64-musl": "npm:2.4.1" - "@parcel/watcher-win32-arm64": "npm:2.4.1" - "@parcel/watcher-win32-ia32": "npm:2.4.1" - "@parcel/watcher-win32-x64": "npm:2.4.1" + version: 2.5.0 + resolution: "@parcel/watcher@npm:2.5.0" + dependencies: + "@parcel/watcher-android-arm64": "npm:2.5.0" + "@parcel/watcher-darwin-arm64": "npm:2.5.0" + "@parcel/watcher-darwin-x64": "npm:2.5.0" + "@parcel/watcher-freebsd-x64": "npm:2.5.0" + "@parcel/watcher-linux-arm-glibc": "npm:2.5.0" + "@parcel/watcher-linux-arm-musl": "npm:2.5.0" + "@parcel/watcher-linux-arm64-glibc": "npm:2.5.0" + "@parcel/watcher-linux-arm64-musl": "npm:2.5.0" + "@parcel/watcher-linux-x64-glibc": "npm:2.5.0" + "@parcel/watcher-linux-x64-musl": "npm:2.5.0" + "@parcel/watcher-win32-arm64": "npm:2.5.0" + "@parcel/watcher-win32-ia32": "npm:2.5.0" + "@parcel/watcher-win32-x64": "npm:2.5.0" detect-libc: "npm:^1.0.3" is-glob: "npm:^4.0.3" micromatch: "npm:^4.0.5" @@ -1451,6 +1459,8 @@ __metadata: optional: true "@parcel/watcher-linux-arm-glibc": optional: true + "@parcel/watcher-linux-arm-musl": + optional: true "@parcel/watcher-linux-arm64-glibc": optional: true "@parcel/watcher-linux-arm64-musl": @@ -1465,7 +1475,7 @@ __metadata: optional: true "@parcel/watcher-win32-x64": optional: true - checksum: 10c0/33b7112094b9eb46c234d824953967435b628d3d93a0553255e9910829b84cab3da870153c3a870c31db186dc58f3b2db81382fcaee3451438aeec4d786a6211 + checksum: 10c0/9bad727d8b11e5d150ec47459254544c583adaa47d047b8ef65e1c74aede1a0767dc7fc6b8997649dae07318d6ef39caba6a1c405d306398d5bcd47074ec5d29 languageName: node linkType: hard @@ -1603,11 +1613,11 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 22.8.1 - resolution: "@types/node@npm:22.8.1" + version: 22.9.0 + resolution: "@types/node@npm:22.9.0" dependencies: undici-types: "npm:~6.19.8" - checksum: 10c0/83550fdf72a7db5b55eceac3f4fb038844eaee20202bdd2297a8248370cfa08317bda1605b781a8043eda4f173b75e73632e652fc85509eb14dfef78fa17337f + checksum: 10c0/3f46cbe0a49bab4ba30494025e4c8a6e699b98ac922857aa1f0209ce11a1313ee46e6808b8f13fe5b8b960a9d7796b77c8d542ad4e9810e85ef897d5593b5d51 languageName: node linkType: hard @@ -1795,6 +1805,22 @@ __metadata: languageName: node linkType: hard +"@xterm/addon-fit@npm:^0.10.0": + version: 0.10.0 + resolution: "@xterm/addon-fit@npm:0.10.0" + peerDependencies: + "@xterm/xterm": ^5.0.0 + checksum: 10c0/76926120fc940376afef2cb68b15aec2a99fc628b6e3cc84f2bcb1682ca9b87f982b3c10ff206faf4ebc5b410467b81a7b5e83be37b4ac386586f472e4fa1c61 + languageName: node + linkType: hard + +"@xterm/xterm@npm:^5.5.0": + version: 5.5.0 + resolution: "@xterm/xterm@npm:5.5.0" + checksum: 10c0/358801feece58617d777b2783bec68dac1f52f736da3b0317f71a34f4e25431fb0b1920244f678b8d673f797145b4858c2a5ccb463a4a6df7c10c9093f1c9267 + languageName: node + linkType: hard + "@xtuc/ieee754@npm:^1.2.0": version: 1.2.0 resolution: "@xtuc/ieee754@npm:1.2.0" @@ -2179,7 +2205,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.12.0, browserslist@npm:^4.14.5, browserslist@npm:^4.23.3, browserslist@npm:^4.24.0": +"browserslist@npm:^4.12.0, browserslist@npm:^4.14.5, browserslist@npm:^4.24.0, browserslist@npm:^4.24.2": version: 4.24.2 resolution: "browserslist@npm:4.24.2" dependencies: @@ -2204,6 +2230,8 @@ __metadata: "@melloware/coloris": "npm:^0.19.1" "@popperjs/core": "npm:^2.0.0" "@tabler/core": "npm:^1.0.0-beta20" + "@xterm/addon-fit": "npm:^0.10.0" + "@xterm/xterm": "npm:^5.5.0" apexcharts: "npm:^3.45.2" autoprefixer: "npm:^9.7.6" axios: "npm:^1.6.7" @@ -2243,6 +2271,7 @@ __metadata: webpack-cli: "npm:^4.0.0" webpack-livereload-plugin: "npm:^3.0.0" webpack-manifest-plugin: "npm:^4.0.0" + xterm-addon-fit: "npm:^0.8.0" yarn: "npm:^1.22.22" languageName: unknown linkType: soft @@ -2386,9 +2415,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001669": - version: 1.0.30001673 - resolution: "caniuse-lite@npm:1.0.30001673" - checksum: 10c0/0e73a2b0f06973052e563dec9990a6fd440d510fa2ff54fa50310e736abb86e96c96b43c10e609fc22f2109f98fe76428b70441baf6b1a49f69ccf50c1879f6b + version: 1.0.30001677 + resolution: "caniuse-lite@npm:1.0.30001677" + checksum: 10c0/22b4aa738b213b5d0bc820c26ba23fa265ca90a5c59776e1a686b9ab6fff9120d0825fd920c0a601a4b65056ef40d01548405feb95c8dd6083255f50c71a0864 languageName: node linkType: hard @@ -2576,11 +2605,11 @@ __metadata: linkType: hard "core-js-compat@npm:^3.38.0, core-js-compat@npm:^3.38.1": - version: 3.38.1 - resolution: "core-js-compat@npm:3.38.1" + version: 3.39.0 + resolution: "core-js-compat@npm:3.39.0" dependencies: - browserslist: "npm:^4.23.3" - checksum: 10c0/d8bc8a35591fc5fbf3e376d793f298ec41eb452619c7ef9de4ea59b74be06e9fda799e0dcbf9ba59880dae87e3b41fb191d744ffc988315642a1272bb9442b31 + browserslist: "npm:^4.24.2" + checksum: 10c0/880579a3dab235e3b6350f1e324269c600753b48e891ea859331618d5051e68b7a95db6a03ad2f3cc7df4397318c25a5bc7740562ad39e94f56568638d09d414 languageName: node linkType: hard @@ -2760,9 +2789,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.5.41": - version: 1.5.47 - resolution: "electron-to-chromium@npm:1.5.47" - checksum: 10c0/5f8c4a9f0698695960f7bef5242d52b1043020ce50b51fb534409a768847f9bdc9672cb4a6a560eeb8f8b47a04327ae9b31b2cee376cb637b3eb04a4daeaa3b8 + version: 1.5.52 + resolution: "electron-to-chromium@npm:1.5.52" + checksum: 10c0/1c85a5710ad21758780b8e067d5f63ed00416dbe93f64bd8937dbfb4ed98cf93d80c471a30daed439cb91a00ff4942ea2628e00a69d56639cc7070e9e8ab2694 languageName: node linkType: hard @@ -3979,14 +4008,14 @@ __metadata: linkType: hard "mini-css-extract-plugin@npm:^2.0.0": - version: 2.9.1 - resolution: "mini-css-extract-plugin@npm:2.9.1" + version: 2.9.2 + resolution: "mini-css-extract-plugin@npm:2.9.2" dependencies: schema-utils: "npm:^4.0.0" tapable: "npm:^2.2.1" peerDependencies: webpack: ^5.0.0 - checksum: 10c0/19361902ef028b9875aafa3931d99643c2d95824ba343a501c83ff61d069a430fcfc523ca796765798b564570da2199f5a28cd51b9528ddbcfdc9271c61400d0 + checksum: 10c0/5d3218dbd7db48b572925ddac05162a7415bf81b321f1a0c07016ec643cb5720c8a836ae68d45f5de826097a3013b601706c9c5aacb7f610dc2041b271de2ce0 languageName: node linkType: hard @@ -4909,16 +4938,19 @@ __metadata: linkType: hard "sass@npm:^1.0.0": - version: 1.80.4 - resolution: "sass@npm:1.80.4" + version: 1.80.6 + resolution: "sass@npm:1.80.6" dependencies: "@parcel/watcher": "npm:^2.4.1" chokidar: "npm:^4.0.0" immutable: "npm:^4.0.0" source-map-js: "npm:>=0.6.2 <2.0.0" + dependenciesMeta: + "@parcel/watcher": + optional: true bin: sass: sass.js - checksum: 10c0/58ca0f2d10720cde6621ee62f4bdbb537ea2ac572c565d5f02309f8271a5e1e880ad8c163b933e52b22b3dc0550973fb5a6033a500248e6a0d89dd050c1743cf + checksum: 10c0/04ce40d4dcf06cf2a94a66c1cc4fd4a9eb4033fd039291acd0be9d1d4123860da568c5cbef9de8493ffbedd8acae1cd0b8346f5da21c6f7cf0ffd3477730beca languageName: node linkType: hard @@ -5910,6 +5942,15 @@ __metadata: languageName: node linkType: hard +"xterm-addon-fit@npm:^0.8.0": + version: 0.8.0 + resolution: "xterm-addon-fit@npm:0.8.0" + peerDependencies: + xterm: ^5.0.0 + checksum: 10c0/39f77c9ec74bcc048ad74fbc4b9d610070c0a67971837f7edf92a8d21d65189c887986713d6ab22c04e2704253022488324d27fdb2425dc8aa95a9b679703101 + languageName: node + linkType: hard + "yallist@npm:^2.1.2": version: 2.1.2 resolution: "yallist@npm:2.1.2"