Integracja z Prometheus Alertmanager - alerty na telefon

Kieruj alerty z Prometheus Alertmanagera do Echobell i odbieraj powiadomienia push lub połączenia przy incydentach serwerów i infrastruktury.


Prometheus wraz z Alertmanagerem to szeroko stosowany, otwartoźródłowy zestaw do monitoringu i alertowania. Łącząc Alertmanagera z Echobell, możesz otrzymywać natychmiastowe powiadomienia na telefon (w tym alerty czasowo krytyczne lub w formie połączenia) za każdym razem, gdy zadziałają Twoje reguły alertów.

Wymagania wstępne

  • Konto Echobell z co najmniej jednym utworzonym kanałem
  • Działająca instalacja Prometheus + Alertmanager
  • Możliwość edycji konfiguracji Alertmanagera (alertmanager.yml)

Przegląd konfiguracji

  1. Utwórz kanał w Echobell
  2. Skonfiguruj szablony powiadomień (oraz opcjonalny szablon odnośnika)
  3. Wybierz metodę integracji:
    • Webhook przez odbiorcę webhook w Alertmanagerze (zalecane)
    • E-mail przez odbiorcę email w Alertmanagerze (alternatywa)
  4. Utwórz lub zaktualizuj reguły alertów
  5. Przetestuj i dopracuj

Przewodnik krok po kroku

Utwórz kanał Echobell

  1. Otwórz aplikację Echobell
  2. Utwórz nowy kanał (np. „Prometheus Alerts”)
  3. Wybierz kolor ułatwiający rozpoznanie

Skonfiguruj szablony powiadomień

Payload webhooka Alertmanagera zawiera uporządkowane pola, takie jak status, commonLabels, commonAnnotations, externalURL oraz tablicę alerts. Do tych pól możesz odwoływać się bezpośrednio w szablonach Echobell.

Proponowane szablony:

Szablon tytułu:

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

Szablon treści:

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

Opcjonalny szablon odnośnika (Ustawienia zaawansowane):

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

Dzięki temu w rekordzie alertu pojawi się bezpośredni odnośnik do wykresu lub pulpitu z aktywnym alertem. Jeśli generatorURL nie występuje, użyty zostanie externalURL.

Metoda integracji A — webhook (zalecana)

  1. W swoim kanale Echobell skopiuj adres URL webhooka z sekcji wyzwalaczy
  2. W Alertmanagerze dodaj odbiorcę webhook, który wysyła żądania pod ten adres

Minimalny przykład 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

Uwagi:

  • send_resolved: true powoduje powiadomienie także wtedy, gdy alert zostanie rozwiązany (status zmienia się na resolved)
  • Echobell odczytuje treść JSON w niezmienionej postaci, więc powyższe szablony wyrenderują się poprawnie

Metoda integracji B — e-mail (alternatywa)

Jeśli wolisz lub musisz korzystać z poczty, użyj odbiorcy email w Alertmanagerze i wysyłaj wiadomości na adres e-mail powiązany z kanałem.

  1. W Echobell skopiuj adres e-mail kanału z sekcji wyzwalaczy
  2. Skonfiguruj odbiorcę email w Alertmanagerze i użyj prostych szablonów

Przykładowy fragment:

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>

W szablonach Echobell dla wyzwalaczy e-mail możesz korzystać ze zmiennych takich jak subject, text i html, które Echobell udostępnia automatycznie.

Utwórz przykładową regułę alertu

Oto niewielka przykładowa reguła do przetestowania całego przepływu:

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"

Gdy ten alert zadziała, Alertmanager wyśle zdarzenie do skonfigurowanego odbiorcy, a Echobell powiadomi subskrybentów kanału.

Testowanie integracji

  1. Tymczasowo obniż progi albo utwórz alert testowy, który szybko zadziała
  2. Sprawdź, czy po jego uruchomieniu dociera powiadomienie z Echobell
  3. Jeśli korzystasz z szablonu odnośnika, otwórz rekord i kliknij odnośnik
  4. Rozwiąż alert i sprawdź, czy dociera powiadomienie o rozwiązaniu (jeśli jest włączone)

Wybór typu powiadomień

  • Czasowo krytyczne: krytyczne awarie produkcji, incydenty na poziomie dyżuru on-call
  • Połączenie: poważne awarie, przy których trzeba kogoś obudzić lub przerwać tryb Skupienia
  • Standardowe: rutynowe alerty, ostrzeżenia i komunikaty informacyjne

Dobre praktyki

  1. Utrzymuj szablony zwięzłe, ale konkretne (nazwa alertu, waga, instancja, podsumowanie)
  2. Używaj szablonu odnośnika, aby przejść prosto do właściwego wykresu lub pulpitu
  3. Grupuj i kieruj alerty w Alertmanagerze, aby uniknąć szumu i zmęczenia alertami
  4. Dodawaj etykiety wagi alertu i dobieraj typy powiadomień Echobell do pilności
  5. Chroń adres URL webhooka Echobell jak sekret; zmień go, jeśli wyciekł

Rozwiązywanie problemów

Jeśli alerty nie pojawiają się w Echobell:

  • Sprawdź poprawność adresu URL webhooka lub adresu e-mail kanału
  • Upewnij się, że kanał Echobell jest aktywny i ma subskrybentów
  • Przejrzyj logi Alertmanagera pod kątem błędów dostarczania
  • Potwierdź, że trasa (route) w alertmanager.yml rzeczywiście wskazuje zamierzonego odbiorcę
  • Przetestuj prostą, jednorazową regułą alertu
  • Przy integracji e-mail sprawdź, czy ustawienia SMTP działają i wiadomości są dostarczane

Prywatność i przetwarzanie danych

Echobell stawia prywatność na pierwszym miejscu:

  • Treść powiadomień pozostaje na Twoich urządzeniach
  • Na serwerach przechowujemy tylko minimalne dane konfiguracyjne
  • Adresy URL webhooków i adresy e-mail kanałów należy traktować jak sekrety
  • Echobell nie przechowuje payloadów Twoich alertów na swoich serwerach

Dodatkowe materiały