Proxmox Monitor Agent - Alertas no Home Assistant e Proximos Passos

Proxmox Monitor Agent - Alertas no Home Assistant e Proximos Passos

Este post e o quarto de uma serie de quatro partes sobre o Proxmox Monitor Agent e a integracao com o Home Assistant.


Primeiro objetivo: saber antes de desligar

Quando comecei essa solucao, a tentacao natural era pensar direto na automacao completa: se a temperatura passar de um limite, liga os exaustores do rack; se continuar subindo, manda alerta; se passar de um ponto critico, toma alguma acao mais agressiva.

Esse caminho faz sentido, mas eu nao quis comecar por ele.

O primeiro objetivo e mais basico: saber antes de desligar.

No incidente que motivou essa serie, o problema nao foi a falta de uma automacao sofisticada. O problema foi eu descobrir a temperatura alta tarde demais. O servidor ja tinha desligado, eu ja tinha reiniciado sem saber a causa, e so depois fui fisicamente ate o rack descobrir que a ventoinha tinha parado.

Entao, nesta fase, o foco e alerta. Eu quero que o Home Assistant me avise quando a temperatura do host Proxmox passar de um limite, quando o agent parar de responder ou quando um LXC critico estiver em um estado inesperado.

Automacao fisica do rack vem depois, com mais cuidado.


Um dashboard simples para o host

Antes de criar automacoes, eu gosto de montar um dashboard simples. Nao precisa ser bonito nem completo. Precisa responder rapido: o host esta saudavel?

Para o Proxmox, eu colocaria cards para:

  • Temperatura principal do host.
  • CPU usage.
  • Load average.
  • Memoria usada.
  • Swap usado.
  • Storage principal.
  • Status da coleta.
  • Uptime do host.
  • Status de VMs e LXCs que rodam servicos importantes, como um LXC Docker com containers internos.

Dashboard simples de saude do Proxmox

Esse dashboard serve para duas coisas. Primeiro, para validar se as entidades estao chegando corretamente. Segundo, para ganhar intuicao sobre os valores normais do ambiente.

Esse ponto e importante. Um limite de temperatura nao deveria sair do nada. O ideal e observar o comportamento normal do host por alguns dias: temperatura em idle, temperatura com carga, temperatura em dias quentes, diferenca com porta do rack aberta ou fechada.

Depois disso, o alerta fica mais honesto. Se o host normalmente trabalha em 45 C e em carga vai para 60 C, um alerta em 75 C pode fazer sentido. Se ele normalmente ja trabalha mais quente, o limite precisa ser outro.


Alerta de temperatura alta

O exemplo abaixo e intencionalmente simples. Ele dispara uma notificacao se um sensor de temperatura ficar acima de 75 C por mais de 2 minutos.

Troque sensor.proxmox_core_0 pelo sensor real criado no seu Home Assistant. Troque tambem notify.mobile_app_mauricio pelo seu servico de notificacao.

alias: Proxmox - alerta de temperatura alta
mode: single
trigger:
  - platform: numeric_state
    entity_id: sensor.proxmox_core_0
    above: 75
    for:
      minutes: 2
condition: []
action:
  - service: notify.mobile_app_mauricio
    data:
      title: "Proxmox quente"
      message: "Temperatura do host passou de 75 C por mais de 2 minutos."

Automacao de alerta por temperatura

O for e importante. Sem ele, um pico rapido pode gerar notificacao sem necessidade. Com 2 minutos, o alerta fica um pouco mais resistente a ruido, mas ainda rapido o suficiente para um problema real.

Em um ambiente mais maduro, eu provavelmente teria dois limites:

  • Um alerta de aviso, por exemplo acima de 70 C.
  • Um alerta critico, por exemplo acima de 80 C por alguns minutos.

Mas para comecar, um alerta simples ja fecha o buraco que causou o incidente original.

Notificacao de temperatura no app do Home Assistant


Alerta se o agent parar de responder

Tambem precisa monitorar o monitorador.

Se o Home Assistant nao consegue ler o endpoint do Proxmox Monitor Agent, isso pode significar varias coisas: o agent parou, o host esta inacessivel, o timer nao gerou snapshot, a rede falhou, ou o Proxmox esta com algum problema maior.

O exemplo abaixo usa um sensor generico de status da coleta. Ajuste o entity_id para o nome real criado no seu ambiente.

alias: Proxmox - agent indisponivel
mode: single
trigger:
  - platform: state
    entity_id: sensor.proxmox_collection_status
    to: "unavailable"
    for:
      minutes: 5
condition: []
action:
  - service: notify.mobile_app_mauricio
    data:
      title: "Proxmox Monitor Agent indisponivel"
      message: "O Home Assistant nao consegue ler metricas do host Proxmox ha 5 minutos."

Alerta quando o agent fica indisponivel

Esse alerta e menos sobre temperatura e mais sobre confianca. Se eu dependo do Home Assistant para me avisar que o host esta quente, eu tambem preciso saber quando essa leitura parou de funcionar.

Uma alternativa e alertar quando collection_status deixa de ser ok. Isso depende de como voce quer tratar coletas parciais. Eu gosto de diferenciar:

  • partial: ainda tenho dados, mas algo falhou e merece investigacao.
  • unavailable: o Home Assistant nao esta conseguindo obter dado nenhum.

Para alerta critico, unavailable costuma ser mais importante. Para manutencao, partial tambem pode virar notificacao.


Alerta para LXC critico

Outro uso imediato e alertar quando um LXC critico sai do estado esperado.

Aqui tem uma pegadinha importante: Home Assistant e pfSense sao servicos criticos, mas nao sao bons exemplos para esse tipo de notificacao.

Se o Home Assistant parar, a automacao que enviaria a notificacao tambem nao roda. Se o pfSense parar, provavelmente eu perco a rede ou a saida para internet, entao a notificacao pode nem sair. Nesses casos, faz mais sentido ter monitoramento externo ou algum caminho independente.

Para o exemplo aqui, usei um LXC Docker que roda alguns containers importantes. Se esse LXC cair, o Home Assistant e a rede continuam vivos o suficiente para me avisar.

Ajuste sensor.lxc_120_docker_status para a entidade real criada pela integracao no seu ambiente.

alias: Proxmox - LXC Docker offline
mode: single
trigger:
  - platform: state
    entity_id: sensor.lxc_120_docker_status
    not_to: "running"
    for:
      minutes: 3
condition: []
action:
  - service: notify.mobile_app_mauricio
    data:
      title: "LXC Docker fora do ar"
      message: "O LXC Docker nao esta em estado running."

Esse tipo de alerta nao substitui monitoramento de aplicacao. Um LXC pode estar running e algum container dentro dele estar quebrado. Mas ele cobre uma camada importante: o estado visto pelo Proxmox.

Para homelab, isso ja ajuda bastante. Em vez de perceber que algo caiu quando uma aplicacao para de responder, voce recebe um aviso quando o host percebe que aquele LXC nao esta como deveria.

Automacao de alerta para LXC Docker


Proximo passo: exaustores do rack

O proximo passo natural e usar esses sensores para acao fisica no rack.

Ainda nao estou tratando isso como implementado. A ideia e evoluir com calma: uma tomada inteligente ou relay controlando exaustores, uma automacao ligando ventilacao acima de determinado limite, uma notificacao se a temperatura nao reduzir depois de alguns minutos, e talvez um alerta mais critico se continuar subindo.

O fluxo poderia ser algo assim:

Temperatura > limite de aviso
  -> notifica

Temperatura > limite de ventilacao
  -> liga exaustores
  -> espera alguns minutos
  -> se nao cair, notifica de novo

Temperatura > limite critico
  -> alerta critico
  -> avaliar acao manual ou desligamento controlado de cargas nao criticas

Mas eu prefiro nao automatizar acao fisica sem antes observar os dados. Primeiro eu quero saber qual sensor e mais confiavel, qual temperatura normal do rack, como ela varia ao longo do dia e quanto tempo levaria para os exaustores fazerem diferenca.

Automacao boa vem depois de telemetria confiavel.

Licoes aprendidas

A principal licao desse projeto e simples: monitore o host que sustenta o monitoramento.

Se o Home Assistant roda dentro do Proxmox, ele depende do Proxmox. Se o Proxmox esquenta, trava ou perde storage, o Home Assistant pode ser uma das primeiras coisas afetadas. Nao adianta ter automacao bonita se o servidor que roda tudo esta invisivel.

A segunda licao e separar coleta de acao. O Proxmox Monitor Agent coleta e expoe um contrato JSON. A custom integration transforma esse contrato em entidades. O Home Assistant faz historico, alerta e automacao. Cada parte tem uma responsabilidade clara.

A terceira e criar alerta antes de criar automacao fisica. Um alerta simples de temperatura ja teria mudado completamente a forma como eu descobri a ventoinha queimada. Ligar exaustores automaticamente e um bom proximo passo, mas nao precisa ser o primeiro.

Com essa serie, o ponto cego inicial deixa de existir: o host Proxmox passa a aparecer dentro do Home Assistant, junto com o resto do homelab. E a partir dai fica muito mais facil evoluir para dashboards melhores, alertas mais inteligentes e, quando fizer sentido, automacoes reais no rack.