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 :
Vous devez d'abord déplacer vos modèles ou fichiers de règles personnalisés dans le dossier osm_alertmanager/files.
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.
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.
Alertmanager is tool that handles alerts sent by Prometheus.
ansible-galaxy install opstree_devops.alertmanager