OpenTelemetry Integration für „ Go “-Anwendungen
Sie können OpenTelemetry in Instana für Go -Anwendungen integrieren, indem Sie den standardmäßigen OTLP Exporter in agentenbasierten Setups und den Instana Go OpenTelemetry Exporter in serverlosen Umgebungen verwenden.
Der wichtigste Ansatz für die Integration mit OpenTelemetry besteht darin, den Standard-Exporter „ OTLP “ jeder Anwendung, die von OpenTelemetry überwacht wird, so zu konfigurieren, dass ihre Daten an den Instana -Agenten gesendet werden.
Weitere Informationen finden Sie auf der Seite „ OpenTelemetry “.
Serverloser Exporter für „ OpenTelemetry “
Das Modul „ github.com/instana/go-otel-exporter “ bietet einen „ OpenTelemetry “-Exporter, der „ OpenTelemetry “-Spans konvertiert und an das Backend „ Instana “ sendet.
Der Exporter unter Instana Go OpenTelemetry ist in erster Linie für den Einsatz in serverlosen Umgebungen wie AWS Lambda oder AWS Fargate konzipiert. Instana bietet bereits Unterstützung für „ OpenTelemetry “ für „ SaaS “ sowie für selbst gehostete Lösungen über den Host-Agenten. Wenn Ihre „ Go “-Anwendungen jedoch in einer serverlosen Umgebung laufen, in der kein Agent vorhanden ist, sollten Sie den „serverless OpenTelemetry “-Exporter verwenden.
Um die Exportfunktion zu verwenden, installieren Sie das Modul in Ihrem Projekt, erstellen Sie eine neue Instanz der Exportfunktion mit instana.New() und fügen Sie sie zum Tracer-Provider hinzu.
Der Exporter erwartet zwei Umgebungsvariablen namens „ Instana “, die der Anwendung bereitgestellt werden müssen:
INSTANA_AGENT_KEYINSTANA_ENDPOINT_URL
Ein vollständiges Verwendungsbeispiel des Exportprogramms wird wie folgt beschrieben:
package main
import (
"context"
"time"
instana "github.com/instana/go-otel-exporter"
"go.opentelemetry.io/otel"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
"go.opentelemetry.io/otel/trace"
)
// This example application demonstrates how to use the Instana OTel Exporter.
// Make sure to provide the required environment variables before run the application:
// * INSTANA_ENDPOINT_URL
// * INSTANA_AGENT_KEY
func main() {
ch := make(chan bool)
// Acquire an instance of the Instana OTel Exporter
exporter := instana.New()
// Setup and bootstrap the tracer provider
tracerProvider := sdktrace.NewTracerProvider(
sdktrace.WithBatcher(exporter),
)
otel.SetTracerProvider(tracerProvider)
ctx := context.Background()
// Instrument something with OTel
tracer := otel.Tracer("my-traced-tech")
_, span := tracer.Start(ctx, "my_span", trace.WithSpanKind(trace.SpanKindServer))
// This simulates the time that a span takes to be completed
time.Sleep(time.Millisecond * 400)
span.End()
<-ch
}
Wenn die von OpenTelemetry überwachte Anwendung ausgeführt wird, wandelt der Exporter von Instana die Spans von OpenTelemetry in Spans von Instana um und sendet sie an den Backend-Endpunkt.
Die Visualisierung von „ OpenTelemetry “-Traces wird in der Benutzeroberfläche von „ Instana “ angezeigt, genau wie normale „ Instana “-Tracing-Spans.