Proxmox Monitor Agent - Integrando com o Home Assistant
Proxmox Monitor Agent - Integrando com o Home Assistant
Este post e o terceiro 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
- Parte 2 - Coletando Metricas do Host com Bash
- Parte 3 - Integrando com o Home Assistant (voce esta aqui)
- Parte 4 - Alertas no Home Assistant e Proximos Passos
Por que uma custom integration
Depois que o Proxmox Monitor Agent comecou a expor o snapshot JSON, eu poderia ter parado ali e criado alguns sensores REST manualmente no Home Assistant. Para um ou dois valores, isso ate resolveria. Um sensor para temperatura, outro para CPU, talvez um terceiro para status da coleta.
O problema e que esse tipo de solucao degrada rapido.
O snapshot nao tem apenas uma temperatura. Ele pode ter varias temperaturas, dependendo do hardware. Pode ter uma ou mais interfaces fisicas de rede. Pode ter filesystems, storages, VMs, LXCs e discos. Alguns itens aparecem e desaparecem conforme o host muda. Uma VM nova entra no Proxmox, um container e removido, uma interface muda, um sensor deixa de responder.
Fazer tudo isso com sensores REST e templates manuais significa espalhar logica pelo Home Assistant. Voce comeca copiando um value_template, depois ajusta outro, depois cria entidades com nomes diferentes, depois precisa lembrar qual sensor representa qual VM. Em pouco tempo, o monitoramento vira mais um pedaco de configuracao fragil.
Uma custom integration resolve esse problema de forma mais limpa. Ela conhece o contrato do PMA, valida o schema, cria unique IDs estaveis e organiza tudo como devices e entidades dentro do modelo nativo do Home Assistant.
Em vez de o usuario montar tudo na mao, ele adiciona a integracao, aponta para o endpoint do Proxmox e deixa o Home Assistant descobrir o resto.
Instalacao
A integracao pode ser instalada de duas formas.
O repositorio esta publico em:
https://github.com/mauricioj/proxmox-monitor-agent-home-assistant
A primeira forma, e a mais pratica para uso normal, e via HACS como custom repository.
No Home Assistant:
- Abra o HACS.
- Va em Integrations.
- Abra o menu de tres pontos.
- Clique em Custom repositories.
- Em Repository, informe:
https://github.com/mauricioj/proxmox-monitor-agent-home-assistant
- Em Category, selecione Integration.
- Clique em Add.
- Procure por Proxmox Monitor Agent no HACS.
- Instale a integracao.
- Reinicie o Home Assistant.

A segunda e copiar manualmente a pasta:
custom_components/proxmox_monitor_agent
para o diretorio custom_components da sua instalacao do Home Assistant.
Depois disso, o fluxo e o mesmo: reinicia o Home Assistant e adiciona a integracao pela interface, em dispositivos e servicos.
Depois do restart:
- Va em Settings.
- Abra Devices & services.
- Clique em Add integration.
- Procure por Proxmox Monitor Agent.
- Informe host, porta, path e intervalo de scan.
Essa parte e importante porque a integracao nao instala o agent no Proxmox. Ela tambem nao faz SSH no host, nao publica MQTT discovery e nao tenta gerenciar historico fora do Home Assistant. Ela assume que o Proxmox Monitor Agent ja esta rodando e expondo o endpoint HTTP.
Essa separacao deixa as responsabilidades claras:
- O agent roda no Proxmox e publica
/metrics.json. - A integracao roda no Home Assistant e consome esse JSON.
- O Home Assistant cuida de historico, dashboards, alertas e automacoes.
Configuracao
Na configuracao, a integracao pede poucos campos:
- Host.
- Porta, por padrao
9782. - Path, por padrao
/metrics.json. - Scan interval.

Na pratica, se o agent estiver rodando em http://192.168.10.20:9782/metrics.json, voce informa:
Host: 192.168.10.20
Port: 9782
Path: /metrics.json
O scan interval define de quanto em quanto tempo o Home Assistant deve consultar o endpoint. Se o /health do agent estiver disponivel, ele tambem informa o intervalo de coleta configurado no host, o que ajuda a escolher um valor coerente.
Cada config entry representa um host Proxmox. Se voce tiver mais de um host, adiciona outra entrada. Isso evita misturar entidades de hosts diferentes e mantem os unique IDs previsiveis.
Durante o config flow, a integracao tenta buscar o snapshot e valida o schema. Ela espera:
schema.name == "pma.metrics"
schema.version == 1
Se nao conseguir conectar, o fluxo retorna erro de conexao. Se conectar, mas o schema nao for compativel, retorna erro de schema. Isso evita adicionar uma integracao apontando para um endpoint errado e so descobrir depois que nada funciona.
Como os dados viram devices
No Home Assistant, device e entity nao sao a mesma coisa. Entity e o sensor em si: temperatura, CPU, status, memoria. Device e o agrupamento fisico ou logico onde essas entidades vivem.
A integracao cria um device principal para o host Proxmox. E ali que entram os sensores do host: CPU, memoria, uptime, status da coleta, temperaturas, storage e outros dados ligados diretamente ao servidor.

Para VMs e LXCs, a integracao cria devices separados, vinculados ao host. Isso e mais organizado do que jogar todos os sensores no mesmo device. Uma VM pode ter status, CPU, memoria e uptime proprios. Um LXC tambem.
O identificador do host vem do snapshot. Para VMs, o padrao usa o VMID. Para LXCs, usa o CTID. Isso permite unique IDs deterministicas, em vez de depender de nomes visuais que podem mudar.
A ideia e que uma VM chamada home-assistant pode mudar de nome, mas o VMID continua sendo a identidade mais estavel dentro do Proxmox. O mesmo vale para containers.
Esse desenho tambem ajuda a evitar churn. Se o nome exibido muda, a entidade nao precisa virar outra entidade. Se o item some temporariamente, a entidade pode ficar indisponivel em vez de ser apagada e recriada.
Entidades criadas
Na primeira versao, o foco da integracao e cobrir o que realmente ajuda a monitorar o host no Home Assistant.
No device principal do host, entram sensores como:
- Status da coleta.
- Duracao da coleta.
- Uso de CPU.
- Load average de 1, 5 e 15 minutos.
- Memoria usada.
- Swap usado.
- Uptime.
- Temperaturas expostas pelo host.

Para VMs e LXCs, a integracao cria sensores de:
- Status.
- Uso de CPU.
- Memoria usada.
- Uptime.

Para rede, ela cria entidades por interface fisica, como estado, RX bytes, TX bytes, erros e velocidade quando disponivel.
Para filesystems e storage, cria sensores de uso e disponibilidade. Isso permite criar alertas simples para storage enchendo, que e outro tipo de problema comum em homelab.
Um detalhe pratico: alguns valores de bytes sao convertidos para unidades mais humanas, como KiB, MiB, GiB ou TiB, para ficarem melhores na interface do Home Assistant.
Polling local e diagnosticos
A integracao usa DataUpdateCoordinator, que e o padrao do Home Assistant para coordenar polling de dados compartilhados entre varias entidades.
Isso evita que cada entidade faca sua propria requisicao HTTP. Em vez disso, a integracao consulta o endpoint uma vez por intervalo, guarda o snapshot mais recente no coordinator e as entidades leem seus valores dali.
O iot_class da integracao e local_polling. Isso descreve bem o modelo: o Home Assistant esta consultando um endpoint local, dentro da rede, em intervalos definidos. Nao depende de nuvem e nao precisa sair para internet.
A integracao tambem expoe diagnostics com um resumo do endpoint, schema, coleta e identidade do host. Isso ajuda quando algo nao aparece como esperado. Em vez de olhar apenas uma entidade indisponivel, voce consegue ver se o problema esta no endpoint, no schema, na coleta ou em algum modulo especifico do agent.
O status partial da coleta tambem e importante. Se uma ferramenta opcional falha, isso nao significa que o snapshot inteiro deve ser descartado. O agent pode retornar dados uteis mesmo com um modulo parcial. A integracao deve tratar isso como dado utilizavel com diagnostico, nao como falha total.
O que acontece quando algo desaparece
Ambientes Proxmox sao dinamicos. VMs podem ser criadas e removidas. Containers podem ser desligados. Discos podem aparecer e sumir. Sensores podem depender de modulo do kernel, BIOS, hardware ou permissao.
Se a integracao apagasse entidades automaticamente sempre que um item sumisse de um snapshot, o Home Assistant ficaria instavel. Historico seria quebrado, dashboards perderiam cards e automacoes poderiam ficar apontando para entidades recriadas.
Por isso a estrategia mais conservadora e manter as entidades registradas e marcar como indisponiveis quando o item nao aparece no snapshot atual.
Isso e especialmente importante para sensores dinamicos. Um disco USB pode sumir e voltar. Uma VM pode estar temporariamente ausente em um host. Uma leitura de sensor pode falhar em uma coleta e voltar na proxima.
Entidade indisponivel e uma informacao. Entidade apagada automaticamente e perda de contexto.
Proximo passo
Com a integracao instalada, o ponto cego do Proxmox vira entidades dentro do Home Assistant. Temperatura, status de coleta, CPU, memoria, storage, VMs e LXCs passam a existir no mesmo lugar onde eu ja tenho historico, dashboards e notificacoes.
Esse e o momento em que o projeto comeca a pagar a conta do incidente original. Agora da para criar alertas antes do host desligar. Da para saber se o agent parou de responder. Da para acompanhar VMs criticas.
No proximo post eu mostro exatamente essa parte: alertas no Home Assistant e os proximos passos para, no futuro, automatizar os exaustores do rack de forma mais segura.