opstree_devops.alertmanager
Ansible Rolle: osm_alertmanager
Alertmanager ist ein Tool, das Warnmeldungen von Prometheus verwaltet. Es erhält die Warnung vom Prometheus-Server und gruppiert die Warnungen basierend auf Labels, bevor es die Warnung an verschiedene Empfänger wie E-Mail, PagerDuty und Slack weiterleitet.
Alertmanager wird über Befehlszeilenparameter und eine Konfigurationsdatei konfiguriert. Während die Befehlszeile Systemparameter konfiguriert, enthält die Konfigurationsdatei Informationen zu Empfängern und Routing.
Versionsgeschichte
Datum | Version | Beschreibung | Geändert von |
---|---|---|---|
Mai 2020 | v0.0.1 | Erster Entwurf | Abhishek Dubey |
Juli 2020 | v0.1.0 | Integration von Slack, Google Chat hinzugefügt | Mahesh Kumar |
Juni 2022 | v0.1.1 | Unterstützung für Cluster, benutzerdefinierte Alertmanager-Regeln, Vorlagen und Integration von AWS SNS, PagerDuty hinzugefügt | Ishaan Ambashta |
Unterstützte Betriebssysteme
- CentOS:7
- CentOS:6
- Ubuntu:bionic
- Ubuntu:focal
Abhängigkeiten
- prometheus-server
- libselinux-python
Anforderungen
Für die Ausführung dieser Rolle sind keine besonderen Anforderungen erforderlich. Diese Rolle ist plattformunabhängig für CentOS 6 oder höher und Ubuntu 18 oder höher. Die einzige Abhängigkeit für CentOS 6 ist libselinux-python, die ebenfalls enthalten ist. Die grundlegenden Anforderungen sind:-
- CentOS/Ubuntu-Server
- Python sollte auf dem Zielserver installiert sein
- Port 9093 sollte auf Ihrem Server geöffnet sein
Rollenvariablen
---
# Standarddatei für Alertmanager
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"
# E-Mail-Benachrichtigung
email_integration: "nein"
sender_email: "[email protected]"
alertmanager_email: "[email protected]"
smtp_server: "smtp.gmail.com:587"
# Slack-Integration
slack_integration: "ja"
slack_webhook: "https://hooks.slack.com/services/T00000000/B00/XXXXXX"
slack_channel_name: "alerting-channel"
# Google Chat-Integration
google_chat_integration: "nein"
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"
# PagerDuty-Integration
PagerDuty_integration: "nein"
PagerDuty_channel_name: "call-alerting-channel"
pagerduty_url: "https://events.pagerduty.com/v2/enqueue"
# SNS-Integration
sns_integration: "nein"
sns_channel_name: "sns"
region: "us-east-1"
Sie können jede Prometheus-Version sowie jede Alertmanager-Version definieren, die Sie auf Ihrem Server installieren möchten.
Obligatorische Variablen
Variable | Standardwert | Mögliche Werte | Beschreibung |
---|---|---|---|
alert_version | "0.20.0" | Jede Version | Alertmanager wird von GitHub-Releases heruntergeladen, daher müssen Sie die Version angeben |
alertmanager_user | alertmanager | Jeder Benutzer | Benutzer des Alertmanager-Dienstes |
alertmanager_group | alertmanager | Jede Gruppe | Gruppe des Alertmanager-Dienstes |
prometheus_user | prometheus | Jeder Benutzer | Benutzer des Prometheus-Dienstes, Besitzer der node-spezifischen Regeln |
prometheus_group | prometheus | Jede Gruppe | Gruppe des Prometheus-Dienstes, Berechtigungen für node-spezifische Regeldateien einrichten |
Optionale Variablen
Variable | Standardwert | Mögliche Werte | Beschreibung |
---|---|---|---|
base_url | https://github.com/prometheus/alertmanager/releases/download | Basis-URL des Download-Links für Alertmanager | Basis-URL des Download-Links für Alertmanager |
alertmanager_dir | alertmanager-{{ version }}.linux-amd64 | Alertmanager Verzeichnisname | Alertmanager-Verzeichnis nach dem Entpacken |
download_url | {{ base_url }}/v{{ version }}/{{ alertmanager_dir }}.tar.gz | Downloadlink für Alertmanager | GitHub-URL zum Herunterladen der Alertmanager-Binärdatei |
binary_path | /usr/local/bin | Jeder Pfad | Pfad zur Alertmanager-Binärdatei |
email_integration | "nein" | "ja"/"nein" | E-Mail-Integration mit Alertmanager aktivieren/deaktivieren |
sender_email | "send.test@example.com" | Jede E-Mail-Adresse | E-Mail-Adresse zum Senden von Warnungen |
alertmanager_email | "alertmanager.test@example.com" | Jede E-Mail-Adresse | E-Mail-Adresse des Alertmanager |
smtp_server | "smtp.gmail.com:587" | SMTP-Serveradresse mit Port | E-Mail-SMTP-Server, der vom Alertmanager verwendet wird |
slack_integration | "nein" | "ja"/"nein" | Slack-Integration mit Alertmanager aktivieren/deaktivieren |
slack_webhook | "https://hooks.slack.com/services/T00000000/B00/XXXXXX" | Webhook des Kanals | Webhook des Slack-Kanals zur Integration mit Alertmanager |
slack_channel_name | "alerting-channel" | Jeder Slack-Kanalname | Slack-Kanalname, um Warnungen zu senden |
google_chat_integration | "nein" | "ja"/"nein" | Google Chat-Integration mit Alertmanager aktivieren/deaktivieren |
calert_home | "/opt/calert" | Pfad zum Calert-Dienst | Calert-Dienst-Home, wo Calert-Dienst-Binärdateien und Konfigurationsdateien sein werden |
calert_base_url | "https://github.com/mr-karan/calert/releases/download" | Calert-Dienst-Download-Link | URL für Calert-Binärdateien |
calert_url | "{{ calert_base_url }}/v1.2.1/calert_1.2.1_linux_amd64.tar.gz" | Calert-Dienst-Download-Link | GitHub-URL zum Herunterladen der Calert-Binärdatei |
google_chat_room | "google-room-name" | Jeder Google-Chat-Raum | Google-Chat-Raum zur Sendung von Warnungen |
room_webhook | "google-chat-room-webhook" | Webhook des Google-Chat-Raums | Webhook des Google-Chat-Raums zur Integration mit Calert-Dienst |
rules_file | "node_exporter.rules" | Standarddatei für Regeln | Regeln für das Setzen von Warnungen |
templates | "email.tmpl" | Standardvorlage | Vorlagendatei für das Format der Warnungen |
PagerDuty_integration | "nein" | "ja"/"nein" | PagerDuty-Integration mit Alertmanager aktivieren/deaktivieren |
PagerDuty_channel_name | "call-alerting-channel" | Jeder PagerDuty-Kanalname | PagerDuty-Kanalname zur Sendung von Warnungen |
pagerduty_url | "https://events.pagerduty.com/v2/enqueue" | Angegebene URL von PagerDuty | URL von PagerDuty |
sns_integration | "nein" | "ja"/"nein" | SNS-Integration mit Alertmanager aktivieren/deaktivieren |
sns_channel_name | "sns" | Jeder AWS-SNS-Kanalname | SNS-Kanalname zur Sendung von Warnungen an AWS SNS |
region | "us-east-1" | Jede Region für SNS | Region, an die Warnungen gesendet werden |
Beispiel-Playbook
Hier ist ein Beispiel für das Haupt-Playbook
---
- hosts: alertmanager
roles:
- role: alertmanager
Hier verwenden wir root als Benutzer, aber Sie können einen anderen Benutzer verwenden. Dafür müssen Sie nur den Wert „become“ auf "ja" setzen. So etwas wie dies:-
---
- hosts: alertmanager
roles:
- role: alertmanager
become: yes
Beispiel Inventory
Für das Inventory können Sie eine Host-Datei erstellen, in der Sie die IP Ihres Servers definieren. Zum Beispiel: --
[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
Hinweis: Bitte fügen Sie auch die IPs des Prometheus-Servers hinzu. Die Konfiguration des Alertmanagers wird automatisch in der prometheus.yml-Datei hinzugefügt.
Sie können diese Rolle einfach mit folgendem Befehl verwenden:
ansible-playbook -i hosts site.yml
Sie können mehrere Regeln und Vorlagendateien auf einmal hinzufügen, indem Sie zusätzliche Variablen oder eine JSON-Datei für zusätzliche Variablen übergeben, zum Beispiel :-
Durch Übergeben zusätzlicher Variablen
ansible-playbook -i hosts site.yml --extra-vars='{"rules_file": ["rule_file1","rule_file2"], "templates": ["file1.tmpl", "file2.tmpl"]}'
Durch Übergeben einer Datei für zusätzliche Variablen
ansible-playbook -i hosts site.yml --extra-vars "@extra_vars.json"
Hinweis:
Sie müssen Ihre benutzerdefinierten Vorlagen oder Regeldateien zuerst in diesen osm_alertmanager/files-Ordner verschieben.
Die Datei mit den zusätzlichen Variablen sollte im JSON-Format vorliegen, zum Beispiel:-
Datei mit zusätzlichen Variablen - extra_vars.json
{
"rules_file": "rule_file1",
"templates": "file2.tmpl"
}
Verzeichnisstruktur der Rolle
Dies ist die Verzeichnisstruktur der Rolle:-
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
Nach erfolgreicher Installation des Alertmanagers können Sie die Alertmanager-URL aufrufen und die Weboberfläche anzeigen.
Lizenz
BSD
Referenzen
Autoreninformation
Diese Rolle wurde von [Abhishek Dubey] (https://gitlab.com/abhishek-dubey) geschrieben und gepflegt. Wenn Sie Fragen oder Vorschläge haben, können Sie sich gerne an die folgenden Adressen wenden.
Alertmanager is tool that handles alerts sent by Prometheus.
ansible-galaxy install opstree_devops.alertmanager