{ "meta": { "title": "ProxMenux Monitor — Painel: Hardware | Documentação ProxMenux", "description": "O separador Hardware inventaria a máquina física: CPU e placa-mãe, módulos de memória, sensores térmicos, GPU com monitorização por slot e instalador de controladores num clique, aceleradores Coral TPU, resumo do armazenamento com velocidades de ligação, listas PCI e USB, consumo, fontes de alimentação, ventoinhas e UPS." }, "header": { "title": "Painel: Página de hardware", "description": "A máquina física em uma tela – CPU e identidade da placa-mãe, todos os módulos de memória, sensores térmicos em todos os subsistemas, GPUs com uso ao vivo e um instalador de driver embutido, Coral TPUs, cada dispositivo PCI e USB com seu driver de kernel, o inventário de disco completo com velocidades de ligação negociadas, além de energia, refrigeração e UPS.", "section": "ProxMenux Monitor · Painel" }, "intro": { "title": "Construído a partir de ferramentas padrão", "body": "A maior parte desta página é analisada de lscpu, dmidecode, lspci, lsusb, lsblk, smartctl, nvme, sensors, nvidia-smi, intel_gpu_top, amdgpu_top, ipmitool e upsc. Seções só renderizam quando a ferramenta relevante retorna dados, então um host sem uma UPS não mostrará o cartão UPS e um host sem IPMI não mostrará figuras de energia fora de banda." }, "thresholds": { "title": "Cor do estado e limiares aplicados aqui", "intro": "Cada indicador e leitura de temperatura usa a mesma escala: verde abaixo de Aviso, âmbar entre Aviso e Crítico, vermelho a partir de Crítico. Valores recomendados incluídos no ProxMenux:", "items": [ "Temperatura CPU — aviso 80 °C, crítico 90 °C.", "Temperatura do disco — HDD 60/65 °C · SSD 70/75 °C · NVMe 80/85 °C · SAS 55/65 °C (alertar / crítico)." ], "outro": "Os valores são configuráveis por host. Definições → Limiares do monitor de saúde centraliza os ajustes e explica como os adaptar." }, "sections": { "heading": "Seções", "intro": "As secções aparecem nesta ordem de cima para baixo. Algumas exigem o hardware ou ferramenta correspondente e estão marcadas como (condicional).", "systemInfoTitle": "Informações do sistema", "systemInfoIntro": "Dois blocos lado a lado, sempre presentes:", "systemInfoItems": [ "CPU — modelo, microarquitetura, sockets/núcleos/threads, frequências base e boost, capacidades de virtualização (VT-x / AMD-V) e topologia da cache.", "Placa-mãe — fabricante, modelo, versão e data BIOS, UUID SMBIOS. Ajuda a localizar a página correta do fabricante para atualizar o firmware." ], "memoryTitle": "Módulos de memória", "memoryBody": "Uma linha por slot ocupado de dmidecode: etiqueta, capacidade do módulo, tipo (DDR4 / DDR5 / variantes ECC), velocidade configurada e nominal, fabricante, referência e número de série. Os slots vazios aparecem atenuados para mostrar a margem de expansão.", "thermalTitle": "Monitoramento Térmico", "thermalIntro": "Sete blocos com dados de lm-sensors, sysfs e coletores específicos de cada ferramenta. Os sensores hwmon de armazenamento são associados ao dispositivo de blocos físico, com modelo e caminho /dev/.... Cada bloco fica oculto se não houver sensores na categoria.", "thermalItems": [ "CPU — temperatura do encapsulamento e de cada núcleo.", "GPU — sensores de GPU dedicada via nvidia-smi / amdgpu_top e iGPU Intel. Inclui ponto quente e temperatura de junção da memória quando o controlador os fornece.", "NVME — temperatura composta do controlador associada ao namespace NVMe exato.", "HDD — leituras drivetemp para dispositivos de blocos rotativos.", "SSD — leituras drivetemp para dispositivos de bloco SATA/SAS não rotacionais.", "PCI — sensores em dispositivos ligados a PCI, como HBA e placas de rede com sensores internos.", "OTHER — chipset, VRM, sensores ambientais que não se encaixam em outro lugar." ] }, "graphics": { "heading": "Placas Gráficas", "intro": "Cada controlador de vídeo aparece num cartão com fabricante, modelo, tipo (Integrado / PCI / BMC), endereço PCI (BDF), controlador do kernel e módulos. Mudar modo alterna entre partilha LXC com controlador nativo e passthrough VM (vfio-pci). Mudar modo GPU (VM ↔ LXC) explica os efeitos no host.", "vfioImageAlt": "Seção de placas gráficas mostrando um GPU integrado de Matrox G200EH ligado a mgag200 (pronto para LXC) e um NVIDIA Quadro P400 ligado a vfio-pci (pronto para passagem de VM)", "vfioImageCaption": "Duas GPUs detectadas: o chip Matrox BMC está no driver nativo e pronto para LXC; o NVIDIA Quadro P400 está ligado ao vfio-pci, pronto para passagem VM.", "lxcImageAlt": "Placas gráficas: iGPU Intel UHD Graphics com i915 e NVIDIA Quadro P1000 com nvidia, ambas prontas para contentores LXC", "lxcImageCaption": "O mesmo nó após devolver a placa NVIDIA ao controlador nativo: ambas as GPU prontas para contentores LXC.", "realtimeTitle": "Janela de monitorização em tempo real", "realtimeBody": "Clicar numa GPU abre a monitorização por slot, que consulta a ferramenta do fabricante a cada três segundos. Mostra fabricante, tipo, slot PCI, controlador, módulos do kernel, utilização dos motores (Render/3D, Video, Blitter, VideoEnhance), frequências gráfica e de memória, temperatura, consumo se disponível, VRAM e processos ativos com carga por processo. Dados de /api/gpu/<slot>/realtime.", "toolsIntro": "A ferramenta do fornecedor usada por GPU:", "headerVendor": "Fornecedor", "headerTool": "Ferramenta", "headerProject": "Projeto", "tools": [ { "vendor": "NVIDIA", "tool": "nvidia-smi", "projectLabel": "developer.nvidia.com", "projectHref": "https://developer.nvidia.com/nvidia-system-management-interface" }, { "vendor": "Intel iGPU", "tool": "intel_gpu_top (igt-gpu-tools)", "projectLabel": "gitlab.freedesktop.org", "projectHref": "https://gitlab.freedesktop.org/drm/igt-gpu-tools" }, { "vendor": "AMD", "tool": "amdgpu_top", "projectLabel": "github.com/Umio-Yasuno/amdgpu_top", "projectHref": "https://github.com/Umio-Yasuno/amdgpu_top" }, { "vendor": "Matrox / ASPEED (BMC)", "tool": "— (apenas visualização)", "projectLabel": "Detetado e identificado como BMC; sem monitorização em tempo real." } ], "nvidiaImageAlt": "Monitorização NVIDIA Quadro P1000: fabricante NVIDIA, controlador nvidia carregado, frequência gráfica 1.26 GHz, memória 2.50 GHz, temperatura 50 °C, motores a 0 %, sem processos ativos, memória total 4096 MiB", "nvidiaImageCaption": "NVIDIA Quadro P1000 com controlador proprietário: frequências, temperatura, barras de utilização dos motores e processos ativos.", "intelImageAlt": "Monitorização de iGPU Intel UHD Graphics com i915: consumo 11.31 W, carga de vídeo 1 % e processo ffmpeg com 8 MB", "intelImageCaption": "Intel iGPU com i915 ativo. A tabela Processos Ativos pega um trabalho ffmpeg usando o motor de vídeo.", "amdImageAlt": "Monitorização de GPU integrada AMD Lucienne com amdgpu: motores a 0 % e amdgpu_top como processo ativo", "amdImageCaption": "iGPU AMD monitorizada com amdgpu_top. A ferramenta surge como processo ativo porque recolhe os dados em direto.", "installTitle": "Instalar o controlador NVIDIA a partir da janela", "installBody": "Com nouveau/nvidiafb sem controlador proprietário NVIDIA, não se podem ler frequências, consumo e carga por processo. A janela oferece Instalar controladores NVIDIA, que executa o script de Instalar controladores NVIDIA (host).", "noDriverAlt": "Monitorização NVIDIA Quadro P620 com nvidiafb e nouveau carregados, aviso Monitorização alargada indisponível e botão azul Instalar controladores NVIDIA", "noDriverCaption": "Controlador proprietário ainda não instalado: a janela oferece instalação num clique.", "promptAlt": "Diálogo de confirmação de instalação do driver NVIDIA GPU listando GPUs detectadas, containers LXC com passagem NVIDIA e um par Sim/Cancelar", "promptCaption": "Resumo pré-instalação: GPUs detectadas, containers LXC que já têm passagem NVIDIA, e o que o script fará. Nada é tocado até confirmares.", "successAlt": "Saída terminal mostrando o driver NVIDIA 580.105.08 instalado com sucesso e nvidia-smi relatando um Quadro P620", "successCaption": "Instalação bem-sucedida — o NVIDIA .run construído via DKMS, o serviço de persistência está em vigor, e o nvidia-smi relata o GPU.", "warningTitle": "Escolha uma versão do driver que o seu GPU realmente suporta", "warningBody": "Os ramos NVIDIA mais recentes deixam de suportar famílias antigas, como Maxwell ou Kepler. Se nvidia-smi mostrar \"No devices were found\" após instalar ou o DKMS falhar, o ramo pode ser incompatível. Repita com um ramo anterior, como legacy 470.x para Kepler. Consulte a compatibilidade na página oficial de pesquisa de controladores.", "whereGoIntro": "Para onde ir a partir daqui:", "whereGoItems": [ "Instalar controladores NVIDIA (host) — guia completo, matriz de compatibilidade do kernel, patch NVENC opcional e propagação aos LXC.", "Mudar modo GPU (VM ↔ LXC) — efeitos do controlo Mudar modo do cartão.", "Adicionar GPU a VM (passthrough) e Adicionar GPU a LXC — primeira atribuição de uma GPU não associada." ] }, "coral": { "heading": "Aceleradores Coral TPU / AI", "subHeading": "(condicional)", "intro": "Aparece com dispositivos Google Coral ou outros aceleradores IA ligados. Cada janela mostra ligação (M.2 / mini-PCIe / USB), largura PCIe, ID fabricante/produto, suporte de software (apex no kernel para PCIe, libedgetpu em espaço de utilizador para USB), módulos (gasket + apex), nós (/dev/apex_*), estado do runtime Edge TPU, temperatura em direto e limiares de aviso do firmware.", "imageAlt": "Detalhes Coral Edge TPU: ligação PCIe/M.2, 5.0 GT/s x1, ID 1ac1:089a, controlador apex, módulos gasket e apex carregados, /dev/apex_0 presente, Edge TPU Runtime não instalado, 53.5 °C e limiares de aviso de hardware", "imageCaption": "Coral M.2 com módulos do kernel carregados, nó de dispositivo presente e avisos de temperatura do firmware disponíveis. O indicador do runtime fica verde após instalar o Edge TPU Runtime correspondente.", "pathsIntro": "Existem dois caminhos de instalação dependendo do fator de forma:", "pathsItems": [ "M.2 / Mini-PCIe — o host precisa dos módulos do kernel gasket + apex construídos via DKMS para que o nó do dispositivo /dev/apex_0 apareça no arranque.", "USB Accelerator — o host só precisa do tempo de execução do espaço de usuário Edge TPU (libedgetpu1-std) do repositório APT do Google." ], "outro": "Instalar Coral TPU no host deteta e gere as duas variantes. Informações e runtime oficial em coral.ai/docs. Depois, atribua o dispositivo a um contentor com Adicionar Coral TPU a LXC." }, "storage": { "heading": "Resumo de armazenamento", "intro": "Todos os dispositivos de blocos conhecidos pelo kernel, agrupados por tipo. Cada disco mostra nome (sda, nvme0n1, zram0…), tipo (SSD, HDD, NVMe SSD), modelo e ligação negociada. Clique para abrir modelo, número de série, capacidade, interface e velocidade atual e máxima.", "imageAlt": "Resumo do armazenamento com onze dispositivos de blocos (SSD SATA, HDD SATA, SSD NVMe e zram), modelos e velocidades negociadas; os dois NVMe mostram 3.0 x4 com velocidade atual destacada", "imageCaption": "Onze dispositivos neste nó. As ligações SATA aparecem como SATA <version>, <Gb/s> (current: ...); os NVMe como <PCIe gen> x<width>.", "nvmeBody": "A linha de cada NVMe compara a ligação negociada com o máximo suportado. Se diferirem, como um SSD Gen3 x4 a 3.0 x1 num slot com uma só via, o valor atual aparece em âmbar. Ajuda a diagnosticar discos lentos ou alterações nas vias após atualizar o BIOS.", "nvmeModalAlt": "Detalhes NVMe de nvme0n1: NVMe SSD, 953.9 GB, ligação atual 3.0 x1 em âmbar, máximo 3.0 x4, WDC CL SN720, número de série e interface PCIe/NVMe", "nvmeModalCaption": "Detalhes NVMe com ligação reduzida: o disco suporta x4, mas o slot está ligado a x1.", "outro": "Dados SMART, autotestes, histórico e relatório PDF estão em Painel: Armazenamento. Os mesmos dados alimentam Estado e testes SMART dos discos. Um teste longo pelo script escreve o JSON mostrado pelo Monitor em Armazenamento → Histórico." }, "pci": { "heading": "Dispositivos PCI", "intro": "Dispositivos PCI identificados por BDF PCI (Bus:Device.Function, por exemplo 03:00.0) e classe (Controlador de armazenamento, Controlador USB, Placa gráfica, Controlador de rede, Controlador de áudio…). Cada cartão mostra fabricante, nome e controlador do kernel associado, úteis para diagnosticar passthrough, grupos IOMMU ou controladores incorretos.", "imageAlt": "Quinze dispositivos PCI por classe: controladores de armazenamento ahci/nvme, USB, placas gráficas (uma com vfio-pci, outra com controlador nativo), rede igb/tg3 e áudio associado a uma GPU em passthrough", "imageCaption": "Quinze dispositivos neste nó. Note que o GPU e sua função de áudio acompanhante estão ligados ao vfio-pci — é um cartão preparado para a passagem do VM.", "bdfTitle": "Lendo o BDF", "bdfBody": "03:00.0 indica barramento PCI 03, dispositivo 00, função 0. As GPU dedicadas usam geralmente .0 para gráficos e .1 para áudio HDMI. Ambas as funções passam juntas para a VM; por isso Mudar modo GPU limpa as associações de áudio órfãs ao sair do modo VM." }, "usb": { "heading": "Dispositivos USB", "intro": "Dispositivos USB com fabricante e produto, versão USB, endereço bus:device, ID vendor:product e controlador do kernel. Classificam-se por função: Comunicações (adaptadores Z-Wave / Zigbee), UPS, armazenamento ou HID. Assim identificam-se sem comparar os ID.", "imageAlt": "Dispositivos USB: Aeotec Z-Wave Z-Stick, coordenador Zigbee ConBee II e UPS Ellipse ECO, com versão USB, endereço, ID vendor:product e controlador associado", "imageCaption": "Três dispositivos USB – dois rádios de automação doméstica em usbfs e um UPS em usbfs (NUT fala com ele através da libusb)." }, "power": { "heading": "Consumo de energia", "subHeading": "(condicional)", "intro": "Aparece se o host fornecer telemetria de potência. Mostra duas origens independentes quando disponíveis:", "items": [ "Consumo total ACPI / IPMI — potência de todo o sistema medida por um sensor da placa-mãe ou pelo BMC. Habitual em placas de servidor.", "Consumo do encapsulamento CPU — contadores Intel RAPL ou equivalente AMD. Distingue o consumo CPU do restante sistema em placas de consumo sem sensor total." ], "supplyImageAlt": "Consumo: 198 W totais via ACPI e duas fontes de alimentação com estado OK e saída de 185 W e 5 W", "supplyImageCaption": "Placa de servidor com um único sensor de potência ACPI e PSUs duplos reportados através do IPMI — o segundo PSU é o redundante, inativo em 5 W.", "cpuImageAlt": "Consumo numa placa de uso doméstico: apenas 8.7 W de CPU via Intel RAPL", "cpuImageCaption": "Placa de uso doméstico sem sensor total: mostra apenas o consumo CPU via RAPL." }, "psu": { "heading": "Fontes de alimentação", "subHeading": "(condicional)", "body": "Em máquinas de servidor com fontes duplas, IPMI mostra presença (PSU 1 / PSU 2 / …), tensão de entrada, potência de saída e estado OK/falha. Verifique após uma interrupção elétrica em nós com fontes redundantes." }, "fans": { "heading": "Ventiladores do sistema", "subHeading": "(condicional)", "body": "RPM de cada ventoinha com minigráfico, se suportado. Sem dados individuais apresenta uma única leitura da ventoinha do chassis." }, "ups": { "heading": "Status do no-break", "subHeading": "(condicional)", "body": "Aparece com um servidor NUT (Network UPS Tools) configurado e acessível. Mostra estado (rede / bateria / carregamento / bateria fraca), carga da bateria, autonomia estimada, percentagem de carga suportada, tensão de entrada, modelo e firmware. Alimenta também Segurança e certificados do monitor de saúde: a passagem a bateria é assinalada imediatamente." }, "dataCollected": { "heading": "Como os dados são coletados", "headerSection": "Secção da página", "headerEndpoint": "Endpoint", "headerSource": "Origem", "rows": [ { "section": "Inventário estático (PCI, CPU, BIOS)", "endpoint": "/api/hardware", "source": "lspci -vmm, /proc/cpuinfo, dmidecode; em cache para a vida útil do processo." }, { "section": "Valores dos sensores em direto", "endpoint": "/api/hardware/live", "source": "sensors (lm-sensors), /sys/class/hwmon e /sys/block identificam os dispositivos de armazenamento. As temperaturas permanecem em direto; só o mapeamento hwmon-dispositivo fica em cache por 60 segundos." }, { "section": "CPU histórico de temperatura", "endpoint": "/api/temperature/history", "source": "Série temporal registada a cada 60 segundos pelo coletor de temperatura e guardada em SQLite." }, { "section": "Métricas GPU em direto", "endpoint": "/api/gpu//realtime", "source": "NVIDIA: nvidia-smi --query-gpu=.... Intel: intel_gpu_top. AMD: sysfs /sys/class/drm/cardN." } ], "codeComment1": "# Comparar o inventário com a vista do sistema operativo", "codeComment2": "# Confirme o cartão GPU que o painel vê" }, "whereNext": { "heading": "Para onde seguir", "items": [ { "label": "Instalar Drivers NVIDIA (Host)", "href": "/docs/hardware/nvidia-host", "tail": " — o que executa o botão de instalação do GPU." }, { "label": "Mudar modo GPU (VM ↔ LXC)", "href": "/docs/hardware/switch-gpu-mode", "tail": " — efeitos no host da mudança de modo em cada cartão GPU." }, { "label": "Instale Coral TPU no Host", "href": "/docs/hardware/install-coral-tpu-host", "tail": " — instalação do módulo do kernel e do runtime Coral." }, { "label": "Integridade e teste do disco SMART", "href": "/docs/disk-manager/smart-disk-test", "tail": " — script que produz os dados SMART nos detalhes do disco em Armazenamento." }, { "label": "Painel: Página de armazenamento", "href": "/docs/monitor/dashboard/storage", "tail": " — tabela completa de atributos SMART, historial de auto-teste e relatório PDF." }, { "label": "Monitor de Saúde", "href": "/docs/monitor/health-monitor", "tail": " — categoria CPU e Temperatura, que utiliza os mesmos sensores." }, { "label": "Referência da API", "href": "/docs/monitor/api", "tail": " — endpoints de hardware e GPU." }, { "label": "Índice do painel", "href": "/docs/monitor/dashboard", "tail": " — os outros separadores." } ] } }