import "cloud.google.com/go/trace"
traceClient, err = trace.NewClient(ctx, "project-id") if err != nil { log.Fatal(err) }
func fetchUsers() ([]*User, error) { span := traceClient.NewSpan("/users") defer span.Finish() // Create the outgoing request, a GET to the users endpoint. req, _ := http.NewRequest("GET", "https://userservice.corp/users", nil) // Create a new child span to identify the outgoing request, // and attach tracing information to the request. rspan := span.NewRemoteChild(req) defer rspan.Finish() res, err := http.DefaultClient.Do(req) if err != nil { return nil, err } // Read the body, unmarshal, and return a slice of users. // ... }
func usersHandler(w http.ResponseWriter, r *http.Request) { span := traceClient.SpanFromRequest(r) defer span.Finish() req, _ := http.NewRequest("GET", "https://meta.service/info", nil) child := span.NewRemoteChild(req) defer child.Finish() // Make the request… }
var tc *trace.Client // initiate the client req, _ := http.NewRequest("GET", "https://userservice.corp/users", nil) res, err := tc.NewHTTPClient(nil).Do(req) if err != nil { // TODO: Handle error. }
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { span := trace.FromContext(r.Context()) // TODO: Use the span. }) http.Handle("/foo", tc.HTTPHandler(handler))
0 件のコメント :
コメントを投稿