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

  1. Criar um canal do Echobell
  2. Configurar os modelos de notificação (e o modelo de link opcional)
  3. 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)
  4. Criar ou atualizar as regras de alerta
  5. Testar e refinar

Guia passo a passo

Criar um canal do Echobell

  1. Abra o app do Echobell
  2. Crie um novo canal (por exemplo, "Prometheus Alerts")
  3. 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)

  1. No seu canal do Echobell, copie a URL do webhook na seção Gatilhos
  2. 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: true

Observaçõ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.

  1. No Echobell, copie o endereço de e-mail do canal na seção Gatilhos
  2. 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

  1. Reduza os limites temporariamente ou crie um alerta de teste que dispare rápido
  2. Confirme que você recebe uma notificação do Echobell quando ele disparar
  3. Se estiver usando o modelo de link, abra o registro e toque no link
  4. 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

  1. Mantenha os modelos concisos, mas informativos (nome do alerta, severidade, instância, resumo)
  2. Use o modelo de link para ir direto ao gráfico ou ao dashboard relevante
  3. Agrupe e roteie os alertas no Alertmanager para evitar ruído e fadiga
  4. Inclua labels de severidade e use os tipos de notificação do Echobell de acordo com a urgência
  5. 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

Recursos adicionais