Observability

面向 Apache Pulsar 的 Spring 包括一种通过 Micrometer 管理可观察性的方式。

可观测性尚未添加到 Reactive 组件中

Micrometer Observations

PulsarTemplatePulsarListener 使用 Micrometer 可观察性 API 进行检测。当提供 Micrometer ObservationRegistry bean 时,发送和接收操作将被追踪和计时。

Custom tags

默认实现为模板可观察性添加 bean.name 标签,并为侦听器可观察性添加 listener.id 标签。要向计时器和追踪添加其他标签,请分别将自定义 PulsarTemplateObservationConventionPulsarListenerObservationConvention 配置到模板或侦听器容器。

您可以将 DefaultPulsarTemplateObservationConventionDefaultPulsarListenerObservationConvention 子类化,或者提供全新的实现。

Unresolved include directive in modules/ROOT/pages/reference/observability.adoc - include::partial$_metrics.adoc[]

Unresolved include directive in modules/ROOT/pages/reference/observability.adoc - include::partial$_spans.adoc[]

有关更多信息,请参见 Micrometer Tracing

Manual Configuration without Spring Boot

如果不使用 Spring Boot,则需要配置和提供 ObservationRegistry 以及微米追踪。有关更多信息,请参见 Micrometer Tracing

Auto-Configuration with Spring Boot

如果你使用 Spring Boot,Spring Boot Actuator 将为你自动配置一个 ObservationRegistry 实例。如果类路径上有 micrometer-core,则每个停止的可观察性都会导致一个计时器。

Spring Boot 也为你自动配置了 Micrometer Tracing。其中包括对 Brave OpenTelemetry、Zipkin 和 Wavefront 的支持。在使用 Micrometer Observation API 时,完成观察会导致将 span 报告给 Zipkin 或 Wavefront。你可以通过设置 management.tracing 下的属性来控制跟踪。你可以使用 management.zipkin.tracing 和 Zipkin,而 Wavefront 使用 `management.wavefront。

Example Configuration

下面的示例演示了将 Spring Boot 应用程序配置为使用具有 Brave 的 Zipkin 的步骤。

  1. 将所需的依赖项添加到您的应用程序中(分别在 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>
Gradle
dependencies {
    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'` 依赖项。 . 将所需的属性添加到您的应用程序中:[source, yaml]

management:
  tracing.enabled: true
  zipkin:
    tracing.endpoint: "http://localhost:9411/api/v2/spans"

tracing.endpoint 所述,Zipkin 在本地运行,如 here 中所述。

此时,您的应用程序在发送和接收 Pulsar 消息时应该会记录追踪。在 Zipkin UI(在 [role="bare"][role="bare"]http://localhost:9411,本地运行中)中,您应该可以查看追踪。

您还可以在 Spring for Apache Pulsar Sample Apps 上看到前面的配置。

这些步骤与配置任何所支持的其它跟踪环境非常相似。