ElasticSearch e HeartBeat - Envio de alerta de UPTIME por email

Olá a todos!
É uma grande satisfação fazer parte deste fórum.

Configure o heartbeat com uma imagem docker.elastic.co/beats/heartbeat:7.5.1 rodando em um contêiner no docker, onde é possível ver UPTIME de algumas URLs. Somente verificação simples de CIMA ou BAIXO.

Você pode verificar o tempo de atividade pelo painel padrão do 7.4, onde pode monitorar o tempo real como URLS sem problemas.

Minha grande questão está no envio de alertas por email!
Eu uso o ElastAlert para enviar alertas de erros das minhas aplicações e agora configurar para enviar alertas de UP e DOWN do monitoramento do HeartBeat. Através da configuração de regras do ElastAlert, o filtro de filtro que me traz uma consulta relativa a UPTIME da URL. Se o filtro for verdadeiro, ele envia o alerta para o email configurado.

Uma grande dúvida :
acordo com configurações de pasta de regras e pasta de configurações de frequência, um email é enviado corretamente quando o filtro encontra o status em DOWN ou UP, no entanto, esse email é enviado a cada 1 minuto, gerando um grande volume de alertas caso ou sistema fique indisponível por vários minutos.

Eu preciso que ele envie um alerta apenas da primeira verificação do filtro (DOWN ou UP). Ou Seja, você receberá um e-mail de DOWN quando uma chamada não receber resposta e um e-mail de UP quando uma chamada receber a primeira resposta. Não foi possível configurar o acordo com a minha necessidade. Tente várias maneiras e todas sem sucesso.

Agradeço qualquer informação!

Seguem arquivos e configurações que eu utilizo:

Configuração Pulsação :

heartbeat.yml

heartbeat.monitors:
- type: http
  name: ...
  enable: true
  schedule: '@every 60s'
  urls: ["..."]
  ipv4: true
  ipv6: true
  mode: any

setup.template.name: "heartbeat-%{[agent.version]}"
setup.template.pattern: "heartbeat-%{[agent.version]}-*"
setup.template.settings:
  index.number_of_shards: 1
  index.codec: best_compression

processors:
  - add_host_metadata: ~
  - add_cloud_metadata: ~
  - add_observer_metadata: ~

logging.level: debug
logging.to_files: true
logging.files:

output.elasticsearch:
  hosts: ["localhost:9211"]
  username: "elastic"
  password: "changeme"

setup.kibana:
  host: "localhost:5611"

docker-compose.yml

version: '3'
services:

  heartbeat:
        image: docker.elastic.co/beats/heartbeat:7.5.1
        container_name: heartbeat
        user: root
        entrypoint: "heartbeat -e -strict.perms=false"
        #command: --strict.perms=false -e
        environment:
        - setup.kibana.host=localhost:5611
        - output.elasticsearch.hosts=["localhost:9211"]
        - TZ=Etc/GMT+3
        volumes:
        - ~/heartbeat.yml:/usr/share/heartbeat/heartbeat.yml

Configuração ElastAlert:

regra_down.yml

name: "### DOWN ###"
type: frequancy
index: heartbeat-*
num_events: 1
timeframe:
 hours: 4

filter:
- query:
   query_string:
           query: "monitor.name:exemplo AND monitor.status:down"

alert:
- "email"

email:
 - "meuemail@gmail.com"

smtp_host: "smtp.gmail.com"
smtp_port: 465
smtp_ssl: true
from_addr: "meuemail@gmail.com"
smtp_auth_file: "/opt/elastalert/smtp_auth_user.yaml"

regra_up.yml

name: "### UP ###"
type: frequancy
index: heartbeat-*
num_events: 1
timeframe:
 hours: 4

filter:
- query:
   query_string:
           query: "monitor.name:exemplo AND monitor.status:up"

alert:
- "email"

email:
 - "meuemail@gmail.com"

smtp_host: "smtp.gmail.com"
smtp_port: 465
smtp_ssl: true
from_addr: "meuemail@gmail.com"
smtp_auth_file: "/opt/elastalert/smtp_auth_user.yaml"

elastalert.yaml

rules_folder: rules
run_every:
  minutes: 1
buffer_time:
  minutes: 60
es_host: localhost
es_port: 9211
es_username: elastic
es_password: changeme
writeback_index: elastalert_status
alert_time_limit:
  days: 2

docker-compose.yaml

version: '3'
services:

  elastalert:
    image: bitsensor/elastalert:3.0.0-beta.0
    container_name: alerts_test
    restart: always
    volumes:
    - ./config/smtp_auth_user.yaml:/opt/elastalert/smtp_auth_user.yaml
    - ./config/elastalert.yaml:/opt/elastalert/config.yaml:ro
    - ./config/config.json:/opt/elastalert-server/config/config.json:ro
    - ./rules:/opt/elastalert/rules:rw
    - ./elastalert/rule_templates:/opt/elastalert/rule_templates:ro
    - /etc/timezone:/etc/timezone:ro
    ports:
    - 3030:3030
    environment:
    - TZ=America/Sao_Paulo

Please don't create multiple topics about the same question, it makes it harder for people to help you :slight_smile:

Let's continue at HeartBeat - Envio de alerta de UPTIME por email