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:

  1. Sie müssen Ihre benutzerdefinierten Vorlagen oder Regeldateien zuerst in diesen osm_alertmanager/files-Ordner verschieben.

  2. 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.

Abhishek Dubey
Ishaan Ambashta

Über das Projekt

Alertmanager is tool that handles alerts sent by Prometheus.

Installieren
ansible-galaxy install opstree_devops.alertmanager
GitHub Repository
Lizenz
Unknown
Downloads
81
Besitzer