大发快乐8APP下载_大发快乐8APP官方 - 大发快乐8APP下载,大发快乐8APP官方是新浪网最重要的频道之一,24小时滚动报道国内、国际及社会新闻。每日编发新闻数以万计。

使用 Jaeger 完成服务间的链路追踪

  • 时间:
  • 浏览:0

反正先撸袖开干...

jaeger-query (从存储中检索追踪信息并通过 UI 展示)

Configuration

效果图:

这里大致介绍一下 Configuration/Tracer/Span ,以便实现有4个基础的 tracing 。

Span:追踪中的逻辑单元,比如一次请求的过程/有4个函数的执行,含高操作名称、开始英语 英文英文时间、持续时间。

service.go

这里起了有4个 http 服务 main ,端口 20081,从 main 这边通过 grpc 请求服务 service 上的法子。第一次写 go 守护进程池池,不喜勿喷... 如有不正之处,感谢指出。

Tracer

b-service.js

jaeger 体系和流程如下图

使用已经 先了解:

Tracer:项目中的追踪实例,追踪项目里数据变化/函数执行的过程,可不还要认为是有4个定向非循环的 spans 的集合图。

data store (追踪信息的存储)

Tracer 和 Span 如下图:

hello.gen.proto

a-service.js

jaeger-ui (UI 展示层,基于 React)

对于 jaeger-ui 效果如下图:

jaeger-client (OpenTracing API 各语言的实现,用于在应用中塞入信息架构设计 点)

本文仅做 jaeger 使用的简单参考,实际项目考虑到 Microservices 、 Service Mesh 、 Business Logic Logs 等等影响因素,tracing 会更具复杂性性且有更多的坑得踩。

比如有服务[a,b,c],发起有4个请求到 a,服务 a 调用服务 b 的接口,服务 b 调用服务 c 的接口,依次做追踪。

基于以上的体系底部形态,本文关注点在 jaeger-client 次要,为什么会么会在么在实现服务之间和服务内控 的 tracing。

注意:jaeger 的存储是可插拔组件,目前支持 Cassandra、ElasticSearch 和 Kafka。

本次讨论语录题有后后还要在各个服务之间踏出条"路",让 bug 有"路"可循。

统统,设置 errorSpan 语录代码如下:

至于为哪些地方遵循 opentracing 规范的好... 这名 ...杠精同学,文末地址可参考

本文以 Nodejs 为主,Go 为辅(机会当前刚好涉及到这名 种生活服务的链路追踪方案 )。

span 语录,会有 span 和 errorSpan 之分,在 jaeger-ui 代码里的判断是:

opentracing-specification

opentracing-javascriptjaegertracingjaeger-client-nodejaeger-client-goistio-zhdemo-github

Span

Go 服务之间(http & grpc)

至于为哪些地方用 jaeger... 这名 支持多语言方案算么?遵循 opentracing 规范算么?开箱即用算么?还有更多?

请求地址: http://localhost:7071/abc,浏览器打开地址: http://localhost:16686/search

生成 grpc 所需文件

世上本没有路,走的人多了,便变成了路 -- 鲁迅

Jaeger: open source, end-to-end distributed tracing

Jaeger: 开源的、分布式系统的端到端追踪

Monitor and troubleshoot transactions in complex distributed systems

在复杂性的分布式系统之间做监控及疑问图片排查的事务正确处理。

SpanContext:表示还要传播到下游 Spans 和跨应用/守护进程池池的 Span 数据,可不还要简单理解为串在各个系统里的统一标识对象。

效果图:

请求地址: http://localhost:20081/get_h ,浏览器打开地址: http://localhost:16686/search

request.js

c-service.js

jaeger-client 是 opentracing 的实现,于是 jaeger-client api 几乎等同于 opentracing api。

对于数据方面 jaeger 是比较自由的,可不还要拉 jaeger-ui 代码有后后根据当事人设置的 KeyValuePair 做个性化设置。

jaeger-agent (负责发送的守护进程池池,对 spans 进行正确处理并发送给 collector,监听 spans 的 UDP 发送。设计这层是为了作为基础组件部署到主机上,从 client 中抽象出了 collector 的发现和路由。注意:1.这层应该是部署在应用本地;2.机会配置报告的 endpoint,则直接将 spans 发送到 collector,不还要 agent。)

Baggage:字符串组成的键值对,和 Span/SpanContext 互相关联,会在所有的下游 Spans 中进行传播。(可不还要做统统强大的功能,如在整个链路夹带数据,使用成本高,小心使用)

jaeger-collector (架构设计 追踪 spans,并通过管道对追踪数据进行正确处理。当前的管道支持追踪的验证、索引、转换,最后存储数据)

main.go