可观测性

Apache Pulsar 的 Spring 支持包含通过 Micrometer 管理可观测性的方法。

可观测性尚未添加到响应式组件中

Micrometer 观测指标

PulsarTemplatePulsarListener 使用 Micrometer 观测指标 API 进行检测。提供 Micrometer ObservationRegistry bean 时,发送和接收操作将被跟踪和计时。

自定义标签

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

您可以对 DefaultPulsarTemplateObservationConventionDefaultPulsarListenerObservationConvention 进行子类化,或提供全新的实现。

可观测性 - 指标

您可以在下面找到此项目声明的所有指标的列表。

侦听器观测指标

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 前缀开头!
表 1. 低基数键

名称

描述

spring.pulsar.listener.id (必需)

接收消息的侦听器容器的 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 前缀开头!
表 2. 低基数键

名称

描述

spring.pulsar.template.name (必需)

发送消息的模板的 Bean 名称。

可观测性 - 跨度

您可以在下面找到此项目声明的所有跨度的列表。

侦听器观测跨度

Pulsar 侦听器接收消息时创建的观测指标。

跨度名称 spring.pulsar.listener(由约定类 org.springframework.pulsar.observation.DefaultPulsarListenerObservationConvention 定义)。

封闭类的完全限定名 org.springframework.pulsar.observation.PulsarListenerObservation

所有标签都必须以 spring.pulsar.listener 前缀开头!
表 3. 标签键

名称

描述

spring.pulsar.listener.id (必需)

接收消息的侦听器容器的 ID。

模板观测跨度

Pulsar 模板发送消息时创建的观测指标。

跨度名称 spring.pulsar.template(由约定类 org.springframework.pulsar.observation.DefaultPulsarTemplateObservationConvention 定义)。

封闭类的完全限定名 org.springframework.pulsar.observation.PulsarTemplateObservation

所有标签都必须以 spring.pulsar.template 前缀开头!
表 4. 标签键

名称

描述

spring.pulsar.template.name (必需)

发送消息的模板的 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 下的属性来控制跟踪。您可以将 Zipkin 与 management.zipkin.tracing 一起使用,而 Wavefront 使用 management.wavefront

示例配置

以下示例显示了将 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' 依赖项。

  2. 将所需的属性添加到您的应用程序

    management:
      tracing.enabled: true
      zipkin:
        tracing.endpoint: "https://127.0.0.1:9411/api/v2/spans"

    上面的 tracing.endpoint 预期 Zipkin 按照 此处 所述在本地运行。

此时,当您发送和接收 Pulsar 消息时,您的应用程序应记录跟踪。您应该能够在 Zipkin UI 中查看它们(在本地运行时为 localhost:9411)。

您还可以在 Apache Pulsar 的 Spring 支持示例应用程序 中查看上述配置。

配置其他支持的跟踪环境的步骤非常相似。