opstree_devops.alertmanager

Rôle Ansible : osm_alertmanager

Alertmanager est un outil qui gère les alertes envoyées par Prometheus. Il reçoit l'alerte du serveur Prometheus et regroupe les alertes en fonction des étiquettes, puis il transmet l'alerte à différents récepteurs tels que Email, PagerDuty, Slack.

Alertmanager est configuré à l'aide d'options de ligne de commande et d'un fichier de configuration. Les options de ligne de commande configurent les paramètres système, tandis que le fichier de configuration contient des informations telles que les récepteurs et le routage.

Historique des Versions

Date Version Description Modifié Par
Mai 2020 v0.0.1 Ébauche Initiale Abhishek Dubey
Juillet 2020 v0.1.0 Ajout de l'Intégration de Slack, Google Chat Mahesh Kumar
Juin 2022 v0.1.1 Ajout du support pour les clusters, règles Alertmanager personnalisées, modèles, Intégration de AWS SNS, PagerDuty Ishaan Ambashta

Systèmes d'Exploitation Supportés

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

Dépendances

  • serveur prometheus
  • libselinux-python

Exigences

Il n'y a pas d'exigence particulière pour exécuter ce rôle. Ce rôle est indépendant de la plateforme pour centos 6 ou supérieur et ubuntu 18 ou supérieur. La seule dépendance pour centos 6 est libselinux-python, que nous avons également inclus. Les exigences de base sont :

  • Serveur CentOS/Ubuntu
  • Python doit être installé sur le serveur cible
  • Le port 9093 doit être ouvert sur votre serveur

Variables du Rôle

---
# fichier par défaut pour 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"

# Notification par Email
email_integration: "no"
sender_email: "[email protected]"
alertmanager_email: "[email protected]"
smtp_server: "smtp.gmail.com:587"

# Intégration Slack
slack_integration: "yes"
slack_webhook: "https://hooks.slack.com/services/T00000000/B00/XXXXXX"
slack_channel_name: "canal-d-alertes"

# Intégration 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: "nom-de-la-salle-google"
room_webhook: "webhook-de-la-salle-google-chat"

# Intégration PagerDuty
PagerDuty_integration: "no"
PagerDuty_channel_name: "canal-d-alertes-appel"
pagerduty_url: "https://events.pagerduty.com/v2/enqueue"

# Intégration SNS
sns_integration: "no"
sns_channel_name: "sns"
region: "us-east-1"

Vous pouvez définir n'importe quelle version de Prometheus ainsi que la version d'Alertmanager que vous souhaitez installer sur votre serveur.

Variables Obligatoires

Variable Valeur par Défaut Valeurs Possibles Description
alert_version "0.20.0" N'importe quelle version Alertmanager sera téléchargé depuis les versions github, donc vous devez définir la version
alertmanager_user alertmanager N'importe quel utilisateur Utilisateur du service Alertmanager
alertmanager_group alertmanager N'importe quel groupe Groupe de service Alertmanager
prometheus_user prometheus N'importe quel utilisateur Utilisateur du service Prometheus, propriétaire des règles spécifiques au nœud
prometheus_group prometheus N'importe quel groupe Groupe de service Prometheus, accordant des permissions au fichier des règles spécifiques au nœud

Variables Optionnelles

Variable Valeur par Défaut Valeurs Possibles Description
base_url https://github.com/prometheus/alertmanager/releases/download Base url du lien de téléchargement d'Alertmanager URL de base du lien de téléchargement d'Alertmanager
alertmanager_dir alertmanager-{{ version }}.linux-amd64 Nom du répertoire d'Alertmanager Répertoire d'Alertmanager après extraction
download_url {{ base_url }}/v{{ version }}/{{ alertmanager_dir }}.tar.gz Lien de téléchargement d'Alertmanager URL Github pour télécharger le binaire d'Alertmanager
binary_path /usr/local/bin N'importe quel chemin Chemin du binaire d'Alertmanager
email_integration "no" "yes"/"no" Activer/Désactiver l'intégration Email avec Alertmanager
sender_email "send.test@example.com" N'importe quelle adresse email Adresse email utilisée pour envoyer des alertes
alertmanager_email "alertmanager.test@example.com" N'importe quelle adresse email Adresse email d'Alertmanager
smtp_server "smtp.gmail.com:587" adresse du serveur smtp avec port Serveur smtp utilisé par Alertmanager
slack_integration "no" "yes"/"no" Activer/Désactiver l'intégration Slack avec Alertmanager
slack_webhook "https://hooks.slack.com/services/T00000000/B00/XXXXXX" N'importe quel webhook de canal Webhook de canal Slack utilisé pour intégrer le canal avec Alertmanager
slack_channel_name "canal-d-alertes" N'importe quel nom de canal Slack Nom du canal Slack utilisé pour envoyer des alertes
google_chat_integration "yes" "yes"/"no" Activer/Désactiver l'intégration Google Chat avec Alertmanager
calert_home "/opt/calert" Chemin de la maison du service Calert Maison du service Calert où le binaire de Calert et les fichiers de configuration seront
calert_base_url "https://github.com/mr-karan/calert/releases/download" Lien de téléchargement du service Calert URL du binaire Calert
calert_url "{{ calert_base_url }}/v1.2.1/calert_1.2.1_linux_amd64.tar.gz" Lien de téléchargement du service Calert URL Github pour télécharger le binaire Calert
google_chat_room "nom-de-la-salle-google" N'importe quelle salle Google Chat Salle Google Chat utilisée pour envoyer des alertes
room_webhook "webhook-de-la-salle-google-chat" Webhook de n'importe quelle salle Google Chat Webhook de la salle Google Chat utilisé pour intégrer avec le service Calert
rules_file "node_exporter.rules" Fichier par défaut pour les règles Fichier des règles pour définir les alertes
templates "email.tmpl" Modèle par défaut Fichier modèle pour le format des alertes
PagerDuty_integration "no" "yes"/"no" Activer/Désactiver l'intégration PagerDuty avec Alertmanager
PagerDuty_channel_name "canal-d-alertes-appel" N'importe quel nom de canal PagerDuty Nom du canal PagerDuty utilisé pour envoyer des alertes
pagerduty_url "https://events.pagerduty.com/v2/enqueue" URL spécifiée de PagerDuty URL de PagerDuty
sns_integration "no" "yes"/"no" Activer/Désactiver l'intégration SNS avec Alertmanager
sns_channel_name "sns" N'importe quel nom de canal AWS SNS Nom de canal SNS utilisé pour envoyer des alertes à AWS SNS
region "us-east-1" n'importe quelle région pour sns région vers laquelle envoyer les alertes

Exemple de Playbook

Voici un exemple de playbook principal

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

Ici, nous utilisons root comme utilisateur mais vous pouvez utiliser un utilisateur différent. Pour cela, il vous suffit de définir la valeur "become" sur true. Quelque chose comme ça :

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

Exemple d'Inventaire

Pour l'inventaire, vous pouvez créer un fichier d'hôtes dans lequel vous pouvez définir l'IP de votre serveur, par exemple :

[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

Remarque : Veuillez également ajouter l'IP du serveur Prometheus. La configuration d'Alert Manager sera automatiquement ajoutée dans le fichier prometheus.yml.

Vous pouvez simplement utiliser ce rôle avec cette commande :

ansible-playbook -i hosts site.yml

Vous pouvez ajouter plusieurs fichiers de règles et de modèles en une seule fois en passant des variables supplémentaires ou un fichier de variables supplémentaires, par exemple :

En passant des Variables Supplémentaires

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

En passant un Fichier de Variables Supplémentaires

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

Remarque :

  1. Vous devez d'abord déplacer vos modèles ou fichiers de règles personnalisés dans le dossier osm_alertmanager/files.

  2. Le fichier de variables supplémentaires doit être au format json, par exemple :

Fichier de variables supplémentaires - extra_vars.json

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

Structure du Répertoire du Rôle

Voici la structure du répertoire du rôle :

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

Après l'installation réussie d'alertmanager, vous pouvez naviguer sur l'URL d'alertmanager et voir l'interface web. web

Licence

BSD

Références

Informations sur l'Auteur

Ce rôle est écrit et maintenu par Abhishek Dubey. Si vous avez des questions ou des suggestions, n'hésitez pas à contacter les identifiants ci-dessous.

Abhishek Dubey
Ishaan Ambashta

À propos du projet

Alertmanager is tool that handles alerts sent by Prometheus.

Installer
ansible-galaxy install opstree_devops.alertmanager
Licence
Unknown
Téléchargements
81
Propriétaire