# HeartBeat - Envio de alerta de UPTIME por email

**URL:** https://discuss.elastic.co/t/heartbeat-envio-de-alerta-de-uptime-por-email/226745
**Category:** Beats
**Tags:** elastic-stack-monitoring, elastic-stack-alerting, docker, heartbeat
**Created:** [April 6, 2020, 4:30pm UTC](https://discuss.elastic.co/t/heartbeat-envio-de-alerta-de-uptime-por-email/226745 "2020-04-06T16:30:10Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![thiago7azevedo](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/thiago7azevedo/32/65748_2.png) [@thiago7azevedo](https://discuss.elastic.co/u/thiago7azevedo)
#### Post date: [April 6, 2020, 4:30pm UTC](https://discuss.elastic.co/t/heartbeat-envio-de-alerta-de-uptime-por-email/226745/1 "2020-04-06T16:30:10Z")

</div>

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

Configurei o **heartbeat** com a imagem _**[docker.elastic.co/beats/heartbeat:7.5.1](http://docker.elastic.co/beats/heartbeat:7.5.1)**_ rodando em um container em docker, onde verifico o UPTIME de algumas URLs. Somente verificação simples de UP ou DOWN.

Eu verifico do uptime pelo dashboard padrão do kibana 7.4, onde consigo monitorar em tempo real as URLS sem problemas.

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

**A grande dúvida** :  
De acordo com as configurações na pasta de regras e na 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 o 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, que eu reeba um email de DOWN quando a chamada não receber resposta e um email de UP quando a chamada receber a primeira resposta. Não consegui configurar de acordo com minha necessidade. Tentei de várias maneiras e todas sem sucesso.

Agradeço qualquer informação!

Seguem arquivos e configurações que eu utilizo:

**Configuração Heartbeat** :

**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
```

---

<div class="post-metadata">

### Author: ![Andrew\_Cholakian1](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/andrew_cholakian1/32/3612_2.png) [@Andrew\_Cholakian1](https://discuss.elastic.co/u/Andrew_Cholakian1)
#### Post date: [April 22, 2020, 1:18am UTC](https://discuss.elastic.co/t/heartbeat-envio-de-alerta-de-uptime-por-email/226745/2 "2020-04-22T01:18:28Z")

</div>

Hi! Unfortunately ElasticAlert isn't a product of Elastic's so I can't speak to its usage.

Good news however, our upcoming 7.7 release will support alerts as a built-in feature in kibana, though you for your use case you may need a commercial license for some functionality.

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)
#### Post date: [May 20, 2020, 1:18am UTC](https://discuss.elastic.co/t/heartbeat-envio-de-alerta-de-uptime-por-email/226745/3 "2020-05-20T01:18:39Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
