Dans un système distribué, une seule requête peut traverser des dizaines de services avant d'être traitée. Lorsqu'un message reste bloqué, qu'un consommateur expire ou que la latence augmente brusquement, il est essentiel de disposer d'une visibilité sur le flux des messages pour identifier la cause racine au sein de la chaîne producteur-broker-consommateur.
ApsaraMQ for RocketMQ génère des données de traçage conformes aux conventions sémantiques OpenTelemetry pour la messagerie. Exportez ces données vers Simple Log Service ou Application Real-Time Monitoring Service (ARMS) afin de suivre la livraison des messages, de mesurer la latence de bout en bout et de diagnostiquer les défaillances.
Limites
Avant de configurer le traçage, prenez connaissance des contraintes suivantes :
SDK Java uniquement : Seuls les clients utilisant le SDK pour Java peuvent rapporter des données de traçage. Pour plus de détails sur les versions, consultez les notes de version.
Messages transactionnels : Seules les données relatives à la production sont tracées pour les messages transactionnels.
Consommateurs push uniquement : Seuls les messages consommés par des consommateurs push génèrent des données de traçage. Consultez les types de consommateurs.
Exportation des données de traçage
ApsaraMQ for RocketMQ exporte des données de traçage conformes à OpenTelemetry vers un serveur d'analyse de traçage. Vous pouvez utiliser un service géré par Alibaba Cloud ou construire votre propre backend.
Simple Log Service
Simple Log Service propose des tableaux de bord permettant de surveiller le délai d'envoi des messages, le taux de réussite des envois, le taux de réussite de la consommation et la latence de bout en bout. Il est possible d'analyser les requêtes individuelles en filtrant par ID de message ou ID de trace.
Configuration : Importer les données de traçage des applications Java vers Simple Log Service à l'aide du SDK OpenTelemetry pour Java
-
Tableaux de bord de démonstration :
Tableau de bord des métriques de traçage – Consultez le délai d'envoi des messages, les taux de réussite et la latence de bout en bout.
Tableau de bord d'analyse – Investiguez des requêtes spécifiques par ID de message ou ID de trace.
Pour en savoir plus sur Simple Log Service, consultez les notes d'utilisation.
ARMS
Application Real-Time Monitoring Service (ARMS) offre un traçage distribué via son composant Tracing Analysis.
Configuration : Connecter OpenTelemetry à Tracing Analysis
Pour plus d'informations sur ARMS Tracing Analysis, consultez la rubrique Présentation de Tracing Analysis.
Fonctionnement du traçage
ApsaraMQ for RocketMQ enregistre chaque étape du cycle de vie d'un message sous forme de span. Chaque span capture des données temporelles, les métadonnées du message et le type d'opération.
Types de spans
Trois types de spans permettent de couvrir le cycle de vie des messages :
|
Type de span |
Données capturées |
Cycle de vie |
|
send |
Un message quittant le producteur. |
Commence lorsque le producteur débute l'envoi et se termine lorsque l'envoi réussit, échoue ou lève une exception. En cas de nouvelles tentatives, chaque essai génère un span distinct. |
|
receive |
Requête de sondage long (long polling) d'un consommateur. |
Correspond au cycle de vie de l'opération de sondage long. Désactivé par défaut. |
|
process |
Traitement d'un message par un consommateur push. |
Débute au lancement du rappel |
Activation des spans receive
Les spans receive sont désactivés par défaut. Pour les activer, ajoutez le paramètre JVM suivant :
-Dotel.instrumentation.messaging.experimental.receive-telemetry.enabled=true
Relations entre les spans
La relation entre les spans dépend de l'activation ou non des spans receive :
Spans receive désactivés (par défaut) : Le span process est un enfant direct du span send.
Spans receive activés : Le span process est un enfant du span receive et est lié au span send.

Attributs de messagerie
Chaque span inclut des attributs définis par les conventions sémantiques OpenTelemetry pour les spans de messagerie.
Attributs standard
messaging.message.id : Identifiant unique du message.
messaging.destination : Sujet (topic) ou file d'attente vers lequel le message est livré.
messaging.operation : Type d'opération : send, receive ou acknowledge.
Attributs spécifiques à RocketMQ
ApsaraMQ for RocketMQ ajoute les attributs suivants. Pour la liste complète, consultez les attributs Apache RocketMQ.
|
Attribut |
Type |
Description |
|
messaging.rocketmq.client_group |
string |
Groupe de consommateurs utilisé pour l'équilibrage de charge. |
|
messaging.rocketmq.client_id |
string |
Identifiant unique de l'instance cliente. |
|
messaging.rocketmq.message.delivery_timestamp |
int |
Heure de livraison planifiée pour les messages programmés et différés. |
|
messaging.rocketmq.message.group |
string |
Groupe de messages pour les messages ordonnés. |
|
messaging.rocketmq.message.type |
string |
Type de message : |
|
messaging.rocketmq.message.tag |
string |
Tag utilisé pour filtrer les messages côté consommateur. |
|
messaging.rocketmq.message.keys |
string[] |
Clés métier permettant de rechercher des messages spécifiques. |