使用Spring Boot和Jaeger实现微服务中的分布式跟踪 - Vinsguru


本教程展示如何通过将Jaeger与S pring Boot一起使用来在微服务中启用分布式跟踪。
 Jaeger是最初由Uber开发的分布式跟踪平台。它用于基于微服务的体系结构的监视和故障排除。它有一个漂亮的用户界面,可以清楚地显示完整的请求详细信息和处理时间等。
 

  • Maven依赖关系

<dependency>
    <groupId>io.opentracing.contrib</groupId>
    <artifactId>opentracing-spring-jaeger-web-starter</artifactId>
    <version>1.0.3</version>
</dependency>

  • 应用程序属性

server:
  port: 8080
opentracing:
  jaeger:
    udp-sender:
      host: localhost
      port: 6831

有了上述依赖关系,Jaeger-agent将通过Spring Boot自动配置,并开始跟踪所有请求和处理时间等。使用Jaeger依赖关系进行更新后,重建​​应用程序和docker映像。
  • Jaeger用户界面:

Jaeger代理开始收集指标后,必须将详细信息发布到某个地方–这样我们就可以开始在UI上进行检查了。因此,请在您的计算机上下载并安装Jaeger。默认情况下,它使用UDP端口6831收集详细信息。它还支持其他协议。请访问Jaeger网站以获取更多详细信息。让我们一起去UDP,因为它是一个4层协议,它是非常快的相比HTTP。
使用docker设置Jaeger并运行非常容易!下面的docker-compose文件提供了包括3个微服务在内的完整设置。

version: "3"
services:
  fact-service:
    image: vinsdocker/fact-service
    environment:
      - ACTIVE_PROFILE=prod
      - SPRING_APPLICATION_NAME=fact
  fib-service:
    image: vinsdocker/fib-service
    environment:
      - ACTIVE_PROFILE=prod
      - SPRING_APPLICATION_NAME=fib
  compute-service:
    image: vinsdocker/compute-service
    environment:
      - ACTIVE_PROFILE=prod
      - SPRING_APPLICATION_NAME=compute
    ports:
      - 8080:8080
  jaeger:
    image: jaegertracing/all-in-one:1.17
    ports:
      - 8090:16686

完整的工作源代码在这里