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:
Musisz najpierw przenieść swoje niestandardowe pliki szablonów lub reguł do folderu osm_alertmanager/files.
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
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.
Alertmanager is tool that handles alerts sent by Prometheus.
ansible-galaxy install opstree_devops.alertmanager