OpenTelemetry Intégration pour les applications d' Go
Vous pouvez intégrer OpenTelemetry à Instana pour les applications Go en utilisant l'exportateur par défaut OTLP dans une configuration basée sur un agent, et l'exportateur Instana Go OpenTelemetry dans les environnements sans serveur.
La principale méthode d'intégration avec OpenTelemetry consiste à configurer l'exportateur OTLP par défaut de toute application surveillée par OpenTelemetry afin qu'il envoie ses données à l'agent Instana.
Pour plus d'informations, consultez la page « OpenTelemetry ».
Exportateur d' OpenTelemetry s sans serveur
Le module github.com/instana/go-otel-exporter propose un exportateur OpenTelemetry qui convertit et envoie les segments de données de l' OpenTelemetry vers le backend Instana.
L'exportateur Instana Go OpenTelemetry est principalement conçu pour être utilisé dans des environnements sans serveur, tels que AWS Lambda ou AWS Fargate. Instana prend déjà en charge OpenTelemetry pour SaaS ainsi que les solutions auto-hébergées via l'agent hôte. Toutefois, si vos applications « Go » s’exécutent dans un environnement sans serveur, où l’agent n’est pas présent, l’exportateur « serverless OpenTelemetry » est la solution à privilégier.
Pour utiliser l'exportateur, installez le module dans votre projet, créez une nouvelle instance de l'exportateur avec instana.New() et ajoutez-la au fournisseur Tracer.
L'exportateur attend deux variables d'environnement Instana qui doivent être fournies à l'application :
INSTANA_AGENT_KEYINSTANA_ENDPOINT_URL
Un exemple d'utilisation complète de l'exportateur est décrit comme suit:
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
}
Lorsque l'application surveillée par OpenTelemetry s'exécute, l'exportateur Instana convertit les segments OpenTelemetry en segments Instana, puis les envoie au point de terminaison du backend.
La visualisation des traces d' OpenTelemetry s sera disponible dans l'interface utilisateur d' Instana, au même titre que les segments de traçage classiques d' Instana.