[3] Prometheus – Ustawienie alarmu/powiadomienia (email)

9 lutego 2022 Wyłączono przez Adam [zicherka] Nogły

To są ustawienia powiadomień alarmowych w Prometheusie. Istnieje wiele sposobów otrzymywania alertów, takich jak Slack, HipChat, WeChat i inne, jednak w tym przykładzie skonfigurujemy alerty z powiadamianiem na e-mail.

Więcej informacji na temat alertów można znaleźć w oficjalnych dokumentach: https://prometheus.io/docs/alerting/configuration.

[1] Do powiadamiania e-mailem potrzebny jest serwer SMTP. W tym przykładzie opiera się na środowisku, w którym serwer SMTP działa na hoście lokalnym.

[2] Zainstaluj Alertmanager na hoście serwera Prometheus.

[root@vlsr01 ~]# dnf install alertmanager

[3] Skonfiguruj Prometeusa do wysyłania powiadomień na email.

[root@vlsr01 ~]# mv /etc/prometheus/alertmanager.yml /etc/prometheus/alertmanager.yml.org

[root@vlsr01 ~]# mcedit /etc/prometheus/alertmanager.yml
# stwórz nowy
global:
# serwer SMTP
  smtp_smarthost: 'localhost:25'
# Wymagaj lub nie TLS
  smtp_require_tls: false
# adres email nadawcy powiadomienia
smtp_from: 'Alertmanager <user01@zicher.lab>'
# jeżeli wymagane jest uwierzytelnienie SMTP na serwerze SMTP, ustaw jak poniżej
# smtp_auth_username: 'alertmanager'
# smtp_auth_password: 'TajneHasło'
route:
# nazwa odbiorcy wiadomości
  receiver: 'email-notice'
# definicja grup
  group_by: ['alertname', 'Service', 'Stage', 'Role']
  group_wait:      30s
  group_interval:  5m
  repeat_interval: 4h
receivers:
- name: 'email-notice'
  email_configs:
# adres email odbiorcy
  - to: user01@zicher.lab

# skonfiguruj reguły alertu
[root@vlsr01 ~]# mcedit /etc/prometheus/alert_rules.yml
#stwórz nowy
#przykładowo dla Pracy/Wyłączenia node-exporter'a
groups:
- name: Instances
  rules:
  - alert: InstanceDown
    expr: up == 0
    for: 5m
    labels:
      severity: critical
    annotations:
      description: '{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 minutes.'
      summary: 'Instance {{ $labels.instance }} down'

[root@vlsr01 ~]# mcedit /etc/prometheus/prometheus.yml
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # linia 12: zmień na (Alertmanager Host):(Port)
      - 'localhost:9093'
# linia 18: dodaj reguły alerty utworzone powyżej
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"
  - "alert_rules.yml"

[root@vlsr01 ~]# systemctl restart prometheus alertmanager
[root@vlsr01 ~]# systemctl enable alertmanager

[4] Jeżeli [node-exporter], nie odpowiada – poniższy email zostanie wysłany (mail jest w formacie HTML).

[user01@vlsr01 ~]$ mail
>U 12 Alertmanager          Tue Feb  8 20:35 233/13173 "[FIRING:2] InstanceDown (vlsr"
& 12
Message 12:
From alertmanager@zicher.lab Tue Feb  8 20:35:12 2022
Return-Path: <alertmanager@zicher.lab>
X-Original-To: user01@zicher.lab
Delivered-To: user01@zicher.lab
X-Virus-Scanned: amavisd-new at zicher.lab
From: Alertmanager <alertmanager@zicher.lab>
Subject: [FIRING:2] InstanceDown (vlsr02.zicher.lab:9100 critical)
To: user01@zicher.lab
Date: Tue, 08 Feb 2022 20:34:55 +0100
Content-Type: multipart/alternative;  boundary=8977c8a7a83812efe3f1e3f7353544bddb4fbed48
aee194f1c70a9e8cfc6
Status: RO
Part 1:
Content-Type: text/html; charset=UTF-8