可觀測性

Spring for Apache Pulsar 透過 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

在可觀測物件啟動後新增的鍵值可能不會出現在 *.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

在可觀測物件啟動後新增的鍵值可能不會出現在 *.active 指標中。
Micrometer 內部使用 `納秒` 作為基本單位。但是,每個後端決定實際的基本單位。(例如,Prometheus 使用秒)

包含類 `org.springframework.pulsar.observation.PulsarTemplateObservation` 的完全限定名。

所有標籤必須以 `spring.pulsar.template` 字首開頭!
表 2. 低基數鍵

名稱

描述

spring.pulsar.template.name (必需)

傳送訊息的模板 Bean 名稱。

可觀測性 - Span

下面列出了本專案宣告的所有 span。

監聽器可觀測物件 Span

Pulsar 監聽器接收訊息時建立的可觀測物件。

Span 名稱 spring.pulsar.listener (由約定類 `org.springframework.pulsar.observation.DefaultPulsarListenerObservationConvention` 定義)。

包含類 `org.springframework.pulsar.observation.PulsarListenerObservation` 的完全限定名。

所有標籤必須以 `spring.pulsar.listener` 字首開頭!
表 3. 標籤鍵

名稱

描述

spring.pulsar.listener.id (必需)

接收訊息的監聽器容器 ID。

模板可觀測物件 Span

Pulsar 模板傳送訊息時建立的可觀測物件。

Span 名稱 spring.pulsar.template (由約定類 `org.springframework.pulsar.observation.DefaultPulsarTemplateObservationConvention` 定義)。

包含類 `org.springframework.pulsar.observation.PulsarTemplateObservation` 的完全限定名。

所有標籤必須以 `spring.pulsar.template` 字首開頭!
表 4. 標籤鍵

名稱

描述

spring.pulsar.template.name (必需)

傳送訊息的模板 Bean 名稱。

更多資訊請參見 Micrometer Tracing

不使用 Spring Boot 的手動配置

如果您不使用 Spring Boot,則需要配置和提供 `ObservationRegistry` 以及 Micrometer Tracing。更多資訊請參見 Micrometer Tracing

使用 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,使用 `management.wavefront` 配置 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://:9411/api/v2/spans"

    上面的 `tracing.endpoint` 假定 Zipkin 正在本地執行,詳情參見此處

此時,當您傳送和接收 Pulsar 訊息時,您的應用程式應該會記錄跟蹤。您可以在 Zipkin UI 中檢視它們(在本地執行時,訪問 localhost:9411)。

您也可以在 Spring for Apache Pulsar 示例應用 中檢視上述配置。

配置步驟與配置任何其他支援的跟蹤環境非常相似。