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