Votre panier est vide!
Ansible Role : Grafana Prometheus Loki
Rôle Ansible pour déployer une stack de supervision complète ou des agents : double mode Server/Client, stack Grafana/Prometheus/Loki avec AlertManager, et agents cAdvisor/NodeExporter/Promtail pour la collecte des métriques et des logs. Compatible Debian 12/13 & Ubuntu 22.04/24.04
Description
📊 Déployez votre stack de supervision complète en quelques minutes !
Le rôle Ansible grafana_prometheus_loki déploie une stack de supervision et observabilité complète via Docker Compose. Ce rôle unifié peut fonctionner en mode Server (Grafana + Prometheus + Loki) ou en mode Client (cAdvisor + Node Exporter + Promtail).
✨ Fonctionnalités Clés
Mode Server (Stack de supervision)
- 📈 Prometheus : Collecte et stockage de métriques avec rétention configurable.
- 📝 Loki : Agrégation de logs façon « Prometheus pour les logs ».
- 📊 Grafana : Dashboards interactifs, alertes visuelles, et exploration des données.
- 🚨 AlertManager (optionnel) : Gestion des alertes avec notifications email et webhooks.
- 📤 Pushgateway (optionnel) : Réception de métriques push pour les jobs batch.
Mode Client (Exporters de métriques)
- 🐳 cAdvisor : Métriques des conteneurs Docker (CPU, mémoire, réseau).
- 💻 Node Exporter : Métriques système (CPU, mémoire, disque, réseau).
- 📋 Promtail : Envoi des logs vers Loki pour centralisation.
Caractéristiques communes
- 💻 Large Compatibilité d’OS : Déployez sur Debian 12/13 et Ubuntu 22.04/24.04 LTS.
- ⚙️ Hautement Personnalisable : Versions, ports, rétention, thèmes configurables via variables Ansible.
- 🔄 Idempotence : Exécutez le rôle plusieurs fois sans risque, seuls les changements sont appliqués.
- 🧪 Tests Molecule : 8 scénarios de tests automatisés (4 server + 4 client).
🏗️ Architecture Server/Client
⚙️ Configuration & Usage
Prérequis
- Système d’exploitation : Debian 12/13 ou Ubuntu 22.04/24.04.
- Ansible : Installé sur votre machine de contrôle.
- Docker : Docker doit être installé sur les serveurs cibles (via le rôle
devops_store.docker_engine). - Privilèges : Un utilisateur avec des droits
sudo(become: truedans votre playbook).
Exemple de Playbook – Mode Server (toutes les variables)
---
- hosts: monitoring_servers
become: true
vars:
# =============================================================================
# MODE D'UTILISATION
# =============================================================================
# "server" : Déploie Grafana + Prometheus + Loki
# "client" : Déploie cAdvisor + Node Exporter + Promtail
gpl_role_usage: "server"
# =============================================================================
# CHEMINS D'INSTALLATION
# =============================================================================
gpl_install_path: "/home/{{ ansible_user }}/grafana_prometheus_loki"
# =============================================================================
# ACTIVATION DES COMPOSANTS
# =============================================================================
gpl_enable_alertmanager: true
gpl_enable_pushgateway: true
# =============================================================================
# VERSIONS DES IMAGES DOCKER
# =============================================================================
grafana_version: "11.5.1"
prometheus_version: "v3.1.0"
loki_version: "3.3.2"
alertmanager_version: "v0.25.0"
pushgateway_version: "v1.10.0"
# =============================================================================
# PORTS EXPOSÉS
# =============================================================================
grafana_port: 3000
prometheus_port: 9090
loki_port: 3100
alertmanager_port: 9093
pushgateway_port: 9091
# =============================================================================
# CONFIGURATION GRAFANA
# =============================================================================
grafana_admin_password: "votre_mot_de_passe_securise"
grafana_theme: "dark" # light ou dark
grafana_viewers_can_edit: true # Permettre aux viewers d'éditer
grafana_disable_login_form: false # Désactiver le formulaire de login
grafana_url: "" # URL externe Grafana
grafana_domain: "" # Domaine Grafana
# =============================================================================
# CONFIGURATION PROMETHEUS
# =============================================================================
prometheus_retention_time: "30d" # Durée de rétention des données
# =============================================================================
# CONFIGURATION LOKI
# =============================================================================
loki_retention_enabled: false # Activer rétention automatique
loki_retention_period: "168h" # Période de rétention (7 jours)
loki_reject_old_samples: true # Rejeter les samples trop anciens
loki_reject_old_samples_max_age: "168h"
# =============================================================================
# CONFIGURATION SMTP (AlertManager & Grafana)
# =============================================================================
smtp_host: "smtp.example.com"
smtp_port: 587
smtp_username: "alertes@example.com"
smtp_password: "smtp_password"
smtp_from: "alertes@example.com"
smtp_to: "equipe-ops@example.com"
roles:
- role: devops_store.grafana_prometheus_loki
Exemple de Playbook – Mode Client (toutes les variables)
---
- hosts: app_servers
become: true
vars:
# =============================================================================
# MODE D'UTILISATION
# =============================================================================
gpl_role_usage: "client"
# =============================================================================
# CONFIGURATION GÉNÉRALE CLIENT
# =============================================================================
# État du rôle ('present' pour installer, 'absent' pour supprimer)
cadvisor_nodeexporter_promtail_state: present
# Chemin d'installation du client
cadvisor_nodeexporter_promtail_install_path: "/home/{{ ansible_user }}/cadvisor_nodeexporter_promtail"
# Chemin d'installation du serveur de monitoring (pour mise à jour prometheus.yml)
monitoring_server_install_path: "/home/{{ ansible_user }}/grafana_prometheus_loki"
# =============================================================================
# CONFIGURATION CADVISOR (Monitoring Conteneurs)
# =============================================================================
cadvisor_version: "v0.46.0"
cadvisor_port: 9200
# =============================================================================
# CONFIGURATION NODE EXPORTER (Monitoring Système)
# =============================================================================
node_exporter_version: "v1.5.0"
node_exporter_port: 9100
# =============================================================================
# CONFIGURATION PROMTAIL (Logs Aggregation)
# =============================================================================
promtail_version: "2.7.0"
promtail_port: 9080
promtail_log_path: "/var/log/*/*log" # Chemin des logs à ingérer
# =============================================================================
# CONFIGURATION SYSTEME DOCKER
# =============================================================================
# Propagation des mounts (rslave recommandé, rprivate pour CI/Docker-in-Docker)
cadvisor_mount_propagation: "rslave"
nodeexporter_mount_propagation: "rslave"
promtail_mount_propagation: "rslave"
# Chemins système (configurables pour CI/Mocking)
monitoring_host_rootfs: "/"
monitoring_docker_lib: "/var/lib/docker"
# =============================================================================
# EXTENSIONS PROMETHEUS
# =============================================================================
# Bloc de configuration supplémentaire pour prometheus.yml
prometheus_extra_monitoring_block: ""
roles:
- role: devops_store.grafana_prometheus_loki
Exemple d’Inventaire
[monitoring_servers]
monitor-01 ansible_host=192.168.1.50
[app_servers]
app-01 ansible_host=192.168.1.51 vm_name=app-01
app-02 ansible_host=192.168.1.52 vm_name=app-02
[all:vars]
ansible_user=ubuntu
monitoring_vm=192.168.1.50
Note importante : La variable vm_name doit être définie comme host_var pour chaque machine en mode client. Elle identifie la machine dans les configurations Prometheus.
Lancement
# Déployer le serveur de monitoring ansible-playbook -i inventaire playbook-server.yml # Déployer les exporters sur les machines ansible-playbook -i inventaire playbook-client.yml
🔬 Détails Techniques
Caractéristiques techniques
- Images Docker Officielles : Utilise les images officielles Grafana, Prometheus et Google.
- Réseau Docker Dédié : Tous les services communiquent via un réseau Docker bridge isolé.
- Idempotence Garantie : Handlers pour ne redémarrer qu’en cas de changement.
- Persistance des Données : Données Grafana, Prometheus et Loki persistées sur l’hôte.
- Tests Complets : Suite Molecule pour les 4 OS supportés (8 scénarios : 4 server + 4 client).
Accès aux Services après Déploiement
Mode Server :
- Grafana :
http://<IP>:3000(admin / mot de passe configuré) - Prometheus :
http://<IP>:9090 - AlertManager :
http://<IP>:9093 - Loki :
http://<IP>:3100 - Pushgateway :
http://<IP>:9091
Mode Client :
- Node Exporter :
http://<IP>:9100/metrics - cAdvisor :
http://<IP>:9200/metrics - Promtail :
http://<IP>:9080
📚 Documentation Opérationnelle
Ce rôle inclut une documentation complète dans le dossier docs/ :
- Guide Jour 1 (
docs/day1-guide.md) : Vérifications post-déploiement server/client, accès Grafana, premiers pas avec Prometheus et Loki. - Runbook Jour 2+ (
docs/day2-runbook.md) : Configuration AlertManager, création de dashboards, gestion de la rétention, ajout de targets, scénarios catastrophe et récupération.
👀 Voir la table des matières complète
- 🔧 Troubleshooting Courant : Target DOWN, datasource error, logs non visibles, alertes non reçues
- 🚨 Configuration AlertManager : Email, Slack, Microsoft Teams, règles d’alerte
- 📊 Gestion des Dashboards : Export/import, provisioning, dashboards recommandés
- 💾 Gestion du Stockage et Rétention : Rétention Prometheus, rétention Loki, nettoyage
- 🎯 Ajout de Nouveaux Targets : Targets Prometheus, File SD, sources Promtail
- 📝 Troubleshooting Promtail/Loki : Collecte logs, rate limit, requêtes lentes
- 🔴 Scénarios Catastrophe : Corruption TSDB, perte logs Loki, base Grafana corrompue
- 🔄 Upgrade et Migration : Mise à jour images, rollback
- 📈 Monitoring du Monitoring : Métriques internes, alertes méta
📦 Détails du Produit
- Nom du rôle :
devops_store.grafana_prometheus_loki - Cible OS : Debian (12/13), Ubuntu (22.04/24.04)
- Modes : Server (Grafana, Prometheus, Loki) et Client (cAdvisor, Node Exporter, Promtail)
- Dépendances : Docker requis
🛡️ Garantie de Qualité et Support
Trois durées de garantie sont disponibles : 3 mois, 1 an et 5 ans. Ces garanties incluent le support technique et les mises à jour du code pour les plateformes supportées.
N.B. : Le support du rôle se base sur le cycle de vie des OS pour lesquels il a été développé. Cela signifie que si un OS atteint sa date d’EOL durant la période de garantie, le support et les mises à jour du rôle s’arrêtent pour cet OS. A contrario, si une nouvelle version majeure d’un OS est publiée durant la période de garantie, le support et les mises à jour du rôle seront assurés pour cette nouvelle version.
🔑 Licence d’Utilisation
Trois niveaux de licence sont disponibles :
- Standard : Usage pour les projets internes de l’acheteur. Pas de redistribution, pas d’utilisation pour des clients tiers. Idéale pour les indépendants, PME gérant leur propre infra, passionnés.
- Entreprise : Inclut tous les droits Standard et permet d’utiliser le rôle pour configurer les serveurs de clients finaux. Droit d’intégration dans des produits et services vendus. Idéale pour les ESN, Agences Web, Infogérants (MSP), Consultants DevOps.
- Marque Blanche : Inclut tous les droits Entreprise avec l’autorisation exclusive de supprimer les mentions de l’auteur (attribution) pour présenter le code comme votre propre technologie. Idéale pour les grands Infogérants et éditeurs exigeant une image de marque unifiée sans trace de tiers.
Informations complémentaires
| Licence | Standard (Usage interne seulement), Entreprise (Usage interne et commercial), Marque Blanche (Revente sans attribution) |
|---|---|
| Support et mises à jour | 3 mois, 1 an, 5 ans |
Produits liés
-
Ansible Role : Docker Engine
Gratuit -
Ansible Role : Harbor Trivy
Plage de prix : 49,00 € à 1 199,00 € -
Ansible Role : Keycloak HA
Plage de prix : 49,00 € à 1 499,00 €





