• SpringBoot 如何使用 Grafana 进行可视化监控


    使用Spring Boot Sleuth进行分布式跟踪

    在现代分布式应用程序中,跟踪请求和了解应用程序的性能是至关重要的。Spring Boot Sleuth是一个分布式跟踪解决方案,它可以帮助您在分布式系统中跟踪请求并分析性能问题。本文将介绍如何在Spring Boot应用程序中使用Sleuth进行分布式跟踪。

    在这里插入图片描述

    什么是Spring Boot Sleuth?

    Spring Boot Sleuth是Spring Cloud的一部分,它提供了分布式跟踪的功能。它允许您跟踪请求的流经,并记录每个请求的处理时间。Sleuth通过生成唯一的跟踪标识符(Trace ID)和跟踪片段标识符(Span ID)来跟踪请求的传播。这些标识符使您能够在分布式系统中了解请求的传播路径和性能。

    Sleuth还支持将跟踪数据导出到不同的后端,如Zipkin、Jaeger等,以便进行跟踪数据的可视化和分析。

    添加Sleuth依赖

    要在Spring Boot应用程序中使用Sleuth,首先需要添加Sleuth的依赖。在pom.xml中添加以下依赖:

    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-sleuthartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4

    这将引入Sleuth和它的默认跟踪实现(通常是Brave)以及一些其他依赖项。

    配置Sleuth

    Sleuth的配置通常是非常简单的,因为它与Spring Boot无缝集成。默认情况下,Sleuth将生成一个唯一的Trace ID和Span ID,并将它们添加到每个HTTP请求的HTTP头中。

    要开始使用Sleuth,您只需将Sleuth的依赖添加到您的项目中,不需要额外的配置。但是,如果您需要自定义Sleuth的行为,可以进行一些配置。

    自定义Sleuth的标识符

    您可以自定义Sleuth生成的Trace ID和Span ID。例如,您可以通过以下方式配置Sleuth使用UUID而不是默认的随机值:

    spring.sleuth.trace-id128=true
    
    • 1

    这将使Sleuth生成128位的Trace ID。

    导出跟踪数据

    默认情况下,Sleuth会将跟踪数据导出到日志中。这对于开发和调试非常有用。但是,如果您希望将跟踪数据导出到远程跟踪系统(如Zipkin),您需要进行一些额外的配置。

    导出到Zipkin

    要将跟踪数据导出到Zipkin,您需要添加Zipkin的依赖并配置Zipkin的服务器地址。以下是一个示例配置:

    spring.zipkin.base-url=http://your-zipkin-server:9411/
    
    • 1

    这将使Sleuth将跟踪数据发送到指定的Zipkin服务器。

    自定义Span名称

    默认情况下,Sleuth会使用HTTP请求的URL作为Span的名称。但是,您可以自定义Span的名称,以便更好地识别不同的Span。以下是一个示例,如何自定义Span的名称:

    import brave.SpanCustomizer;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    @Service
    public class MyService {
    
        private final SpanCustomizer spanCustomizer;
    
        @Autowired
        public MyService(SpanCustomizer spanCustomizer) {
            this.spanCustomizer = spanCustomizer;
        }
    
        public void doSomething() {
            // 自定义Span名称
            spanCustomizer.name("custom-span-name");
            // 执行业务逻辑
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    在上述示例中,我们注入了SpanCustomizer,并在doSomething方法中自定义了Span的名称。

    进行分布式跟踪

    一旦您配置好了Sleuth,它将开始自动跟踪请求。每个HTTP请求都将生成一个Span,Span包含Trace ID、Span ID和父Span ID等信息。这些信息将在请求的HTTP头中传播,以便在分布式系统中进行跟踪。

    以下是一个示例HTTP请求的HTTP头,其中包含了Sleuth的跟踪信息:

    GET /api/resource HTTP/1.1
    Host: example.com
    X-B3-TraceId: 72e2f79e07b2e2fb
    X-B3-SpanId: 72e2f79e07b2e2fb
    X-B3-ParentSpanId: 72e2f79e07b2e2fb
    
    • 1
    • 2
    • 3
    • 4
    • 5

    Sleuth还会自动记录Span的开始和结束时间,以便您可以查看每个Span的执行时间。

    可视化和分析跟踪数据

    一旦您开始跟踪请求,您可以使用Sleuth支持的后端来可视化和分析跟踪数据。以下是一些常见的后端:

    Zipkin

    Zipkin是一个流行的分布式跟踪系统,支持Sleuth。您可以在Zipkin的仪表板上查看跟踪数据,查看请求的传播路径和执行时间。

    Jaeger

    Jaeger是另一个流行的分布式跟踪系统,也支持Sleuth。它提供了类似于Zipkin的功能,允许您查看和分析跟踪数据。

    Prometheus和Grafana

    如果您使用Prometheus和Grafana来监控应用程序,您也可以使用它们来可视化和分析Sleuth的跟踪数据。将Sleuth的跟踪数据导出到Prometheus,并使用Grafana创建仪表板

    来查看跟踪信息。

    总结

    Spring Boot Sleuth是一个强大的分布式跟踪解决方案,可以帮助您在分布式系统中跟踪请求并分析性能问题。通过简单的配置,您可以轻松地将Sleuth集成到Spring Boot应用程序中,并开始记录和分析请求的跟踪信息。无论是在开发、测试还是生产环境中,分布式跟踪都是非常有价值的,可以帮助您更好地了解您的应用程序的行为。 Happy tracing!

  • 相关阅读:
    Vue入门基础
    【java工具类】自定义规则生成类似真实邮箱
    运行python进行指定内容的文件名查找
    实例:用C#.NET手把手教你做微信公众号开发(21)--使用微信支付线上收款:H5方式
    GoFrame:如何简单地搭建一个简单地微服务
    整体格局:国企、民营、外资各自竞优几何
    Spring Boot面试系列-01
    actionBar 导航栏学习
    使用idea搭建SpringCloud项目(及所遇到的坑)
    手把手教你写一个生成yapi接口代码Chrome 扩展插件
  • 原文地址:https://blog.csdn.net/stormjun/article/details/133698489