故障快速定位:可以通過呼叫鏈結合業務紀錄檔快速定位錯誤資訊
鏈路效能視覺化:各個階段鏈路耗時、服務依賴關係可以通過視覺化介面展現出來
鏈路分析:通過分析鏈路耗時、服務依賴關係可以得到使用者的行為路徑,彙總分析應用在很多業務場景
它是用來監視和診斷基於微服務的分散式系統
用於服務依賴性分析,輔助效能優化
高擴充套件性
原生支援OpenTracing
可觀察性
Jaeger-client ( 使用者端庫)
Agent ( 使用者端代理)
Collector ( 資料收集處理)
Data Store ( 資料儲存)
UI (資料查詢與前端介面展示)
docker pull jaegertracing/all-in-one
docker run -d --name jaeger -p 6831:6831/udp -p 16686:16686 jaegertracing/all-in-one
docker ps
檢視是否jaeger執行go get github.com/opentracing/opentracing-go
go get github.com/uber/jaeger-client-go
go get github.com/micro/go-plugins/wrapper/trace/opentracing/v2
package micro
import (
"github.com/opentracing/opentracing-go"
"github.com/uber/jaeger-client-go"
"github.com/uber/jaeger-client-go/config"
"io"
"time"
)
// NewTracer 建立鏈路追蹤
func NewTracer(serviceName string,addr string)(opentracing.Tracer,io.Closer,error){
cfg := &config.Configuration{
ServiceName: serviceName,
Sampler: &config.SamplerConfig{
Type: jaeger.SamplerTypeConst,
Param: 1,
},
Reporter: &config.ReporterConfig{
BufferFlushInterval: 1 * time.Second,
LogSpans: true,
LocalAgentHostPort: addr,
},
}
return cfg.NewTracer()
}
// 5.jaeger 鏈路追蹤
t, io, err := micro.NewTracer(micro.ConsulInfo.Jaeger.ServiceName, micro.ConsulInfo.Jaeger.Addr)
if err != nil {
logger.Error(err)
return
}
defer io.Close()
opentracing.SetGlobalTracer(t)
//新增鏈路追蹤
micro.WrapHandler(opentracing2.NewHandlerWrapper(opentracing.GlobalTracer())),
至此,go-micro微服務jaeger鏈路追蹤開發工作就正式完成。
接下來就開始Prometheus監控的程式碼編寫了,希望大家關注博主和關注專欄,第一時間獲取最新內容,每篇部落格都乾貨滿滿。