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
- 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.
- 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 "";
}
- Acceda al rastreador configurado.
- 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).
- 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;
- 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(...);