当前位置: 代码网 > it编程>前端脚本>Golang > golang使用jaeger进行链路追踪

golang使用jaeger进行链路追踪

2024年07月05日 Golang 我要评论
前言提示:请配置好环境一、什么是链路追踪?链路追踪是指在分布式系统中,将一次请求的处理过程进行记录并聚合展示的一种方法。目的是将一次分布式请求的调用情况集中在一处展示,如各个服务节点上的耗时、请求具体

前言

提示:请配置好环境

一、什么是链路追踪?

链路追踪是指在分布式系统中,将一次请求的处理过程进行记录并聚合展示的一种方法。目的是将一次分布式请求的调用情况集中在一处展示,如各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等。这样就可以轻松了解一个请求在系统中的完整生命周期,包括经过的服务、调用的操作以及每个操作的延迟等。通过链路追踪,可以更好地理解系统的性能瓶颈、找出问题的根源以及优化系统的性能。

二、安装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

运行:127.0.0.1:16686

在这里插入图片描述

三、golang使用jaeger进行链路追踪

github地址

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()
}

结果:

可以看到下图展示出了两个链路

在这里插入图片描述

2. 单个方法的追踪

在这里插入图片描述

多个方法的组合

在这里插入图片描述

总结

到此这篇关于golang使用jaeger进行链路追踪的文章就介绍到这了,更多相关golang jaeger链路追踪内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com