Configure el entorno para habilitar el rastreo distribuido automático en aplicaciones JAX-RS.
Puede habilitar la característica opentracing-1.0 junto con una implementación de opentracing.io.Tracer proporcionada por usuario para permitir que las aplicaciones JAX-RS creen, propaguen y entreguen automáticamente información de rastreo distribuido.
Acerca de esta tarea
- Rastreo distribuido
- Utilice el rastreo distribuido para rastrear el flujo de una solicitud a través de los límites del servicio, que es importante en un entorno de microservicios, donde una solicitud normalmente fluye a través de varios servicios.
Cuando el rastreo distribuido está activo, cada servicio crea registros de rastreo con un ID de correlación. El ID de correlación que se utiliza se podría haber propagado desde un servicio en sentido ascendente. Un acompañante común para el registro de rastreo distribuido es un servicio de almacenamiento para los registros de rastreo distribuido, tal como se indica en estos ejemplos. Utilice el servicio de almacenamiento para ver los registros de rastreo que están asociados a flujos de solicitud concretos entre servicios.
- Opentracing.io
- El proyecto opentracing.io proporciona una API estándar para instrumentalizar servicios para el rastreo distribuido. Si instrumentaliza todos los servicios para el rastreo distribuido con la API opentracing.io, puede configurar el servicio durante el despliegue. Haga que el servicio utilice una implementación de servicio común para formatear registros de anotaciones y propagar los ID de correlación de servicio transversales, si existe una biblioteca de implementación para el idioma del servicio. La implementación común propaga ID de correlación para que sean comprensibles para todos los servicios. La implementación también formatea registros de anotaciones, de forma que el servidor los puede comprender para el almacenamiento de registros de rastreo distribuido.
Procedimiento
- Proporcione una característica de usuario. Cree e instale una característica de usuario con una implementación de io.opentracing.Tracer en el directorio ${wlp.user.dir}/extension.
- Acceda a código fuente de ejemplo para una característica que proporciona una implementación de API opentracing.io específica de Zipkin en Implementación del rastreador Zipkin Opentracing para ser utilizado con Liberty. Acceda a una versión de compilación de la característica de usuario que proporciona una implementación de API opentracing.io específica de Zipkin en el repositorio Maven.
- Haga que la característica de usuario proporcione un servicio OSGI que implemente la interfaz com.ibm.ws.opentracing.tracer.OpentracingTracerFactory.
package com.ibm.ws.opentracing.tracer;
import io.opentracing.Tracer;
public interface OpentracingTracerFactory {
Tracer newInstance(String serviceName);
}
- Establezca el método newInstance de la implementación de OpentracingTracerFactory para devolver una instancia de un objeto io.opentracing.Tracer. Asegúrese de que el objeto del rastreador que devuelve el programa es la implementación correcta para el entorno donde se ejecutan los servicios. En el ejemplo que aparece en Implementación del rastreador Zipkin Opentracing para ser utilizado con Liberty, el rastreador es una instancia que se comunica con en un entorno donde está disponible un servidor Zipkin.
- Si el entorno no utiliza un servidor Zipkin, cambie la implementación para proporcionar un objeto Tracer que se comunica con el servidor de rastreo distribuido en el entorno. Se generan dos artefactos al crear una característica de usuario:
- Un archivo .jar con la implementación de OpentracingTracerFactory y la implementación de Tracer
- Un archivo mf con la descripción de la característica de usuario
En el ejemplo que aparece en la Implementación del rastreador Zipkin Opentracing para ser utilizado con Liberty, se crean dos archivos en las ubicaciones siguientes:
target/extension/lib/com.ibm.ws.opentracing.zipkintracer-0.30.jar
target/extension/lib/features/opentracingZipkin-0.30.mf
- Copie el archivo .jar con la implementación en el directorio ${wlp.user.dir}/extension/lib para todos los servidores Liberty del entorno.
- Copie el archivo .mf con la descripción de la característica en el directorio ${wlp.user.dir}/extension/lib/features para todos los servidores Liberty del entorno.
- Configure el servidor. Habilite la característica de usuario en los archivos server.xml en los entornos de servidor.
- Habilite la característica en cada uno de los servidores Liberty del entorno. El archivo .mf que ha creado contiene una propiedad que se denomina IBM-ShortName. El valor de la propiedad IBM-ShortName es el nombre de la característica que se ha habilitado en el archivo server.xml de cada uno de los servidores Liberty. En el ejemplo que aparece en Implementación del rastreador Zipkin Opentracing para ser utilizado con Liberty, el valor de la propiedad IBM-ShortName es opentracingZipkin-0.30. Añada el código siguiente a cada archivo server.xml para habilitar esta característica:
<featureManager>
<feature>usr:opentracingZipkin-0.30</feature>
</featureManager>
La muestra en la implementación del rastreador Zipkin Opentracing para usarse con Liberty acepta parámetros de configuración del archivo server.xml. Si no puede alcanzar el servidor Zipkin en el entorno con el nombre de servicio predeterminado zipkin y el puerto predeterminado 9411, configure el host y el puerto añadiendo un elemento de configuración opentracingZipkin a cada servidor:<opentracingZipkin host=”Nombre host Zipkin” port=”Número puerto Zipkin”/>