Aller au contenu principal
Cloud & DevOps

OpenTelemetry : Atlassian migre sa plateforme de métriques sans toucher aux applications

Atlassian a reconstruit sa plateforme de métriques autour du Collector OpenTelemetry en gardant l'interface StatsD : un étage d'agrégation qui ramène 4,8 milliards de points par minute à 220 millions, sur moitié moins de CPU. Ce que ça change pour une application Symfony, Node.js ou Next.js.

Thomas DubreuilThomas DubreuilPublié le 5 octobre 20269 min
Résumer cet article avec une IA

Remplacer le moteur d'une plateforme de métriques, c'est toucher aux données sur lesquelles se déclenchent les alertes de production. Une erreur, et les équipes d'astreinte deviennent aveugles. C'est pourtant le chantier qu'Atlassian, l'éditeur de Jira et Confluence, mène sur sa plateforme de métriques : ses ingénieurs ont reconstruit le pipeline autour d'OpenTelemetry, le standard open source d'observabilité, sans demander aux équipes applicatives de réinstrumenter leurs services. Il ne leur reste qu'une dernière étape avant un pipeline entièrement OpenTelemetry. Le retour d'expérience a été publié le 17 septembre 2026 sur le blog de la CNCF (Cloud Native Computing Foundation, la fondation open source qui héberge OpenTelemetry), puis repris le 29 septembre par InfoQ, média spécialisé en ingénierie logicielle. Au-delà du cas Atlassian, l'annonce dit beaucoup de ce qu'OpenTelemetry peut apporter à une application web plus modeste.

Ce qu'Atlassian a remplacé, et pourquoi

Pendant l'essentiel de la dernière décennie, la plateforme de métriques d'Atlassian a tourné sur gostatsd, une implémentation open source du protocole StatsD que l'entreprise maintient elle-même. Elle collectait les métriques d'environ 100 000 hôtes répartis sur 14 régions, avec un objectif de disponibilité (SLO) de 99,95 %. Un outil qui faisait son travail, sans histoires.

Le problème est venu de l'écosystème. D'après les trois auteurs du retour d'expérience publié sur le blog de la CNCF, de plus en plus de composants émettaient des données au format OpenTelemetry que la plateforme ne savait pas traiter. gostatsd ne parlait qu'en UDP, n'avait aucune réponse pour les traces ni pour les logs, et chaque nouveauté livrée par la communauté du Collector OpenTelemetry devenait une fonctionnalité à reconstruire à la main. Les ingénieurs d'Atlassian résument la situation sans détour : c'est une course qu'ils allaient perdre, la seule question était de savoir quand.

Garder l'interface, tout reconstruire derrière

Le plan évident (arracher l'ancien pipeline, faire réinstrumenter chaque service avec le SDK OpenTelemetry, puis basculer) aurait représenté des années de chantier à l'échelle de toute l'organisation. Atlassian a choisi une voie plus étroite. Pour les équipes produit, le contrat restait le même : on envoie du StatsD en UDP à une adresse donnée, et les métriques apparaissent dans le backend. Tout ce qui se trouve entre ce paquet et le stockage long terme a été reconstruit. « Nous avons gardé l'interface et tout reconstruit derrière, ce qui a transformé une migration à l'échelle de l'organisation en migration de l'équipe plateforme », écrivent les auteurs.

Concrètement, des distributions du Collector OpenTelemetry ont été placées sur quatre étages : collecte, ingestion, agrégation et transfert. L'étage de collecte parle à la fois StatsD et OTLP, le protocole natif d'OpenTelemetry, si bien qu'aucune équipe n'a dû changer de client avant le début de la migration. Pour l'ingestion, la répartition de charge ne se fait plus par service mais par série temporelle (le streamID, via le loadbalancingexporter du dépôt communautaire), ce qui a donné une charge CPU homogène entre les répliques et mis fin aux alertes de « shards chauds » saturés par les plus gros services. Le transfert final alimente plusieurs backends sans intégration sur mesure : ajouter une destination devient une modification de configuration. Même les fonctions serverless, qui ne peuvent pas embarquer de sidecar, ont reçu une extension Lambda OpenTelemetry qui reprend la même adresse StatsD, sans modification de code.

Schéma de la nouvelle plateforme de métriques d'Atlassian : les applications continuent d'envoyer du StatsD en UDP, interface inchangée, vers quatre étages du Collector OpenTelemetry en chaîne : collecte StatsD et OTLP, ingestion répartie par série (streamID), agrégation par un processeur delta open source, transfert vers plusieurs backends. Méthode de bascule par paliers recommandée par les auteurs : 1 %, 10 %, 50 % puis 100 %. Environ 100 000 hôtes, 14 régions, SLO 99,95 %.

Pour la bascule, les auteurs s'imposent une règle de progressivité : commencer par les environnements de développement et de recette et par les services les moins critiques, puis monter le trafic à 1 %, 10 %, 50 % puis 100 %. L'objectif affiché : trouver les problèmes là où ils coûtent peu, pas sur le chemin le plus critique.

Les chiffres publiés par Atlassian

L'agrégation est l'étage qui rend ces volumes supportables. Il reçoit environ 4,8 milliards de points de données par minute et n'en conserve qu'environ 220 millions, une réduction d'environ 96 % selon les auteurs. Pour y parvenir, Atlassian a écrit son propre processeur d'agrégation des métriques en mode delta, publié en open source sous son organisation atlassian-labs. À trafic égal, cet étage tourne désormais sur environ la moitié du CPU qu'il consommait avant.

Côté hôtes, l'économie vient de la fusion de deux agents. Chaque machine faisait tourner un sidecar StatsD et un sidecar de tracing ; les métriques passent maintenant par le second. Résultat annoncé : environ 3,9 % de CPU en moins en moyenne par service sur les services les plus coûteux d'Atlassian, et environ 30 % de coût de sidecar en moins à l'échelle de la flotte. Reste une dernière étape : les agrégateurs gostatsd et nomad, le proxy maison chargé de répartir le trafic entre eux, représentent encore ensemble environ 38 % des demandes de CPU des clusters de métriques. Leur retrait est, selon les auteurs, la dernière marche avant un pipeline entièrement OpenTelemetry. Ces chiffres sont déclarés par Atlassian et repris par InfoQ dans son compte rendu du 29 septembre 2026.

Barres horizontales des chiffres déclarés par Atlassian sur sa plateforme de métriques reconstruite autour du Collector OpenTelemetry : l'étage d'agrégation reçoit environ 4,8 milliards de points de données par minute et en conserve environ 220 millions, soit environ 96 % en moins. CPU de l'étage d'agrégation divisé par deux environ à trafic égal (-50 %), coût des sidecars à l'échelle de la flotte environ -30 %, CPU moyen par service -3,9 % sur les services les plus coûteux. Encore en place : les agrégateurs gostatsd et le proxy nomad, qui pèsent environ 38 % des demandes de CPU des clusters de métriques et dont le retrait est la dernière étape.

Ce que ça change pour une application web classique

Une PME n'a ni 100 000 hôtes ni une équipe plateforme dédiée. L'intérêt du cas Atlassian est ailleurs : il montre qu'OpenTelemetry sert de socle commun pour trois signaux (traces, métriques et logs), et qu'on peut l'adopter progressivement. Pour une application web, l'apport tient en une idée : relier ce qui se passe sur le serveur, dans la base de données et chez les services tiers au sein d'une même requête. Quand une page met huit secondes à s'afficher, une trace distribuée montre la durée de chacune des étapes instrumentées de la requête, et les logs émis pendant cette requête peuvent y être rattachés pour en donner le détail.

OpenTelemetry s'appuie sur les logs existants. La documentation officielle d'OpenTelemetry sur les logs précise que le projet est conçu pour fonctionner avec les logs déjà produits : quand un SDK ou une instrumentation automatique est actif, les logs émis pendant une trace active peuvent être corrélés avec la trace et le span en cours grâce aux champs TraceId et SpanId. Autrement dit, les logs gardent leur rôle, et ceux qui sont émis au cours d'une requête tracée y sont directement rattachés. En PHP, l'envoi des logs Monolog vers OpenTelemetry passe par un handler dédié, présenté plus bas.

Côté architecture, le projet recommande en général de faire passer les données par le Collector OpenTelemetry, présenté comme une façon indépendante des éditeurs de recevoir, traiter et exporter la télémétrie ; la même documentation admet qu'en développement ou à petite échelle, un envoi direct sans Collector donne des résultats corrects. Les applications envoient leurs données en OTLP au Collector (port 4317 en gRPC, 4318 en HTTP selon la spécification OTLP), et c'est lui qui les transmet au backend choisi. Changer de backend de supervision ne demande alors pas de modifier le code applicatif : comme chez Atlassian, ajouter une destination devient une modification de configuration. Cette brique s'intègre naturellement à une démarche cloud et DevOps existante.

Côté Symfony et PHP

Pour une application Symfony, la journalisation passe en général par Monolog, que la documentation Symfony présente comme la bibliothèque de logs PHP la plus populaire. La documentation OpenTelemetry pour PHP prévoit justement un handler Monolog (paquet open-telemetry/opentelemetry-logger-monolog) qui envoie ces logs vers un récepteur compatible OpenTelemetry : on conserve Monolog, auquel on ajoute une sortie OpenTelemetry. Pour les traces, deux voies existent sans modifier le code applicatif, d'après la page consacrée à l'instrumentation sans code : l'auto-instrumentation (paquets Composer et extension PECL, sous Linux, macOS ou Windows) et la distribution PHP Distro (paquets deb, rpm ou apk, Linux uniquement, avec des réglages par défaut orientés production). Côté maturité, le SDK PHP est annoncé stable sur les trois signaux.

Côté Node.js et Next.js

En Node.js, le guide officiel de démarrage s'appuie sur le SDK Node et le paquet @opentelemetry/auto-instrumentations-node, qui génère automatiquement des spans pour les bibliothèques courantes ; le fichier d'instrumentation est chargé avant l'application avec l'option --import. Next.js va plus loin : sa documentation officielle recommande OpenTelemetry et indique que le framework est déjà instrumenté nativement (requêtes, rendu des routes, appels fetch). La mise en route passe par le paquet @vercel/otel et un fichier instrumentation.ts, ou par une configuration manuelle avec NodeSDK, non compatible avec le runtime edge. En auto-hébergement, la documentation Next.js indique de monter son propre Collector, tout en précisant qu'un exporteur personnalisé permet de s'en passer.

Maturité : ce qui est stable, ce qui ne l'est pas encore

Tout n'est pas au même niveau selon le langage et le signal. D'après le tableau de statut des SDK consulté le 30 septembre 2026, PHP est stable pour les traces, les métriques et les logs. JavaScript est stable pour les traces et les métriques, mais ses logs restent en statut Development, et la documentation JavaScript qualifie l'instrumentation côté navigateur d'expérimentale. Côté protocole, OTLP est stable pour les trois signaux, le profilage restant en développement. Le Collector lui-même affiche un statut « mixed » : ses composants de base n'ont pas tous le même niveau de stabilité, à vérifier composant par composant.

Le projet ajoute une mise en garde utile : quel que soit le statut d'un SDK, une instrumentation qui s'appuie sur des conventions sémantiques expérimentales (les noms normalisés des attributs) peut subir des changements cassants. Pour une équipe qui construit des tableaux de bord et des alertes sur ces données, c'est un point à vérifier avant de s'y fier en production.

La vraie leçon : une méthode de migration

Au-delà des chiffres, le retour d'Atlassian décrit une méthode transposable à bien des projets. Choisir des premiers utilisateurs qui ont le plus à gagner, en commençant par les environnements de développement et de recette. Profiler en continu en production, parce que le vrai coût d'un composant n'apparaît qu'en charge réelle. Garder les mêmes réflexes d'exploitation pendant la période, souvent longue, où l'ancien et le nouveau système cohabitent. Et monter en charge par paliers.

Cette logique vaut aussi pour une application en maintenance : on peut commencer par instrumenter un seul service ou un seul parcours critique, brancher un Collector, puis étendre. La prochaine étape annoncée par Atlassian va d'ailleurs dans ce sens : faire migrer l'instrumentation elle-même vers le SDK OpenTelemetry, maintenant que la plateforme est prête à la recevoir. Pour une équipe qui hésite sur le périmètre, un audit et une étude de cadrage permettent de choisir le premier service à instrumenter et le backend cible avant d'écrire la moindre configuration.

Pour aller plus loin

Sources


Plus d'articles sur Cloud & DevOps

Décryptages, retours de terrain et modes d'emploi : ce que l'équipe apprend en livrant des projets, remis au propre.

Omarchy Quattro : DHH range l'agent de code dans le système
Cloud & DevOps26 août 20267 min

Omarchy Quattro : DHH range l'agent de code dans le système

Omarchy, la distribution Linux de David Heinemeier Hansson (DHH), créateur de Ruby on Rails, est passée en version majeure Quattro le 14 août 2026. Shell de bureau réécrit en un seul processus, fonctionnement interne basculé sur pacman, et surtout un agent de code traité comme une brique système. Ce qui change pour les équipes.

Eliott Bidault-HervouetEliott Bidault-Hervouet
Openship : la plateforme de déploiement qui sort le build de votre serveur
Cloud & DevOps24 août 20268 min

Openship : la plateforme de déploiement qui sort le build de votre serveur

Openship, plateforme de déploiement open source auto-hébergeable arrivée en mars 2026, construit l'image sur votre machine et l'envoie en SSH vers le serveur. Serveur mail intégré, endpoint MCP, clustering encore en chantier : le point pour les équipes qui s'auto-hébergent.

Eliott Bidault-HervouetEliott Bidault-Hervouet
Coolify, le PaaS open source qu'on héberge soi-même
Cloud & DevOps19 août 20269 min

Coolify, le PaaS open source qu'on héberge soi-même

Coolify transforme vos propres serveurs en plateforme de déploiement. Version 4 stable depuis avril 2026, Railpack en beta, sauvegardes vers S3, multi-serveurs encore expérimental : le point sur ce que l'outil fait vraiment aujourd'hui.

Eliott Bidault-HervouetEliott Bidault-Hervouet

Combien coûterait votre projet ? Estimation gratuite

Décrivez votre besoin, nous revenons vers vous sous 24h avec une fourchette de budget et de délai.

Réponse sous 24h, sans engagement.

Alexandre Da Silva, Koul, à son poste de travail
Questions fréquentes

Le blog Koul

Ligne éditoriale, sources, usage : ce qui sort sur ce blog et comment vous pouvez vous en servir.

Votre question est plus complexe ?

Un échange court suffit souvent à trancher. Prenez un créneau, on vous répond sur votre cas.

Réserver un créneau