Un driver OTLP pour remplacer le déprécié Jaeger
Dans l’écosystème OpenStack, la performance et la fiabilité jouent un rôle crucial pour assurer un fonctionnement optimal des services de cloud. À première vue, on pourrait penser que comprendre les détails des échanges entre services et les requêtes en base de données n’est pas essentiel pour l’opérateur gérant la plateforme. Cependant, ces informations sont indispensables pour une compréhension approfondie et une exploitation optimale de l’architecture. Non seulement elles permettent d’identifier et de résoudre les goulots d’étranglement d’un point de vu design et architecture des models, mais elles peuvent aussi aider la communauté à améliorer des aspects spécifiques qui pourraient causer des lenteurs. C’est dans ce contexte que le projet OSProfiler prend toute son importance.
Qu’est-ce que le Profiling ?
Le profiling est une technique d’analyse du comportement d’une application ou d’un service. Il permet de mesurer diverses métriques telles que le temps d’exécution, l’utilisation de la mémoire, et les interactions entre différents composants.
OSProfiler est un outil de profiling conçu pour être utilisé avec les services OpenStack. Il offre une interface unifiée pour collecter des traces d’exécution de toutes les composantes d’OpenStack, de Nova à Neutron et au-delà. Ces traces peuvent ensuite être analysées pour fournir des informations détaillées sur le fonctionnement du système.
OSProfiler utilise different backend via des drivers. Pour autant le projet soufrait d’un manque de contribution et depuis la mise en rebu de la librairie Jaeger client. Il n’était plus possible d’utiliser l’UI Jaeger Tracing dans un plateforme en production.
Une belle contribution supporté par la Société Générale
Initié par le désir de la Société Générale de contribuer apypi OpenStack, et par la volonté de pouvoir pleinement profiter d’un service de profiling pour ses plateformes de production, un travail a été entrepris pour proposer une implementation introduisant un nouveau driver OpenTelemetry. Celui-ci viendra, à terme, remplacer le driver Jaeger Client.
Depuis la version 4.1.0 d’OSProfiler, il est désormais possible d’utiliser le driver OTLP pour effectuer du profiling. Les traces sont directement envoyées à un backend Jaeger UI.
Voici un exemple de configuration pour les services via kolla.
enable_osprofiler: "yes"
osprofiler_backend_connection_string: "otlp://jaeger.server:4318"
“Profiler” un service se fait en passant en paramètre de la CLI
OpenStack l’argument --profile <hmac>
.
Dans Kolla, le mot de passe étant généré automatiquement, il suffit de
faire une recherche dans /etc/kolla/passwords.yml
.
openstack --profile xxx server list
À noter, actuellement le driver ne supporte pas gRPC.