Jaegertracing使用和原理

本文介绍了Jaeger Tracing的OpenTracing数据模型,包括Trace、Span、Tag、Log和References的概念。讲解了Jaeger的API使用,如通过scope管理Span,并利用threadlocal维护当前活跃Span。此外,还探讨了opentracing-spring-cloud的集成和部分工作原理,如web和jdbc请求的追踪处理。
摘要由CSDN通过智能技术生成

一、OpenTracing 数据模型

1.Trace:一条调用链。

2.Span:可以理解成一条调用链的一个环节。一条 Trace可以被认为是一个由多个 Span 组成的DAG图。

1)Tag:标签集

2)Log:日志集

3)References:Span与Span之间的关系。OpenTracing目前定义了两种关系:ChildOf(父子) 和 FollowsFrom(跟随)

4)SpanContext:Span上下文对象,主要保存了traceId spanId等,用来跨进程边界传输。不同进程间可以利用SpanContext建立References关系。
(下个服务拿到traceId就可以知道自己改归属于哪个调用链, 拿到spanId就知道自己的父span是谁 )

二、API使用

1.Jaegertracing是OpenTracing的一个实现。Java sdk: https://github.com/jaegertracing/jaeger-client-java 。

代码示例如下:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Zipkin是一个开源分布式跟踪系统,它可以帮助我们分析应用程序的性能问题,并且可以帮助我们找到应用程序的瓶颈。在Java中使用Zipkin,你需要使用Zipkin客户端库来集成你的应用程序,并将跟踪数据发送到Zipkin服务器。 以下是在Java中使用Zipkin的步骤: 1. 添加Zipkin客户端库的依赖 在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>io.zipkin.java</groupId> <artifactId>zipkin</artifactId> <version>2.7.1</version> </dependency> <dependency> <groupId>io.zipkin.reporter2</groupId> <artifactId>zipkin-reporter-metrics-micrometer</artifactId> <version>2.15.0</version> </dependency> <dependency> <groupId>io.zipkin.reporter2</groupId> <artifactId>zipkin-reporter-metrics-prometheus</artifactId> <version>2.15.0</version> </dependency> <dependency> <groupId>io.zipkin.reporter2</groupId> <artifactId>zipkin-sender-okhttp3</artifactId> <version>2.15.0</version> </dependency> ``` 2. 创建Zipkin客户端 在Java中使用Zipkin需要创建一个Zipkin客户端,并将它集成到你的应用程序中。你可以使用以下代码创建一个Zipkin客户端: ``` import brave.Tracing; import brave.opentracing.BraveTracer; import io.jaegertracing.Configuration; import io.jaegertracing.internal.samplers.ConstSampler; import io.opentracing.Tracer; public class ZipkinClient { public static Tracer createTracer(String serviceName, String zipkinUrl) { Configuration.SamplerConfiguration samplerConfig = Configuration.SamplerConfiguration.fromEnv().withType(ConstSampler.TYPE).withParam(1); Configuration.SenderConfiguration senderConfig = Configuration.SenderConfiguration.fromEnv().withEndpoint(zipkinUrl); Configuration.ReporterConfiguration reporterConfig = Configuration.ReporterConfiguration.fromEnv().withSender(senderConfig).withFlushInterval(1000).withMaxQueueSize(10000); Configuration config = new Configuration(serviceName).withSampler(samplerConfig).withReporter(reporterConfig); return new BraveTracer(Tracing.newBuilder().localServiceName(serviceName).spanReporter(config.getReporter()).sampler(config.getSampler()).build()); } } ``` 3. 集成Zipkin客户端 在你的应用程序中使用Zipkin客户端需要将它集成到你的代码中。你可以使用以下代码将Zipkin客户端集成到你的代码中: ``` import io.opentracing.util.GlobalTracer; public class ZipkinIntegration { public static void init(String serviceName, String zipkinUrl) { Tracer tracer = ZipkinClient.createTracer(serviceName, zipkinUrl); GlobalTracer.register(tracer); } } ``` 4. 追踪你的应用程序 使用Zipkin客户端来追踪你的应用程序需要在你的代码中添加以下代码: ``` import io.opentracing.Span; import io.opentracing.Tracer; import io.opentracing.util.GlobalTracer; public class MyApplication { private static final Tracer tracer = GlobalTracer.get(); public void doSomething() { Span span = tracer.buildSpan("doSomething").start(); try { // your code } finally { span.finish(); } } } ``` 以上就是在Java中使用Zipkin的步骤。通过使用Zipkin可以帮助我们更好地分析应用程序的性能问题,并且可以帮助我们找到应用程序的瓶颈。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值