Prometheus: Alerty

Jak działają alerty Prometheus i jak je skonfigurować

👋 Witamy w dokumentacji Stackhero!

Stackhero oferuje gotowe do użycia rozwiązanie Prometheus cloud, które zapewnia wiele korzyści, w tym:

  • Alert Manager w zestawie do wysyłania alertów do Slack, Mattermost, PagerDuty, itp.
  • Dedykowany serwer e-mail do wysyłania nieograniczonych alertów e-mail.
  • Blackbox do sondowania HTTP, ICMP, TCP i więcej.
  • Łatwa konfiguracja z edytorem plików konfiguracyjnych online.
  • Bezproblemowe aktualizacje za pomocą jednego kliknięcia.
  • Optymalna wydajność i solidne bezpieczeństwo dzięki prywatnej i dedykowanej VM.

Oszczędzaj czas i upraszczaj swoje życie: wystarczy 5 minut, aby wypróbować rozwiązanie Prometheus cloud hosting Stackhero!

Prometheus może analizować Twoje metryki i wyzwalać alerty na podstawie zdefiniowanych przez Ciebie reguł. Z Stackhero dla Prometheus alerty są przetwarzane w dwóch etapach. Najpierw oceniane są reguły alertów Prometheus, a następnie przejmuje Alert Manager.

Wszystko jest wstępnie zainstalowane i skonfigurowane z Stackhero dla Prometheus, więc musisz wykonać minimalną konfigurację, taką jak dodanie swojego adresu e-mail, aby zacząć otrzymywać alerty.

Ogólny widok Stackhero dla PrometheusOgólny widok Stackhero dla Prometheus

Kiedy Prometheus pobiera metryki, ocenia je w odniesieniu do reguł określonych w pliku rules-alert.yml. Te reguły alertów definiują progi i okna czasowe dla wyzwalania alertów na podstawie zebranych metryk.

Na przykład, alert może zostać wyzwolony, jeśli użycie dysku przekroczy 80%. Dodatkowo, można ustawić reguły przewidujące przyszłe warunki i wysłać alert, jeśli szacuje się, że przestrzeń dyskowa zostanie całkowicie zapełniona w ciągu następnych 24 godzin.

Innym powszechnym przypadkiem użycia jest wykrywanie nietypowego zachowania. Na przykład, jeśli nastąpi nagły wzrost użycia przepustowości sieci, może zostać wyzwolony alert, aby pomóc w wykryciu potencjalnych ataków DDoS lub prób wycieku danych.

Reguły alertów Prometheus są bezpośrednio zawarte w serwerze Prometheus.

Alert Manager odbiera alerty wyzwolone przez reguły alertów Prometheus. Deduplikuje alerty, grupuje je, a następnie przesyła za pośrednictwem różnych kanałów powiadomień, takich jak e-mail, Slack, Mattermost, PagerDuty i inne. Jego plik konfiguracyjny to alert-manager.yml.

Na przykład, jeśli wystąpi spowolnienie serwera, reguły alertów Prometheus mogą wyzwolić oddzielne alerty dla zwiększonego obciążenia i użycia CPU. Alert Manager odbiera te alerty, grupuje je, ponieważ dotyczą tego samego serwera, i wysyła skonsolidowane powiadomienie do odpowiedniego odbiorcy lub zespołu na podstawie Twojej konfiguracji.

Jeśli spowolnienie będzie się utrzymywać, Prometheus będzie nadal wysyłać alerty, ale Alert Manager będzie tłumić duplikaty wiadomości przez określony czas, aby zapobiec zalewaniu zespołu redundantnymi alertami.

Możesz również wyciszyć lub całkowicie zablokować alerty, jeśli to konieczne. Po rozwiązaniu podstawowego problemu wysyłana jest wiadomość o odzyskaniu, aby powiadomić Twoje zespoły.

Ten przykład ilustruje typowy scenariusz, ale możesz w pełni dostosować konfigurację do swoich specyficznych wymagań.

ostrzeżenie Alert Manager nie jest domyślnie dołączony do Prometheus. Aby zaoszczędzić Twój czas i uprościć proces, zintegrowaliśmy i skonfigurowaliśmy Alert Manager w Stackhero dla Prometheus, abyś mógł wysyłać alerty w zaledwie kilka minut, z minimalnym wysiłkiem.

Możesz dostosować reguły alertów Prometheus, edytując plik rules-alert.yml. Aby to zrobić, uzyskaj dostęp do swojego panelu Stackhero, wybierz swoją usługę Prometheus i kliknij "Konfiguracja reguł alertów Prometheus".

Dodaliśmy już kilka domyślnych reguł alertów do Twojej instancji Stackhero dla Prometheus, więc zazwyczaj nie będziesz musiał modyfikować pliku rules-alert.yml, chyba że wymagana jest personalizacja.

Poniżej znajduje się przykład alertu, który wyzwala się, jeśli użycie dysku przekroczy 90%:

- alert: "HostOutOfDiskSpace"
  expr: (node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes < 10 and ON (instance, device, mountpoint) node_filesystem_readonly == 0
  for: 2m
  labels:
    severity: "warning"
  annotations:
    summary: "Host out of disk space (instance {{ $labels.instance }})"
    description: "Disk is almost full (< 10% left)"
    value: "{{ $value }}"

Oto kolejny przykład, który przewiduje potencjalne zapełnienie przestrzeni dyskowej w ciągu następnych 24 godzin:

- alert: "HostDiskWillFillIn24Hours"
  expr: (node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes < 10 and ON (instance, device, mountpoint) predict_linear(node_filesystem_avail_bytes{fstype!~"tmpfs"}[1h], 24 * 3600) < 0 and ON (instance, device, mountpoint) node_filesystem_readonly == 0
  for: 2m
  labels:
    severity: "warning"
  annotations:
    summary: "Host disk will fill in 24 hours (instance {{ $labels.instance }})"
    description: "Filesystem is predicted to run out of space within the next 24 hours at the current write rate"
    value: "{{ $value }}"

Możesz znaleźć wiele dodatkowych przykładów reguł alertów na stronie Awesome Prometheus Alerts.

Aby skonfigurować Alert Manager, edytuj plik alert-manager.yml. W swoim panelu Stackhero wybierz swoją usługę Prometheus, a następnie kliknij "Konfiguracja Alert Manager".

Poniżej przedstawiamy podstawy. Aby uzyskać więcej szczegółów, zapoznaj się z oficjalną dokumentacją.

Pierwszym krokiem jest skonfigurowanie receivers. Każdy receiver to zestaw integracji powiadomień (takich jak e-mail, Slack itp.) zidentyfikowany przez unikalną name.

Na przykład, możesz utworzyć odbiorcę o nazwie "critical_alert" dla powiadomień wyzwolonych przez alerty o krytycznej ważności. Alternatywnie, możesz utworzyć odbiorcę jak "devops_team", aby kierować alerty do swojego zespołu DevOps.

Ustawienie nazwy receiver na "critical_alert" samo w sobie nie wyśle alertów. Powiązanie między alertami a odbiorcą jest dokonywane w konfiguracji routes opisanej poniżej.

Po zdefiniowaniu odbiorcy, będziesz musiał skonfigurować odpowiednie integracje powiadomień. Mogą to być e-maile, powiadomienia Slack/Mattermost, PagerDuty, Opsgenie, Webhook i inne.

Poniżej znajduje się przykład receiver o nazwie "critical_alert", który wysyła e-mail do dwóch użytkowników i wiadomość Slack do kanału #alerts:

receivers:
- name: "critical_alert"

  # Wysyłanie krytycznych alertów przez e-mail
  email_configs:
    - send_resolved: true
      to: "user@mycompany.com"

  # Wysyłanie krytycznych alertów do Slack lub Mattermost
  slack_configs:
    - send_resolved: true
      api_url: "<your Slack or Mattermost API URL>"
      channel: "#alerts"
      title: "{{ range .Alerts }}{{ .Annotations.summary }}\n{{ end }}"
      text: "{{ range .Alerts }}{{ .Annotations.description }}\n{{ end }}"

Możesz zdefiniować wielu odbiorców do obsługi różnych typów alertów. Na przykład, możesz mieć jednego dla alertów krytycznych, innego dla alertów błędów i jeszcze innego dla innych typów alertów.

Instancje Stackhero dla Prometheus zawierają dedykowany i prywatny serwer e-mail, który pozwala na wysyłanie nieograniczonej liczby alertów e-mail bez dodatkowych kosztów.

Po skonfigurowaniu odbiorców, musisz ustawić routes. Trasy informują Alert Manager, jak obsługiwać przychodzące alerty z Prometheus i gdzie je wysyłać (zazwyczaj do jednego z wcześniej skonfigurowanych odbiorców).

Poniżej znajduje się podstawowy przykład, który kieruje alerty o ważności "critical" do odbiorcy o nazwie "critical_alert":

route:
  routes:
    - match:
        severity: "critical"
      receiver: "critical_alert"

W pliku alert-manager.yml dostarczonym z Twoją instancją Stackhero dla Prometheus wstępnie skonfigurowaliśmy niektóre trasy. Aby zacząć otrzymywać alerty, wystarczy zaktualizować sekcje email_configs i/lub slack_configs z Twoimi szczegółami powiadomień.