From 751ecf1f9e6421e812f25e9fbf9c52c4c28fd70a Mon Sep 17 00:00:00 2001 From: Neil-Jocelyn Schark <neil.schark@h-da.de> Date: Wed, 3 Jul 2024 12:59:27 +0000 Subject: [PATCH] tried first integration --- Makefile | 2 +- go.mod | 1 + go.sum | 2 ++ goKMS/kms/kms.go | 3 ++- goKMS/main.go | 3 +++ goKMS/telemetry/telemetry.go | 27 +++++++++++++++++++ .../docker-compose_integration_test.yml | 4 +++ 7 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 goKMS/telemetry/telemetry.go diff --git a/Makefile b/Makefile index 4f659d08..26dd2f8c 100644 --- a/Makefile +++ b/Makefile @@ -111,7 +111,7 @@ integration-test: generate-integration-test-certs build-images echo "Will sleep for the quantumlayers to get ready" sleep 25 go test -p 1 -count=1 -v ./integration-tests/code/* - docker-compose -f integration-tests/docker-compose_integration_test.yml down +# docker-compose -f integration-tests/docker-compose_integration_test.yml down playground-start: generate-certs build-images sudo containerlab deploy --reconfigure --topo dev_env_data/containerlab/playground.clab.yaml diff --git a/go.mod b/go.mod index e1f4ae4d..4afadde5 100644 --- a/go.mod +++ b/go.mod @@ -39,6 +39,7 @@ require ( github.com/tklauser/go-sysconf v0.3.13 // indirect github.com/tklauser/numcpus v0.7.0 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0 // indirect go.opentelemetry.io/otel v1.28.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0 // indirect diff --git a/go.sum b/go.sum index 8045ebc8..a4fb370f 100644 --- a/go.sum +++ b/go.sum @@ -125,6 +125,8 @@ github.com/tklauser/numcpus v0.7.0/go.mod h1:bb6dMVcj8A42tSE7i32fsIUCbQNllK5iDgu github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0 h1:vS1Ao/R55RNV4O7TA2Qopok8yN+X0LIP6RVWLFkprck= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0/go.mod h1:BMsdeOxN04K0L5FNUBfjFdvwWGNe/rkmSwH4Aelu/X0= go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 h1:3Q/xZUyC1BBkualc9ROb4G8qkH90LXEIICcs5zv1OYY= diff --git a/goKMS/kms/kms.go b/goKMS/kms/kms.go index 5540cb88..ad7f2fa3 100644 --- a/goKMS/kms/kms.go +++ b/goKMS/kms/kms.go @@ -33,6 +33,7 @@ import ( "code.fbi.h-da.de/danet/quant/goKMS/kms/util" pbQS "code.fbi.h-da.de/danet/quipsec/gen/go/quipsec" "github.com/google/uuid" + "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" ) type Route struct { @@ -242,7 +243,7 @@ func (kms *KMS) startGRPC() { log.Fatalf("unable to generate gRPC server: %v", err) } - interKMSServer := grpc.NewServer(grpc.Creds(gRPCTransportCreds)) + interKMSServer := grpc.NewServer(grpc.Creds(gRPCTransportCreds), grpc.StatsHandler(otelgrpc.NewServerHandler())) healthCheck := health.NewServer() healthpb.RegisterHealthServer(interKMSServer, healthCheck) diff --git a/goKMS/main.go b/goKMS/main.go index 51d6ade0..d7f6c289 100644 --- a/goKMS/main.go +++ b/goKMS/main.go @@ -110,6 +110,9 @@ func main() { Receivers: make(map[uuid.UUID]chan<- struct{}), } + if err != nil { + log.Fatalf("failed to initialize OpenTelemetry: %v", err) + } kms := kms.NewKMS(kmsId, os.Stdout, log.GetLevel(), false, kmsConfig, receiver) // start Qkdn Manager server, if there is info about it in the config diff --git a/goKMS/telemetry/telemetry.go b/goKMS/telemetry/telemetry.go new file mode 100644 index 00000000..8c3497ba --- /dev/null +++ b/goKMS/telemetry/telemetry.go @@ -0,0 +1,27 @@ +package telemetry + +import ( + "context" + "fmt" + + "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp" + "go.opentelemetry.io/otel/propagation" + "go.opentelemetry.io/otel/sdk/trace" +) + +// Init configures an OpenTelemetry exporter and trace provider. +func InitOpenTelemitry() (*trace.TracerProvider, error) { + traceExporter, err := otlptracehttp.New(context.TODO(), otlptracehttp.WithInsecure()) + if err != nil { + return nil, fmt.Errorf("failed to create trace exporter: %w", err) + } + + tp := trace.NewTracerProvider( + trace.WithSampler(trace.AlwaysSample()), + trace.WithBatcher(traceExporter), + ) + otel.SetTracerProvider(tp) + otel.SetTextMapPropagator(propagation.NewCompositeTextMapPropagator(propagation.TraceContext{}, propagation.Baggage{})) + return tp, nil +} diff --git a/integration-tests/docker-compose_integration_test.yml b/integration-tests/docker-compose_integration_test.yml index d60c3644..1d4c6ff6 100644 --- a/integration-tests/docker-compose_integration_test.yml +++ b/integration-tests/docker-compose_integration_test.yml @@ -8,6 +8,8 @@ services: "--kms_config", "/tmp/kms/config/kms_1.yaml", ] + environment: + - OTEL_EXPORTER_OTLP_ENDPOINT="http://jaeger:443" volumes: - ./config/kms/kms_1.yaml:/tmp/kms/config/kms_1.yaml - ../artifacts/integration-tests/ssl:/config/ssl @@ -25,6 +27,8 @@ services: "--kms_config", "/tmp/kms/config/kms_2.yaml", ] + environment: + - OTEL_EXPORTER_OTLP_ENDPOINT="http://jaeger:443" volumes: - ./config/kms/kms_2.yaml:/tmp/kms/config/kms_2.yaml - ../artifacts/integration-tests/ssl:/config/ssl -- GitLab