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
use extractContext(Function<String,String> headerGetter) y injectContext(BiConsumer<String,String> headerSetter, Context context) para la propagación del contexto.
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.
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
use makeSpanCurrent(Context context) en su lugar.
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.
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 |
default void |
addEvent(String name, Map<String,Object> attributes, OffsetDateTime timestamp, Context context)
Agrega un evento al intervalo presente en |
default void |
addLink(Context context)
Obsoleto
usar addLink(TracingLink link) )}
Proporciona una manera de vincular varios intervalos de seguimiento. |
default void |
end(int responseCode, Throwable error, Context context)
Obsoleto
establecer atributo específico e.
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
Auto |
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
use start(String methodName, StartSpanOptions options, Context context) en su lugar.
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
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
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
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
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
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
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:
addEvent
public default void addEvent(String name, Map
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:
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:
end
@Deprecated
public default void end(int responseCode, Throwable error, Context context)
Obsoleto
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:
null
si no se produjo ninguna excepción.
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:
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
.
null
si no se produjo ninguna excepción.
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:
Returns:
extractContext
public default Context extractContext(Function
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:
Returns:
getSharedSpanBuilder
@Deprecated
public default Context getSharedSpanBuilder(String spanName, Context context)
Obsoleto
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:
Returns:
injectContext
public default void injectContext(BiConsumer
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:
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:
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 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:
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:
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:
setSpanName
@Deprecated
public default Context setSpanName(String spanName, Context context)
Obsoleto
Establece el nombre de los intervalos que se crean.
Ejemplos de código
Recuperar el nombre del intervalo devuelto
Parameters:
Returns:
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:
Returns:
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:
Returns:
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:
Returns:
Se aplica a
Azure SDK for Java