Passer au contenu principal
AppSignal est compatible avec les paquets d’instrumentation OpenTelemetry. Certains de ces paquets d’instrumentation peuvent nécessiter une configuration supplémentaire. Cela n’inclut pas toujours les informations dont vous avez besoin pour déboguer les problèmes. Pour un reporting plus fin, vous pouvez ajouter une instrumentation personnalisée. Nous prenons en charge le tracing OpenTelemetry tel que décrit dans la documentation OpenTelemetry. Il est possible d’ajouter plus de données à un span en utilisant les attributs de span OpenTelemetry. Il existe également des attributs de span AppSignal qui peuvent modifier la façon dont les traces sont regroupées et certains attributs qui permettent de filtrer les données sensibles.

Configuration

Lors de l’ajout d’une instrumentation personnalisée, importez d’abord le paquet de tracing OpenTelemetry dans le fichier auquel vous souhaitez ajouter l’instrumentation.
import (
	"go.opentelemetry.io/otel"
	"go.opentelemetry.io/otel/attribute"
	"go.opentelemetry.io/otel/trace"
)

Créer un nouveau span

En utilisant le tracer initialisé pendant l’installation, créez un nouveau 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
}
Note : Dans ces exemples, nous nous appuyons sur le contexte de la requête HTTP, fourni par r.Context(). La réception du contexte peut être différente dans votre application.

Obtenir le span actuel

Vous pouvez également récupérer le span actuel à l’aide du tracer initialisé pendant l’installation :
func httpHandler(w http.ResponseWriter, r *http.Request) {
	ctx := r.Context()
    span := trace.SpanFromContext(ctx)

	// Set attributes
}
Note : Cela ne retournera un span que si un span est déjà actif. D’autres façons de créer et d’obtenir des spans sont documentées sur la page d’instrumentation OpenTelemetry Go.

Attributs AppSignal

Une fois que vous avez créé ou récupéré un span, vous pouvez définir certains attributs spécifiques à AppSignal pour personnaliser la façon dont les données arrivent dans AppSignal.
span = // Create a new span or fetch the current span
span.SetAttributes(attribute.String("attribute_name", "attribute value"))
Consultez nos guides pour plus d’informations sur les attributs AppSignal personnalisés pris en charge :