opstree_devops.alertmanager

Rola Ansible: osm_alertmanager

Alertmanager to narzędzie, które obsługuje powiadomienia wysyłane przez Prometheus. Odbiera alerty z serwera Prometheus i grupuje je na podstawie etykiet, a następnie przekazuje do różnych odbiorców, takich jak e-mail, PagerDuty, Slack.

Alertmanager jest konfigurowany za pomocą flag wiersza poleceń oraz pliku konfiguracyjnego. Flagi wiersza poleceń konfigurowane są do systemu, natomiast plik konfiguracyjny zawiera informacje o odbiorcach i routingu.

Historia wersji

Data Wersja Opis Zmodyfikowane przez
Maj 2020 v0.0.1 Wstępny szkic Abhishek Dubey
Lipiec 2020 v0.1.0 Dodano integrację z Slackiem, Google Chat Mahesh Kumar
Czerwiec 2022 v0.1.1 Dodano wsparcie dla klastrów, niestandardowych reguł alertmanagera, szablonów, integracji z AWS SNS, PagerDuty Ishaan Ambashta

Obsługiwane systemy operacyjne

  • CentOS:7
  • CentOS:6
  • Ubuntu:bionic
  • Ubuntu:focal

Zależności

  • prometheus-server
  • libselinux-python

Wymagania

Nie ma specjalnych wymagań do uruchomienia tej roli. Rola jest niezależna od platformy dla CentOS 6 lub nowszego oraz Ubuntu 18 lub nowszego. Jedyną zależnością dla CentOS 6 jest libselinux-python, co również zostało uwzględnione. Podstawowe wymagania to:

  • Serwer CentOS/Ubuntu
  • Python powinien być zainstalowany na docelowym serwerze
  • Port 9093 powinien być otwarty na Twoim serwerze

Zmienne roli

---
# plik domyślny dla alertmanagera
alert_version: "0.20.0"
base_url: "https://github.com/prometheus/alertmanager/releases/download"
alertmanager_dir: "alertmanager-{{ version }}.linux-amd64"
download_url: "{{ base_url }}/v{{ version }}/{{ alertmanager_dir }}.tar.gz"
alertmanager_user: "alertmanager"
alertmanager_group: "alertmanager"
prometheus_user: "prometheus"
prometheus_group: "prometheus"
binary_path: "/usr/local/bin"

# Powiadomienia e-mail
email_integration: "no"
sender_email: "[email protected]"
alertmanager_email: "[email protected]"
smtp_server: "smtp.gmail.com:587"

# Integracja z Slackiem
slack_integration: "yes"
slack_webhook: "https://hooks.slack.com/services/T00000000/B00/XXXXXX"
slack_channel_name: "alerting-channel"

# Integracja z Google Chat
google_chat_integration: "no"
calert_home: "/opt/calert"
calert_base_url: "https://github.com/mr-karan/calert/releases/download"
calert_url: "{{ calert_base_url }}/v1.2.1/calert_1.2.1_linux_amd64.tar.gz"
google_chat_room: "google-room-name"
room_webhook: "google-chat-room-webhook"

# Integracja z PagerDuty
PagerDuty_integration: "no"
PagerDuty_channel_name: "call-alerting-channel"
pagerduty_url: "https://events.pagerduty.com/v2/enqueue"

# Integracja z SNS
sns_integration: "no"
sns_channel_name: "sns"
region: "us-east-1"

Możesz określić dowolną wersję Prometheus, jak również alertmanagera, którą chcesz zainstalować na swoim serwerze.

Wymagane zmienne

Zmienna Wartość domyślna Możliwe wartości Opis
alert_version "0.20.0" Dowolna wersja Alertmanager będzie pobierany z wydania GitHub, więc musisz określić wersję
alertmanager_user alertmanager Dowolny użytkownik Użytkownik usługi Alertmanagera
alertmanager_group alertmanager Dowolna grupa Grupa usługi Alertmanagera
prometheus_user prometheus Dowolny użytkownik Użytkownik usługi Prometheus, właściciel reguł specyficznych dla węzła
prometheus_group prometheus Dowolna grupa Grupa usługi Prometheus, przyznaje uprawnienia do pliku reguł specyficznych dla węzła

Opcjonalne zmienne

Zmienna Wartość domyślna Możliwe wartości Opis
base_url https://github.com/prometheus/alertmanager/releases/download Podstawowy adres URL do pobrania Alertmanagera Adres URL do pobrania Alertmanagera
alertmanager_dir alertmanager-{{ version }}.linux-amd64 Nazwa katalogu Alertmanagera Katalog Alertmanagera po ekstrakcji
download_url {{ base_url }}/v{{ version }}/{{ alertmanager_dir }}.tar.gz Adres URL do pobrania Alertmanagera Adres URL GitHub do pobrania pliku binarnego Alertmanagera
binary_path /usr/local/bin Dowolna ścieżka Ścieżka do pliku binarnego Alertmanagera
email_integration "no" "yes"/"no" Włącz/wyłącz integrację e-mail z Alertmanagerem
sender_email "send.test@example.com" Dowolny adres e-mail Adres e-mail używany do wysyłania alertów
alertmanager_email "alertmanager.test@example.com" Dowolny adres e-mail Adres e-mail Alertmanagera
smtp_server "smtp.gmail.com:587" adres serwera SMTP z portem Serwer SMTP używany przez Alertmanager
slack_integration "no" "yes"/"no" Włącz/wyłącz integrację Slack z Alertmanagerem
slack_webhook "https://hooks.slack.com/services/T00000000/B00/XXXXXX" Dowolny webhook kanałowy Webhook kanału Slack używany do integracji z Alertmanagerem
slack_channel_name "alerting-channel" Dowolna nazwa kanału Slack Nazwa kanału Slack używana do wysyłania alertów
google_chat_integration "no" "yes"/"no" Włącz/wyłącz integrację Google Chat z Alertmanagerem
calert_home "/opt/calert" Ścieżka domowa usługi Calert Katalog domowy usługi Calert, gdzie będą pliki binarne i konfiguracyjne
calert_base_url "https://github.com/mr-karan/calert/releases/download" Adres URL do pobrania usługi Calert Adres URL do pobrania plików binarnych Calert
calert_url "{{ calert_base_url }}/v1.2.1/calert_1.2.1_linux_amd64.tar.gz" Adres URL do pobrania usługi Calert Adres URL GitHub do pobrania pliku binarnego Calert
google_chat_room "google-room-name" Dowolny pokój Google Chat Pokój Google Chat używany do wysyłania alertów
room_webhook "google-chat-room-webhook" Dowolny webhook pokoju Google Chat Webhook pokoju Google Chat używany do integracji z usługą Calert
rules_file "node_exporter.rules" Domyślny plik dla reguł Plik reguł do ustawienia alertów
templates "email.tmpl" Domyślny szablon Plik szablonu dla formatu alertów
PagerDuty_integration "no" "yes"/"no" Włącz/wyłącz integrację PagerDuty z Alertmanagerem
PagerDuty_channel_name "call-alerting-channel" Dowolna nazwa kanału PagerDuty Nazwa kanału PagerDuty używana do wysyłania alertów
pagerduty_url "https://events.pagerduty.com/v2/enqueue" Określony adres URL PagerDuty Adres URL PagerDuty
sns_integration "no" "yes"/"no" Włącz/wyłącz integrację SNS z Alertmanagerem
sns_channel_name "sns" Dowolna nazwa kanału AWS SNS Nazwa kanału SNS używana do wysyłania alertów do AWS SNS
region "us-east-1" Dowolny region dla SNS Region, do którego są wysyłane alerty

Przykład playbooka

Oto przykład głównego playbooka

---
- hosts: alertmanager
  roles:
    - role: alertmanager

Tutaj używamy użytkownika root, ale możesz użyć innego użytkownika. W tym celu wystarczy ustawić wartość become na true. Przykład:

---
- hosts: alertmanager
  roles:
    - role: alertmanager
      become: yes

Przykład inwentarza

Dla inwentarza możesz stworzyć plik hostów, w którym zdefiniujesz adresy IP swojego serwera. Na przykład:

[alertmanager]
10.1.1.100  ansible_user=ubuntu ansible_ssh_private_key_file=server1.pem

[prometheus]
10.1.1.100  ansible_user=ubuntu ansible_ssh_private_key_file=server1.pem

Uwaga: Proszę dodać również adresy IP serwera Prometheus. Dodatkowo, konfiguracja Alert Managera zostanie automatycznie dodana do pliku prometheus.yml.

Możesz użyć tej roli, wykonując ten polecenie:

ansible-playbook -i hosts site.yml

Możesz dodać wiele reguł i plików szablonów w jednym kroku, przekazując dodatkowe zmienne lub plik z dodatkowymi zmiennymi, na przykład:

Przez przekazywanie dodatkowych zmiennych

ansible-playbook -i hosts site.yml --extra-vars='{"rules_file": ["rule_file1","rule_file2"], "templates": ["file1.tmpl", "file2.tmpl"]}'

Przez przekazywanie pliku z dodatkowymi zmiennymi

ansible-playbook -i hosts site.yml --extra-vars "@extra_vars.json"

Uwaga:

  1. Musisz najpierw przenieść swoje niestandardowe pliki szablonów lub reguł do folderu osm_alertmanager/files.

  2. Plik z dodatkowymi zmiennymi powinien być w formacie JSON, na przykład:

Plik z dodatkowymi zmiennymi - extra_vars.json

{
    "rules_file": "rule_file1", 
    "templates": "file2.tmpl"
}

Struktura katalogów roli

Oto struktura katalogów roli:

osm_alertmanager
├── defaults
│   └── main.yml
├── files
│   ├── alertmanager.init
│   ├── email.tmpl
|   ├── sns.tmpl
|   ├── slack_notification.tmpl
│   ├── google_chat_calert.tmpl
│   ├── node_exporter.rules
│   ├── mysql_exporter.rules
│   ├── telegraf_kafka.rules
│   └── telegraf_node.rules
├── handlers
│   └── main.yml
├── README.md
├── site.yml
├── tasks
│   ├── calert.yml
│   ├── debian.yml
│   ├── main.yml
│   ├── prerequisites.yml
│   └── redhat.yml
└── templates
    ├── alertmanager.service.j2
    ├── alertmanager.yml.j2
    ├── calert.service.j2
    └── calert.toml.j2

Po pomyślnej instalacji alertmanagera możesz przeglądać adres URL alertmanagera i zobaczyć interfejs webowy web

Licencja

BSD

Odniesienia

Informacje o autorze

Ta rola została napisana i jest utrzymywana przez [Abhishek Dubey] (https://gitlab.com/abhishek-dubey). Jeśli masz jakieś pytania lub sugestie, skontaktuj się z poniższymi osobami.

Abhishek Dubey
Ishaan Ambashta

O projekcie

Alertmanager is tool that handles alerts sent by Prometheus.

Zainstaluj
ansible-galaxy install opstree_devops.alertmanager
Licencja
Unknown
Pobrania
81
Właściciel