Une trace enregistre le parcours complet d'une requête au sein d'un système distribué, depuis son point d'entrée initial jusqu'à la réponse finale. ARMS collecte ces données pour vous permettre de visualiser chaque appel de service, sa durée et son statut de réussite.
Avantages
Dans un système distribué, une seule requête sollicite généralement plusieurs services. Lorsqu'une requête expire, échoue ou lève une exception, l'identification de la cause racine exige une visibilité sur l'intégralité de la chaîne d'appels. Les traces offrent cette transparence :
Dépannage : Les traces révèlent le chemin complet de la requête ainsi que le statut d'exécution de chaque service impliqué, ce qui permet d'isoler rapidement les pannes.
Optimisation des performances : La durée de chaque span met en évidence les goulots d'étranglement et identifie précisément les cibles d'optimisation.
Surveillance du système : Les traces fournissent une visibilité en temps réel sur le comportement du système et aident les ingénieurs O&M à évaluer la santé des services et l'utilisation des ressources.
Concepts clés
Trace
Une trace capture l'exécution intégrale d'une requête, depuis son entrée dans le système jusqu'à sa réponse finale. Par exemple, une action utilisateur qui déclenche des appels entre trois microservices génère une seule trace couvrant l'ensemble du parcours, y compris chaque appel de procédure distante (RPC) et chaque requête de base de données.
Chaque trace se présente sous la forme d'un arbre de spans. ARMS attribue à chaque trace un ID de trace unique qui persiste across tous les services pendant toute la durée de la requête. Toutes les spans appartenant à la même requête partagent cet ID de trace, ce qui vous permet de consulter toutes les spans associées en un seul endroit lors du débogage.
La span située à la racine de l'arbre, appelée root span, n'a aucun parent. Elle marque le début de la trace. Chaque autre span possède un ID de span parent qui la relie à la span qui l'a déclenchée, formant ainsi la hiérarchie des appels.
Span
Une span constitue l'unité de base d'une trace. Elle représente une opération logique unique, telle qu'un appel de méthode, l'invocation d'un bloc de programme, un RPC ou une requête de base de données.
Chaque span enregistre les éléments suivants :
Un ID de span unique
Les horodatages de début et de fin
Un ID de span parent (absent pour la root span)
Les spans s'emboîtent les unes dans les autres pour former l'arbre de trace, reflétant la hiérarchie réelle des appels de service.