可观察性
Apache Pulsar 的 Spring 包含一种通过 Micrometer 管理可观察性的方法。
可观察性尚未添加到响应式组件中 |
Micrometer 观察
PulsarTemplate
和 PulsarListener
使用 Micrometer 观察 API 进行检测。当提供 Micrometer ObservationRegistry
bean 时,发送和接收操作将被跟踪和计时。
自定义标签
默认实现为模板观察添加了bean.name
标签,为监听器观察添加了listener.id
标签。要向计时器和跟踪添加其他标签,请分别为模板或监听器容器配置自定义的PulsarTemplateObservationConvention
或PulsarListenerObservationConvention
。
您可以对DefaultPulsarTemplateObservationConvention 或DefaultPulsarListenerObservationConvention 进行子类化,或者提供全新的实现。
|
可观察性 - 指标
以下是此项目声明的所有指标的列表。
监听器观察
当 Pulsar 监听器接收到消息时创建的观察。
指标名称 spring.pulsar.listener
(由约定类org.springframework.pulsar.observation.DefaultPulsarListenerObservationConvention
定义)。类型 timer
。
指标名称 spring.pulsar.listener.active
(由约定类org.springframework.pulsar.observation.DefaultPulsarListenerObservationConvention
定义)。类型 long task timer
。
在开始观察后添加的 KeyValues 可能在 *.active 指标中缺失。 |
Micrometer 在内部使用纳秒 作为基本单位。但是,每个后端都会确定实际的基本单位。(例如,Prometheus 使用秒)
|
封闭类的完全限定名称org.springframework.pulsar.observation.PulsarListenerObservation
。
所有标签都必须以spring.pulsar.listener 前缀开头!
|
名称 |
描述 |
|
接收消息的监听器容器的 ID。 |
模板观察
当 Pulsar 模板发送消息时创建的观察。
指标名称 spring.pulsar.template
(由约定类org.springframework.pulsar.observation.DefaultPulsarTemplateObservationConvention
定义)。类型 timer
。
指标名称 spring.pulsar.template.active
(由约定类org.springframework.pulsar.observation.DefaultPulsarTemplateObservationConvention
定义)。类型 long task timer
。
在开始观察后添加的 KeyValues 可能在 *.active 指标中缺失。 |
Micrometer 在内部使用纳秒 作为基本单位。但是,每个后端都会确定实际的基本单位。(例如,Prometheus 使用秒)
|
封闭类的完全限定名称org.springframework.pulsar.observation.PulsarTemplateObservation
。
所有标签都必须以spring.pulsar.template 前缀开头!
|
名称 |
描述 |
|
发送消息的模板的 Bean 名称。 |
可观测性 - 跨度
以下是此项目声明的所有跨度的列表。
监听器观察跨度
当 Pulsar 监听器接收到消息时创建的观察。
跨度名称 spring.pulsar.listener
(由约定类 org.springframework.pulsar.observation.DefaultPulsarListenerObservationConvention
定义)。
封闭类的完全限定名称org.springframework.pulsar.observation.PulsarListenerObservation
。
所有标签都必须以spring.pulsar.listener 前缀开头!
|
名称 |
描述 |
|
接收消息的监听器容器的 ID。 |
模板观察跨度
当 Pulsar 模板发送消息时创建的观察。
跨度名称 spring.pulsar.template
(由约定类 org.springframework.pulsar.observation.DefaultPulsarTemplateObservationConvention
定义)。
封闭类的完全限定名称org.springframework.pulsar.observation.PulsarTemplateObservation
。
所有标签都必须以spring.pulsar.template 前缀开头!
|
名称 |
描述 |
|
发送消息的模板的 Bean 名称。 |
有关更多信息,请参阅 Micrometer 跟踪。
无 Spring Boot 的手动配置
如果您不使用 Spring Boot,则需要配置并提供一个 ObservationRegistry
以及 Micrometer 跟踪。有关更多信息,请参阅 Micrometer 跟踪。
使用 Spring Boot 的自动配置
如果您使用 Spring Boot,Spring Boot Actuator 会为您自动配置一个 ObservationRegistry
实例。如果 micrometer-core
位于类路径中,则每个停止的观察都会导致一个计时器。
Spring Boot 还会为您自动配置 Micrometer 跟踪。这包括对 Brave OpenTelemetry、Zipkin 和 Wavefront 的支持。使用 Micrometer 观察 API 时,完成观察会导致将跨度报告给 Zipkin 或 Wavefront。您可以通过设置 management.tracing
下的属性来控制跟踪。您可以使用 management.zipkin.tracing
使用 Zipkin,而 Wavefront 使用 management.wavefront
。
示例配置
以下示例展示了将 Spring Boot 应用程序配置为使用 Zipkin 和 Brave 的步骤。
-
将所需的依赖项添加到您的应用程序(分别在 Maven 或 Gradle 中)
-
Maven
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-tracing-bridge-brave</artifactId> </dependency> <dependency> <groupId>io.zipkin.reporter2</groupId> <artifactId>zipkin-reporter-brave</artifactId> </dependency> <dependency> <groupId>io.zipkin.reporter2</groupId> <artifactId>zipkin-sender-urlconnection</artifactId> </dependency> </dependencies>
Gradledependencies { implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'io.micrometer:micrometer-tracing-bridge-brave' implementation 'io.zipkin.reporter2:zipkin-reporter-brave' implementation 'io.zipkin.reporter2:zipkin-sender-urlconnection' }
注意:如果您应用程序没有配置 WebClient 或 RestTemplate,则只需要
'io.zipkin.reporter2:zipkin-sender-urlconnection'
依赖项。 -
-
将所需的属性添加到您的应用程序
management: tracing.enabled: true zipkin: tracing.endpoint: "https://127.0.0.1:9411/api/v2/spans"
上面的
tracing.endpoint
预计 Zipkin 正在本地运行,如 此处 所述。
此时,当您发送和接收 Pulsar 消息时,您的应用程序应记录跟踪。您应该能够在 Zipkin UI 中查看它们(在 localhost:9411,当在本地运行时)。
您也可以在 Spring for Apache Pulsar 示例应用程序 中查看前面的配置。 |
这些步骤与配置任何其他受支持的跟踪环境非常相似。