OpenTelemetry vs. Prometheus : vous ne pouvez pas réparer ce que vous ne pouvez pas voir

Développeuse indépendante en train de coder et de programmer. Codage sur deux écrans avec langage de code et application.

Le suivi et l'optimisation des performances des applications sont essentiels pour les développeurs de logiciels ainsi que pour les entreprises en général. Plus une entreprise déploie d'applications, plus elle génère de données à collecter et à analyser. Cependant, ces données n'ont que peu de valeur sans les outils adéquats pour les surveiller, les optimiser, les stocker et, surtout, les contextualiser.

Les organisations peuvent maximiser l'utilisation des données applicatives en mettant en place des solutions de surveillance et d’observabilité, qui contribuent à améliorer la santé des applications en identifiant les problèmes avant qu'ils ne surviennent, en signalant les goulets d'étranglement, en régulant le trafic réseau, et plus encore. Ces fonctionnalités permettent de réduire les temps d’arrêt des applications, d'assurer des performances plus fiables et d'améliorer l'expérience utilisateur.

OpenTelemetry et Prometheus sont deux projets open source soutenus par la Cloud Native Computing Foundation (CNCF), qui proposent des outils d'observabilité pour la surveillance des applications. Selon les objectifs de l'organisation et les spécificités des applications, différents types de données et d'opérations nécessitent des solutions distinctes. Il est essentiel de bien comprendre les principales différences entre des plateformes comme OpenTelemetry et Prometheus, et les avantages qu'elles offrent, avant de faire un choix pour leur implémentation.

Il est également pertinent de noter qu'OpenTelemetry et Prometheus peuvent s'intégrer et fonctionner en synergie, formant ainsi un duo puissant pour la surveillance des applications. OpenTelemetry et Prometheus permettent de collecter et de transformer des indicateurs, ce qui aide les équipes DevOps et informatiqueus à générer des informations sur les performances et à agir en conséquence.

Qu’est-ce qu’OpenTelemetry ?

OpenTelemetry ou OTel, est une plateforme conçue pour centraliser la génération, la collecte, l'exportation et la gestion des données de télémétrie, incluant les journaux, indicateurs et traces. OTel est née de la fusion d'OpenCensus et d'OpenTracing, avec pour objectif de fournir des API, SDK, bibliothèques et intégrations qui standardisent la collecte de données disparates. Avec OTel, les résultats de la surveillance peuvent être intégrés directement dans votre code, ce qui simplifie le traitement des données et garantit que celles-ci sont exportées vers le back-end approprié.

L'analyse des données de télémétrie est cruciale pour comprendre la performance et l'état de santé des systèmes. Ce type d'observabilité optimisée permet aux organisations de résoudre plus rapidement les problèmes, d'accroître la fiabilité des systèmes, d'atténuer les problèmes de latence et de réduire les temps d'arrêt des applications.

Voici un aperçu des principaux aspects de l’écosystème OpenTelemetry :

API : les API (interface de programmation des applications) d'OpenTelemetry permettent de traduire universellement les différents langages de programmation et de collecter les données de télémétrie. Elles jouent un rôle clé dans la standardisation de la collecte des indicateurs d'OpenTelemetry.

SDK : les kits de développement logiciel (SDK) regroupent les outils, cadres, bibliothèques de code et débogueurs qui sont les fondations du développement logiciel. Les SDK d'OTel implémentent les API d'OpenTelemetry et fournissent les outils nécessaires pour générer et collecter les données de télémétrie.

Collecteur OpenTelemetry : le collecteur Otel reçoit, traite et exporte des données de télémétrie. Il peut être configuré pour filtrer certains types de données spécifiques et les envoyer vers un back-end désigné.

Bibliothèque d’instrumentation : OTel propose un modèle d'instrumentation qui fonctionne sur toutes les plateformes, permettant à OpenTelemetry de s'intégrer avec n'importe quel langage de programmation.

Avantages d’OpenTelemetry

Le protocole OpenTelemetry (OTLP) simplifie l'observabilité en collectant des données de télémétrie telles que les indicateurs, les journaux et les traces, sans nécessiter de modifications au niveau du code ou des métadonnées.

Indicateurs : les indicateurs offrent une vue d'ensemble des performances et de l'état de santé d'un système. Les développeurs, équipes informatiques et de gestion définissent les indicateurs les plus pertinentes à suivre pour maintenir les performances des applications en adéquation avec les objectifs de l'entreprise. Ces indicateurs varient selon les données jugées importantes par l'équipe et peuvent inclure le trafic réseau, la latence, ou encore l'utilisation du CPU. Elles permettent également d’identifier des schémas et tendances dans les performances des applications.

Journaux : les journaux sont des enregistrements d'événements survenant au sein d'un logiciel ou d'un composant d'application. Ils peuvent être générés pour suivre des aspects spécifiques qu'une équipe DevOps souhaite surveiller. En tant que données historiques, ils fournissent des informations globales sur les performances, indiquent quand des seuils prédéfinis sont dépassés, ou affichent des erreurs. Les journaux sont essentiels pour suivre la santé globale d'un écosystème applicatif.

Traces : les traces offrent une vue plus détaillée et ciblée des performances que les journaux. Elles suivent le parcours d'une requête unique à travers la pile applicative, permettant aux développeurs d’identifier avec précision le moment, la durée et l’impact des erreurs ou des goulets d'étranglement sur l'expérience utilisateur. Ces informations aident à gérer les microservices et à optimiser les performances des applications.

OpenTelemetry est capable d'exporter ces trois types de données télémétriques vers différents backends, y compris Prometheus, ce qui évite toute dépendance vis-à-vis d'un fournisseur ou d'un backend particulier et permet aux développeurs de choisir leurs outils d'analyse préférés. OpenTelemetry prend en charge une vaste gamme d'intégrations, dont Prometheus, ce qui ouvre des perspectives accrues pour l'observabilité. OTel est compatible avec Java, Python, JavaScript et Go, ce qui en fait une solution extrêmement flexible. Il permet également aux développeurs et aux équipes informatiques de surveiller les performances à partir de n'importe quel navigateur ou emplacement.

Ses principaux atouts résident dans sa capacité à collecter et exporter des données de manière uniforme à travers de nombreuses applications, tout en standardisant le processus de collecte.. OpenTelemetry est un outil puissant pour assurer l'observabilité des systèmes distribués et des microservices

Qu’est-ce que Prometheus ?

Prometheus est une boîte à outils dédiée à la surveillance et à l'alerte, conçue pour collecter et organiser les indicateurs des applications. Le serveur Prometheus, initialement développé par SoundCloud, est ensuite devenu un projet open source.

Prometheus agit comme une base de données de séries temporelles permettant une surveillance complète des données prises à intervalles réguliers, telles que les données de vente mensuelles ou le trafic quotidien d'une application. Cette visibilité des données temporelles permet de dégager des schémas, des tendances et des prédictions, utiles pour la planification opérationnelle de l'entreprise. Une fois intégré à un hôte, Prometheus recueille des indicateurs applicatifs liées aux fonctions spécifiques que les équipes DevOps souhaitent surveiller.

Ces indicateurs fournissent des points de données composés du nom de l'indicateur, de l'étiquette, de l'horodatage et de la valeur à l'aide d'un langage de requête appelé PromQL. PromQL permet aux développeurs et aux équipes informatiques d'agréger les indicateurs et de les convertir en histogrammes, graphiques et tableaux de bord pour une meilleure visualisation. Prometheus peut accéder à des données provenant de bases de données d'entreprise ou d'exportateurs. Les exportateurs sont des logiciels associés aux applications qui extraient des indicateurs depuis différentes applications et points de terminaison.

Prometheus collecte quatre types de mesures :

Compteurs : les compteurs mesurent des valeurs numériques cumulatives qui ne peuvent qu'augmenter. Ils sont utilisés pour quantifier les tâches accomplies, le nombre d'erreurs survenues au cours d'une période donnée, ou encore le nombre de processus ou microservices en cours d'exécution.

Jauges : les jauges suivent des valeurs numériques qui fluctuent en fonction de facteurs externes. Elles surveillent des éléments tels que l'utilisation du CPU, de la mémoire, la température ou encore la taille d'une file d'attente.

Histogrammes : les histogrammes mesurent la durée d'événements spécifiques, tels que la durée des requêtes ou la taille des réponses. Ils segmentent ensuite ces mesures en intervalles appelés « buckets » et indiquent combien de ces mesures tombent dans chaque bucket.

Sommaires : à l'instar des histogrammes, les sommaires mesurent la durée des requêtes et la taille des réponses, mais fournissent également un nombre total d'observations et une somme de toutes les valeurs observées.

Un autre atout de Prometheus est sa capacité à créer des tableaux de bord et des graphiques accessibles à partir des données collectées.

Avantages de Prometheus

Prometheus offre une surveillance en temps réel des applications, fournissant des informations précises et facilitant un dépannage rapide. Il permet également de définir des seuils pour certaines fonctions. Lorsqu'ils sont atteints ou dépassés, des alertes sont déclenchées, ce qui réduit le temps nécessaire à la résolution des problèmes Prometheus est capable de gérer et de stocker de grands volumes de données métriques, qu'il met à la disposition des équipes d'analyse selon les besoins. Il ne constitue pas une solution de stockage à long terme, mais sert à conserver les données nécessaires pour une analyse immédiate. La durée standard de stockage des données avec Prometheus varie entre deux heures et quinze jours.

Prometheus s'intègre parfaitement à Kubernetes, une plateforme open source d'orchestration de conteneurs, utilisée pour planifier et automatiser le déploiement, la gestion et la mise à l'échelle d'applications conteneurisées. Kubernetes permet aux entreprises de créer des environnements hybrides et multicloud complexes, capables de déployer une large gamme de services et de microservices. L'intégration de Prometheus avec Kubernetes permet d'assurer une observabilité et une supervision de la pile complète de ces systèmes complexes.

De plus, Prometheus est compatible avec Grafana, un puissant outil de visualisation qui permet de transformer les données en tableaux de bord, graphiques et alertes. En combinaison avec Prometheus, Grafana permet de créer des visualisations claires et intuitives. Cette compatibilité rend les données complexes plus accessibles et partageables entre différentes équipes.

Principales différences entre OpenTelemetry et Prometheus

Prometheus propose des outils pour la surveillance, le stockage et la visualisation des indicateurs , mais ne gère pas les journaux ni les traces, qui sont essentiels pour l'analyse des causes profondes. Ainsi, Prometheus a des cas d'utilisation plus restreints qu'OpenTelemetry.

OpenTelemetry est capable de traiter et de tracer des indicateurs plus complexes grâce à des intégrations indépendantes des langages de programmation. Il est hautement évolutif et offre une extensibilité accrue par rapport à Prometheus par le biais de modèles d'instrumentation automatisés. En revanche, contrairement à Prometheus, OpenTelemetry ne fournit pas de solution de stockage intégré et doit être associé à un backend séparé.

En résumé :

  • Prometheus mesure des indicateurs cumulatifs, fournissant une somme totale, tandis qu'OpenTelemetry peut représenter les indicateurs sous forme de deltas.
  • Prometheus offre un stockage à court terme des données et des indicateurs, tandis qu'OTe) ne prend pas en charge le stockage de manière native mais peut être associé à une solution de stockage externe.
  • OpenTelemetry collecte les indicateurs, les journaux et les traces via une API consolidée, que ce soit en mode push ou pull, et les traduit dans un langage commun, ce que Prometheus ne peut pas faire. Prometheus extrait des indicateurs en récupérant des données depuis les hôtes et se concentre principalement sur la collecte et le stockage des séries temporelles.
  • OTel, quant à lui, est agnostique en matière de langage et permet de traduire les indicateurs, offrant ainsi plus de flexibilité aux développeurs. Prometheus utilise PromQL pour agréger les données et les indicateurs,
  • et propose une visualisation web pour surveiller les indicateurs, accompagnée d'alertes personnalisables. À l'inverse, OpenTelemetry nécessite l'intégration d'outils de visualisation tiers.
  • Une autre force d'OTel est la possibilité d'exprimer les valeurs métriques sous forme d'entiers plutôt qu'en nombres à virgule flottante, ce qui offre une meilleure précision et une interprétation plus simple des valeurs. Prometheus, en revanche, ne peut pas exprimer les indicateurs sous forme d'entiers.

Le choix entre OpenTelemetry et Prometheus dépendra des besoins spécifiques de votre organisation. Si vous recherchez une compréhension globale de vos données, travaillez dans des environnements complexes avec des systèmes distribués, et souhaitez plus de flexibilité, OpenTelemetry peut être une solution plus appropriée, en particulier si vous avez besoin de surveiller les journaux et les traces.

En revanche, si vous cherchez à surveiller des systèmes ou des opérations individuelles et avez besoin de modèles d'alerte, de stockage et de visualisation, Prometheus pourrait être le meilleur choix.

Intégration d’OpenTelemetry et de Prometheus

La bonne nouvelle, c’est que vous n’avez pas nécessairement à choisir l’un ou l’autre ; OpenTelemetry et Prometheus sont des plateformes compatibles. Les SDK d'OTel peuvent collecter des indicateurs à partir des modèles de données de Prometheus, et Prometheus est capable de prendre en charge les indicateurs d'OpenTelemetry. En combinant ces plateformes, vous bénéficiez de tous les avantages de ces deux solutions, avec des options de surveillance avancées. Par exemple :

  • Associés, OTel et Prometheus permettent de surveiller des systèmes complexes tout en fournissant des informations en temps réel sur les environnements applicatifs.
  • Vous pouvez combiner les outils de traçage et de surveillance d'OTel avec les capacités d'alerte de Prometheus.
  • Prometheus peut gérer de gros volumes de données, et cette capacité, associée à celle d'OTel pour consolider les indicateurs, les traces et les journaux dans une interface unique, rend l'évolutivité des systèmes et des applications plus efficace.
  • PromQL peut analyser les données collectées à partir des captures d'OTel et les utiliser pour créer des modèles de visualisation.

De plus, OpenTelemetry et Prometheus s'intègrent avec des solutions comme IBM Instana et IBM Turbonomic pour fournir des outils de surveillance supplémentaires. Grâce à la carte des dépendances d'Instana, la corrélation des services en amont et en aval, et la visibilité complète de la pile, les capacités d'OTel sont optimisées pour garantir que tous les services sont bien instrumentés. Instana offre la même expérience avec les données OpenTelemetry qu'avec toute autre source de données, fournissant le contexte nécessaire pour identifier et résoudre rapidement les problèmes applicatifs. Avec Turbonomic, vous pouvez utiliser les outils de surveillance des données de Prometheus pour automatiser les décisions de gestion des ressources en fonction des données collectées en temps réel. Ces intégrations optimisent la santé de votre écosystème applicatif et améliorent ses performances globales.

 

Auteur

Camilo Quiroz-Vázquez

IBM Staff Writer