大佬教程收集整理的这篇文章主要介绍了Golang微服务:Micro Trace使用opentracing jaeger,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
aswxray@H_262_8@,opencensus@H_262_8@,opentracing@H_262_8@,这里主要关注opentracing,opentracing已成为行业标准。
opentracing
要引入OpenTracing方案,只需要opentracing.NewClientWrapper加入Client或者Server即可。
func NewClientWrapper(ot opentracing.Tracer) client.Wrapper {
return func(c client.Client) client.Client {
return &otWrapper{ot,c}
}
}
opentracing.NewClientWrapper方法入参是实现OpenTracing的接口opentracing.Tracer
type Tracer interface {
StartSpan(operationName String,opts ...StartSpanOption) Span
Inject(sm SpanContext,format interface{},carrier interface{}) error
Extract(format interface{},carrier interface{}) (SpanContext,error)
}
jaeger
部署一个测试的jaeger,服务器地址:192.168.8.144,Agent的默认端口是5775。
/home/service/base/jaeger
[[email protected] jaeger]# ll
@R_930_10586@l 158444
-rwxr-xr-x 1 root root 14565068 Nov 16 19:35 example-hotrod
-rwxr-xr-x 1 root root 20387089 Nov 16 19:35 jaeger-agent
-rwxr-xr-x 1 root root 38456594 Nov 16 19:35 jaeger-all-in-one
-rwxr-xr-x 1 root root 29731462 Nov 16 19:35 jaeger-collector
-rwxr-xr-x 1 root root 25523281 Nov 16 19:35 jaeger-ingester
-rwxr-xr-x 1 root root 33563911 Nov 16 19:35 jaeger-query
-rwxr-xr-x 1 root root 43 Nov 16 19:36 run
-rw-r--r-- 1 root root 1939 Nov 16 19:36 x.log
[[email protected] jaeger]# cat run
nohup ./jaeger-all-in-one >> x.log 2>&1 &
jaeger是一款分布式的追踪系统,实现了opentracingAPI标准,也是Go生态的,是CNCF成员。
func TestJaeger(t *tesTing.T) {
cfg := config.Configuration{
servicename: "MicroTestservice",//自定义服务名称
Sampler: &config.SamplerConfig{
Type: "const",Param: 1,},Reporter: &config.ReporterConfig{
LogSpans: true,BufferFlushInterval: 1 * time.Second,LocalAgentHostPort: "192.168.8.144:5775",//jaeger agent
},}
tracer,closer,err := cfg.NewTracer()
if err != nil {
t.Error(err)
return
}
defer closer.Close()
r := mock.NewRegistry()
s := SELEctor.NewSELEctor(SELEctor.Registry(r))
c := client.NewClient(
// set the SELEctor
client.SELEctor(s),// add the trace wrapper
client.Wrap(NewClientWrapper(tracer)),)
req := c.Newrequest("test.service","Test.Method",map[String]String{
"foo": "bar",client.WithContentType("application/json"))
var rsp map[String]interface{}
c.Call(context.TODO(),req,rsp)
t.Log(rsp)
}
浏览器访问:http://192.168.8.144:16686/search@H_262_8@可以发现有服务@H_690_7@microTestservice@H_262_8@的访问追踪了
以上是大佬教程为你收集整理的Golang微服务:Micro Trace使用opentracing jaeger全部内容,希望文章能够帮你解决Golang微服务:Micro Trace使用opentracing jaeger所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。