Datastore calls in Trace Golang

176 Views Asked by At

when I was using go111, I had traces of all my Datastore calls (similar to image below). But as soon as I upgraded to go115 and started using cloud.google.com/go/datastore, I lost this information completely. I tried to set up telemetry by adding in my main:

projectID := os.Getenv("GOOGLE_CLOUD_PROJECT")
exporter, err := texporter.NewExporter(texporter.WithProjectID(projectID))
if err != nil {
    log.Fatalf(bgCtx, "texporter.NewExporter of '%v': %v", projectID, err)
}
tp := sdktrace.NewTracerProvider(sdktrace.WithBatcher(exporter))
defer tp.ForceFlush(bgCtx)
otel.SetTracerProvider(tp)

But this didn't work. Am I missing anything to tell the datastore library to export those calls?

Thank you!

enter image description here

1

There are 1 best solutions below

0
On BEST ANSWER

I finally found https://github.com/GoogleCloudPlatform/golang-samples/blob/master/trace/trace_quickstart/main.go

and realized I was missing the following:

trace.RegisterExporter(exporter)

This solved my problem. Then I also added the following on localhost

trace.ApplyConfig(trace.Config{DefaultSampler: trace.AlwaysSample()})

To make sure all requests are traced:

httpHandler := &ochttp.Handler{
    // Use the Google Cloud propagation format.
    Propagation: &propagation.HTTPFormat{},
}
if err := http.ListenAndServe(":"+port, httpHandler); err != nil {