Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 追加新跟踪失败_Go_Google Api_Google Cloud Trace - Fatal编程技术网

Go 追加新跟踪失败

Go 追加新跟踪失败,go,google-api,google-cloud-trace,Go,Google Api,Google Cloud Trace,我正在尝试使用该方法将跟踪信息提交到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 "go

我正在尝试使用该方法将跟踪信息提交到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"
    }
}

看起来一切正常,但我收到了一条无用的错误消息。请帮忙

我的跟踪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)
    }
}

您不应该将此标记为已回答和/或更新它吗?