2016-11-10 8 views
1

Hier ist eine Verkleinerung der Verwendung des Stackdriver-Trace-Client-Pakets.minimale Stackdriver-Trace-Client-Nutzung fehlgeschlagen

Es scheint, als ob dieses triviale Beispiel funktionieren sollte, aber es erzeugt einen Fehler.

package main 

import (
    "context" 
    "flag" 
    "log" 
    "net/http" 

    "cloud.google.com/go/trace" 
    "github.com/davecgh/go-spew/spew" 
    "google.golang.org/api/option" 
) 

var (
    projectID   = flag.String("projectID", "", "projcect id") 
    serviceAccountKey = flag.String("serviceAccountKey", "", "path to serviceacount json") 
) 

func main() { 
    flag.Parse() 
    mux := http.NewServeMux() 
    log.Fatalln(http.ListenAndServe(":9000", Trace(*projectID, *serviceAccountKey, mux))) 
} 

func Trace(projectID string, keyPath string, h http.Handler) http.HandlerFunc { 
    client, err := trace.NewClient(context.Background(), projectID, option.WithServiceAccountFile(keyPath)) 
    if err != nil { 
     panic(err) 
    } 
    return func(w http.ResponseWriter, r *http.Request) { 
     s := client.SpanFromRequest(r) 
     defer func() { err := s.FinishWait(); spew.Dump(err) }() 
     h.ServeHTTP(w, r) 
    } 
} 

Ich laufe dies als:

$ teststackdrivertrace -projectID ${GCLOUD_PROJECT_ID} -serviceAccountKey ${PATH_TO_SERVICEACCOUNT_JSON} 

und Curling es produziert:

$ curl -s --header "X-Cloud-Trace-Context: 205445aa7843bc8bf206b120001000/0;o=1" localhost:9000 

$ (*googleapi.Error)(0xc4203a2c80)(googleapi: Error 400: Request contains an invalid argument., badRequest) 

Was bin ich?

Antwort