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_KEY
  • INSTANA_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.