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 |