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
- Utwórz kanał w Echobell
- Skonfiguruj szablony powiadomień (oraz opcjonalny szablon odnośnika)
- Wybierz metodę integracji:
- Webhook przez odbiorcę webhook w Alertmanagerze (zalecane)
- E-mail przez odbiorcę email w Alertmanagerze (alternatywa)
- Utwórz lub zaktualizuj reguły alertów
- Przetestuj i dopracuj
Przewodnik krok po kroku
Utwórz kanał Echobell
- Otwórz aplikację Echobell
- Utwórz nowy kanał (np. „Prometheus Alerts”)
- 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)
- W swoim kanale Echobell skopiuj adres URL webhooka z sekcji wyzwalaczy
- 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: trueUwagi:
- 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.
- W Echobell skopiuj adres e-mail kanału z sekcji wyzwalaczy
- 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
- Tymczasowo obniż progi albo utwórz alert testowy, który szybko zadziała
- Sprawdź, czy po jego uruchomieniu dociera powiadomienie z Echobell
- Jeśli korzystasz z szablonu odnośnika, otwórz rekord i kliknij odnośnik
- 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
- Utrzymuj szablony zwięzłe, ale konkretne (nazwa alertu, waga, instancja, podsumowanie)
- Używaj szablonu odnośnika, aby przejść prosto do właściwego wykresu lub pulpitu
- Grupuj i kieruj alerty w Alertmanagerze, aby uniknąć szumu i zmęczenia alertami
- Dodawaj etykiety wagi alertu i dobieraj typy powiadomień Echobell do pilności
- 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