首页 > 其他分享 >(16)go-micro微服务jaeger链路追踪

(16)go-micro微服务jaeger链路追踪

时间:2023-01-20 09:11:06浏览次数:59  
标签:16 jaeger micro 链路 go opentracing 追踪

目录

一 jaeger链路追踪介绍

什么是链路追踪:

  • 分布式链路追踪就是将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示,比如各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等

链路追踪主要功能:

  • 故障快速定位:可以通过调用链结合业务日志快速定位错误信息

  • 链路性能可视化:各个阶段链路耗时、服务依赖关系可以通过可视化界面展现出来

  • 链路分析:通过分析链路耗时、服务依赖关系可以得到用户的行为路径,汇总分析应用在很多业务场景

二 jaeger链路追踪作用

  • 它是用来监视和诊断基于微服务的分布式系统

  • 用于服务依赖性分析,辅助性能优化

三 jaeger链路追踪主要特性

  • 高扩展性

  • 原生支持OpenTracing

  • 可观察性

四 jaeger链路追踪原理图

1.链路调用原理

  • 服务间经过的局部链路构成了一条完整的链路,其中每一条局部链路都用一个全局唯一的traceid来标识。
    image.png

image.png

2. 一次调用链分析

image.png

3.链路追踪存储与调用

image.png

五 jaeger链路追踪五个重要组件

  • Jaeger-client ( 客户端库)

  • Agent ( 客户端代理)

  • Collector ( 数据收集处理)

  • Data Store ( 数据存储)

  • UI (数据查询与前端界面展示)

六 jaeger链路追踪安装

1.docker拉取jaeger镜像

docker pull jaegertracing/all-in-one

2.docker运行jaeger

docker run -d --name jaeger -p 6831:6831/udp -p 16686:16686 jaegertracing/all-in-one
  • 使用 docker ps 查看是否jaeger运行

3.安装jaeger库

go get github.com/opentracing/opentracing-go
go get github.com/uber/jaeger-client-go
go get github.com/micro/go-plugins/wrapper/trace/opentracing/v2

七 jaeger链路追踪代码编写

  • 在micro目录下新建jaeger.go文件,输入以下代码:
package micro

import (
   "github.com/opentracing/opentracing-go"
   "github.com/uber/jaeger-client-go"
   "github.com/uber/jaeger-client-go/config"
   "io"
   "time"
)

// NewTracer 创建链路追踪
func NewTracer(serviceName string,addr string)(opentracing.Tracer,io.Closer,error){
   cfg := &config.Configuration{
      ServiceName: serviceName,
      Sampler: &config.SamplerConfig{
         Type:                     jaeger.SamplerTypeConst,
         Param:                    1,
      },
      Reporter: &config.ReporterConfig{
         BufferFlushInterval:        1 * time.Second,
         LogSpans:                   true,
         LocalAgentHostPort:         addr,
      },
   }
   return cfg.NewTracer()
}
  • 在main.go编写代码:
// 5.jaeger 链路追踪
t, io, err := micro.NewTracer(micro.ConsulInfo.Jaeger.ServiceName, micro.ConsulInfo.Jaeger.Addr)
if err != nil {
   logger.Error(err)
   return
}
defer io.Close()
opentracing.SetGlobalTracer(t)
  • 在注册服务的代码中添加:
//添加链路追踪
micro.WrapHandler(opentracing2.NewHandlerWrapper(opentracing.GlobalTracer())),

image.png

八 jaeger链路追踪图形可视化界面

image.png

  • 在Service中输入jaeger-query,点击Find Traces。

image.png

  • 至此jaeger使用完成

九 最后

  • 至此,go-micro微服务jaeger链路追踪开发工作就正式完成。

  • 接下来就开始Prometheus监控的代码编写了,希望大家关注博主和关注专栏,第一时间获取最新内容,每篇博客都干货满满。

欢迎大家加入 夏沫の梦的学习交流群 进行学习交流经验,点击 夏沫の梦学习交流

标签:16,jaeger,micro,链路,go,opentracing,追踪
From: https://www.cnblogs.com/qi66/p/17062405.html

相关文章

  • 关于 Safari back 按钮在 iOS 16 不能按照期望工作的问题分析
    设备:iOS:16.1.1User-Agent:Mozilla/5.0(iPhone;CPUiPhoneOS16_1_1likeMacOSX)AppleWebKit/605.1.15(KHTML,likeGecko)Version/16.1Mobile/15E148Safa......
  • CF1635E做题记录
    *2200的绿,是道好题不想投题解,因为思路重复,而且太麻烦了。先设任意一点向左,判断方向关系是否矛盾,类似二分图判定的染色。确定下方向后,就可以将原条件转换成为若干个类似......
  • (15)go-micro微服务main.go开发
    目录一导包二配置中心三注册中心四zap日志初始化五初始化Mysql数据库六初始化Redis连接七注册服务八初始化服务九注册handle十启动服务十一main.go全部代码十......
  • 解决:windows下php curl https时 SSL operation failed with code 1. OpenSSL Error me
    下载证书curl-ExtractCACertsfromMozillahttps://curl.se/docs/caextract.html 配置php.ini,把路径放上去  搞定收工......
  • 优麒麟(Ubuntu Kylin)16.10正式版发布
    伴随着Canonical公司正式推出Ubuntu16.10(YakketyYak),优麒麟(UbuntuKylin)推出了16.10正式版。此次发布的版本以增强本地化用户体验和稳定性为主,修复了之前版本积累的很......
  • LibreOJ L2056 「TJOI / HEOI2016」序列
    https://loj.ac/p/2056CDQ优化DP模板?首先定义对于第\(x\)个数其可以变为的最小值为\(Min_x\),最大值为\(Max_x\),初始为\(M_x\)。因为最多只会变一次数,不难想到......
  • Codeforces Global Round 16 E
    E.BudsRe-hanging题链观察样例我们发现我们要尽可能的分解出来bud然后再来组合拼在一起是最优的当然我们可以从深度最深的开始判断是不是bud但是我们再观察发现只......
  • Windows Server 2008或2012 修复CVE-2016-2183(SSL/TLS)漏洞的方法
    一、漏洞说明Windowsserver2008或2012远程桌面服务SSL加密默认是开启的,且有默认的CA证书。由于SSL/TLS自身存在漏洞缺陷,当开启远程桌面服务,使用漏洞扫描工具扫描,发现存在......
  • ubuntu16.04安装Nvidia显卡驱动,CUDA8.0,cuDNN6,TensorFlow-gpu
    ​​WelcomeToMyBlog​​​实验室学姐让跑一个深度学习模型的程序,需要配置环境,查阅各种资料后安装成功,记录一下安装过程,确实挺刺激,也算是开启了自己的深度学习之......
  • (14)go-micro微服务服务层Handle开发
    目录一Handle层开发功能说明需要完成的服务开发功能:从哪找需要开发的功能二代码编写三最后一Handle层开发功能说明需要完成的服务开发功能:登录注册查询用户信息......