Ansible Role : Grafana Prometheus Loki

Plage de prix : 49,00 € à 1 299,00 €

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

Architecture Monitoring : App Servers (Node Exporter + cAdvisor + Promtail) → Prometheus + Loki → Grafana Dashboards

 


 

⚙️ 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: true dans 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
    1. 🔧 Troubleshooting Courant : Target DOWN, datasource error, logs non visibles, alertes non reçues
    2. 🚨 Configuration AlertManager : Email, Slack, Microsoft Teams, règles d’alerte
    3. 📊 Gestion des Dashboards : Export/import, provisioning, dashboards recommandés
    4. 💾 Gestion du Stockage et Rétention : Rétention Prometheus, rétention Loki, nettoyage
    5. 🎯 Ajout de Nouveaux Targets : Targets Prometheus, File SD, sources Promtail
    6. 📝 Troubleshooting Promtail/Loki : Collecte logs, rate limit, requêtes lentes
    7. 🔴 Scénarios Catastrophe : Corruption TSDB, perte logs Loki, base Grafana corrompue
    8. 🔄 Upgrade et Migration : Mise à jour images, rollback
    9. 📈 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