Loading

Jaeger链路追踪

Jaeger介绍

  • 什么是链路追踪

    随着微服务分布式系统变得日趋复杂,越来越多的组件开始走向分布式化,如分布式服务、分布式数据库、分布式缓存等,使得后台服务构成了一种复杂的分布式网络。在服务能力提升的同时,复杂的网络结构也使问题定位更加困难。在一个请求在经过诸多服务过程中,出现了某一个调用失败的情况,查询具体的异常由哪一个服务引起的就变得十分抓狂,问题定位和处理效率是也会非常低。

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

  • 为什么要使用链路追踪

    链路追踪为分布式应用的开发者提供了完整的调用链路还原、调用请求量统计、链路拓扑、应用依赖分析等工具,可以帮助开发者快速分析和诊断分布式应用架构下的性能瓶颈,提高微服务时代下的开发诊断效率。

  • Jaeger是一个端到端分布式跟踪的开源系统,可以监控复杂分布式系统中的事务并排除故障。

Jaeger案例快速体验

Docker安装Jaeger

docker run -d --name=jaeger \
  -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \
  -p 5775:5775/udp \
  -p 6831:6831/udp \
  -p 6832:6832/udp \
  -p 5778:5778 \
  -p 16686:16686 \
  -p 14268:14268 \
  -p 9411:9411 \
  jaegertracing/all-in-one:latest

Jaeger在spring boot下集成使用

  1. 添加依赖: 首先,在您的Spring Boot项目的pom.xml文件中添加以下依赖:
<dependency>
    <groupId>io.opentracing.contrib</groupId>
    <artifactId>opentracing-spring-jaeger-cloud-starter</artifactId>
    <version>VERSION_HERE</version>
</dependency>

请将VERSION_HERE替换为适当的版本号。

  1. 配置应用程序:application.propertiesapplication.yml文件中添加Jaeger和OpenTracing的相关配置。以下是一个示例配置:
spring.application.name=your-application-name

# Jaeger Configuration
jaeger.service-name=your-service-name
jaeger.sender-type=udp
jaeger.udp-sender.host=localhost
jaeger.udp-sender.port=6831

替换your-application-nameyour-service-name为您的应用程序和服务名称。

  1. 启用分布式跟踪: 在Spring Boot应用程序的入口类上添加@EnableTracing注解以启用分布式跟踪。(待定,好像不需要EnableTracing也行)
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import io.opentracing.contrib.spring.tracer.configuration.EnableTracing;

@SpringBootApplication
@EnableTracing
public class YourApplication {

    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }
}
  1. 编写代码: 在您的应用程序代码中,可以使用OpenTracing API来创建跟踪信息。例如:
import io.opentracing.Span;
import io.opentracing.Tracer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class YourController {

    @Autowired
    private Tracer tracer;

    @GetMapping("/hello")
    public String hello() {
        Span span = tracer.buildSpan("helloSpan").start();
        span.setTag("custom-tag", "hello-tag");
        span.log("Hello, trace!");
        span.finish();
        return "Hello, world!";
    }
}

在上面的代码中,通过tracer对象创建了一个Span,并为Span添加了标签和日志。

  1. 启动应用程序: 启动您的Spring Boot应用程序,它将开始收集并显示与Jaeger关联的跟踪信息。
  2. 访问Jaeger UI: 打开浏览器,访问Jaeger UI。默认情况下,它通常位于http://localhost:16686。在UI中,您将能够查看应用程序的跟踪信息、依赖关系图等。

这些是一般的步骤,具体细节可能因版本、配置和需求而有所不同。请参考opentracing-spring-jaeger-cloud-starter的文档和示例,以便更好地集成和使用Jaeger分布式跟踪。

image

其他类似方案

Zipkin

参考

开源分布式跟踪系统Jaeger介绍 (六步快速上手)

posted @ 2024-10-24 10:11  集君  阅读(25)  评论(0编辑  收藏  举报