领先一步
VMware提供培训和认证,以加速您的进步。
了解更多随着 Spring Cloud 2021.0.0(又名 Jubilee)发布列车的发布,我们非常高兴地宣布 Spring Cloud Sleuth 3.1.0 正式上市。在这篇博文中,我们将介绍最值得注意的发布功能。
以下是最重要功能的列表,我们将在本文的后续部分详细介绍它们。
我们正在以追踪表示形式装饰 `DataSource`。我们将实际的代理委托给 p6spy 或 datasource-proxy。要使用此功能,需要在类路径中包含它们。
查看 文档 以了解更多详细信息。
此处 可以找到一个展示此集成的示例。
此更改背后的主要驱动力是,直到 Sleuth 3.1,您的 Tomcat 日志中没有任何追踪信息。通过此更改,我们正在监控 Tomcat,因此我们在请求生命周期的更早期阶段,并且可以使用追踪信息监控所有可能的日志。
查看 文档 以了解更多详细信息。
此处 可以找到一个展示此集成的示例。
我们正在监控 Spring Vault 用于与 Vault 通信的 `RestTemplate` 或 `WebClient` 实例。
查看 文档 以了解更多详细信息。
此处 可以找到一个展示 `RestTemplate` 集成的示例。
此处 可以找到一个展示 `WebClient` 集成的示例。
在追踪领域,没有什么比创建跨度却未启动或未停止更令人沮丧的了。我们已经厌倦了这种情况……我们面临的另一个挑战是我们甚至不记得我们创建了多少跨度,它们的名称是什么以及在它们上面设置了多少标签/事件。
我们决定改变我们在 Sleuth 中编写代码的方式,以便我们可以引入某些自动化。我们只监控一次代码,但是我们能够在测试时打开额外的断言,以验证跨度是否已启动和停止等。此外,在文档构建时,我们解析源代码并构建一个包含一些详细信息的跨度表。
您可以查看 文档 以查看该自动化的结果。
如果您的类路径中运行着 Spring Cloud Deployer,我们将用追踪表示形式包装 `AppDeployer`。我们以默认间隔轮询应用程序的状态。
查看 文档 以了解更多详细信息。
此处 可以找到一个展示此集成的示例。
如果您的类路径中包含 R2DBC Proxy,我们将监控 `ConnectionFactory`,使其包含自定义的 `ProxyExecutionListener`。
查看 文档 以了解更多详细信息。
此处 可以找到一个展示此集成的示例。
我们装饰 Kafka 客户端(`KafkaProducer` 和 `KafkaConsumer`)以对生成的或使用的每个事件创建一个跨度。我们还提供 `TracingKafkaProducerFactory` 和 `TracingKafkaConsumerFactory` 用于 Reactor Kafka 客户端(分别为 `KafkaSender` 和 `KafkaReceiver`)。此外,我们还装饰上下文中可用的任何 Spring Kafka `ProducerFactory` 和 `ConsumerFactory`。
查看 文档 以了解更多详细信息。
此处 可以找到一个展示 Kafka 生产者集成的示例。
此处 可以找到一个展示 Kafka 消费者集成的示例。
此处 可以找到一个展示 Kafka 响应式生产者集成的示例。
此处 可以找到一个展示 Kafka 响应式消费者集成的示例。
如果你的classpath中包含Spring Tx,我们将对PlatformTransactionManager
和ReactiveTransactionManager
进行增强,以便在创建新事务时创建一个span。
查看文档了解更多细节。
此处 可以找到一个展示此集成的示例。
如果你的classpath中运行着Spring Batch,我们将包装StepBuilderFactory
和JobBuilderFactory
以传播追踪上下文。
查看文档了解更多细节。
这里你可以找到一个展示此集成的示例。
如果你的classpath中运行着Spring RSocket,我们将包装进出站通信,通过元数据传播追踪上下文。
查看文档了解更多细节。
这里你可以找到一个展示RSocket服务器此集成的示例。
这里你可以找到一个展示RSocket客户端此集成的示例。
如果你的classpath中运行着Spring Cloud Task,我们将增强TaskExecutionListener
、CommandLineRunner
和ApplicationRunner
。
这里你可以找到一个展示此集成的示例。
如果你的classpath中运行着Spring Cloud Config Server,我们将用span包装EnvironmentRepository
。
查看文档了解更多细节。
这里你可以找到一个展示此集成的示例。
如果你的classpath中包含Spring Cloud CircuitBreaker,我们将使用其追踪表示法包装传递的命令Supplier
和回退Function
。
查看文档了解更多细节。
这里你可以找到一个展示此集成的示例。
如果你的classpath中包含Spring Data Cassandra,我们将增强Cassandra的CqlSession
和ReactiveSession
接口,并提供我们自己的RequestTracker
实现。
查看文档了解更多细节。
这里你可以找到一个展示非反应式Cassandra此集成的示例。
这里你可以找到一个展示反应式Cassandra此集成的示例。
如果你的classpath中包含Spring Session,我们将增强Session
存储库,用span包装所有操作。
查看文档了解更多细节。
这里你可以找到一个展示此集成的示例。
如果你的classpath中包含Spring Security,我们将创建一个SecurityContextChangedListener
实现,在上下文更改时用事件注释当前span。
这里你可以找到一个展示此集成的示例。
Exemplars是附加到指标的元数据(参见:Prometheus Exemplars),例如:traceId,以便你可以获取指标的示例traceId。
我们将Sleuth与Prometheus集成,以便如果有人使用Prometheus Java客户端,他们可以使用Sleuth获取Exemplars。此问题也与Micrometer Exemplars支持相关,参见。
这里你可以阅读更多关于此问题的资料。
关于此功能,需要注意以下几点:
Spring Cloud Sleuth可以增强Spring Cloud Function。由于Spring Cloud Stream使用Spring Cloud Function,你将开箱即用地获得消息传递增强。
实现方法是提供一个Function
、Consumer
或Supplier
,它以Message
作为参数,例如Function<Message<String>, Message<Integer>>
。
如果类型**不是**Message
,则**不会**进行增强。
对于反应式Consumer<Flux<Message<?>>>
,请记住在调用.subscribe()
之前手动关闭span并清除上下文。
这里你可以找到一个展示生产者此集成的示例。
这里你可以找到一个展示消费者此集成的示例。
我们添加了命令监听器,它将所有命令都包装在一个跨度内。这对于响应式和非响应式情况都有效。
这里您可以找到一个展示此集成的示例。
通过这个PR,Redis监控可以用于其他追踪器,例如OpenTelemetry。
Spring Cloud Sleuth带有一个追踪Actuator端点,可以存储已完成的跨度。可以通过HTTP GET方法查询该端点以简单地检索存储的跨度列表,也可以通过HTTP POST方法检索列表并清除它。
查看文档以了解更多详细信息。
此版本引入了许多监控功能。我们很乐意看到您的追踪结果!您可以访问我们的Gitter并粘贴您的追踪截图,以便我们分析如何改进它。
如有任何疑问,请随时联系我们