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鏈路追蹤完整流程
- skywalking鏈路追蹤
- go的鏈路追蹤Go
- DHorse的鏈路追蹤
- Spring Cloud 鏈路追蹤SpringCloud
- 【Springboot】例項講解Springboot整合OpenTracing分散式鏈路追蹤系統(Jaeger和Zipkin)Spring Boot分散式
- Istio Trace鏈路追蹤方案
- Go 鏈路追蹤入門 OpentelemetryGo
- 微服務鏈路追蹤元件 SkyWalking微服務元件
- 分散式鏈路追蹤技術分散式
- 日誌收集和鏈路追蹤:skywalking
- 鏈路追蹤_SkyWalking的部署及使用
- 第6章 Sleuth--鏈路追蹤
- 鏈路追蹤(Tracing)的前世今生(上)
- 一文讀懂鏈路追蹤
- 分散式鏈路追蹤的利器——Zipkin分散式
- zipkin分散式鏈路追蹤介紹分散式
- OpenTracing——設計分散式追蹤系統的有效方法分散式
- BOS分散式鏈路追蹤產品揭秘分散式
- Dubbo日誌鏈路追蹤TraceId選型
- Go - 實現專案內鏈路追蹤Go
- 【剖析 | SOFARPC 框架】系列之鏈路追蹤剖析RPC框架
- 使用篇丨鏈路追蹤(Tracing)很簡單:鏈路拓撲
- (16)go-micro微服務jaeger鏈路追蹤Go微服務
- Rust 語言的全鏈路追蹤庫 tracingRust
- AsyncLocal<T>在鏈路追蹤中的應用
- net core 微服務框架 Viper 呼叫鏈路追蹤微服務框架
- Jaeger Client Go 鏈路追蹤|入門詳解clientGo
- Go - 實現專案內鏈路追蹤(二)Go
- go-kit微服務:服務鏈路追蹤Go微服務
- [業界方案] 用SOFATracer學習分散式追蹤系統Opentracing分散式
- [業界方案]用Jaeger來學習分散式追蹤系統Opentracing分散式
- OpenTracing Registry登記了129個儀器外掛和追蹤器
- 利用Spring Boot實現微服務的鏈路追蹤Spring Boot微服務
- Asp.Net Core&Jaeger實現鏈路追蹤ASP.NET
- 微服務 Zipkin 鏈路追蹤原理(圖文詳解)微服務
- Jaeger鏈路追蹤在專案中的應用