gogoogle-app-enginedatastoregoogle-cloud-trace

Datastore calls in Trace Golang


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


Solution

  • 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 {