golang 接入鏈路追蹤(opentracing)
前言
本文主要講述 golang 如何接入開放式鏈路追蹤(opentracing)。
OpenTracing-Go-Plugins 介紹
opentracing-go-plugins是一個opentracing-go外掛庫。 該外掛庫支援 net/http、grpc、gin、goredis、gorm 等。
如何接入
引入包
go get -u github.com/yuewokeji/opentracing-go-plugins
初始化 tracer
我們以jaeger為例,先建立 tracer 例項,再呼叫方法opentracing.GlobalTracer()
設定一個全域性的 tracer
package main
import (
"github.com/opentracing/opentracing-go"
"github.com/uber/jaeger-client-go"
"github.com/uber/jaeger-client-go/transport"
"io"
)
func initJaeger(service, url string) (opentracing.Tracer, io.Closer) {
sender := transport.NewHTTPTransport(url)
reporter := jaeger.NewRemoteReporter(sender, jaeger.ReporterOptions.Logger(jaeger.StdLogger))
// samples 100% of traces
tracer, closer := jaeger.NewTracer(service, jaeger.NewConstSampler(true), reporter)
return tracer, closer
}
func initGlobalTracer() io.Closer {
// the closer can be used in shutdown hooks
tracer, closer := initJaeger("hello-world", "https://your-reporter-url")
opentracing.SetGlobalTracer(tracer)
return closer
}
gin 接入
package main
import (
"github.com/gin-gonic/gin"
"github.com/yuewokeji/opentracing-go-plugins/module/otgin"
)
func main() {
server := gin.New()
server.Use(otgin.NewMiddleware(server))
//do something
}
net/http 客戶端接入
package main
import (
"github.com/yuewokeji/opentracing-go-plugins/module/othttp"
"net/http"
"strings"
)
func main() {
client := othttp.WrapClient(&http.Client{})
req, err := http.NewRequest("GET", "https://github.com", strings.NewReader(""))
if err != nil {
panic(err)
}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
// do something
}
是不是非常簡單!!!
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- .NET6接入Skywalking鏈路追蹤完整流程
- go的鏈路追蹤Go
- Spring Cloud 鏈路追蹤SpringCloud
- skywalking鏈路追蹤
- 分散式鏈路追蹤技術分散式
- Spring Cloud Sleuth 鏈路追蹤SpringCloud
- Go 鏈路追蹤入門 OpentelemetryGo
- 分散式鏈路追蹤的利器——Zipkin分散式
- zipkin分散式鏈路追蹤介紹分散式
- Go - 實現專案內鏈路追蹤Go
- BOS分散式鏈路追蹤產品揭秘分散式
- 微服務鏈路追蹤元件 SkyWalking微服務元件
- 【Springboot】例項講解Springboot整合OpenTracing分散式鏈路追蹤系統(Jaeger和Zipkin)Spring Boot分散式
- go-kit微服務:服務鏈路追蹤Go微服務
- AsyncLocal<T>在鏈路追蹤中的應用
- Dubbo日誌鏈路追蹤TraceId選型
- Jaeger Client Go 鏈路追蹤|入門詳解clientGo
- Go - 實現專案內鏈路追蹤(二)Go
- 【剖析 | SOFARPC 框架】系列之鏈路追蹤剖析RPC框架
- net core 微服務框架 Viper 呼叫鏈路追蹤微服務框架
- 日誌收集和鏈路追蹤:skywalking
- (16)go-micro微服務jaeger鏈路追蹤Go微服務
- OpenTracing——設計分散式追蹤系統的有效方法分散式
- golang 程式記憶體追蹤、分析Golang記憶體
- 鏈路追蹤技術的應用及實踐
- 微服務 Zipkin 鏈路追蹤原理(圖文詳解)微服務
- Asp.Net Core&Jaeger實現鏈路追蹤ASP.NET
- Rust 語言的全鏈路追蹤庫 tracingRust
- Jaeger鏈路追蹤在專案中的應用
- 註解列印日誌和資料鏈路追蹤
- 分散式鏈路追蹤框架的基本實現原理分散式框架
- go-zero的全鏈路追蹤與超時Go
- Node.js 應用全鏈路追蹤技術——[全鏈路資訊獲取]Node.js
- 分散式系統中的分散式鏈路追蹤與分散式呼叫鏈路分散式
- dubbo分散式應用中使用zipkin做鏈路追蹤分散式
- .NET Core 中的日誌與分散式鏈路追蹤分散式
- go-zero 是如何追蹤你的請求鏈路?Go
- 利用Spring Boot實現微服務的鏈路追蹤Spring Boot微服務