分布式跟踪

概述

可观察性是微服务应用程序的一个重要方面。可观察性的一个关键因素是分布式跟踪

当应用程序将记录写入数据库,然后由Debezium处理时,有必要提供额外的预防措施。开云体育官方注册网址开云体育电动老虎机通过对数据库的写入有效地划分了活动跟踪。开云体育电动老虎机如果我们希望Debez开云体育官方注册网址ium加入更大范围的应用程序跟踪程序,我们需要将跟踪元数据传递给Debezium。

跟踪支持是通过开云体育官方注册网址OpenTracing规范。还需要提供一个实现规范的客户端。开云体育官方注册网址Debezium是用Jaeger实现。

规范JAR文件和Jaeger客户端都不是Debezium Kafka Connect容器映像的一部分。开云体育官方注册网址用户要么需要扩展图像,要么可以使用Strimzi卡夫卡的形象。在这种情况下,Kafka生产者和消费者的跟踪也是可用的。

参见撰写文件发件箱的例子

ActivateTracingSpan SMT

Debezium中跟踪的主要实现点是开云体育官方注册网址ActivateTracingSpanSMT。在这种情况下,写入数据库的应用程序负责提供跟踪范围上下文。开云体育电动老虎机写入器必须将span上下文注入到java.util.Properties实例,该实例被序列化并作为表的不同字段写入数据库。开云体育电动老虎机

如果没有提供span上下文,那么SMT将创建一个新的span。在这种情况下,Debeziu开云体育官方注册网址m操作和元数据将被跟踪,但不会连接到业务事务跟踪以支持端到端跟踪。

当这个SMT被一个消息调用时,它将:

  • 如果在消息中出现,则提取父跨度上下文

  • 创建事件db-log-write跨度上下文,并将开始时间戳设置为数据库日志写入时间戳开云体育电动老虎机

  • 插入字段块的跨度为标签

  • 创建流程开云体育官方注册网址debezium-read的孩子db-log-writeSpan的开始时间戳设置为偶数的处理时间

  • 从信封中插入字段,例如人事处进入处理的跨度为标签

  • 将处理范围上下文注入消息头

Kafka生产者跟踪

也可以选择在Kafka生产者级别启用跟踪。如果启用,那么当消息被写入Kafka代理时,生产者将从Kafka消息头中提取Debezium的处理跨度上下文,创建一个新的子跨度并记录关于写入代理的信息。开云体育官方注册网址然后,它将新的span注入到消息头中,以便消息的使用者可以恢复跟踪并恢复端到端跟踪。

配置选项

配置属性

类型

默认的

tracing.span.context.field

包含span上下文的字段的名称。

的序列化实例,发送方必须将span上下文写入数据库列开云体育电动老虎机java.util.Properties使用注入的span上下文。

字符串

tracingspancontext

tracing.operation.name

表示Debezium处理范围的操作名称。开云体育官方注册网址

字符串

开云体育官方注册网址debezium-read

tracing.with.context.field.only

只有具有序列化上下文字段的事件才应该被跟踪。

如果设置为真正的然后,跟踪跨度将仅为具有关联跟踪跨度上下文字段的事件创建。如果设置为然后为所有传入事件创建跟踪跨度,而不管是否有关联的跨度上下文。

布尔

发件箱扩展

的Deb开云体育官方注册网址eziumQuarkus扩展为了实现发件箱模式,提供了即时跟踪上下文传播所需的额外功能。具体来说,它提供了tracingspancontext字段,用于将跟踪范围上下文从使用发件箱扩展的服务传递到Debezium连接器。开云体育官方注册网址

当一个发件箱事件被触发时,扩展将:

  • 创建一个新的outbox-writeSpan作为当前活动Span的子Span

  • 将span上下文注入其中java.util.Properties实例的tracingspancontext

  • 将记录写入数据库开云体育电动老虎机

如果还启用了发件箱扩展中的跟踪集成,则自动启用smallrye-opentracing夸克扩展存在。如果要禁用对发件箱扩展的跟踪支持,尽管smallrye-opentracing夸克扩展是存在的,你可以通过设置一个选项禁用它quarkus.开云体育官方注册网址debezium-outbox.tracing.enabled = false在夸克中application.properties文件。

事件路由器SMT

事件路由器SMT作为发件箱扩展对应物,它执行与ActivateTracingSpanSMT,并被用来代替它。