Une trace enregistre le parcours complet d'une requête au sein d'un système distribué, depuis son entrée dans le premier service 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 génère 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 visibilité :
Dépannage : Les traces révèlent le parcours 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 lors de l'exécution, vous offrant ainsi une cible précise pour l'optimisation.
Surveillance du système : Les traces fournissent une visibilité en temps réel sur le comportement du système, aidant 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 complète d'une requête, depuis le moment où elle entre dans le système jusqu'à sa réponse finale. Par exemple, une action utilisateur qui déclenche des appels entre trois microservices produit 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'une arborescence de spans. ARMS attribue à chaque trace un ID de trace unique qui persiste sur 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 d'interroger toutes les spans associées en un seul endroit lors du débogage.
La span située à la racine de l'arborescence, 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 est 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 :
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'arborescence de la trace, reflétant la hiérarchie réelle des appels de service.