From 941db997d84317c1fb649a0aa2b5bea69010812e Mon Sep 17 00:00:00 2001 From: Stanley Liu Date: Tue, 18 Mar 2025 16:20:38 -0400 Subject: [PATCH 1/2] Add second log --- apps/rest-services/golang/calendar/server.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/rest-services/golang/calendar/server.go b/apps/rest-services/golang/calendar/server.go index e76a836..576b1d7 100644 --- a/apps/rest-services/golang/calendar/server.go +++ b/apps/rest-services/golang/calendar/server.go @@ -88,12 +88,17 @@ func NewServer(name string, mp metric.MeterProvider) (*Server, error) { } func getDate(ctx context.Context) string { + span := trace.SpanFromContext(ctx) + logger.Info( + "getting random date", + zap.String("dd.trace_id", span.SpanContext().TraceID().String()), + zap.String("dd.span_id", span.SpanContext().SpanID().String()), + ) dayOffset := rand.Intn(365) startDate := time.Date(2023, time.January, 1, 0, 0, 0, 0, time.Local) day := startDate.AddDate(0, 0, dayOffset) d := day.Format(time.DateOnly) - span := trace.SpanFromContext(ctx) logger.Info( "random date", zap.String("date", d), From 6e2a63011d47ff29f7ed5573a59a1c72d839b0f5 Mon Sep 17 00:00:00 2001 From: Stanley Liu Date: Fri, 21 Mar 2025 13:43:23 -0400 Subject: [PATCH 2/2] Add client span --- apps/rest-services/golang/calendar/main.go | 2 +- apps/rest-services/golang/calendar/server.go | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/apps/rest-services/golang/calendar/main.go b/apps/rest-services/golang/calendar/main.go index 762b834..b1206c7 100644 --- a/apps/rest-services/golang/calendar/main.go +++ b/apps/rest-services/golang/calendar/main.go @@ -190,7 +190,7 @@ func realMain() error { logger.Error("meterProvider Shutdown failed", zap.Error(err)) } }() - server, err := NewServer(name, meterProvider) + server, err := NewServer(name, meterProvider, tp) if err != nil { logger.Fatal("can't create new server", zap.Error(err)) return err diff --git a/apps/rest-services/golang/calendar/server.go b/apps/rest-services/golang/calendar/server.go index 576b1d7..3a48838 100644 --- a/apps/rest-services/golang/calendar/server.go +++ b/apps/rest-services/golang/calendar/server.go @@ -10,6 +10,7 @@ import ( "sync/atomic" "time" + "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/trace" "go.uber.org/zap" @@ -17,6 +18,7 @@ import ( type Server struct { name string + tracer trace.Tracer rnd *rand.Rand apiCounter metric.Int64Counter latency metric.Float64Histogram @@ -25,7 +27,8 @@ type Server struct { activeUsersCount *atomic.Int64 } -func NewServer(name string, mp metric.MeterProvider) (*Server, error) { +func NewServer(name string, mp metric.MeterProvider, tp trace.TracerProvider) (*Server, error) { + tracer := tp.Tracer(name) meter := mp.Meter(name) apiCounter, err := meter.Int64Counter( name+".api.counter", @@ -78,6 +81,7 @@ func NewServer(name string, mp metric.MeterProvider) (*Server, error) { return &Server{ name: name, + tracer: tracer, rnd: rand.New(rand.NewSource(time.Now().Unix())), apiCounter: apiCounter, latency: histogram, @@ -87,8 +91,14 @@ func NewServer(name string, mp metric.MeterProvider) (*Server, error) { }, nil } -func getDate(ctx context.Context) string { - span := trace.SpanFromContext(ctx) +func (s *Server) getDate(ctx context.Context) string { + _, span := s.tracer.Start( + ctx, + "getDate", + trace.WithSpanKind(trace.SpanKindClient), + trace.WithAttributes(attribute.String("peer.service", "random-date-service")), + ) + defer span.End() logger.Info( "getting random date", zap.String("dd.trace_id", span.SpanContext().TraceID().String()), @@ -141,7 +151,7 @@ func (s *Server) calendarHandler(w http.ResponseWriter, r *http.Request) { logger.Error("encoding resp", zap.Error(err)) } case <-timer.C: - dt := getDate(ctx) + dt := s.getDate(ctx) resp := response{ Date: dt, }