From 206bbabadd252371665c97427bb98f99510c156b Mon Sep 17 00:00:00 2001 From: Severin Neumann Date: Sun, 15 Jan 2023 00:27:12 +0100 Subject: [PATCH] Add resource detectors to product catalog service (#677) * Add resource detectors to product catalog service Signed-off-by: svrnm * Set PR id in changelog Signed-off-by: svrnm * restore go.mod and go.sum from current main Signed-off-by: Severin Neumann * add resources to metrics Signed-off-by: Severin Neumann Signed-off-by: svrnm Signed-off-by: Severin Neumann Co-authored-by: Juliano Costa --- CHANGELOG.md | 2 ++ docs/services/productcatalogservice.md | 5 +++- src/productcatalogservice/go.mod | 1 + src/productcatalogservice/go.sum | 2 +- src/productcatalogservice/main.go | 35 +++++++++++++++++++++++--- 5 files changed, 39 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f65c42f143..14105df556 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -182,3 +182,5 @@ significant modifications will be credited to OpenTelemetry Authors. ([#674](https://github.com/open-telemetry/opentelemetry-demo/pull/674)) * Add resource detectors to accounting service ([#676](https://github.com/open-telemetry/opentelemetry-demo/pull/676)) +* Add resource detectors to product catalog service +([#677](https://github.com/open-telemetry/opentelemetry-demo/pull/677)) diff --git a/docs/services/productcatalogservice.md b/docs/services/productcatalogservice.md index a261c5f604..24e3548f1e 100644 --- a/docs/services/productcatalogservice.md +++ b/docs/services/productcatalogservice.md @@ -21,7 +21,10 @@ func initTracerProvider() *sdktrace.TracerProvider { if err != nil { log.Fatalf("OTLP Trace gRPC Creation: %v", err) } - tp := sdktrace.NewTracerProvider(sdktrace.WithBatcher(exporter)) + tp := sdktrace.NewTracerProvider( + sdktrace.WithBatcher(exporter), + sdktrace.WithResource(initResource()), + ) otel.SetTracerProvider(tp) otel.SetTextMapPropagator(propagation.NewCompositeTextMapPropagator(propagation.TraceContext{}, propagation.Baggage{})) return tp diff --git a/src/productcatalogservice/go.mod b/src/productcatalogservice/go.mod index 4499c9fbff..4db8e66af3 100644 --- a/src/productcatalogservice/go.mod +++ b/src/productcatalogservice/go.mod @@ -38,3 +38,4 @@ require ( golang.org/x/text v0.4.0 // indirect google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350 // indirect ) + diff --git a/src/productcatalogservice/go.sum b/src/productcatalogservice/go.sum index b76f3c7cb6..2707a441fc 100644 --- a/src/productcatalogservice/go.sum +++ b/src/productcatalogservice/go.sum @@ -501,4 +501,4 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= \ No newline at end of file diff --git a/src/productcatalogservice/main.go b/src/productcatalogservice/main.go index 15454e0f4d..5c57108615 100644 --- a/src/productcatalogservice/main.go +++ b/src/productcatalogservice/main.go @@ -21,6 +21,7 @@ import ( "net" "os" "strings" + "sync" "time" pb "github.com/opentelemetry/opentelemetry-demo/src/productcatalogservice/genproto/hipstershop" @@ -37,6 +38,7 @@ import ( "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc" "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc" "go.opentelemetry.io/otel/propagation" + sdkresource "go.opentelemetry.io/otel/sdk/resource" sdktrace "go.opentelemetry.io/otel/sdk/trace" "go.opentelemetry.io/otel/trace" @@ -49,8 +51,10 @@ import ( ) var ( - log *logrus.Logger - catalog []*pb.Product + log *logrus.Logger + catalog []*pb.Product + resource *sdkresource.Resource + initResourcesOnce sync.Once ) func init() { @@ -58,6 +62,23 @@ func init() { catalog = readCatalogFile() } +func initResource() *sdkresource.Resource { + initResourcesOnce.Do(func() { + extraResources, _ := sdkresource.New( + context.Background(), + sdkresource.WithOS(), + sdkresource.WithProcess(), + sdkresource.WithContainer(), + sdkresource.WithHost(), + ) + resource, _ = sdkresource.Merge( + sdkresource.Default(), + extraResources, + ) + }) + return resource +} + func initTracerProvider() *sdktrace.TracerProvider { ctx := context.Background() @@ -65,7 +86,10 @@ func initTracerProvider() *sdktrace.TracerProvider { if err != nil { log.Fatalf("OTLP Trace gRPC Creation: %v", err) } - tp := sdktrace.NewTracerProvider(sdktrace.WithBatcher(exporter)) + tp := sdktrace.NewTracerProvider( + sdktrace.WithBatcher(exporter), + sdktrace.WithResource(initResource()), + ) otel.SetTracerProvider(tp) otel.SetTextMapPropagator(propagation.NewCompositeTextMapPropagator(propagation.TraceContext{}, propagation.Baggage{})) return tp @@ -79,7 +103,10 @@ func initMeterProvider() *sdkmetric.MeterProvider { log.Fatalf("new otlp metric grpc exporter failed: %v", err) } - mp := sdkmetric.NewMeterProvider(sdkmetric.WithReader(sdkmetric.NewPeriodicReader(exporter))) + mp := sdkmetric.NewMeterProvider( + sdkmetric.WithReader(sdkmetric.NewPeriodicReader(exporter)), + sdkmetric.WithResource(initResource()), + ) global.SetMeterProvider(mp) return mp }