L’observabilité est devenue un prérequis opérationnel pour toute organisation gérant des systèmes distribués. La multiplication des microservices, des environnements Kubernetes et des pipelines CI/CD a rendu le monitoring traditionnel par seuils insuffisant pour diagnostiquer des incidents complexes. Face à cette réalité, la combinaison Prometheus et Grafana s’est imposée comme la référence open source dans l’écosystème cloud-native, portée par la CNCF (Cloud Native Computing Foundation). Cet article pose les bases architecturales et les bonnes pratiques opérationnelles pour les équipes IT qui souhaitent construire ou consolider leur socle d’observabilité.
Les trois piliers de l’observabilité
L’observabilité d’un système repose sur trois types de signaux complémentaires : métriques, logs et traces. Certains référentiels industriels ajoutent un quatrième signal, les événements (Events), pour former l’acronyme MELT (Metrics, Events, Logs, Traces), mais les trois piliers restent la base de tout dispositif opérationnel.
- Métriques : données numériques agrégées dans le temps (compteurs, jauges, histogrammes). Elles permettent de mesurer l’état d’un système à un instant T (CPU, latence, taux d’erreur HTTP) et sont idéales pour l’alerting sur des tendances.
- Logs : enregistrements textuels horodatés d’événements discrets. Ils fournissent le contexte détaillé d’une anomalie mais génèrent des volumes importants qui nécessitent une gestion rigoureuse.
- Traces distribuées : représentation du chemin d’une requête à travers plusieurs services. Indispensables en architecture microservices pour identifier quel composant introduit de la latence ou des erreurs.
La corrélation de ces trois signaux constitue la valeur ajoutée d’une plateforme d’observabilité mature. Identifier une dégradation via une métrique (p99 de latence en hausse), naviguer vers les logs correspondants, puis tracer la requête défaillante à travers les services : c’est ce parcours d’investigation que les outils modernes doivent faciliter.
Architecture Prometheus : collecte et stockage des métriques
Prometheus adopte une architecture de collecte en pull : le serveur Prometheus interroge périodiquement les endpoints /metrics exposés par les cibles instrumentées. Ce modèle présente des avantages en termes de contrôle centralisé et de sécurité, mais implique que chaque composant doit exposer ses métriques dans le format Prometheus (texte, exposition HTTP).
Composants clés
| Composant | Rôle | Notes de sécurité |
|---|---|---|
| Prometheus Server | Scraping, stockage TSDB local, évaluation des règles | Pas d’auth native, proxy obligatoire |
| Alertmanager | Routage et déduplication des alertes | Sécuriser l’API HTTP, TLS recommandé |
| Exporters (Node, Blackbox, MySQL…) | Instrumentation des cibles tierces | Exposer uniquement sur interfaces internes |
| Pushgateway | Collecte pour jobs éphémères (batch) | Surface d’attaque accrue, usage limité |
| Thanos / Mimir | Rétention longue, fédération multi-cluster | Chiffrement TLS inter-composants obligatoire |
Le stockage local de Prometheus est une base de données temporelle (TSDB) optimisée pour les lectures et écritures à haute fréquence. La rétention par défaut est de 15 jours. Pour les environnements soumis à des obligations de traçabilité (NIS2, DORA, ISO 27001), un remote storage vers Thanos ou Mimir est indispensable.
PromQL : le langage de requête
PromQL (Prometheus Query Language) est un langage fonctionnel spécialement conçu pour les séries temporelles. Quelques patterns courants en environnement de production :
# Taux d'erreur HTTP 5xx sur les 5 dernières minutes
rate(http_requests_total{status=~"5.."}[5m])
# Disponibilité d'un service (SLI)
1 - (rate(http_requests_total{status=~"5.."}[30d]) / rate(http_requests_total[30d]))
# P99 de latence
histogram_quantile(0.99, rate(http_request_duration_seconds_bucket[5m]))
La maîtrise de PromQL est un investissement rentable : les équipes qui définissent leurs SLI (Service Level Indicators) directement en PromQL bénéficient d’alertes cohérentes avec leurs engagements de service.
Grafana : visualisation et corrélation multi-sources
Grafana est un outil de visualisation qui agrège des données issues de sources hétérogènes. Sa force réside dans sa capacité à corréler en un seul tableau de bord des métriques Prometheus, des logs Loki, des traces Tempo et des données de n’importe quelle source via ses nombreux plugins de datasource.
Gestion des droits et sécurité
En contexte multi-équipes, la configuration RBAC de Grafana est un point critique. Grafana propose un RBAC granulaire permettant de définir des permissions au niveau des tableaux de bord, des dossiers et des datasources. Les recommandations opérationnelles incluent :
- Intégrer Grafana avec le SSO d’entreprise (OIDC, SAML, LDAP) pour éviter la gestion de comptes locaux.
- Activer l’audit log Grafana (
[log] level = info,[unified_alerting]avec traçabilité des modifications). - Restreindre l’accès aux datasources sensibles : une équipe applicative n’a pas forcément à interroger les métriques d’infrastructure bas niveau.
- Stocker les credentials des datasources dans un gestionnaire de secrets externe (HashiCorp Vault, Kubernetes External Secrets) plutôt qu’en clair dans la base de données Grafana.
Loki pour les logs
Grafana Loki est une solution de centralisation de logs conçue pour s’intégrer nativement avec Grafana. Contrairement à Elasticsearch, Loki n’indexe que les labels (métadonnées) et stocke le contenu des logs brut, ce qui réduit considérablement les coûts de stockage. L’agent de collecte recommandé pour les nouveaux déploiements est Grafana Alloy (successeur de Promtail depuis 2024, qui assure également la collecte de métriques et de traces) ou l’OpenTelemetry Collector. Ils poussent les logs vers Loki en annotant chaque flux avec des labels (pod, namespace, application, environnement).
L’intégration Loki-Grafana permet de naviguer directement depuis une métrique Prometheus dégradée vers les logs correspondants, réduisant le temps de diagnostic (MTTR).
SRE et SLO : traduire les objectifs métier en alertes
Le cadre SRE (Site Reliability Engineering), formalisé par Google dans son SRE Book, apporte une méthodologie pour structurer l’observabilité autour d’objectifs mesurables.
- SLI (Service Level Indicator) : métrique qui mesure le comportement d’un service du point de vue de l’utilisateur (disponibilité, latence, taux d’erreur).
- SLO (Service Level Objective) : cible pour un SLI (exemple : disponibilité >= 99,9% sur 30 jours glissants).
- Error Budget : marge d’erreur consommable avant de violer un SLO. Quand le budget est épuisé, les nouvelles fonctionnalités sont gelées au profit de la fiabilité.
Dans Prometheus, les alertes basées sur les error budgets (“burn rate alerts”) sont plus pertinentes que les alertes sur des seuils statiques : elles signalent une consommation anormalement rapide du budget d’erreur, permettant d’anticiper une violation de SLO avant qu’elle ne se produise. La spécification officielle de ces alertes est documentée dans le projet open source SLO Generator.
OpenTelemetry : vers une instrumentation standardisée
OpenTelemetry (OTel) est le projet CNCF qui standardise la collecte et l’export de la télémétrie applicative. Son adoption croissante dans les environnements cloud-native modifie l’architecture de collecte :
- Instrumentation auto : les SDKs OTel (Java, Python, Go, Node.js…) permettent une instrumentation sans modification du code source pour les frameworks courants.
- OpenTelemetry Collector : agent/agrégateur qui reçoit les données (métriques, logs, traces) au format OTLP et les exporte vers les backends cibles (Prometheus via
prometheusremotewrite, Loki, Tempo, Jaeger, Datadog…). - Réduction du vendor lock-in : en adoptant OTel pour l’instrumentation, l’équipe conserve la liberté de changer de backend de stockage sans ré-instrumenter les applications.
Pour les DSI souhaitant standardiser leur approche, OTel est aujourd’hui en état de production (graduated CNCF project) et constitue une base solide pour une stratégie d’observabilité durable.
Intégration dans un contexte Kubernetes
En environnement Kubernetes sécurisé en production, l’observabilité prend une dimension supplémentaire. Le stack kube-prometheus (qui regroupe Prometheus Operator, Alertmanager, Grafana et un ensemble de règles d’alerte préconfigurées) est le point de départ recommandé.
Points de vigilance spécifiques à Kubernetes :
- Network Policies : restreindre le trafic de scraping Prometheus aux seuls namespaces cibles. Prometheus ne doit pas pouvoir atteindre n’importe quel endpoint du cluster.
- ServiceMonitor et PodMonitor : les ressources custom du Prometheus Operator permettent de déclarer les cibles de scraping de façon déclarative, sans modifier la configuration centrale.
- Secrets et ConfigMaps : ne jamais stocker des credentials d’exporters dans des ConfigMaps non chiffrées. Utiliser des Secrets Kubernetes avec chiffrement at-rest activé (EncryptionConfiguration), ou des solutions comme Sealed Secrets / External Secrets Operator.
- Ressources et limites : Prometheus peut consommer des volumes importants de mémoire en fonction du nombre de séries actives (cardinalité). Définir des
resources.limitset surveiller le compte de séries viaprometheus_tsdb_head_series.
La consultation de l’infrastructure de référence CNCF et des guides de sécurisation Kubernetes de l’ANSSI est recommandée pour les environnements sensibles.
Conformité et rétention : les exigences réglementaires
La directive NIS2 (UE 2022/2555) et le règlement DORA (UE 2022/2554) imposent aux organisations des obligations en matière de journalisation et de traçabilité des incidents, sans fixer de durée de rétention précise dans leurs textes. C’est l’ANSSI qui, dans ses préconisations de sécurité relatives aux systèmes de journalisation, recommande une rétention minimale de 12 mois pour les logs de sécurité, portée à 24 mois pour les environnements critiques. Ces recommandations s’appliquent directement aux plateformes d’observabilité :
- Intégrité des logs (signature, protection contre l’altération).
- Rétention minimale de 12 mois pour les logs de sécurité (recommandation ANSSI), alignée avec les attentes des contrôleurs NIS2/DORA.
- Séparation des droits entre les équipes qui produisent les logs et celles qui les consultent.
- Centralisation sur une plateforme distincte des systèmes supervisés pour résister à un incident de sécurité.
Les plateformes comme Grafana Loki ou Elasticsearch, couplées à un stockage objet immuable (S3 Object Lock, Azure Immutable Blob Storage), permettent de répondre à ces exigences sans surcoût prohibitif.
Conclusion opérationnelle
La mise en place d’une observabilité efficace avec Prometheus et Grafana n’est pas un projet ponctuel mais une discipline continue. Les équipes les plus matures combinent une instrumentation standardisée via OpenTelemetry, des alertes structurées autour des SLO, une corrélation métriques-logs-traces en un seul plan de contrôle, et une gouvernance des accès cohérente avec les exigences de sécurité. Pour les DSI et RSSI, l’enjeu est de transformer ces outils techniques en levier de pilotage de la fiabilité : moins de bruit d’alerte, des MTTR réduits, et une capacité à démontrer la conformité opérationnelle face aux référentiels comme NIS2 ou DORA.
Pour approfondir les aspects de sécurisation de l’infrastructure sous-jacente, la page infrastructure IT et les guides sur cloud et cybersécurité entreprise complètent ce panorama.