Compartir a través de


Tracer Interfaz

public interface Tracer

Contract that all tracers must implement to be pluggable into the SDK.

Resumen del campo

Modificador y tipo Campo y descripción
static final String AZ_TRACING_NAMESPACE_KEY

Obsoleto

Paso del espacio de nombres del proveedor de recursos de Azure al método de fábrica de Tracer createTracer(String libraryName, String libraryVersion, String azNamespace, TracingOptions options)

Clave para Context la que indica que el contexto contiene el espacio de nombres del proveedor de recursos de Azure.

static final String DIAGNOSTIC_ID_KEY

Obsoleto

Clave para Context la que indica que el contexto contiene un "Id. de diagnóstico" para la llamada de servicio.

static final String DISABLE_TRACING_KEY

Clave para Context la que deshabilita el seguimiento de la solicitud asociada al contexto actual.

static final String ENTITY_PATH_KEY

Clave para Context la que indica que el contexto contiene una ruta de acceso de entidad.

static final String HOST_NAME_KEY

Clave para Context la que indica que el contexto contiene el nombre de host.

static final String MESSAGE_ENQUEUED_TIME

Obsoleto

Use addLink(TracingLink link) y pase la hora en cola como atributo en el vínculo.

Clave para Context la que indica la hora del último mensaje en cola en la secuencia de la partición.

static final String PARENT_SPAN_KEY

Obsoleto

En desuso en favor de PARENT_TRACE_CONTEXT_KEY, úselo para propagar io completo.opentelemetry.Contexto

Clave para Context la que indica que el contexto contiene datos de intervalo primarios.

static final String PARENT_TRACE_CONTEXT_KEY

Context clave para almacenar el contexto de seguimiento.

static final String SCOPE_KEY

Obsoleto

Clave para Context el ámbito de código donde el intervalo especificado está en el contexto actual.

static final String SPAN_BUILDER_KEY

Obsoleto

use addLink(TracingLink link) en su lugar

Clave para Context la que indica el generador de intervalos compartidos que se encuentra en el contexto actual.

static final String SPAN_CONTEXT_KEY

Clave para Context la que indica que el contexto contiene un contexto de intervalo de mensajes.

static final String USER_SPAN_NAME_KEY

Obsoleto

Pase el nombre del intervalo a Tracer.métodos start.

Clave para Context la que indica que el contexto contiene el nombre de los intervalos de usuario creados.

Resumen del método

Modificador y tipo Método y descripción
default void addEvent(String name, Map<String,Object> attributes, OffsetDateTime timestamp)

Obsoleto

Agrega un evento al intervalo actual con los proporcionados timestamp y attributes.

default void addEvent(String name, Map<String,Object> attributes, OffsetDateTime timestamp, Context context)

Agrega un evento al intervalo presente en Context con los elementos proporcionados timestamp y attributes.

default void addLink(Context context)

Obsoleto

Proporciona una manera de vincular varios intervalos de seguimiento.

default void end(int responseCode, Throwable error, Context context)

Obsoleto

establecer atributo específico e.g. http_status_code explícitamente y use end(String errorMessage, Throwable throwable, Context context).

Completa el intervalo de seguimiento actual.

abstract void end(String errorMessage, Throwable throwable, Context context)

Completa el intervalo en el contexto.

default Context extractContext(String diagnosticId, Context context)

Obsoleto

Extrae el contexto del intervalo como Context de nivel superior.

default Context extractContext(Function<String,String> headerGetter)

Extrae el contexto del intervalo como Context de nivel superior.

default Context getSharedSpanBuilder(String spanName, Context context)

Obsoleto

use addLink(TracingLink link) en su lugar

Devuelve un generador de intervalos con el nombre proporcionado en Context.

default void injectContext(BiConsumer<String,String> headerSetter, Context context)

Inserta el contexto de seguimiento.

default boolean isEnabled()

Comprueba si el seguimiento está habilitado.

default AutoCloseable makeSpanCurrent(Context context)

Hace que el intervalo sea actual.

abstract void setAttribute(String key, String value, Context context)

Agrega metadatos al intervalo actual.

default void setAttribute(String key, long value, Context context)

Establece el atributo long.

default Context setSpanName(String spanName, Context context)

Obsoleto

no es necesario.

Establece el nombre de los intervalos que se crean.

abstract Context start(String methodName, Context context)

Crea un nuevo intervalo de seguimiento.

default Context start(String spanName, Context context, ProcessKind processKind)

Obsoleto

Crea un nuevo intervalo de seguimiento para las llamadas AMQP.

default Context start(String methodName, StartSpanOptions options, Context context)

Crea un nuevo intervalo de seguimiento.

Detalles del campo

AZ_TRACING_NAMESPACE_KEY

@Deprecated
public static final String AZ_TRACING_NAMESPACE_KEY

Obsoleto

Paso del espacio de nombres del proveedor de recursos de Azure al método de fábrica de Tracer createTracer(String libraryName, String libraryVersion, String azNamespace, TracingOptions options)

Clave para Context la que indica que el contexto contiene el espacio de nombres del proveedor de recursos de Azure.

DIAGNOSTIC_ID_KEY

@Deprecated
public static final String DIAGNOSTIC_ID_KEY

Obsoleto

Clave para Context la que indica que el contexto contiene un "Id. de diagnóstico" para la llamada de servicio.

DISABLE_TRACING_KEY

public static final String DISABLE_TRACING_KEY

Clave para Context la que deshabilita el seguimiento de la solicitud asociada al contexto actual.

ENTITY_PATH_KEY

public static final String ENTITY_PATH_KEY

Clave para Context la que indica que el contexto contiene una ruta de acceso de entidad.

HOST_NAME_KEY

public static final String HOST_NAME_KEY

Clave para Context la que indica que el contexto contiene el nombre de host.

MESSAGE_ENQUEUED_TIME

@Deprecated
public static final String MESSAGE_ENQUEUED_TIME

Obsoleto

Use addLink(TracingLink link) y pase la hora en cola como atributo en el vínculo.

Clave para Context la que indica la hora del último mensaje en cola en la secuencia de la partición.

PARENT_SPAN_KEY

@Deprecated
public static final String PARENT_SPAN_KEY

Obsoleto

En desuso en favor de PARENT_TRACE_CONTEXT_KEY, úselo para propagar io completo.opentelemetry.Contexto

Clave para Context la que indica que el contexto contiene datos de intervalo primarios. Este intervalo se usará como intervalo primario para todos los intervalos que crea el SDK.

Si no aparece ningún dato de intervalo cuando se cree el intervalo, el valor predeterminado es usar esta clave de intervalo como intervalo primario.

PARENT_TRACE_CONTEXT_KEY

public static final String PARENT_TRACE_CONTEXT_KEY

Context clave para almacenar el contexto de seguimiento. Este contexto se usará como contexto primario para los nuevos intervalos y se propagará en las llamadas HTTP salientes.

SCOPE_KEY

@Deprecated
public static final String SCOPE_KEY

Obsoleto

Clave para Context el ámbito de código donde el intervalo especificado está en el contexto actual.

SPAN_BUILDER_KEY

@Deprecated
public static final String SPAN_BUILDER_KEY

Obsoleto

use addLink(TracingLink link) en su lugar

Clave para Context la que indica el generador de intervalos compartidos que se encuentra en el contexto actual.

SPAN_CONTEXT_KEY

public static final String SPAN_CONTEXT_KEY

Clave para Context la que indica que el contexto contiene un contexto de intervalo de mensajes.

USER_SPAN_NAME_KEY

@Deprecated
public static final String USER_SPAN_NAME_KEY

Obsoleto

Pase el nombre del intervalo a Tracer.métodos start.

Clave para Context la que indica que el contexto contiene el nombre de los intervalos de usuario creados.

Si no aparece ningún nombre de intervalo cuando se crea el intervalo, el valor predeterminado es usar el nombre del método de llamada.

Detalles del método

addEvent

@Deprecated
public default void addEvent(String name, Map attributes, OffsetDateTime timestamp)

Obsoleto

Agrega un evento al intervalo actual con los proporcionados timestamp y attributes.

Esta API no proporciona ninguna normalización si las marcas de tiempo proporcionadas están fuera del intervalo de la escala de tiempo de intervalo actual.

Los valores de atributo admitidos incluyen String, double, boolean, long, String [], double [], long []. Cualquier otro tipo de valor object y valores NULL se omitirá silenciosamente.

Parameters:

name - el nombre del evento.
attributes - los atributos adicionales que se van a establecer para el evento.
timestamp - El instante, en UTC, en el que el evento se asociará al intervalo.

addEvent

public default void addEvent(String name, Map attributes, OffsetDateTime timestamp, Context context)

Agrega un evento al intervalo presente en Context con los elementos proporcionados timestamp y attributes.

Esta API no proporciona ninguna normalización si las marcas de tiempo proporcionadas están fuera del intervalo de la escala de tiempo de intervalo actual.

Los valores de atributo admitidos incluyen String, double, boolean, long, String [], double [], long []. Cualquier otro tipo de valor object y valores NULL se omitirá silenciosamente.

Context span = tracer.start("Cosmos.getItem", Context.NONE);
 tracer.addEvent("trying another endpoint", Collections.singletonMap("endpoint", "westus3"), OffsetDateTime.now(), span);

Parameters:

name - el nombre del evento.
attributes - los atributos adicionales que se van a establecer para el evento.
timestamp - El instante, en UTC, en el que el evento se asociará al intervalo.
context - los metadatos de llamada que contienen información del intervalo al que se debe asociar el evento.

addLink

@Deprecated
public default void addLink(Context context)

Obsoleto

Proporciona una manera de vincular varios intervalos de seguimiento. Se usa en las operaciones de procesamiento por lotes para relacionar varias solicitudes en un único lote.

Ejemplos de código

Vincular varios intervalos mediante su información de contexto de intervalo

Parameters:

context - Metadatos adicionales que se pasan a través de la pila de llamadas.

end

@Deprecated
public default void end(int responseCode, Throwable error, Context context)

Obsoleto

establecer atributo específico e.g. http_status_code explícitamente y use end(String errorMessage, Throwable throwable, Context context).

Completa el intervalo de seguimiento actual.

Ejemplos de código

Completa el intervalo de seguimiento presente en el contexto, con el estado de OpenTelemetry correspondiente para el código de estado de respuesta especificado.

Parameters:

responseCode - Código de estado de respuesta si el intervalo está en un contexto de llamada HTTP.
error - Throwable que ocurrió durante el intervalo o null si no se produjo ninguna excepción.
context - Metadatos adicionales que se pasan a través de la pila de llamadas.

end

public abstract void end(String errorMessage, Throwable throwable, Context context)

Completa el intervalo en el contexto.

Ejemplos de código

Completa el intervalo de seguimiento con estado sin establecer

Context messageSpan = tracer.start("ServiceBus.message", new StartSpanOptions(SpanKind.PRODUCER), Context.NONE);
 tracer.end(null, null, messageSpan);

Completa el intervalo de seguimiento con el mensaje de error proporcionado.

Context span = tracer.start("ServiceBus.send", new StartSpanOptions(SpanKind.CLIENT), Context.NONE);
 tracer.end("amqp:not-found", null, span);

Completa el intervalo de seguimiento con la excepción proporcionada.

Context sendSpan = tracer.start("ServiceBus.send", new StartSpanOptions(SpanKind.CLIENT), Context.NONE);
 try (AutoCloseable scope = tracer.makeSpanCurrent(sendSpan)) {
     doWork();
 } catch (Throwable ex) {
     throwable = ex;
 } finally {
     tracer.end(null, throwable, sendSpan);
 }

Parameters:

errorMessage - Mensaje de error que se produjo durante la llamada o null si no hay ningún error. Ocurrió. Cualquier otra cadena que no sea NULL indica un error con la descripción proporcionada en errorMessage.
throwable - Throwable que ocurrió durante el intervalo o null si no se produjo ninguna excepción.
context - Metadatos adicionales que se pasan a través de la pila de llamadas.

extractContext

@Deprecated
public default Context extractContext(String diagnosticId, Context context)

Obsoleto

Extrae el contexto del intervalo como Context de nivel superior.

Ejemplos de código

Extrae la información de contexto de intervalo correspondiente de un identificador de diagnóstico válido.

Parameters:

diagnosticId - Identificador único para la información de seguimiento del intervalo.
context - Metadatos adicionales que se pasan a través de la pila de llamadas.

Returns:

Objeto actualizado Context que contiene el contexto de intervalo.

extractContext

public default Context extractContext(Function headerGetter)

Extrae el contexto del intervalo como Context de nivel superior.

Ejemplos de código

Extrae la información de contexto de intervalo correspondiente de un identificador de diagnóstico válido.

Context parentContext = tracer.extractContext(name -> {
     Object value = messageProperties.get(name);
     return value instanceof String ? (String) value : null;
 });

 StartSpanOptions remoteParentOptions = new StartSpanOptions(SpanKind.CONSUMER)
     .setRemoteParent(parentContext);

 Context spanWithRemoteParent = tracer.start("EventHubs.process", remoteParentOptions, Context.NONE);

 try (AutoCloseable scope = tracer.makeSpanCurrent(spanWithRemoteParent)) {
     doWork();
 } catch (Throwable ex) {
     throwable = ex;
 } finally {
     tracer.end(null, throwable, spanWithRemoteParent);
 }

Parameters:

headerGetter - Identificador único para la información de seguimiento del intervalo y la tarea pendiente.

Returns:

Objeto actualizado Context que contiene el contexto de intervalo.

getSharedSpanBuilder

@Deprecated
public default Context getSharedSpanBuilder(String spanName, Context context)

Obsoleto

use addLink(TracingLink link) en su lugar

Devuelve un generador de intervalos con el nombre proporcionado en Context.

Ejemplos de código

Devuelve un generador con el nombre de intervalo proporcionado.

Parameters:

spanName - Nombre para asignar el intervalo al generador creado.
context - Metadatos adicionales que se pasan a través de la pila de llamadas.

Returns:

Objeto actualizado Context que contiene el generador de intervalos.

injectContext

public default void injectContext(BiConsumer headerSetter, Context context)

Inserta el contexto de seguimiento.

Context httpSpan = tracer.start("HTTP GET", new StartSpanOptions(SpanKind.CLIENT), methodSpan);
 tracer.injectContext((headerName, headerValue) -> request.setHeader(headerName, headerValue), httpSpan);

 try (AutoCloseable scope = tracer.makeSpanCurrent(httpSpan)) {
     HttpResponse response = getResponse(request);
     httpResponseCode = response.getStatusCode();
 } catch (Throwable ex) {
     throwable = ex;
 } finally {
     tracer.end(httpResponseCode, throwable, httpSpan);
 }

Parameters:

headerSetter - devolución de llamada con la que establecer el contexto.
context - instancia de contexto de seguimiento

isEnabled

public default boolean isEnabled()

Comprueba si el seguimiento está habilitado.

if (!tracer.isEnabled()) {
     doWork();
 } else {
     Context span = tracer.start("span", Context.NONE);
     try {
         doWork();
     } catch (Throwable ex) {
         throwable = ex;
     } finally {
         tracer.end(null, throwable, span);
     }
 }

Returns:

True si el seguimiento está habilitado, false en caso contrario.

makeSpanCurrent

public default AutoCloseable makeSpanCurrent(Context context)

Hace que el intervalo sea actual. Las implementaciones pueden colocarla en ThreadLocal. Asegúrese de usar siempre la instrucción try-with-resource con makeSpanCurrent.

Parameters:

context - Contexto con intervalo.
 Context span = tracer.start("EventHubs.process", new StartSpanOptions(SpanKind.CONSUMER), Context.NONE);
 try (AutoCloseable scope = tracer.makeSpanCurrent(span)) {
     doWork();
 } catch (Throwable ex) {
     throwable = ex;
 } finally {
     tracer.end(null, throwable, span);
 }
 

Returns:

Se puede cerrar que debe cerrarse en el mismo subproceso con la instrucción try-with-resource.

setAttribute

public abstract void setAttribute(String key, String value, Context context)

Agrega metadatos al intervalo actual. Si no se encuentra información de intervalo en el contexto, no se agrega ningún metadato.

span = tracer.start("EventHubs.process", Context.NONE);
 tracer.setAttribute("bar", "baz", span);

Parameters:

key - Nombre de los metadatos.
value - Valor de los metadatos.
context - Metadatos adicionales que se pasan a través de la pila de llamadas.

setAttribute

public default void setAttribute(String key, long value, Context context)

Establece el atributo long.

Context span = tracer.start("EventHubs.process", Context.NONE);
 tracer.setAttribute("foo", 42, span);

Parameters:

key - nombre del atributo
value - valor atteribute
context - contexto de seguimiento

setSpanName

@Deprecated
public default Context setSpanName(String spanName, Context context)

Obsoleto

no es necesario.

Establece el nombre de los intervalos que se crean.

Ejemplos de código

Recuperar el nombre del intervalo devuelto

Parameters:

spanName - Nombre para asignar el siguiente intervalo.
context - Metadatos adicionales que se pasan a través de la pila de llamadas.

Returns:

Objeto actualizado Context que contiene el nombre del intervalo devuelto.

start

public abstract Context start(String methodName, Context context)

Crea un nuevo intervalo de seguimiento.

context Se comprobará para obtener información sobre un intervalo primario. Si se encuentra un intervalo primario, el nuevo intervalo se agregará como elemento secundario. De lo contrario, el intervalo primario se creará y agregará a context y las llamadas de bajada start() usarán el intervalo creado como elemento primario.

Ejemplos de código

Inicia un intervalo de seguimiento con el nombre de método proporcionado y el intervalo primario explícito.

// start a new tracing span with given name and parent context implicitly propagated
 // in io.opentelemetry.context.Context.current()

 Throwable throwable = null;
 Context span = tracer.start("keyvault.setsecret", Context.NONE);
 try {
     doWork();
 } catch (Throwable ex) {
     throwable = ex;
 } finally {
     tracer.end(null, throwable, span);
 }

Parameters:

methodName - Nombre del método que desencadena la creación del intervalo.
context - Metadatos adicionales que se pasan a través de la pila de llamadas.

Returns:

Objeto actualizado Context que contiene el intervalo devuelto.

start

@Deprecated
public default Context start(String spanName, Context context, ProcessKind processKind)

Obsoleto

Crea un nuevo intervalo de seguimiento para las llamadas AMQP.

context Se comprobará para obtener información sobre un intervalo primario. Si se encuentra un intervalo primario, el nuevo intervalo se agregará como elemento secundario. De lo contrario, el intervalo primario se creará y agregará a context y las llamadas de bajada start() usarán el intervalo creado como elemento primario.

Establece atributos de solicitud adicionales en el intervalo creado cuando processKind es SEND.

Devuelve el identificador de diagnóstico y el contexto de intervalo del intervalo devuelto cuando processKind es MESSAGE.

Crea un nuevo intervalo de seguimiento con elemento primario remoto y devuelve ese ámbito cuando se proporciona cuando processKind es PROCESS.

Ejemplos de código

Inicia un intervalo de seguimiento con el nombre del método proporcionado y la operación AMQP SEND

Parameters:

spanName - Nombre del método que desencadena la creación del intervalo.
context - Metadatos adicionales que se pasan a través de la pila de llamadas.
processKind - Tipo de operación AMQP.

Returns:

Objeto actualizado Context que contiene el intervalo devuelto.

start

public default Context start(String methodName, StartSpanOptions options, Context context)

Crea un nuevo intervalo de seguimiento.

context Se comprobará para obtener información sobre un intervalo primario. Si se encuentra un intervalo primario, el nuevo intervalo se agregará como elemento secundario. De lo contrario, el intervalo primario se creará y agregará a context y las llamadas de bajada start() usarán el intervalo creado como elemento primario.

Ejemplos de código

Inicia un intervalo de seguimiento con el nombre de método proporcionado y el intervalo primario explícito.

// start a new CLIENT tracing span with the given start options and explicit parent context
 StartSpanOptions options = new StartSpanOptions(SpanKind.CLIENT)
     .setAttribute("key", "value");
 Context spanFromOptions = tracer.start("keyvault.setsecret", options, Context.NONE);
 try {
     doWork();
 } catch (Throwable ex) {
     throwable = ex;
 } finally {
     tracer.end(null, throwable, spanFromOptions);
 }

Parameters:

methodName - Nombre del método que desencadena la creación del intervalo.
options - opciones de creación de intervalos.
context - Metadatos adicionales que se pasan a través de la pila de llamadas.

Returns:

Objeto actualizado Context que contiene el intervalo devuelto.

Se aplica a