Habilitación de la instrumentación de código de rastreo distribuida explícita

Utilice la anotación @Traced para instrumentar clases y métodos para OpenTracing.

Acerca de esta tarea

Aplique la anotación @Traced para especificar una clase o un método en el que se debe rastrear para OpenTracing.

Para migrar a versiones posteriores de OpenTracing: las características mpOpentracing-1.1 y opentracing-1.1 han cambiado su dependencia de la API OpenTracing a la versión 0.31.0. Si está utilizando la anotación @Traced en las aplicaciones, no es necesario ningún cambio. Si tiene código que utiliza io.opentracing.ActiveSpan y io.opentracing.ActiveSpanSource de la versión 0.30.0, debe migrar estas aplicaciones a la versión 0.31.0.

Rasgos estabilizados: La función MicroProfile OpenTracing 1.3 está estabilizada. La alternativa estratégica es mpTelemetry-1.0, una función de telemetría de MicroProfile. Para más información, consulte el documento de migración de MicroProfile OpenTracing a MicroProfile Telemetría 1.0.

Procedimiento

  1. Aplicar la anotación @Traced a una clase o método.
    • Cuando se aplica la anotación @Traced a una clase, la anotación se aplica a todos los métodos de dicha clase.
    • Si aplica la anotación @Traced a una clase y un método, la anotación que se aplica al método tiene prioridad. La anotación inicia un intervalo al principio del método y finaliza el intervalo al final del método.
  2. Opcional: Aplicar argumentos a la anotación @Traced .
    value=[true|false]

    El argumento value=[true] es el valor predeterminado.

    Utilice @Traced(false) para anotar métodos específicos y para inhabilitar la creación de un intervalo para esos métodos. También puede utilizar @Traced(false) para inhabilitar la creación de intervalo de un punto final JAX-RS específico. Cuando utiliza @Traced(false) para un método de punto final JAX-RS, no e extrae el SpanContext en sentido ascendente. Los intervalos que cree, ya sea automáticamente para las solicitudes de salida ya sea explícitamente con un rastreador inyectado, no tienen un intervalo padre en sentido ascendente en la jerarquía de intervalos. De forma predeterminada, el programa rastrea todos los métodos de punto final JAX-RS.

    operationName=<Name for the span>

    El valor predeterminado son las comillas dobles ("").

    Si utiliza comillas dobles ("") para el valor operationName, la anotación @Traced utiliza el nombre de operación predeterminado. Si el método anotado no es un punto final JAX-RS, el nombre de operación predeterminado del nuevo intervalo para el método tiene los valores <package name>.<class name>.<method name> . Si especifica el valor operationName en una clase, la clase utiliza ese valor operationName para todos los métodos de la clase a menos que un método lo altere temporalmente de forma explícita con su propio valor operationName.

    El ejemplo siguiente muestra los argumentos opcionales para la anotación @Traced:

    @InterceptorBinding
    @Target({ TYPE, METHOD })
    @Retention(RUNTIME)
    public @interface Traced {
        @Nonbinding
        boolean value() default true;
        @Nonbinding
        String operationName() default "";
    }
  3. Acceda al rastreador configurado.
    1. Utilice la instancia configurada de objeto de rastreador OpenTracing subyacente. Establezca la implementación de MicroProfile para utilizar el rastreador configurado con Contexts and Dependency Injection (CDI).
    2. Acceda al objeto de rastreador configurado inyectando la clase de rastreador que ha configurado para la aplicación concreta para este entorno. Cada aplicación recibe una instancia de rastreador diferente. El objeto de rastreador habilita el soporte para los requisitos de rastreo complejos, como por ejemplo crear intervalos dentro de métodos de negocio. El ejemplo siguiente muestra una clase de rastreador inyectado:
      @Inject
      io.opentracing.Tracer configuredTracer;
    3. Añada etiquetas, registros y equipaje a los intervalos, tal como se muestra en el ejemplo siguiente:
      configuredTracer.activeSpan().setTag(...);
      configuredTracer.activeSpan().log(...);
      configuredTracer.activeSpan().setBaggage(...);