可觀測性

適用於 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 內部使用 nanoseconds 作為基本單位。但是,每個後端都會決定實際的基本單位。(例如 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 內部使用 nanoseconds 作為基本單位。但是,每個後端都會決定實際的基本單位。(例如 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 搭配使用,而 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 範例應用程式 上看到先前的組態。

這些步驟與組態任何其他支援的追蹤環境非常相似。