Qu’est-ce que le tracing distribué ?
Lorsque chaque service fait son propre rapport, vous voyez qu’une action web est lente, mais pas qu’un service d’inventaire plus loin dans la chaîne d’appels en est la cause. Dans AppSignal, chacun de ces services est une application ou un namespace distinct. Pour suivre une requête à travers eux, vous devez ouvrir chacun d’eux et aligner les horodatages. Le tracing distribué supprime ces frontières. Lorsqu’une requête passe d’un service au suivant, chaque service marque son travail avec le même identifiant de trace et enregistre quel travail l’a appelé. AppSignal utilise ces identifiants pour reconstituer le trajet complet de la requête, à travers chaque service qui y a pris part. Avec une trace distribuée, vous pouvez :- Suivre une requête depuis son point d’entrée jusqu’à chaque service atteint.
- Voir où le temps a été passé, même lorsque la partie lente s’exécute dans un autre service ou une autre application.
- Trouver dans quel service une erreur a commencé, pas seulement où elle est apparue.
Spans, traces et services
AppSignal décrit une trace à l’aide de trois éléments de base.- Span : une unité de travail unique, comme une requête HTTP entrante, une requête de base de données, un appel vers un autre service, ou un bloc de code que vous instrumentez vous-même. Un span a un nom, une durée et des attributs, et il enregistre le span qui l’a démarré. Les spans sont le plus petit élément dont une trace est composée.
- Trace : tous les spans qui appartiennent à une opération de bout en bout. Comme chaque span connaît son span parent, les spans d’une trace forment un arbre qui décrit la requête du début à la fin.
- Service : un composant nommé qui prend part à une trace, comme une
application web, un worker en arrière-plan ou une API interne. Vous nommez
un service avec l’option
service_name(ou la variable d’environnementAPPSIGNAL_SERVICE_NAME), et AppSignal utilise ce nom pour distinguer les services au sein d’une trace. Une seule trace traverse généralement plusieurs services, et ces services peuvent faire leur rapport à différentes applications AppSignal.

Les spans d'une trace forment un arbre. Chaque span enregistre le span qui l'a démarré, depuis le span racine.
Au sein d’AppSignal, une trace est une sorte d’
échantillon : l’enregistrement détaillé
d’une requête, stocké afin que vous puissiez l’ouvrir et le lire span par
span. AppSignal calcule vos métriques de performance, comme le temps de
réponse et le throughput, à partir de ces traces, si bien qu’un graphique de
performance et une trace individuelle sont deux vues des mêmes données.
Disponibilité et configuration
Le tracing distribué est d’abord disponible pour Python, Ruby et PHP. Les autres langages, comme Elixir et JavaScript, ne sont pas encore pris en charge.Le tracing distribué est une fonctionnalité expérimentale disponible
uniquement lorsque vous utilisez le collector hébergé d’AppSignal.
- Python et Ruby : définissez l’option
collector_endpointsur l’URL d’un collector hébergé plutôt qu’auto-hébergé. Consultez configuration du collector pour Python, configuration du collector pour Ruby, et collectors hébergés ou auto-hébergés pour connaître la différence entre les deux. - PHP : rien à configurer. Le package PHP fait déjà son rapport via un collector, donc le tracing distribué fonctionne dès que votre application fait son rapport à AppSignal.
- Une configuration OpenTelemetry personnalisée : rien à configurer. L’export vers un collector est le seul moyen dont ces configurations font leur rapport, donc les traces se connectent d’elles-mêmes.
Comment cela fonctionne-t-il dans AppSignal ?
AppSignal construit les traces distribuées sur OpenTelemetry, qui prend en charge la partie qui rend le tracing distribué possible : la propagation du contexte. Lorsqu’un service instrumenté appelle un autre service, OpenTelemetry attache l’identifiant de trace et le span appelant à l’appel sortant. Il voyage sous forme d’en-têtes sur une requête HTTP, ou de métadonnées sur une tâche mise en file d’attente, et le service qui le reçoit le lit et poursuit la même trace. Chaque service fait son rapport sur la portion de la trace dont il est responsable, appelée sa sous-trace. AppSignal reçoit ces sous-traces indépendamment, souvent depuis des processus ou des hôtes différents, et les réassemble en une seule trace à l’aide de l’identifiant de trace partagé et des liens parent-enfant entre les spans. Vous ne configurez jamais la connexion entre les services à la main. Si une bibliothèque est instrumentée, ses appels rejoignent la trace automatiquement.
Une trace couvre plusieurs services. Chaque service fait son rapport sous forme de sous-trace, et AppSignal assemble les sous-traces en une seule trace.
Prise en charge inter-applications
Un service dans AppSignal n’est pas la même chose qu’une application. Plusieurs services peuvent faire leur rapport à une seule application AppSignal, et une trace unique peut aussi traverser des services appartenant à des applications entièrement distinctes. Par exemple, une application web, un service d’inventaire et un service d’audit peuvent tous faire leur rapport à une même application AppSignal, chacun sous son propre nom de service, tandis qu’un service séparé fait son rapport en tant qu’application distincte. Une seule action utilisateur, comme un checkout, peut produire une trace qui inclut des services des deux applications. La carte des services d’AppSignal traite cela comme une seule trace, quel que soit l’endroit où chaque sous-trace a été rapportée. Elle détermine l’application à laquelle appartient chaque service et relie chaque carte à la vue de cette application sur la même trace. Pour suivre une requête à travers une frontière d’application, sélectionnez la carte du service suivant. Vous passez d’une application à l’autre le long de la même trace, sans perdre le fil. Cela fonctionne parce que le contexte se propage à travers les frontières de processus et d’application de la même manière qu’entre les services, et qu’AppSignal fait correspondre les sous-traces par leur identifiant de trace partagé, et non par l’application ou l’hôte d’où elles proviennent.Voir aussi
Page de trace
Lisez une trace : sa chronologie, les détails des spans, les tags, les
logs associés et les triggers.
Performance / tracing
Inspectez les spans et les événements à l’intérieur d’une trace.
Instrumentation personnalisée
Ajoutez vos propres spans à la trace lorsque les valeurs par défaut ne
suffisent pas.
Namespaces
Comment AppSignal regroupe les traces par endpoint, job et tâche.
Labs
Essayez le tracing distribué et d’autres fonctionnalités expérimentales.