Comparaison des solutions d'observabilité¶
Cette page alimente un ADR (Architecture Decision Record) pour le choix de la stack d'observabilité.
Grille de comparaison¶
| Critère | LGTM (Prometheus + Grafana + Loki + Tempo) | Datadog | ELK (Elasticsearch + Logstash + Kibana) | VictoriaMetrics + Grafana |
|---|---|---|---|---|
| Licence | AGPL 3.0 (Grafana), Apache 2.0 (Prometheus) | Proprietaire (SaaS) | SSPL (Elastic) / Apache 2.0 (OpenSearch) | Apache 2.0 |
| Modèle de coût | Open source, auto-heberge | SaaS, facturation par hôte + volume ingere | Open source ou Elastic Cloud (SaaS) | Open source, auto-heberge |
| Coût estime (100 nœuds) | Infrastructure uniquement (~500 EUR/mois) | ~5 000-15 000 EUR/mois | Infrastructure ou Elastic Cloud (~2 000 EUR/mois) | Infrastructure uniquement (~300 EUR/mois) |
| Metriques | Prometheus / Mimir | Natif (agent Datadog) | Metricbeat (limite) | VictoriaMetrics (natif) |
| Logs | Loki (LogQL) | Natif (Log Explorer) | Elasticsearch (KQL / Lucene) | Non natif (intégrer Loki) |
| Traces | Tempo (TraceQL) | Natif (APM) | Elastic APM | Non natif (intégrer Tempo/Jaeger) |
| Langage de requête | PromQL + LogQL + TraceQL | Proprietary query language | KQL / Lucene / ESQL | MetricsQL (compatible PromQL) |
| Scalabilité | Horizontale (Mimir, Loki, Tempo) | Illimitée (gérée par Datadog) | Horizontale (cluster Elasticsearch) | Horizontale (clustering natif) |
| Empreinte ressources | Moyenne (Go + stockage objet) | Aucune (SaaS) | Haute (JVM Elasticsearch, RAM intensive) | Faible (Go, optimise mémoire) |
| Ecosysteme | CNCF, exporters Prometheus tres large | 700+ integrations | Beats, Logstash, large ecosysteme | Compatible Prometheus ecosystem |
| Cardinalite | Bonne (Mimir), Loki indexe les labels uniquement | Haute (gérée) | Bonne (index inverses) | Excellente (optimise haute cardinalite) |
| Auto-heberge / Manage | Auto-heberge ou Grafana Cloud | SaaS uniquement | Auto-heberge ou Elastic Cloud | Auto-heberge |
| Correlation piliers | Grafana unifie les 3 piliers | Native et excellente | Elastic APM correle les 3 | Partielle (via Grafana) |
Analyse détaillée¶
LGTM — Recommande¶
La stack LGTM (Loki, Grafana, Tempo, Mimir) représente l'ecosysteme Grafana Labs complet :
Forces
- Coût maîtrise : open source, pas de licence par hôte ou par volume
- Ecosysteme standard : compatible OpenTelemetry, Prometheus exporters, Grafana dashboards communautaires
- Scalabilité prouvee : architecture micro-services (Mimir, Loki, Tempo) avec stockage objet (S3/MinIO)
- Correlation native dans Grafana entre metriques, logs et traces
- Alloy comme collecteur unifie remplace Prometheus + Promtail + OTel Collector
Faiblesses
- Complexité operationnelle : plusieurs composants a déployer et maintenir
- LogQL moins puissant que KQL pour l'analyse de logs complexes
- Pas de SIEM natif (compléter avec un outil dedie si besoin)
Datadog — Si SaaS accepte¶
Forces
- Expérience unifiee : un seul outil pour metriques, logs, traces, APM, sécurité, synthetics
- Zero maintenance infrastructure : SaaS entierement gère
- 700+ integrations preconfigurees
- Machine learning natif (anomaly detection, forecasting)
Faiblesses
- Coût eleve et difficile a prevoir (facturation par volume ingere + hôtes + APM + logs)
- Vendor lock-in : données hebergees chez Datadog, migration coûteuse
- Données sensibles chez un tiers (problème de classification Confidentiel)
- Latence d'ingestion potentielle (SaaS)
Classification et SaaS
Si les metriques et logs sont classes Confidentiel, l'hebergement chez un tiers SaaS doit etre valide par le RSSI. Vérifier la localisation des données (UE), les certifications du fournisseur et les clauses contractuelles.
ELK — Pour l'analyse de logs avancee¶
Forces
- KQL/Lucene : langage de requête tres puissant pour l'analyse de logs (full-text search, aggregations complexes)
- Elastic SIEM : capacites de sécurité intégrées (detection de menaces, correlation d'événements)
- Elastic APM : traces distribuees intégrées
- Maturité et documentation abondante
Faiblesses
- Empreinte ressources elevee : Elasticsearch est gourmand en RAM (JVM, heaps importants)
- Licence SSPL (Elastic) vs Apache 2.0 (OpenSearch) : choisir sa variante
- Metriques : Metricbeat moins complet que Prometheus
- Coût de stockage : les index Elasticsearch sont volumineux
VictoriaMetrics — Pour la haute cardinalite¶
Forces
- Performance exceptionnelle : compression aggressive, faible consommation mémoire
- MetricsQL : surensemble de PromQL avec des fonctions supplémentaires
- Haute cardinalite : gère des millions de series temporelles sans dégradation
- Compatible Prometheus : remplacement transparent (remote write, Grafana datasource)
Faiblesses
- Metriques uniquement : necesssite Loki pour les logs, Tempo pour les traces
- Communauté plus petite que Prometheus
- Fonctionnalités enterprise (clustering, downsampling) dans la version payante
Comparaison des langages de requête¶
Le choix du langage de requête impacte fortement la courbe d'apprentissage et les capacites d'analyse :
| Langage | Stack | Forces | Limites |
|---|---|---|---|
| PromQL | Prometheus/Mimir | Standard de facto pour les metriques, large documentation | Metriques uniquement |
| LogQL | Loki | Syntaxe proche de PromQL, leger, derivation de metriques depuis les logs | Moins puissant que KQL pour le full-text search |
| TraceQL | Tempo | Requêtes structurelles sur les spans, filtrage par attributs | Jeune, fonctionnalités en évolution |
| KQL | Elasticsearch/Kibana | Full-text search puissant, aggregations complexes, sous-requêtes | Spécifique a Elastic, courbe d'apprentissage |
| MetricsQL | VictoriaMetrics | Surensemble de PromQL (rollup automatique, fonctions supplémentaires) | Spécifique a VictoriaMetrics |
# PromQL — taux d'erreur par service
sum by(service) (rate(http_requests_total{status=~"5.."}[5m]))
/
sum by(service) (rate(http_requests_total[5m]))
# LogQL — logs d'erreur avec extraction de champs JSON
{service="catalog"} | json | level="error" | line_format "{{.timestamp}} {{.message}}"
# KQL — recherche full-text avec aggregation
service: "catalog" AND level: "error" AND message: "timeout"
Complexité operationnelle comparée¶
| Tâche | LGTM | Datadog | ELK | VictoriaMetrics |
|---|---|---|---|---|
| Installation initiale | Moyenne (4-5 composants) | Triviale (agent) | Moyenne (3 composants) | Faible (1 binaire) |
| Mise à jour | Composant par composant, Helm | Automatique (SaaS) | Rolling update cluster | Binaire unique |
| Scaling horizontal | Natif (Mimir, Loki, Tempo) | Automatique | Cluster Elasticsearch | Cluster VictoriaMetrics |
| Backup / DR | Stockage objet + config GitOps | Gère par Datadog | Snapshots Elasticsearch | Snapshots + vmbackup |
| Monitoring du monitoring | Meta-monitoring Alloy | Dashboard SaaS | Monitoring cluster ES | vmagent self-monitoring |
| Compétences requises | PromQL, LogQL, Kubernetes | Interface web, DSL proprietaire | KQL, administration JVM/cluster | PromQL, administration système |
Matrice de decision¶
| Besoin | Solution recommandee |
|---|---|
| Stack complète, open source, coût maîtrise | LGTM |
| Zero maintenance, budget disponible, SaaS accepte | Datadog |
| Analyse de logs avancee, SIEM integre | ELK / OpenSearch |
| Tres haute cardinalite metriques, budget limite | VictoriaMetrics + Grafana + Loki |
| Petite équipe, peu d'expertise ops | Datadog ou Grafana Cloud (SaaS) |
| Conformite stricte, données en interne obligatoire | LGTM ou VictoriaMetrics (auto-heberge) |
Decision recommandee¶
Pour une DSI orientee développement avec des exigences de maîtrise des coûts et de classification Confidentiel :
Decision : Stack LGTM (Prometheus/Mimir + Loki + Tempo + Grafana) avec Alloy comme collecteur unifie. VictoriaMetrics en alternative si la cardinalite metriques depasse les capacites de Mimir.
Justification :
- Open source : pas de coût de licence, pas de vendor lock-in
- Données hebergees en interne : compatible classification Confidentiel
- Ecosysteme standard : OpenTelemetry, Prometheus exporters, dashboards communautaires
- Scalabilité prouvee : stockage objet (S3/MinIO) pour la retention longue
- Correlation native des 3 piliers dans Grafana