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. Isso nem sempre inclui 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.

Configuração

Ao adicionar instrumentação customizada, primeiro importe o pacote de trace do OpenTelemetry no arquivo onde você deseja adicionar a instrumentação.
import (
	"go.opentelemetry.io/otel"
	"go.opentelemetry.io/otel/attribute"
	"go.opentelemetry.io/otel/trace"
)

Criando um novo span

Usando o tracer inicializado durante a instalação, crie um novo span.
var tracer = otel.Tracer("my-tracer-name")

func httpHandler(w http.ResponseWriter, r *http.Request) {
	// Create a new span from the parent context
	ctx, span := tracer.Start(r.Context(), "hello-span")
	// Defer closing the span to the end of this function
	defer span.End()

	// Set attributes
}
Nota: Nestes exemplos, dependemos do contexto da requisição HTTP, fornecido por r.Context(). A forma de receber o contexto pode ser diferente na sua aplicação.

Obter o span atual

Você também pode obter o span atual usando o tracer inicializado durante a instalação:
func httpHandler(w http.ResponseWriter, r *http.Request) {
	ctx := r.Context()
    span := trace.SpanFromContext(ctx)

	// Set attributes
}
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 Go 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 = // Create a new span or fetch the current span
span.SetAttributes(attribute.String("attribute_name", "attribute value"))
Veja nossos guias para mais informações sobre quais atributos customizados do AppSignal são suportados: