From 23a4299d51b4bb5a3f1c5ecd213ab4762e155300 Mon Sep 17 00:00:00 2001 From: Po-Yao Chen Date: Wed, 20 Aug 2025 19:59:54 +0100 Subject: [PATCH 1/3] update --- server/server.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/server/server.go b/server/server.go index da5849c..b17b283 100644 --- a/server/server.go +++ b/server/server.go @@ -24,6 +24,7 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "github.com/theparanoids/crypki/certreload" "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" + "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/sdk/resource" semconv "go.opentelemetry.io/otel/semconv/v1.26.0" "google.golang.org/grpc" @@ -135,10 +136,16 @@ func Main() { go logRotate(file) if cfg.OTel.Enabled { + otelAttributes := []attribute.KeyValue{semconv.ServiceNameKey.String("crypki")} + + serviceInstanceID := os.Getenv("SERVICE_INSTANCE_ID") + if serviceInstanceID != "" { + otelAttributes = append(otelAttributes, semconv.ServiceInstanceIDKey.String(serviceInstanceID)) + } + otelResource, err := resource.Merge( resource.Default(), - resource.NewWithAttributes(semconv.SchemaURL, semconv.ServiceNameKey.String("crypki"), - semconv.ServiceInstanceIDKey.String(os.Getenv("SERVICE_INSTANCE_ID"))), + resource.NewWithAttributes(semconv.SchemaURL, otelAttributes...), ) if err != nil { log.Fatalf("Error merging resources: %v", err) From c0c12c45096c025cf0c920bfe098ba829811d656 Mon Sep 17 00:00:00 2001 From: Po-Yao Chen Date: Wed, 20 Aug 2025 20:04:49 +0100 Subject: [PATCH 2/3] update --- config/config.go | 2 ++ server/server.go | 8 +++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/config/config.go b/config/config.go index f6fa24a..5ee06bf 100644 --- a/config/config.go +++ b/config/config.go @@ -161,6 +161,8 @@ type Config struct { ClientKeyPath string // CACertPath specifies path to root CA cert, used to verify OTel collector cert. CACertPath string + // ServiceInstanceID is the unique identifier for this instance of the service showing in OTel metrics. + ServiceInstanceID string } } diff --git a/server/server.go b/server/server.go index b17b283..0d34dc7 100644 --- a/server/server.go +++ b/server/server.go @@ -138,9 +138,11 @@ func Main() { if cfg.OTel.Enabled { otelAttributes := []attribute.KeyValue{semconv.ServiceNameKey.String("crypki")} - serviceInstanceID := os.Getenv("SERVICE_INSTANCE_ID") - if serviceInstanceID != "" { - otelAttributes = append(otelAttributes, semconv.ServiceInstanceIDKey.String(serviceInstanceID)) + if cfg.OTel.ServiceInstanceID == "" { + cfg.OTel.ServiceInstanceID = os.Getenv("SERVICE_INSTANCE_ID") + } + if cfg.OTel.ServiceInstanceID != "" { + otelAttributes = append(otelAttributes, semconv.ServiceInstanceIDKey.String(cfg.OTel.ServiceInstanceID)) } otelResource, err := resource.Merge( From e8bbb1c0138970dd5b185a9cd1c69bd3f02d1b25 Mon Sep 17 00:00:00 2001 From: Po-Yao Chen Date: Wed, 20 Aug 2025 20:08:28 +0100 Subject: [PATCH 3/3] fix test --- config/config_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/config/config_test.go b/config/config_test.go index a7e473c..09ef5d2 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -54,6 +54,7 @@ func TestParse(t *testing.T) { ClientCertPath string ClientKeyPath string CACertPath string + ServiceInstanceID string }{ Enabled: true, OTELCollectorEndpoint: "http://localhost:4317",