脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Golang - golang使用jaeger进行链路追踪

golang使用jaeger进行链路追踪

2024-06-13 17:12dearlin2024 Golang

链路追踪是指在分布式系统中,将一次请求的处理过程进行记录并聚合展示的一种方法,目的是将一次分布式请求的调用情况集中在一处展示,本文将介绍golang如何使用jaeger进行链路追踪,需要的朋友可以参考下

前言

提示:请配置好环境

一、什么是链路追踪?

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

二、安装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进行链路追踪

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

结果:

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

golang使用jaeger进行链路追踪

2. 单个方法的追踪

golang使用jaeger进行链路追踪

多个方法的组合

golang使用jaeger进行链路追踪

总结

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

原文链接:https://blog.csdn.net/lmyxmm123/article/details/139532074

延伸 · 阅读

精彩推荐
  • Golang在Go程序中实现服务器重启的方法

    在Go程序中实现服务器重启的方法

    这篇文章主要介绍了在Go程序中实现服务器重启的方法,由于很多人盲目崇拜谷歌"亲爹",Go语言在国内有着不寻常的人气,需要的朋友可以参考下 ...

    脚本之家7392020-04-26
  • Golanggolang grpc 负载均衡的方法

    golang grpc 负载均衡的方法

    这篇文章主要介绍了golang grpc 负载均衡的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 ...

    xjtuhit4322020-05-16
  • GolangGo语言实现新春祝福二维码的生成

    Go语言实现新春祝福二维码的生成

    二维码现在是随处度可以看到,买东西,支付,添加好友只要你扫一扫就能完成整个工作,简单且方便。所以利用这个新春佳节做一个带着新春祝福的二维...

    小雄Ya10412023-03-20
  • GolangKotlin编程基础语法编码规范

    Kotlin编程基础语法编码规范

    这篇文章主要为大家介绍了Kotlin编程条件控制示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...

    南巷羽5132022-08-20
  • GolangGoLand 2020.3 正式发布有不少新功能(支持泛型)

    GoLand 2020.3 正式发布有不少新功能(支持泛型)

    这是 2020 年第 3 个版本,也是最后一个版本,你还将发现许多新的代码编辑功能,具体内容详情跟随小编看看有哪些新特性...

    脚本之家16682021-02-22
  • Golanggolang 通过ssh代理连接mysql的操作

    golang 通过ssh代理连接mysql的操作

    这篇文章主要介绍了golang 通过ssh代理连接mysql的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    a165861639710232021-03-08
  • Golanggo语言开发环境配置(sublime text3+gosublime)

    go语言开发环境配置(sublime text3+gosublime)

    网上google了下go的开发工具,大都推荐sublime text3+gosublime,本文就介绍了go语言开发环境配置(sublime text3+gosublime),具有一定的参考价值,感兴趣的可以了解一...

    北京雨夜10982022-01-26
  • Golang详解用Go语言实现工厂模式(Golang经典编程案例)

    详解用Go语言实现工厂模式(Golang经典编程案例)

    这篇文章主要介绍了详解用Go语言实现工厂模式(Golang经典编程案例),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,...

    cui_yonghua10902021-05-26