链路追踪 - Micrometer


在分布式系统中,跟踪请求的流转路径是非常重要的,有助于调试、监控和优化系统性能。 Spring Cloud Sleuth是常见的解决方案,用于实现分布式追踪。

Spring官方文档已经说明,Springboot 3.x不再支持sleuth的使用,已经转移至Micrometer Tracing项目

Micrometer

Spring Cloud Sleuth 在最近的更新中已经进行了重大调整。在 Spring Cloud 2022.0.0 及以后版本中,Spring Cloud Sleuth 的功能已经整合进了 Spring Boot 和 Spring Cloud 体系中,并且开始推荐使用 Micrometer 来代替部分 Sleuth 的功能。

1. 引入依赖

新版本推荐使用 Micrometer Tracing 和 Spring Boot Actuator 提供的追踪功能。确保配置了相关依赖:

Maven:

   <dependency>
       <groupId>io.micrometer</groupId>
       <artifactId>micrometer-tracing</artifactId>
   </dependency>
   <dependency>
       <groupId>io.micrometer</groupId>
       <artifactId>micrometer-tracing-bridge-brave</artifactId>
   </dependency>
  • 对于自动化配置,Spring Boot Actuator 提供了开箱即用的集成。只需要引入 Actuator 相关依赖:

*** Maven: ***

   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-actuator</artifactId>
   </dependency>

2. 配置 Micrometer Tracing

Micrometer Tracing 会自动将 traceId 和 spanId 注入到日志的 MDC(Mapped Diagnostic Context)上下文中。确保在 Spring Boot 应用中激活必要的配置。
在配置文件application.propertiesapplication.yml中添加必要的配置。例如:

management.endpoints.web.exposure.include=*
management.metrics.export.influx.enabled=true
management.metrics.export.influx.uri=http://localhost:8086
management.metrics.export.influx.org=my-org
management.metrics.export.influx.bucket=my-bucket
management.metrics.export.influx.token=my-token
management.tracing.enabled=true

这样设置将会启用 Micrometer 的追踪功能。

3. 添加自定义的 Span

除了自动生成的 Span,还可以在代码中手动创建 Span 来追踪特定的业务逻辑。简单示例:

import io.micrometer.tracing.Tracer;
import io.micrometer.tracing.Span;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TraceController {

    @Autowired
    private Tracer tracer;

    @GetMapping("/trace")
    public String trace() {
        Span newSpan = tracer.nextSpan().name("custom-span").start();
        try (Tracer.SpanInScope ws = tracer.withSpan(newSpan)) {
            // 业务逻辑
            return "Tracing example";
        } finally {
            newSpan.end();
        }
    }
}

4. 配置 Logback

src/main/resources目录下创建或编辑logback-spring.xml文件,配置 Span 信息输出。以下示例展示了如何将 Span ID 和 Trace ID 输出到日志中:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <!-- 定义日志格式 -->
    <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg %n%X{traceId:-} %X{spanId:-}"/>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <root level="info">
        <appender-ref ref="CONSOLE" />
    </root>

</configuration>

此配置将 traceId 和 spanId 添加到每条日志消息的后面。

5. 查看链路追踪数据

导出追踪数据到合适的监控系统,如 Zipkin 或 Jaeger:

management.zipkin.enabled=true
management.zipkin.base-url=http://localhost:9411/

配置以上属性将会将追踪数据发送到本地运行的 Zipkin 实例。

6. 官方支持文档截图

Micrometer Tracing

名词解释

官方推荐报告工具- Zipkin

### 回答1: Micrometer-Registry-Influx 是一个用于监控和测量微服务架构中度量指标的框架。它与InfluxDB时序数据库集成,可以收集、存储和查询微服务应用程序的度量数据。通过使用Micrometer-Registry-Influx,我们可以实时地监控微服务应用程序的性能和健康状况。 Micrometer-Registry-Influx 提供了一个简单且易于使用的API,开发人员可以使用该API来收集和记录关键的性能指标,例如请求延迟、吞吐量和错误率等。这些指标可以帮助我们了解系统中的瓶颈和问题,并进行性能优化和故障排除。 Micrometer-Registry-Influx与InfluxDB的集成使得数据的存储和查询变得非常简单和高效。我们可以配置Micrometer-Registry-Influx将数据推送到InfluxDB中,然后可以使用InfluxDB的查询语言来分析和可视化这些数据。这使得我们可以根据需要创建仪表盘和报告,进一步深入了解应用程序的性能和运行状况。 总之,Micrometer-Registry-Influx 是一个有用的工具,可以帮助我们监控和度量微服务架构中的应用程序。通过使用这个框架,我们可以轻松地收集和记录关键的性能指标,并通过InfluxDB进行数据存储和查询。这将帮助我们更好地理解和优化我们的应用程序,提供更好的用户体验。 ### 回答2: Micrometer-Registry-Influx是一个基于Micrometer的监控指标库,用于将应用程序的度量数据导出到InfluxDB中的一个注册表。 Micrometer是一个跨应用程序的度量指标库,它提供了一个统一的API,用于收集应用程序的各种度量数据,例如计数器、计时器和分布式度量。Micrometer可以与多个监控系统进行集成,以提供实时的应用程序性能监控和故障排除能力。 Registry是Micrometer的一个关键组件,它负责管理和存储收集的度量指标。Micrometer-Registry-Influx是一个特定于InfluxDB的注册表实现,它允许应用程序将收集的度量指标数据发送到InfluxDB中进行存储和分析。 使用Micrometer-Registry-Influx,开发人员可以轻松地将应用程序的度量数据导出到InfluxDB中。首先,开发人员需要创建一个InfluxDB的连接配置,并将其配置到应用程序中。然后,他们可以使用Micrometer提供的API来定义和收集各种度量指标,例如请求的响应时间、数据库查询的执行时间等。最后,利用Micrometer-Registry-Influx的功能,开发人员可以将这些度量指标数据发送到InfluxDB中进行存储和分析。 通过将应用程序的度量数据导出到InfluxDB中,开发人员可以获得实时的应用程序性能监控,并能够进行深入的故障排除和性能优化。此外,InfluxDB提供了强大的查询和分析功能,使开发人员能够从庞大的度量数据集中提取有价值的见解。 总而言之,Micrometer-Registry-Influx是一个方便的监控指标库,它使开发人员能够将应用程序的度量数据导出到InfluxDB中,从而提供实时的应用程序性能监控和灵活的数据分析能力。 ### 回答3: Micrometer-registry-influx是一个用于监控和度量的开源库,它与Micrometer指标库和InfluxDB时间序列数据库集成。Micrometer-registry-influx 提供了一个方便的方式,可以将Micrometer生成的度量指标数据发送到InfluxDB进行存储和可视化分析。 Micrometer是一个用于应用程序性能监控和度量的度量指标库。它提供了一个简单的API,开发人员可以使用该API在应用程序中记录各种指标数据,比如计数器、计时器、直方图和分布式摘要等。Micrometer-registry-influx是Micrometer的一个扩展,它允许将Micrometer生成的指标数据导入到InfluxDB。 InfluxDB是一个高效的时间序列数据库,专为处理大量高频率写入和查询的时间序列数据而设计。它使用InfluxQL查询语言,可以方便地对时间序列数据进行查询和分析。通过与Micrometer-registry-influx集成,我们可以实时监测应用程序的性能指标,并将这些指标数据存储到InfluxDB中进行长期保留和分析。 使用Micrometer-registry-influx,开发人员可以从应用程序中轻松获取各种重要的性能指标数据,并将其发送到InfluxDB进行存储。这些指标数据可以用于实时监控应用程序的性能,并进行趋势分析和性能优化。同时,通过使用InfluxDB的功能,可以对指标数据进行复杂的查询和可视化分析,以获得更深入的洞察力。 总之,Micrometer-registry-influx是一个强大的工具,可以帮助开发人员监控和度量应用程序的性能。通过将Micrometer生成的指标数据导入到InfluxDB中,我们可以轻松地实现实时监测和分析,以优化应用程序的性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值