Integrazione Prometheus Alertmanager - avvisi mobili

Instrada gli avvisi di Prometheus Alertmanager verso Echobell e ricevi notifiche push o chiamate per gli incidenti su server e infrastruttura.


Prometheus con Alertmanager è uno stack open source di monitoraggio e alerting molto diffuso. Integrando Alertmanager con Echobell ricevi notifiche immediate sul telefono (anche urgenti o con chiamata) ogni volta che le tue regole di avviso scattano.

Prerequisiti

  • Un account Echobell con almeno un canale creato
  • Un'installazione funzionante di Prometheus + Alertmanager
  • I permessi per modificare la configurazione di Alertmanager (alertmanager.yml)

Panoramica della configurazione

  1. Crea un canale Echobell
  2. Configura i modelli di notifica (e, se vuoi, il modello di link)
  3. Scegli un metodo di integrazione:
    • Webhook tramite il receiver webhook di Alertmanager (consigliato)
    • Email tramite il receiver email di Alertmanager (alternativa)
  4. Crea o aggiorna le regole di avviso
  5. Prova e affina

Guida passo passo

Crea un canale Echobell

  1. Apri l'app Echobell
  2. Crea un nuovo canale (ad esempio "Prometheus Alerts")
  3. Scegli un colore per riconoscerlo a colpo d'occhio

Configura i modelli di notifica

Il payload webhook di Alertmanager contiene campi strutturati come status, commonLabels, commonAnnotations, externalURL e un array alerts. Puoi richiamare questi campi direttamente nei modelli di Echobell.

Modelli consigliati:

Modello del titolo:

{{commonLabels.alertname}} - {{status}}

Modello del corpo:

🔔 Alert: {{commonLabels.alertname}}
📊 Severity: {{commonLabels.severity}}
🖥️ Instance: {{alerts[0].labels["instance"]}}
⏰ Starts: {{alerts[0].startsAt}}
ℹ️ Summary: {{commonAnnotations.summary}}
🧾 Description: {{commonAnnotations.description}}

Modello di link opzionale (Impostazioni avanzate):

{{alerts[0].generatorURL || externalURL}}

In questo modo, dentro il record dell'avviso trovi un link diretto al grafico o alla dashboard che ha fatto scattare la regola. Se generatorURL non è presente, viene usato externalURL come ripiego.

Metodo di integrazione A — Webhook (consigliato)

  1. Nel tuo canale Echobell, copia l'URL del webhook dalla sezione Triggers
  2. In Alertmanager, aggiungi un receiver webhook che invii i dati a quell'URL

Esempio minimo di 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

Note:

  • con send_resolved: true ricevi una notifica anche quando gli avvisi rientrano (lo status diventa resolved)
  • Echobell legge il corpo JSON così com'è, quindi i modelli qui sopra vengono resi correttamente

Metodo di integrazione B — Email (alternativa)

Se preferisci o devi usare l'email, ricorri al receiver email di Alertmanager e invia i messaggi all'indirizzo email associato al canale.

  1. In Echobell, copia l'indirizzo email del canale dalla sezione Triggers
  2. Configura un receiver email in Alertmanager usando modelli semplici

Esempio:

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>

Nei modelli Echobell per i trigger via email puoi usare variabili come subject, text e html, che Echobell mette a disposizione automaticamente.

Crea una regola di avviso di esempio

Ecco una piccola regola di esempio per provare il flusso:

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"

Quando questo avviso scatta, Alertmanager invia l'evento al receiver configurato ed Echobell avvisa chi è iscritto al canale.

Prova dell'integrazione

  1. Abbassa temporaneamente le soglie oppure crea un avviso di prova che scatti subito
  2. Controlla di ricevere la notifica Echobell quando scatta
  3. Se usi il modello di link, apri il record e tocca il link
  4. Risolvi l'avviso e verifica di ricevere la notifica di rientro (se l'hai attivata)

Come scegliere il tipo di notifica

  • Urgente: interruzioni critiche in produzione, incidenti da reperibilità
  • Chiamata: guasti gravi che devono svegliarti o superare le modalità Full Immersion
  • Normale: avvisi di routine, warning o comunicazioni informative

Buone pratiche

  1. Mantieni i modelli concisi ma informativi (nome dell'avviso, gravità, istanza, riepilogo)
  2. Usa il modello di link per arrivare subito al grafico o alla dashboard che ti serve
  3. Raggruppa e instrada gli avvisi in Alertmanager per evitare rumore e assuefazione
  4. Aggiungi le label di gravità e abbina i tipi di notifica di Echobell all'urgenza reale
  5. Tratta l'URL del webhook Echobell come un segreto e rigeneralo se viene esposto

Risoluzione dei problemi

Se gli avvisi non arrivano su Echobell:

  • Controlla di aver usato l'URL del webhook o l'indirizzo email del canale corretti
  • Assicurati che il canale Echobell sia attivo e abbia iscritti
  • Cerca eventuali errori di consegna nei log di Alertmanager
  • Verifica che la route in alertmanager.yml punti davvero al receiver previsto
  • Fai una prova con una singola regola di avviso semplice
  • Se usi l'email, controlla che le impostazioni SMTP funzionino e che i messaggi vengano consegnati

Privacy e trattamento dei dati

Echobell mette la privacy al primo posto:

  • Il contenuto delle notifiche resta sui tuoi dispositivi
  • Sui server vengono conservati solo i dati di configurazione essenziali
  • Gli URL dei webhook e gli indirizzi email dei canali vanno trattati come segreti
  • Echobell non conserva sui propri server i payload dei tuoi avvisi

Risorse aggiuntive