Configurez l'environnement pour activer le traçage distribué automatique dans les applications JAX-RS.
Vous pouvez activer la fonction opentracing-1.0 avec une implémentation opentracing.io.Tracer fournie par l'utilisateur pour permettre aux
applications JAX-RS de créer, propager et livrer automatiquement les informations de traçage distribué.
Pourquoi et quand exécuter cette tâche
- Traçage distribué
- Utilisez le traçage distribué pour tracer le flux d'une requête à travers les limites de service, ce qui est important dans un environnement à services multiples dans lequel une requête
transite généralement par plusieurs services.
Lorsque le traçage distribué est actif, chaque service crée des enregistrements de traçage avec un ID de corrélation. L'ID de corrélation qui est utilisé peut avoir été propagé depuis un service
en amont. Un compagnon commun de la
consignation de traçage distribué est un service de stockage pour les enregistrements de traçage distribués, comme le montrent ces exemples. Utilisez le service de stockage pour afficher les enregistrements de traçage associés à des flux de demandes particuliers dans les différents services.
- Opentracing.io
- Le projet opentracing.io fournit une API standard API pour l'instrumentation des services pour le traçage
distribué. Si vous instrumentez chaque service pour le traçage distribué avec l'API opentracing.io, vous pouvez configurer le service au moment du déploiement. Faites que le
service utilise une implémentation de système commune pour formater les enregistrements de journaux et propagez les ID de corrélation inter-services si une bibliothèque d'implémentation
existe pour le langage du service. L'implémentation commune propage les ID de corrélation de manière à ce qu'ils soient compréhensibles pour tous les services. L'implémentation formate
également les enregistrements de journaux pour que le serveur puisse les comprendre pour le stockage des enregistrements de traçage distribué.
Procédure
- Fournissez une fonction d'utilisateur. Créez et installez une fonction utilisateur avec une implémentation io.opentracing.Tracer dans le répertoire ${wlp.user.dir}/extension.
- Accédez à l'exemple de code source d'une fonction fournissant une implémentation d'API opentracing.io spécifique à Zipkin sous Zipkin Opentracing tracer implementation for use with Liberty. Accédez
à une version générée de la fonction d'utilisateur fournissant une implémentation d'API opentracing.io spécifique à Zipkin dans le référentiel Maven.
- Faites que la fonction d'utilisateur fournisse un service OSGI implémentant l'interface com.ibm.ws.opentracing.tracer.OpentracingTracerFactory :
package com.ibm.ws.opentracing.tracer;
import io.opentracing.Tracer;
public interface OpentracingTracerFactory {
Tracer newInstance(String serviceName);
}
- Définissez la méthode newInstance de l'implémentation OpentracingTracerFactory pour renvoyer une instance d'un objet io.opentracing.Tracer. Assurez-vous
que l'objet Tracer renvoyé par le programme est l'implémentation correcte pour l'environnement sur lequel les services s'exécutent. Dans l'exemple cité dans
Zipkin Opentracing tracer implementation for use with Liberty, l'objet
Tracer est une instance qui communique dans un environnement dans lequel un serveur Zipkin est disponible.
- Si l'environnement n'utilise pas un serveur Zipkin, modifiez l'implémentation pour fournir un objet Tracer qui communique avec le serveur de traçage distribué
dans l'environnement. Lorsque vous créer une fonction d'utilisateur, vous produisez deux artefacts :
- Un fichier .jar avec l'implémentation OpentracingTracerFactory et l'implémentation Tracer
- Un fichier mf avec la description de la fonction d'utilisateur
Dans l'exemple cité dans Zipkin Opentracing tracer implementation for use with
Liberty, deux fichiers sont créés aux emplacements suivants :
target/extension/lib/com.ibm.ws.opentracing.zipkintracer-0.30.jar
target/extension/lib/features/opentracingZipkin-0.30.mf
- Copiez le fichier .jar avec l'implémentation vers le répertoire ${wlp.user.dir}/extension/lib pour tous les serveurs
Liberty présents dans l'environnement.
- Copiez le fichier .mf avec la description de fonction vers le répertoire ${wlp.user.dir}/extension/lib/features pour tous les serveurs
Liberty présents dans l'environnement.
- Configurez le serveur. Activez la fonction utilisateur dans les fichiers server.xml dans les environnements de serveur.
- Activez la fonction dans chacun des serveurs Liberty présents dans l'environnement. Le fichier
.mf que vous avez créé contient une propriété nommée IBM-ShortName. La valeur de la propriété IBM-ShortName et le nom de la fonction qui
est activée dans le fichier server.xml de chacun des serveurs Liberty. Dans l'exemple cité dans Zipkin Opentracing tracer implementation for use with Liberty, la valeur de la propriété IBM-ShortName est opentracingZipkin-0.30. Ajoutez
le code suivant à chaque fichier server.xml pour activer cette fonction :
<featureManager>
<feature>usr:opentracingZipkin-0.30</feature>
</featureManager>
L'exemple fourni sous Zipkin Opentracing tracer implementation for use with Liberty
accepte les paramètres de configuration du fichier server.xml. Si vous ne pouvez pas atteindre le serveur Zipkin dans l'environnement avec le nom de service par défaut
zipkin et le port par défaut 9411, configurez l'hôte et le port en ajoutant un élément de configuration opentracingZipkin à chaque serveur :<opentracingZipkin host=”Zipkin Host Name” port=”Zipkin Port Number”/>