Seguindo nossa serie de artigos, hoje falaremos de como configurar condições para que possamos receber os alarmes no e-mail referente o monitoramento do Prometheus.
Primeiramente, vamos entender como é fluxo sobre a questão de alarmes no Prometheus:
Na arquitetura do Prometheus, as regras de alarmes são as rules, dessa forma, devemos primeiramente configurar as mesmas para que aconteça o alerta baseado em alguma condição.
1) No arquivo de configuração do Prometheus, temos o rule_files, o arquivo é carregado seguindo a ordem global do evaluation_interval, vamos criar um arquivo e informar o mesmo na configuração do prometheus.yml:
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: - "/etc/prometheus/alert.rules" # - "first_rules.yml" # - "second_rules.yml"
2) Adicione o conteúdo abaixo no arquivo /etc/prometheus/alert.rules, salve e restart no prometheus:
groups: - name: node_alerts rules: - alert: InstanceDown expr: up{job="node_exporter"} == 0 for: 1m labels: severity: critical annotations: summary: Host {{ $labels.instance }} of {{ $labels.job }}
3) Após o restart, vamos simular a queda de um host para validar o alerta, vou parar o serviço do Node Exporter em um servidor:
Valor recebido= 0 (Down)
4) Vamos validar esse alerta no Prometheus, acessando o Prometheus na aba Alerts:
Aproveitando que estamos nessa assunto, vamos explicar os status, como no exemplo, FIRING.
Inativo: O alerta não está ativo.
Pending: Atendeu a expressão, mas aguarda o tempo configurado para alarmar.
Firing: Atendeu a expressão e o ambiente está alarmando.
5) Pronto, a regra para expressão de servidores offline está validada, agora vamos iniciar para a configuração de envio de e-mail, para isso, precisamos do Alert Manager, vamos utilizar um outro servidor para realizar a configuração do Alert Manager.
wget https://github.com/prometheus/alertmanager/releases/download/v0.20.0/alertmanager-0.20.0.linux-amd64.tar.gz tar -xzvf alert*
6) Criar usuários e diretórios:
useradd --no-create-home --shell /bin/false alertmanager mkdir /etc/alertmanager mkdir /etc/alertmanager/template mkdir -p /var/lib/alertmanager/data
7) Criar arquivo de configuração do Alert Manager e aplicar permissões:
touch /etc/alertmanager/alertmanager.yml chown -R alertmanager:alertmanager /etc/alertmanager chown -R alertmanager:alertmanager /var/lib/alertmanager
8) Permissões e copia de arquivos, acesse o diretório que extraiu os arquivos:
cp alertmanager /usr/local/bin/ cp amtool /usr/local/bin/ chown alertmanager:alertmanager /usr/local/bin/alertmanager chown alertmanager:alertmanager /usr/local/bin/amtool
9) Criar arquivo de inicialização:
[Unit] Description=Prometheus Alertmanager Service Wants=network-online.target After=network.target [Service] User=alertmanager Group=alertmanager Type=simple ExecStart=/usr/local/bin/alertmanager \ --config.file /etc/alertmanager/alertmanager.yml \ --storage.path /var/lib/alertmanager/data Restart=always [Install] WantedBy=multi-user.target
10) Inicializar e restart:
systemctl daemon-reload systemctl enable alertmanager systemctl start alertmanager
11) Adicionar informações do alert manager no servidor do Prometheus, acesse o arquivo /etc/prometheus/prometheus.yml e adicione o conteúdo abaixo:
# Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: - 172.31.57.250:9093
12) Voltando no servidor do Prometheus, vamos configurar para que o Alert Manager envie um e-mail baseado no alerta recebido do Prometheus, vamos criar o arquivo /etc/alertmanager/alertmanager.yml e inserir o conteúdo abaixo:
global: smtp_smarthost: 'smtp.gmail.com:587' smtp_from: 'SEU-MAIL' smtp_auth_identity: 'SEU-EMAIL' smtp_require_tls: true templates: - '/etc/alertmanager/template/*.tmpl' route: repeat_interval: 12h receiver: operations-team receivers: - name: 'operations-team' email_configs: - to: 'PARA-QUEM' auth_username: 'SEU-EMAIL' auth_password: 'INSERIRPASSWORD-APP' send_resolved: true
- Você deve criar um aplicativo no Gmail, clicando aqui, na parte de segurança de aplicativo e cria o app Prometheus.
- A configuração do repeat_interval vai análisar a condição de 12 em 12 horas, caso esteja alarmando, vai repetir o envio de e-mail.
13) Simulando um alerta no e-mail: