Integração com Prometheus Alertmanager - Alertas no celular
Envie os alertas do Prometheus Alertmanager para o Echobell e receba notificações push ou chamadas telefônicas para incidentes de servidor e de infraestrutura.
O Prometheus com o Alertmanager é uma stack de monitoramento e alertas de código aberto amplamente usada. Ao integrar o Alertmanager com o Echobell, você recebe notificações instantâneas no celular (incluindo alertas urgentes ou em formato de chamada) sempre que as suas regras de alerta dispararem.
Pré-requisitos
- Uma conta do Echobell com pelo menos um canal criado
- Uma instalação do Prometheus + Alertmanager em funcionamento
- Acesso para editar a configuração do Alertmanager (alertmanager.yml)
Visão geral da configuração
- Criar um canal do Echobell
- Configurar os modelos de notificação (e o modelo de link opcional)
- Escolher um método de integração:
- Webhook pelo receiver de webhook do Alertmanager (recomendado)
- E-mail pelo receiver de e-mail do Alertmanager (alternativa)
- Criar ou atualizar as regras de alerta
- Testar e refinar
Guia passo a passo
Criar um canal do Echobell
- Abra o app do Echobell
- Crie um novo canal (por exemplo, "Prometheus Alerts")
- Escolha uma cor para identificá-lo com facilidade
Configurar os modelos de notificação
O payload de webhook do Alertmanager contém campos estruturados como status, commonLabels, commonAnnotations, externalURL e um array alerts. Você pode referenciar esses campos diretamente nos modelos do Echobell.
Modelos sugeridos:
Modelo de título:
{{commonLabels.alertname}} - {{status}}
Modelo de corpo:
🔔 Alert: {{commonLabels.alertname}}
📊 Severity: {{commonLabels.severity}}
🖥️ Instance: {{alerts[0].labels["instance"]}}
⏰ Starts: {{alerts[0].startsAt}}
ℹ️ Summary: {{commonAnnotations.summary}}
🧾 Description: {{commonAnnotations.description}}
Modelo de link opcional (Configurações avançadas):
{{alerts[0].generatorURL || externalURL}}
Isso exibe um link direto para o gráfico ou o dashboard que disparou o alerta dentro do registro do alerta. Se generatorURL não estiver presente, ele usa externalURL como alternativa.
Método de integração A — Webhook (recomendado)
- No seu canal do Echobell, copie a URL do webhook na seção Gatilhos
- No Alertmanager, adicione um receiver de webhook que envie os dados para essa URL
Exemplo mínimo de alertmanager.yml:
route:
receiver: echobell-webhook
receivers:
- name: echobell-webhook
webhook_configs:
- url: "https://hook.echobell.one/t/<channel-token>"
send_resolved: true
http_config:
follow_redirects: trueObservações:
- send_resolved: true também notifica quando os alertas são resolvidos (o status passa a ser resolved)
- O Echobell lê o corpo JSON como ele é, então os modelos acima serão renderizados corretamente
Método de integração B — E-mail (alternativa)
Se você preferir ou precisar usar e-mail, utilize o receiver de e-mail do Alertmanager e envie as mensagens para o endereço de e-mail vinculado ao canal.
- No Echobell, copie o endereço de e-mail do canal na seção Gatilhos
- Configure um receiver de e-mail no Alertmanager e use modelos simples
Exemplo de trecho:
receivers:
- name: echobell-email
email_configs:
- to: "PASTE_CHANNEL_EMAIL_ADDRESS"
send_resolved: true
subject: "{{ .CommonLabels.alertname }} - {{ .Status }}"
html: |
<p><strong>Summary:</strong> {{ .CommonAnnotations.summary }}</p>
<p>{{ .CommonAnnotations.description }}</p>
<p>
<a href='{{ (index .Alerts 0).GeneratorURL }}' target='_blank' rel='noopener'>Open in Prometheus</a>
</p>Nos modelos do Echobell para gatilhos por e-mail, você pode usar variáveis como subject, text e html, que o Echobell fornece automaticamente.
Criar uma regra de alerta de exemplo
Veja uma pequena regra de exemplo para testar o fluxo:
groups:
- name: example
rules:
- alert: HighCPU
expr: avg(rate(process_cpu_seconds_total[5m])) > 0.8
for: 2m
labels:
severity: critical
annotations:
summary: "High CPU usage"
description: "CPU has been over 80% for 2 minutes"Assim que esse alerta disparar, o Alertmanager enviará o evento para o receiver configurado e o Echobell notificará os inscritos no canal.
Testando a integração
- Reduza os limites temporariamente ou crie um alerta de teste que dispare rápido
- Confirme que você recebe uma notificação do Echobell quando ele disparar
- Se estiver usando o modelo de link, abra o registro e toque no link
- Resolva o alerta e verifique se você recebe a notificação de resolução (se ela estiver ativada)
Escolhendo os tipos de notificação
- Urgente: quedas críticas em produção, incidentes de nível de plantão
- Chamada: quedas graves em que é preciso acordar alguém ou interromper os modos de Foco
- Normal: alertas de rotina, avisos ou comunicados informativos
Boas práticas
- Mantenha os modelos concisos, mas informativos (nome do alerta, severidade, instância, resumo)
- Use o modelo de link para ir direto ao gráfico ou ao dashboard relevante
- Agrupe e roteie os alertas no Alertmanager para evitar ruído e fadiga
- Inclua labels de severidade e use os tipos de notificação do Echobell de acordo com a urgência
- Proteja a URL do webhook do Echobell como um segredo; troque-a se ela for exposta
Solução de problemas
Se os alertas não estiverem chegando ao Echobell:
- Verifique se a URL do webhook ou o endereço de e-mail do canal está correto
- Confirme que o canal do Echobell está ativo e tem inscritos
- Confira os logs do Alertmanager em busca de erros de entrega
- Confirme que a route no alertmanager.yml realmente aponta para o receiver pretendido
- Teste com uma regra de alerta simples e pontual
- Se estiver usando e-mail, confirme que as suas configurações de SMTP funcionam e que os e-mails estão sendo entregues
Privacidade e tratamento de dados
O Echobell prioriza a privacidade:
- O conteúdo das notificações permanece nos seus dispositivos
- Apenas os dados mínimos de configuração ficam armazenados nos servidores
- As URLs de webhook e os endereços de e-mail dos canais devem ser tratados como segredos
- O Echobell não retém os payloads dos seus alertas nos servidores dele