Pular para o conteúdo principal
O AppSignal é compatível com pacotes de instrumentação do OpenTelemetry. Alguns desses pacotes de instrumentação podem exigir configuração adicional. Essas instrumentações nem sempre incluem todas as informações que você precisa para depurar problemas. Para um relatório mais granular, você pode adicionar instrumentação customizada. Damos suporte ao tracing do OpenTelemetry conforme descrito na documentação do OpenTelemetry. É possível adicionar mais dados a um span usando atributos de span do OpenTelemetry. Também existem atributos de span do AppSignal que podem mudar como os traces são agrupados e alguns atributos que permitem filtrar dados sensíveis.

Criando um novo span

Usando o tracer do global tracer provider, crie um novo span.
import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.context.Scope;

public void someFunction() {
    // Get OpenTelemetry tracer
    Tracer tracer = GlobalOpenTelemetry.getTracer("my-app");

    // Create a new span
    Span span = tracer.spanBuilder("My span").startSpan();

    // Set attributes
    span.setAttribute("operation.name", "handle_request");

    // Your application logic here

    // Close the span
    span.end();
}
Nota: Nestes exemplos, estamos usando o global tracer provider definido pelo OpenTelemetry. Você pode querer injetar o tracer nas suas classes para melhor testabilidade.

Obter o span atual

Você também pode obter o span ativo atual:
import io.opentelemetry.api.trace.Span;

public void someFunction() {
    Span span = Span.current();

    // Set attributes on the current span
    span.setAttribute("user.id", userId);
    span.setAttribute("operation.name", "database_query");
}
Nota: Isso só retornará um span se já houver um ativo. Mais formas de criar e obter spans estão documentadas na página de instrumentação Java do OpenTelemetry.

Atributos do AppSignal

Depois de criar ou obter um span, você pode definir certos atributos específicos do AppSignal para personalizar como os dados chegam ao AppSignal.
Span span = // Create a new span or fetch the current span
span.setAttribute("attribute_name", "attribute_value");
Veja nossos guias para mais informações sobre quais atributos customizados do AppSignal são suportados: