MonitoramentoIniciar(); function MonitoramentoIniciar() { const interval_Moni = 500; // Tempo em milissegundos (1 segundo) try { const checkElements_Moni = setInterval(() => { try { const moniConstruida = document.getElementById('Monitoramento'); if (moniConstruida) { let Preinfo = "

Carregando ...

"; const HostsPainel = document.getElementById('ItensHosts'); HostsPainel.innerHTML = Preinfo; monitoramentoIniciar(); async function monitoramentoIniciar() { const { Zabix, ResutadosZabix } = await IntegracaoZabix(); RespostasZabixMonitoramento(ResutadosZabix, HostsPainel); const dataZabix = await Zabix.json(); const ElementosZabix = dataZabix.data[0].hosts; ApresentarHosts(ElementosZabix); console.log(ElementosZabix) } function RespostasZabixMonitoramento(ResutadosZabix, Elementohost) { if (ResutadosZabix === 500) { Elementohost.innerHTML = `

Status 404

Estamos sem serivço temporariamente

`; throw new Error(`Erro na API dos Chamados: ${ResutadosZabix}`); } if (ResutadosZabix === 404) { Elementohost.innerHTML = `

Status 404

Nenhum serviço encontrado

`; throw new Error(`Erro na API dos Chamados: ${ResutadosZabix}`); } if (ResutadosZabix === 401) { Elementohost.innerHTML = `

Status 404

Usuário não autenticado!

`; location.reload(true); throw new Error(`Erro na API dos Chamados: ${ResutadosZabix}`); } if (ResutadosZabix === 502) { Elementohost.innerHTML = `

Status 404

Estamos realizando manutenções, volte mais tarde

`; throw new Error(`Erro na API dos Chamados: ${ResutadosZabix} `); } if (ResutadosZabix === 504) { Elementohost.innerHTML = `

Status 404

Este Serviço, demorou muito para responder, por favor contate o suporte

`; throw new Error(`Erro na API dos Chamados: ${ResutadosZabix} `); } } function ApresentarHosts(hosts) { const filteredHosts = hosts.filter(host => host.metrics.some(metric => metric.key === "system.hostname") ); const seletorEnseg = document.getElementById('Hostes'); const hostsPainel = document.getElementById('ItensHosts'); if (!seletorEnseg) return; // Evita múltiplos eventos sendo adicionados ao select seletorEnseg.innerHTML = ``; filteredHosts.forEach(host => { let hostName = host.metrics.find(metric => metric.key === "system.hostname")?.value || "Desativado"; let hostConsult = host.host_name; seletorEnseg.innerHTML += ``; }); Preinfo = "

Selecione um Host

"; HostsPainel.innerHTML = Preinfo; // Removendo eventos anteriores antes de adicionar um novo seletorEnseg.replaceWith(seletorEnseg.cloneNode(true)); document.getElementById('Hostes').addEventListener('change', function () { const selectedHostName = this.value; hostsPainel.innerHTML = ""; // Limpa o painel // Busca o host correspondente pelo host_name const selectedHost = filteredHosts.find(host => host.host_name === selectedHostName); if (!selectedHost) return; let hostAtivos = `

Status do Host - Sem Resposta

`; let hostMemoriaTotalRam = `

Total de Ram - Sem Resposta

`; let discos = {}; let hostMemoriaUsoRam = `

Ram: ...

`; let hostCPU = `

CPU: ....

`; selectedHost.metrics.forEach(metric => { if (metric.key === "icmpping") { const valor = metric.value; if (valor == 0) { hostAtivos = `
Host Offline
`; // Aplicação do Desativado dentro do item host } // Reação de aplicação de inserção para o caso do ping for 1 if (valor == 1) { hostAtivos = `
Host Online
`; // Aplicação do ativo dentro do item host } } if (metric.key === "vm.memory.size[total]") { const valorMemoria = metric.value; const totalGB = (valorMemoria / Math.pow(1024, 3)).toFixed(2); hostMemoriaTotalRam = `
Total de Ram ${totalGB} GB
` } // Suponha que metric.key pode ter diferentes letras de unidade if (metric.key.startsWith("vfs.fs.dependent.size[")) { // Expressão regular para capturar a letra da unidade const match = metric.key.match(/vfs\.fs\.dependent\.size\[([A-Z]):,total\]/); if (match) { let driveLetter = match[1]; // Captura a letra do drive let totalGB = formatarTamanhoTotal(metric.value); // Converte para GB function formatarTamanhoTotal(valorEmBytes) { let valorEmGB = valorEmBytes / Math.pow(1024, 3); // Converte para GB if (valorEmGB >= 1000) { let valorEmTB = valorEmGB / 1024; // Converte para TB return `${valorEmTB.toFixed(2)} TB`; } return `${valorEmGB.toFixed(2)} GB`; } if (!discos[driveLetter]) { discos[driveLetter] = { total: 0, used: 0 }; } discos[driveLetter].total = totalGB; } } // Suponha que metric.key pode ter diferentes letras de unidade if (metric.key.startsWith("vfs.fs.dependent.size[")) { // Expressão regular para capturar a letra da unidade const match = metric.key.match(/vfs\.fs\.dependent\.size\[([A-Z]):,used\]/); if (match) { let driveLetter = match[1]; // Captura a letra do drive let usedGB = formatarTamanhoUsed(metric.value) // Converte para GB // Função para formatar o tamanho em GB ou TB function formatarTamanhoUsed(valorEmBytes) { let valorEmGB = valorEmBytes / Math.pow(1024, 3); // Converte para GB if (valorEmGB >= 1000) { let valorEmTB = valorEmGB / 1024; // Converte para TB return `${valorEmTB.toFixed(2)} TB`; } return `${valorEmGB.toFixed(2)} GB`; } if (!discos[driveLetter]) { discos[driveLetter] = { total: 0, used: 0 }; } discos[driveLetter].used = usedGB; } } if (metric.key === "system.cpu.util") { let Alinhadocpu = Math.floor(metric.value); hostCPU = `

CPU: ${Alinhadocpu}%

`; setTimeout(() => { const Elementoshost_CPU = document.getElementById(`ElementosUtili_CPU_${Alinhadocpu}`); if (Alinhadocpu == 100) { Elementoshost_CPU.classList.add('Consumo_Limite'); } //Maior ou igual á 75 ou Menor ou igual á 99 if (Alinhadocpu >= 75 && Alinhadocpu <= 99) { Elementoshost_CPU.classList.add('Consumo_Alto'); } //Maior ou igual á 30 ou Menor ou igual á 74 if (Alinhadocpu >= 30 && Alinhadocpu <= 74) { Elementoshost_CPU.classList.add('Consumo_Medio'); } if (Alinhadocpu >= 0 && Alinhadocpu <= 29) { Elementoshost_CPU.classList.add('Consumo_Baixo'); } }, 1); } if (metric.key === "vm.memory.util") { let AlinhadoMemory = Math.floor(metric.value); hostMemoriaUsoRam = `

Ram: ${AlinhadoMemory}%

`; setTimeout(() => { const Elementoshost_Memory = document.getElementById(`ElementosUtili_Memory_${AlinhadoMemory}`); if (AlinhadoMemory == 100) { Elementoshost_Memory.classList.add('Consumo_Limite'); } //Maior ou igual á 75 ou Menor ou igual á 99 if (AlinhadoMemory >= 75 && AlinhadoMemory <= 99) { Elementoshost_Memory.classList.add('Consumo_Alto'); } //Maior ou igual á 30 ou Menor ou igual á 74 if (AlinhadoMemory >= 30 && AlinhadoMemory <= 74) { Elementoshost_Memory.classList.add('Consumo_Medio'); } if (AlinhadoMemory >= 0 && AlinhadoMemory <= 29) { Elementoshost_Memory.classList.add('Consumo_Baixo'); } }, 1); } }); let alinhamentoDeDiscos = ""; for (let drive in discos) { alinhamentoDeDiscos += `

Unidade ${drive}: ${discos[drive].used} de ${discos[drive].total}

`; } // Se nenhum disco foi encontrado, exibir mensagem padrão let alidanhamento_de_disco = Object.keys(discos).length > 0 ? alinhamentoDeDiscos : "

Sem informações de disco disponíveis

"; hostsPainel.innerHTML = `
${hostCPU} ${hostMemoriaUsoRam}
${hostAtivos}
${alidanhamento_de_disco}
${hostMemoriaTotalRam}
`; }); } localStorage.setItem('Carregou_tela_Moni', 'true'); clearInterval(checkElements_Moni); } } catch (error) { console.error('Erro dentro da tela home:', error); clearInterval(checkElements_Moni); } }, interval_Moni); } catch (error) { console.error('Erro fora da tela home:', error); } }