Aller au contenu

Stack de référence

Prometheus, Grafana et Alertmanager : architecture, configuration et alternatives.


Vue d'ensemble

graph TD
    A["Applications\n& services"] -- "expose /metrics" --> P["Prometheus\nScrape + TSDB"]
    I["Infra / OS"] -- "node_exporter" --> P
    P -- "PromQL" --> G["Grafana\nDashboards"]
    P -- "regles d'alerte" --> AM["Alertmanager\nRouting"]
    AM --> S["Slack"]
    AM --> PD["PagerDuty"]
    AM --> EM["Email"]
    G --> U["Utilisateurs\n& on-call"]

Prometheus

Prometheus est le standard de facto pour la collecte de métriques dans les environnements cloud-native.

Architecture

Composant Rôle
Scraper Collecte les métriques par pull HTTP sur /metrics
TSDB Stockage time series local sur disque
PromQL Langage de requête pour agregations et alertes
Service Discovery Découverte dynamique des cibles (Kubernetes, Consul, DNS)
Pushgateway Reception de métriques pour les batchs éphémères

Service discovery

Plutôt que de configurer manuellement chaque cible, Prometheus s'intégré avec :

  • Kubernetes (découverte automatique des pods et services)
  • Consul (catalogue de services)
  • DNS (SRV records)
  • EC2, GCE, Azure (APIs cloud)

Rétention et stockage

La rétention par défaut est 15 jours. Pour des horizons longs, Prometheus ne scale pas seul : utilisez du remote_write vers un stockage distant.

Prometheus ne scale pas seul

Pour des volumes importants ou une rétention longue, Prometheus seul atteint ses limites. VictoriaMetrics, Thanos ou Mimir permettent de scaler horizontalement et d'étendre la rétention sans dégrader les performances.


Grafana

Grafana est le frontend de visualisation de référence, compatible avec de nombreuses datasources.

Fonctionnalités clés

Fonctionnalité Description
Multi-datasources Prometheus, Loki, Elasticsearch, Postgres, Jaeger...
Dashboards as code Export JSON, provisioning par fichier ou GitOps
Alerting unifie Règles d'alerte sur toutes les datasources
Variables de template Dashboards dynamiques (filtrer par environnement)
Annotations Marquer les déploiements sur les graphes

Dashboards as code

Les dashboards peuvent être versionnes en JSON dans un dépôt Git et provisionnes automatiquement au démarrage. Evite la dérivé entre environnements.


Alertmanager

Alertmanager prend en charge le routing, la deduplication et les silences des alertes issues de Prometheus.

Concepts clés

Concept Description
Routing tree Arbre de décision : quelle alerte va ou
Grouping Regrouper plusieurs alertes similaires en une notification
Inhibition Supprimer des alertes secondaires si une alerte parente est active
Silences Bloquer des alertes pendant une maintenance planifiee
Receivers Destinations : Slack, PagerDuty, email, webhook

Exemple de routing

Un routing typique :

  • Alertes severity=critical → PagerDuty astreinte
  • Alertes severity=warning → Slack #alerts-prod
  • Alertes team=infra → Slack #alerts-infra
  • Alertes hors heures ouvrables + warning → email digest

Alternatives et complementaires

Outil Positionnement Points forts
Datadog SaaS tout-en-un Facilite d'installation, APM intégré, coûts élevés
Zabbix On-premise historique Monitoring réseau/SNMP, CMDB intégré
VictoriaMetrics Remplacement Prometheus Meilleure compression, PromQL compatible, moins de RAM
Mimir (Grafana) Prometheus distribué Haute disponibilité, multi-tenant
Thanos Fédération Prometheus Requêtes globales multi-cluster, rétention longue
Netdata Monitoring temps réel Installation zero-conf, alertes intégrées

Checklist de mise en œuvre

Étape Action
Exposition métriques Instrumenter les apps, déployer les exporters
Service discovery Configurer la découverte automatique des cibles
Règles d'alerte Commencer par les Golden Signals
Routing Alertmanager Définir les équipes et canaux par sévérité
Dashboards Grafana Créer USE (infra) et RED (services)
Rétention Planifier le stockage long terme si besoin
Runbooks Lier chaque alerte a un runbook