golang使用jaeger進(jìn)行鏈路追蹤
前言
提示:請配置好環(huán)境
一、什么是鏈路追蹤?
鏈路追蹤是指在分布式系統(tǒng)中,將一次請求的處理過程進(jìn)行記錄并聚合展示的一種方法。目的是將一次分布式請求的調(diào)用情況集中在一處展示,如各個服務(wù)節(jié)點(diǎn)上的耗時、請求具體到達(dá)哪臺機(jī)器上、每個服務(wù)節(jié)點(diǎn)的請求狀態(tài)等。這樣就可以輕松了解一個請求在系統(tǒng)中的完整生命周期,包括經(jīng)過的服務(wù)、調(diào)用的操作以及每個操作的延遲等。通過鏈路追蹤,可以更好地理解系統(tǒng)的性能瓶頸、找出問題的根源以及優(yōu)化系統(tǒng)的性能。
二、安裝jaeger
docker pull jaegertracing/all-in-one:latest docker run -d --name myjaeger -p 6831:6831/udp -p 16686:16686 jaegertracing/all-in-one:latest
運(yùn)行:127.0.0.1:16686
三、golang使用jaeger進(jìn)行鏈路追蹤
package main import ( "time" opentracing "github.com/opentracing/opentracing-go" "github.com/uber/jaeger-client-go" jaegercfg "github.com/uber/jaeger-client-go/config" jaegerlog "github.com/uber/jaeger-client-go/log" ) func main() { cfg := jaegercfg.Configuration{ Sampler: &jaegercfg.SamplerConfig{ Type: jaeger.SamplerTypeConst, Param: 1, }, Reporter: &jaegercfg.ReporterConfig{ LogSpans: true, LocalAgentHostPort: "127.0.0.1:6831", }, ServiceName: "deardai-shop", } tracer, closer, err := cfg.NewTracer(jaegercfg.Logger(jaegerlog.StdLogger)) if err != nil { panic(err) } defer closer.Close() //單個追蹤 single_span := tracer.StartSpan("single-span") time.Sleep(time.Second * 3) single_span.Finish() //父子追蹤 parentSpan := tracer.StartSpan("main") span := tracer.StartSpan("func1", opentracing.ChildOf(parentSpan.Context())) time.Sleep(time.Second) span.Finish() span2 := tracer.StartSpan("func2", opentracing.ChildOf(span.Context())) time.Sleep(time.Second * 3) span2.Finish() parentSpan.Finish() }
結(jié)果:
可以看到下圖展示出了兩個鏈路
2. 單個方法的追蹤
多個方法的組合
總結(jié)
到此這篇關(guān)于golang使用jaeger進(jìn)行鏈路追蹤的文章就介紹到這了,更多相關(guān)golang jaeger鏈路追蹤內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
golang實(shí)現(xiàn)redis的延時消息隊(duì)列功能示例
這篇文章主要介紹了golang實(shí)現(xiàn)redis的延時消息隊(duì)列功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11go語言interface接口繼承多態(tài)示例及定義解析
這篇文章主要為大家介紹了go語言interface接口繼承多態(tài)示例及定義解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04