文章目录
- Jaeger OpenTracing
- Jaeger架构图和组件
- 架构图
- 组件1 : Instrumentation + OpenTracing API
- 组件2 : Jaeger-client
- 组件3 : Jaeger-agent
- 组件4 : Jaeger-collector
- 组件5 : Jaeger-query
- 搭建Demo流程[ES]
- 代码解析
- 效果图
- 代码
- 最后
架构图
组件1 : Instrumentation + OpenTracing API
这两个是连在一块儿的,这两个东西都是插在我们业务代码里面的,就是要在我们的代码里面加入OpenTracing的代码。OpenTracing提供了很多语言的API,详细的可以看看上面的GitHub。对于Golang来说,主要的就是下面几个API:
可以看到上面的SetGlobalTracer是可以设置成其他的tracer的,比如zipkin其他的,如果需要改动tracer的话,就只需要改这个参数即可,不需要改动其他插入的代码。
组件2 : Jaeger-client
Jaeger的客户端就相当于上面的tracer,在代码里面SetGlobalTracer的时候,参数传的就是Jaeger-client New出来的一个实例。既然是客户端,那么服务端是什么呢?服务端是Jaeger-agent。
组件3 : Jaeger-agent
这个是Jaeger的服务端,客户端会把Span的信息通过Jaeger.Thrift UDP传给Jaeger-agent,再由Jaeger-agent把这些span的信息传给Jaeger-collector。

为啥不直接把信息传到collector?从上面的图我猜测,collector应该是对agent有采样率的限制,在代码里面可以看到相关的设置。
组件4 : Jaeger-collector
负责把Jaeger-agent传过来的数据写入队列,并且保存到设定的存储介质里面[内存,ES,kafka…]
组件5 : Jaeger-query
这个是负责从存储介质里面读取调用链信息的,并且这个query自带UI,可以在UI里面看到相关的调用链。
- 由于现在官网上面只支持ES5 和 ES6,所以我们可能不能使用最新的ES7,所以我们下载ES6:
ES6 - 下载Jaeger相关组件二进制文件:
Jaeger二进制文件 - 安装ES6,这个应该解包就能使用。
- 先启动ES,最好先启动ES,因为启动collector需要ES。
- 清除ES里面的相关index 清除index脚本
- 设置collector的环境变量,并且启动collector。
- 启动agent。
- 启动query。

② 蓝色框里面的内容:分别是query组件和collector组件跟ES建立的连接,collector负责往ES里面写,query负责从ES里面读。
③ 红色框是代码里面初始化Jaeger-client之后,client跟agent建立起的连接,6831这个接口在文档里面有说:
最关键的就是Jaeger的初始化和OpenTracing的初始化:


GitHub
这个只是Demo,并且采样率设置的是每一条记录都需要收集,具体的参数还需要查阅文档或者代码,这边博客的目的在于了解并且开始熟悉OpenTracing,之前我对于这个OpenTracing的概念是模糊的,而且加上了Jaeger之后我更懵逼了, 通过一个星期的自学,我自己走了一遍流程,发现还是可以按照文档做出来一个Demo的,还是算比较欣慰吧,希望能帮助到大家。


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/180640.html