Zum Hauptinhalt springen
AppSignal ist kompatibel mit OpenTelemetry-Instrumentierungspaketen. Einige dieser Instrumentierungspakete erfordern möglicherweise eine zusätzliche Einrichtung. Diese enthalten nicht immer die Informationen, die Sie zum Debuggen von Problemen benötigen. Für ein feingranulareres Reporting können Sie benutzerdefinierte Instrumentierung hinzufügen. Wir unterstützen OpenTelemetry-Tracing wie in der OpenTelemetry-Dokumentation beschrieben. Es ist möglich, einem Span mithilfe von OpenTelemetry-Span-Attributen weitere Daten hinzuzufügen. Es gibt außerdem AppSignal-Span-Attribute, die ändern können, wie Traces gruppiert werden, sowie einige Attribute, die das Herausfiltern sensibler Daten ermöglichen.

Einrichtung

Wenn Sie benutzerdefinierte Instrumentierung hinzufügen, importieren Sie zunächst das OpenTelemetry-Trace-Paket in der Datei, der Sie die Instrumentierung hinzufügen möchten.
import (
	"go.opentelemetry.io/otel"
	"go.opentelemetry.io/otel/attribute"
	"go.opentelemetry.io/otel/trace"
)

Einen neuen Span erstellen

Erstellen Sie mit dem während der Installation initialisierten Tracer einen neuen 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
}
Hinweis: In diesen Beispielen verlassen wir uns auf den Kontext aus dem HTTP-Request, der durch r.Context() bereitgestellt wird. Das Empfangen des Kontexts kann in Ihrer Anwendung anders sein.

Den aktuellen Span abrufen

Sie können den aktuellen Span auch mit dem während der Installation initialisierten Tracer abrufen:
func httpHandler(w http.ResponseWriter, r *http.Request) {
	ctx := r.Context()
    span := trace.SpanFromContext(ctx)

	// Set attributes
}
Hinweis: Dies gibt nur dann einen Span zurück, wenn bereits einer aktiv ist. Weitere Möglichkeiten zum Erstellen und Abrufen von Spans sind auf der OpenTelemetry-Go-Instrumentierungsseite dokumentiert.

AppSignal-Attribute

Sobald Sie einen Span erstellt oder abgerufen haben, können Sie bestimmte AppSignal-spezifische Attribute setzen, um anzupassen, wie die Daten in AppSignal eintreffen.
span = // Create a new span or fetch the current span
span.SetAttributes(attribute.String("attribute_name", "attribute value"))
Weitere Informationen dazu, welche benutzerdefinierten AppSignal-Attribute unterstützt werden, finden Sie in unseren Leitfäden: