亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

跟蹤器發送跨度

跟蹤器發送跨度

Go
心有法竹 2023-08-07 14:26:00
我正在嘗試在 Go 中與 Jaeger 一起使用儀器。我正在使用 docker 運行 Jaeger 后端,如下所示(如https://www.jaegertracing.io/docs/1.15/getting-started/中所述):docker run -d --name jaeger \  -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \  -p 5775:5775/udp \  -p 6831:6831/udp \  -p 6832:6832/udp \  -p 5778:5778 \  -p 16686:16686 \  -p 14268:14268 \  -p 9411:9411 \  jaegertracing/all-in-one:1.15但是,運行以下 Go 代碼后,我無法在http://localhost:16686 的Jaeger UI 中看到跨度,并且我不確定這段代碼有什么問題?我從一段類似的 Python 代碼開始,它能夠在 Jaeger UI 上發布跨度。package mainimport (    "fmt"    "io"    opentracing "github.com/opentracing/opentracing-go"    jaeger "github.com/uber/jaeger-client-go"    jaegercfg "github.com/uber/jaeger-client-go/config")func initJaeger(service string) (opentracing.Tracer, io.Closer) {    agentIP := "localhost"    agentPort := "5775"    so := jaeger.SamplerOptionsFactory{}    logger := jaeger.StdLogger    logger.Infof("Sending Traces to %s %s", agentIP, agentPort)    cfg := &jaegercfg.Configuration{        Sampler: &jaegercfg.SamplerConfig{            Type:    "const",            Param:   1,            Options: []jaeger.SamplerOption{so.Logger(logger)},        },        ServiceName: service,        Reporter: &jaegercfg.ReporterConfig{            LogSpans:           true,            LocalAgentHostPort: agentIP + ":" + agentPort,        },    }    tracer, closer, err := cfg.NewTracer(jaegercfg.Logger(logger))    if err != nil {        panic(fmt.Sprintf("ERROR: cannot init Jaeger: %v\n", err))    }    opentracing.SetGlobalTracer(tracer)    return opentracing.GlobalTracer(), closer}func main() {    tracer, closer := initJaeger("foo-go-service")    span := tracer.StartSpan("GoTestSpan")    var myMap = make(map[string]interface{})    myMap["foo"] = 42    myMap["bar"] = "42"    span.LogKV(myMap)}我正在挖掘這里的文檔https://godoc.org/github.com/uber/jaeger-client-go以及這里的開放跟蹤項目的文檔https://godoc.org/github.com/opentracing/opentracing -go但我對術語和庫函數/方法有點困惑。我想將“通用”事件發布到 Jaeger 后端并在 Jaeger UI 中查看這些事件。我還想使用某種請求結構的自動包裝器來發布“HTTP 請求”事件,但現在即使是簡單/通用事件也很好。
查看完整描述

1 回答

?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

我能夠發布一些跨度,以便我可以在http://localhost:16686上看到它們

  • 我們應該SetOperationName在 Span 上,以便我們可以在 UI 上使用人類可讀的名稱來識別它

  • 我們還應該推遲span.Finish()通話,看來這就是為什么我在用戶界面上看不到任何內容的原因

這是更新后的主要功能:

func main() {


    tracer, closer := initJaeger("foo-go-service")

    defer closer.Close()


    span := tracer.StartSpan("GoTestSpan")

    defer span.Finish()

    span.SetOperationName("opNameGoTestSpan")

    var myMap = make(map[string]interface{})

    myMap["foo"] = 42

    myMap["bar"] = "42"

    span.LogKV(myMap)


    // time.Sleep(2 * time.Second)


    childSpanRef := opentracing.ChildOf(span.Context())

    childSpan := tracer.StartSpan("GoChildSpan", childSpanRef)

    defer childSpan.Finish()

    childSpan.SetOperationName("opNameGoChildSpan")

    var myMap2 = make(map[string]interface{})

    myMap2["foo2"] = 42

    myMap2["bar2"] = "42"

    childSpan.LogKV(myMap2)

}


查看完整回答
反對 回復 2023-08-07
  • 1 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號