Dead Man's Switch em Home Assistant

Toda a minha infra-estrutura é monitorizada pelo Prometheus. Mas… quem é que o monitoriza se ele for abaixo?

O Prometheus vem já de fábrica com uma regra true que envia constantemente um alerta e que serve exactamente esse propósito: criar um Dead man’s switch. Mas só isso não chega. É também preciso o sistema que receba esses alertas periódicos e envie uma notificação caso deixem de ser enviados.

algumas soluções caseiras mas às tantas li algures (no reddit) a sugestão de usar o Home Assistant para esse efeito. E faz todo o sentido porque é fácil e já tem as notificações configuradas.

São só precisas 3 entidades:

  1. timer
  2. alert
  3. automation activada por um webhook

A ideia base é esta:

  • o timer tem de estar sempre a correr;
  • para isso acontecer, o webhook tem de ser chamado periodicamente pela entidade externa que queremos monitorizar. O webhook activa a automation que reinicia o timer;
  • caso contrário, o alert envia uma notificação quando o timer estiver parado, ou seja, quando o webhook deixar de ser chamado. Dito de outra forma, activa o switch quando o man estiver dead.

Portanto temos:


timer:
  sys_prometheus_dms:
    name: Prometheus DMS
    duration: 900

alert:
  sys_prometheus_dms:
    name: Prometheus Dead Man Switch
    entity_id: timer.sys_prometheus_dms
    state: "idle"
    repeat: 5
    notifiers:
    - ios

automation:
- id: 'sys_prometheus_dns'
  alias: Prometheus DMS
  description: ''
  trigger:
  - platform: webhook
    webhook_id: prometheus_dms
  condition: []
  action:
  - service: timer.start
    data: {}
    target:
      entity_id: timer.sys_prometheus_dms
  mode: single

O servidor externo terá de fazer um POST periódico no endereço https://homeassistant.meu.dominio/api/webhook/prometheus_dms com uma periodicidade inferior aos 900 segundos do timer para o manter sempre a correr.

Cumprimentos,
Nuno

2 Curtiram

Copyright © 2017-2021. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade