2016-03-27 20 views
2

patchTracesメソッドを使用して、トレース情報をGoogle CloudTraceに送信しようとしています。私が作っているパッチ要求は、不透明なエラーメッセージを返します。私が間違っていることは何か考えていますか?新しいトレースの追加に失敗する

ゴーコード

package main 

import (
    "io/ioutil" 
    "log" 
    "os" 
    "time" 

    "github.com/twinj/uuid" 
    "golang.org/x/oauth2" 
    goog "golang.org/x/oauth2/google" 
    cloudtrace "google.golang.org/api/cloudtrace/v1" 
) 

func run() error { 
    blob, err := ioutil.ReadFile("jwt.json") 
    if err != nil { 
     return err 
    } 
    conf, err := goog.JWTConfigFromJSON(blob, cloudtrace.CloudPlatformScope) 
    if err != nil { 
     return err 
    } 

    client := conf.Client(oauth2.NoContext) 

    srv, err := cloudtrace.New(client) 
    if err != nil { 
     return err 
    } 

    tracer := cloudtrace.NewProjectsService(srv) 
    now := time.Now() 
    format := "2006-01-02T15:04:05.999999999Z" 

    call := tracer.PatchTraces("foo-1262", &cloudtrace.Traces{ 
     Traces: []*cloudtrace.Trace{ 
      { 
       TraceId: uuid.NewV4().String(), 
       ProjectId: "foo-1262", 
       Spans: []*cloudtrace.TraceSpan{ 
        { 
         StartTime: now.Format(format), 
         EndTime: now.Add(5 * time.Second).Format(format), 
         Kind:  "RPC_SERVER", 
         Name:  "bar", 
         SpanId: 100, 
        }, 
       }, 
      }, 
     }, 
    }) 

    _, err = call.Do() 
    return err 
} 

func main() { 
    if err := run(); err != nil { 
     log.Fatal(err) 
    } 
} 

ここで取得するリクエストが送信され

https://cloudtrace.googleapis.com/v1/projects/foo-1262/traces?alt=json 
{ 
    "traces": [{ 
     "projectId": "foo-1262", 
     "spans": [{ 
      "endTime": "2016-03-26T17:23:19.705253417Z", 
      "kind": "RPC_SERVER", 
      "name": "foo", 
      "spanId": "100", 
      "startTime": "2016-03-26T17:23:14.705253417Z" 
     }], 
     "traceId": "4d86ec85-419d-40cf-ae95-d49c2d066cd6" 
    }] 
} 

応答

{ 
    "error": { 
     "code": 400, 
     "message": "Request contains an invalid argument.", 
     "errors": [{ 
      "message": "Request contains an invalid argument.", 
      "domain": "global", 
      "reason": "badRequest" 
     }], 
     "status": "INVALID_ARGUMENT" 
    } 
} 

すべてが正しいようだが、私は役に立たないエラーメッセージが戻ってきています。助けてください!

答えて

0

私のトレースIDの生成に間違いがありました。

package main 

import (
    "io/ioutil" 
    "log" 
    "os" 
    "time" 
    "encoding/hex" 
    "rand" 

    "golang.org/x/oauth2" 
    goog "golang.org/x/oauth2/google" 
    cloudtrace "google.golang.org/api/cloudtrace/v1" 
) 

func run() error { 
    blob, err := ioutil.ReadFile("jwt.json") 
    if err != nil { 
     return err 
    } 
    conf, err := goog.JWTConfigFromJSON(blob, cloudtrace.CloudPlatformScope) 
    if err != nil { 
     return err 
    } 

    client := conf.Client(oauth2.NoContext) 

    srv, err := cloudtrace.New(client) 
    if err != nil { 
     return err 
    } 

    tracer := cloudtrace.NewProjectsService(srv) 
    now := time.Now() 
    format := "2006-01-02T15:04:05.999999999Z" 

    p := make([]byte, 16) 
    rand.Read(p) 

    call := tracer.PatchTraces("foo-1262", &cloudtrace.Traces{ 
     Traces: []*cloudtrace.Trace{ 
      { 
       TraceId: hex.EncodeToString(p), 
       ProjectId: "foo-1262", 
       Spans: []*cloudtrace.TraceSpan{ 
        { 
         StartTime: now.Format(format), 
         EndTime: now.Add(5 * time.Second).Format(format), 
         Kind:  "RPC_SERVER", 
         Name:  "bar", 
         SpanId: 100, 
        }, 
       }, 
      }, 
     }, 
    }) 

    _, err = call.Do() 
    return err 
} 

func main() { 
    if err := run(); err != nil { 
     log.Fatal(err) 
    } 
} 
+0

あなたはこれを回答済みおよび/または更新としてマークしないでください。 – tmc

関連する問題