OpenTelemetry Integration for Go Applications
Głównym podejściem do integracji z produktem OpenTelemetry jest skonfigurowanie domyślnego eksportera OTLP dla dowolnej aplikacji, która jest monitorowana przez OpenTelemetry w celu wysłania swoich danych do agenta na Instana. Opis ten jest opisany na stronie OpenTelemetry .
Serverless OpenTelemetry Exporter
Moduł github.com/instana/go-otel-exporter oferuje eksporterowiOpenTelemetry , który przekształca i wysyła OpenTelemetry w tył na serwer Instana.
Program eksporterowy Instana Go OpenTelemetry jest przeznaczony przede wszystkim do użycia w środowiskach serwerowych, takich jak AWS Lambda lub AWS Fargate. Instana już obsługuje OpenTelemetry dla SaaS i samodzielne udostępniane rozwiązania za pośrednictwem agenta hosta. Jeśli jednak aplikacje Go działają w środowisku bez serwera, w którym agent nie jest obecny, serwer OpenTelemetry jest sposobem na przejście do serwera, który nie jest serwerem.
Aby użyć eksportera, zainstaluj moduł w projekcie, utwórz nową instancję eksportera z produktem instana.New() i dodaj go do dostawcy produktu Tracer.
Eksporter oczekuje dwóch zmiennych środowiskowych Instana , które muszą być udostępnione dla aplikacji:
INSTANA_AGENT_KEYINSTANA_ENDPOINT_URL
Przykład pełnego wykorzystania eksportera jest opisany w następujący sposób:
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
}
Gdy aplikacja monitorowana przez program OpenTelemetry zostanie uruchomiona, eksporter Instana przekształci OpenTelemetry w spany na Instana i prześle je do punktu końcowego zaplecza.
Wizualizacja śledzenia OpenTelemetry będzie prezentowana w interfejsie użytkownika Instana, podobnie jak zwykłe śledziony na Instanie.