Proxmox Monitor Agent - Quando o Host Esquenta e o Home Assistant Nao Ve
Proxmox Monitor Agent - Quando o Host Esquenta e o Home Assistant Nao Ve
Este post e o primeiro de uma serie de quatro partes sobre o Proxmox Monitor Agent e a integracao com o Home Assistant.
- Parte 1 - Quando o Host Esquenta e o Home Assistant Nao Ve (voce esta aqui)
- Parte 2 - Coletando Metricas do Host com Bash
- Parte 3 - Integrando com o Home Assistant
- Parte 4 - Alertas no Home Assistant e Proximos Passos
O incidente
Meu homelab tem um servidor Proxmox que concentra bastante coisa importante. Dentro dele rodam o Home Assistant, o pfSense e outras VMs e servicos que fazem parte da infraestrutura da casa. E aquele tipo de maquina que, quando esta tudo funcionando, voce quase esquece que existe. Ela fica la no rack, quieta, segurando a rede, automacoes, dashboards e alguns servicos internos.
O problema e que o meu rack nao fica em um lugar exatamente confortavel. Ele esta alto, preso na parede, em um ponto que nao da vontade de acessar sem motivo. Isso e bom para deixar tudo organizado e fora do caminho, mas e ruim quando voce precisa mexer fisicamente no servidor. Na pratica, se algo acontece ali, eu quero saber antes de precisar subir para descobrir.
Um dia o servidor desligou. Ate ai, sem contexto, parecia um problema comum: queda rapida, travamento, alguma coisa no Proxmox, talvez fonte, talvez energia. Eu religuei. Ele subiu, as VMs voltaram, o Home Assistant voltou, a rede voltou. Parecia resolvido.
Pouco tempo depois, ele parou de novo.
Foi ai que o alerta mental acendeu. Quando um host reinicia e cai de novo em seguida, normalmente nao e coincidencia. Pode ser disco, memoria, fonte, kernel panic, mas tambem pode ser uma coisa muito mais simples: temperatura. So que naquele momento eu ainda nao sabia disso. Eu nao tinha um painel olhando para os sensores fisicos do host, nao tinha alerta de temperatura, nao tinha historico dentro do Home Assistant dizendo “isso aqui esta subindo rapido”.
Quando fui ate o rack e consegui acessar o servidor, a causa ficou bem mais obvia: ele estava muito quente. A ventoinha tinha queimado. O host estava se protegendo, desligando antes de cozinhar de vez.

Esse e o tipo de falha pequena que vira incidente grande porque voce descobre tarde. Uma ventoinha e uma peca barata. Um alerta de temperatura teria me avisado antes. Mas eu so descobri quando o servidor ja tinha desligado e eu precisei acessar fisicamente um rack que nao e pratico de acessar.
O ponto cego
A parte ironica e que eu ja uso Home Assistant justamente para monitorar e automatizar coisas. Ele sabe estado de sensores, dispositivos, energia, alguns servicos e varios pontos da casa. Mas ele roda dentro de uma VM no proprio Proxmox.
Isso cria uma fronteira importante: de dentro da VM, o Home Assistant enxerga o que a VM consegue enxergar. Ele nao tem acesso direto aos sensores fisicos do host. Ele nao sabe, por padrao, se o processador do Proxmox esta quente, se uma ventoinha parou, se um disco apareceu com problema, se o storage esta apertando, ou se uma VM ou LXC critico ficou em um estado estranho no host.
No meu caso, o Home Assistant monitorava a casa, mas nao monitorava a maquina que sustentava o proprio Home Assistant.
Esse era o ponto cego.
E aqui vale separar duas coisas. O problema inicial nao era falta de automacao. Eu ainda nao precisava, naquele momento, de uma tomada ligando exaustor, nem de uma regra sofisticada desligando cargas nao criticas. Antes de automatizar qualquer acao fisica, eu precisava de visibilidade. Eu precisava saber que o host estava esquentando antes dele desligar.
Sem visibilidade, automacao vira chute. Com visibilidade, voce consegue criar alerta, entender historico, ajustar limites e so depois automatizar alguma acao com mais seguranca.

O que eu precisava enxergar
Depois desse incidente, a lista de coisas que eu queria trazer para dentro do Home Assistant ficou bem clara.
Primeiro, temperatura. Esse era o ponto principal. Se o host tem sensores expostos pelo Linux via lm-sensors, eu queria ver esses valores no HA e criar alertas quando passassem de um limite.
Segundo, fans, quando disponiveis. Nem todo hardware expoe RPM de ventoinha de forma limpa, mas quando expoe, esse dado e valioso. Uma ventoinha que cai para zero e um sinal muito mais direto do que esperar a temperatura subir.
Terceiro, saude basica do host: CPU, load average, memoria, swap, uptime e status da coleta. Nao precisa ser um Grafana completo para resolver o problema inicial. Precisa ser suficiente para olhar e saber se o host esta saudavel.
Quarto, storage e discos. Em homelab, disco cheio e storage degradado tambem derrubam servicos de formas bem desagradaveis. Mesmo que nao fosse o problema desse incidente, faria sentido aproveitar o agent para expor esse tipo de informacao.
Quinto, VMs e LXCs. Se o Proxmox esta rodando Home Assistant, pfSense, um LXC Docker e outros servicos importantes, eu quero pelo menos saber se essas cargas estao running, quanto estao consumindo e ha quanto tempo estao de pe.
Por fim, eu precisava saber se a propria coleta estava funcionando. Monitoramento que falha silenciosamente e quase tao ruim quanto nao ter monitoramento. Se o Home Assistant parar de conseguir ler o host, isso tambem precisa virar alerta.
A solucao em duas partes
A solucao que eu acabei criando ficou dividida em dois projetos publicos no GitHub.
O primeiro e o proxmox-monitor-agent. Ele roda no host Proxmox, em Bash, usando ferramentas locais do Linux e do Proxmox para coletar um snapshot JSON. A ideia nao e instalar uma plataforma pesada no host, nem criar um sistema de historico ali dentro. O agent so coleta e expoe um contrato simples.
O segundo e o proxmox-monitor-agent-home-assistant. Ele e uma custom integration do Home Assistant. A integracao consulta o endpoint HTTP do agent, valida o schema e cria devices e entidades dentro do HA. A partir dai, o Home Assistant faz o que ele ja faz bem: historico, dashboard, notificacao e automacao.
O fluxo fica assim:
Proxmox Host
pma-metrics / systemd timer
/run/pma/metrics.json
HTTP /metrics.json
|
v
Home Assistant custom integration
devices + entities + history + alerts
Essa separacao e importante. O host Proxmox nao precisa saber nada sobre Home Assistant. Ele so publica um snapshot. O Home Assistant nao precisa fazer SSH no host, nem parsear comando remoto, nem depender de templates REST espalhados. Ele consome um contrato e cria entidades estaveis.
Tambem deixa a solucao aberta para outros consumidores. O mesmo JSON pode alimentar Grafana, Prometheus bridge, MQTT, Node-RED ou um script proprio. No meu caso, o consumidor principal e o Home Assistant porque e ali que eu quero receber alerta e, no futuro, acionar exaustores do rack.
Mas esse acionamento fisico ainda e proximo passo. O primeiro objetivo e mais simples e mais importante: saber antes de desligar.
O que vem a seguir
Neste post eu foquei no problema, porque e ele que define a solucao. Um agent desses nao nasceu por vontade de criar mais um dashboard. Nasceu porque eu tinha um host critico, sem visibilidade suficiente, em um rack ruim de acessar, e uma falha simples quase virou um problema maior.
No proximo post eu entro no proxmox-monitor-agent: como ele roda no host, como gera o snapshot JSON, como funciona o timer via systemd e como expor os endpoints HTTP para o Home Assistant consumir depois.