分享方式:


使用 Micrometer 收集 Spring Cloud Resilience4J 斷路器計量 (預覽)

注意

基本標準和企業方案將從 2025 年 3 月中旬開始淘汰,並停用 3 年。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 Azure Spring Apps 淘汰公告

標準 耗用量和專用 方案將從 2024 年 9 月 30 日起淘汰,並在六個月後完成關閉。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 將 Azure Spring Apps 標準取用和專用方案遷移至 Azure Container Apps

本文適用於: ✔️ 基本/標準 ✔️ 企業

本文說明如何使用 Application Insights JAVA 內含式代理程式收集 Spring Cloud Resilience4j 斷路器計量。 您可以透過這項功能,使用 Micrometer 從 Application Insights 監視 Resilience4j 斷路器的計量。

展示版本 spring-cloud-circuit-breaker-demo 示範監視的運作方式。

必要條件

  • 如果開發電腦尚未安裝,請安裝 Git、Maven 和 Java。

建置和部署應用程式

依下列步驟組建和部署範例應用程式。

  1. 使用下列命令來複製和組建展示版本存放庫:

    git clone https://github.com/spring-cloud-samples/spring-cloud-circuitbreaker-demo.git
    cd spring-cloud-circuitbreaker-demo && mvn clean package -DskipTests
    
  1. 使用下列命令來建立 Azure Spring Apps 服務執行個體:

    az spring create \
        --resource-group ${resource-group-name} \
        --name ${Azure-Spring-Apps-instance-name}
    
  2. 使用下列命令建立具有端點的應用程式:

    az spring app create \
        --resource-group ${resource-group-name} \
        --service ${Azure-Spring-Apps-instance-name} \
        --name resilience4j \
        --assign-endpoint
    az spring app create \
        --resource-group ${resource-group-name} \
        --service ${Azure-Spring-Apps-instance-name} \
        --name reactive-resilience4j \
        --assign-endpoint
    
  3. 使用下列命令來部署應用程式:

    az spring app deploy \
        --resource-group ${resource-group-name} \
        --service ${Azure-Spring-Apps-instance-name} \
        --name resilience4j \
        --env resilience4j.circuitbreaker.instances.backendA.registerHealthIndicator=true \
        --artifact-path ./spring-cloud-circuitbreaker-demo-resilience4j/target/spring-cloud-circuitbreaker-demo-resilience4j-0.0.1-SNAPSHOT.jar
    az spring app deploy \
        --resource-group ${resource-group-name} \
        --service ${Azure-Spring-Apps-instance-name} \
        --name reactive-resilience4j \
        --env resilience4j.circuitbreaker.instances.backendA.registerHealthIndicator=true \
        --artifact-path ./spring-cloud-circuitbreaker-demo-reactive-resilience4j/target/spring-cloud-circuitbreaker-demo-reactive-resilience4j-0.0.1-SNAPSHOT.jar
    
  1. 使用下列命令來建立 Azure Spring Apps 服務執行個體:

    注意

    如果您的訂用帳戶從未用於建立 Azure Spring 應用程式的企業方案執行個體,則必須執行下列命令:

    az term accept \
        --publisher vmware-inc 
        --product azure-spring-cloud-vmware-tanzu-2 
        --plan asa-ent-hr-mtr
    
    az spring create \
        --resource-group ${resource-group-name} \
        --name ${Azure-Spring-Apps-instance-name} \
        --sku Enterprise
    
  2. 使用下列命令建立具有端點的應用程式:

    az spring app create \
        --resource-group ${resource-group-name} \
        --service ${Azure-Spring-Apps-instance-name} \
        --name resilience4j \
        --assign-endpoint
    az spring app create \
        --resource-group ${resource-group-name} \
        --service ${Azure-Spring-Apps-instance-name} \
        --name reactive-resilience4j \
        --assign-endpoint
    
  3. 使用下列命令來部署應用程式:

    az spring app deploy \
        --resource-group ${resource-group-name} \
        --service ${Azure-Spring-Apps-instance-name} \
        --name resilience4j \
        --env resilience4j.circuitbreaker.instances.backendA.registerHealthIndicator=true \
        --artifact-path ./spring-cloud-circuitbreaker-demo-resilience4j/target/spring-cloud-circuitbreaker-demo-resilience4j-0.0.1-SNAPSHOT.jar
    az spring app deploy \
        --resource-group ${resource-group-name} \
        --service ${Azure-Spring-Apps-instance-name} \
        --name reactive-resilience4j \
        --env resilience4j.circuitbreaker.instances.backendA.registerHealthIndicator=true \
        --artifact-path ./spring-cloud-circuitbreaker-demo-reactive-resilience4j/target/spring-cloud-circuitbreaker-demo-reactive-resilience4j-0.0.1-SNAPSHOT.jar
    

注意

  • 包含 Resilience4j 的必要相依性:

    <dependency>
        <groupId>io.github.resilience4j</groupId>
        <artifactId>resilience4j-micrometer</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-circuitbreaker-resilience4j</artifactId>
    </dependency>
    
  • 您的程式碼必須使用 CircuitBreakerFactory API,此 API 會實作為當您包含 Spring Cloud 斷路器入門時所自動建立的 bean。 如需詳細資訊,請參閱 Spring Cloud 斷路器

  • 下列兩個相依性與 Resilient4j 套件發生衝突。 請確定您未將其包含在內。

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-sleuth</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-zipkin</artifactId>
    </dependency>
    

瀏覽至閘道應用程式提供的 URL,並從 spring-cloud-circuit-breaker-demo 存取端點,如下所示:

/get
/delay/{seconds}
/fluxdelay/{seconds}

請在 Azure 入口網站找出 Resilence4j 計量

  1. 在 Azure Spring 應用程式執行個體中,選取瀏覽窗格中的 [Application Insights],然後在頁面上選取 [Application Insights]

    Azure 入口網站的螢幕擷取畫面,顯示 Azure Spring 應用程式 Application Insights 頁面,其中醒目提示 Application Insights。

    注意

    如果您未啟用 Application Insights,您可以啟用 Java 內含式代理程式。 如需詳細資訊,請參閱在 Azure Spring 應用程式中使用 Application Insights Java 內含式代理程式使用 Azure 入口網站管理 Application Insights 一節。

  2. 啟用 resilience4j 計量的維度集合。 如需詳細資訊,請參閱 Application Insights 中記錄型和預先彙總計量自訂計量維度和預先彙總一節。

  3. 在導覽窗格中,選取 [計量]。 [計量] 頁面提供下拉功能表和選項,以定義此程序中的圖表。 針對所有圖表,將 [計量命名空間] 設為 azure.applicationinsights

    Azure 入口網站 Application Insights Metrics 頁面的螢幕擷取畫面,其中 [計量命名空間] 功能表開啟,並且醒目提示 azure-applicationinsights 選項。

  4. 將 [計量] 設定為 resilience4j_circuitbreaker_buffered_calls,然後將 [彙總] 設定為 Avg

    Azure 入口網站 Application Insights 計量頁面的螢幕擷取畫面,其中顯示具有斷路器緩衝呼叫和平均彙總的圖表。

  5. 將 [計量] 設定為 resilience4j_circuitbreaker_calls,然後將 [彙總] 設定為 Avg

    Azure 入口網站 Application Insights 計量頁面的螢幕擷取畫面,其中顯示具有斷路器呼叫和平均彙總的圖表。

  6. 將 [計量] 設定為 resilience4j_circuitbreaker_calls,然後將 [彙總] 設定為 Avg。選取 [新增篩選],並將 [名稱] 設定為 [延遲]

    Azure 入口網站 Application Insights 計量頁面的螢幕擷取畫面,其中顯示具有斷路器呼叫、平均彙總和延遲篩選的圖表。

  7. 將 [計量] 設定為 resilience4j_circuitbreaker_calls,然後將 [彙總] 設定為 Avg。選取 [套用分割],並將 [分割依據] 設定為 [種類]

    Azure 入口網站 Application Insights 計量頁面的螢幕擷取畫面,其中顯示具有斷路器呼叫、平均彙總和分割的圖表。

  8. 將 [計量] 設定為 resilience4j_circuitbreaker_calls,然後將 [彙總] 設定為 Avg。選取 [新增計量] 並將 [計量] 設定為 resilience4j_circuitbreaker_buffered_calls,然後將 [彙總] 設定為 Avg。再次選取 [新增計量] 並將 [計量] 設定為 resilience4j_circuitbreaker_slow_calls,然後將 [彙總] 設定為 Avg

    Azure 入口網站的螢幕擷取畫面,其中顯示Application Insights 計量頁面並包含此步驟中所述的圖表。

  1. 在 Azure Spring 應用程式執行個體中,選取瀏覽窗格中的 [Application Insights],然後在頁面上選取預設 [Application Insights]

    Azure 入口網站的螢幕擷取畫面,顯示 Azure Spring 應用程式 Application Insights 頁面,其中醒目提示預設 Application Insights 執行個體。

    注意

    如果沒有可用的預設 Application Insights,您可以啟用 Java 內含式代理程式。 如需詳細資訊,請參閱在 Azure Spring 應用程式中使用 Application Insights Java 內含式代理程式使用 Azure 入口網站管理 Application Insights 一節。

  2. 啟用 resilience4j 計量的維度集合。 如需詳細資訊,請參閱 Application Insights 中記錄型和預先彙總計量自訂計量維度和預先彙總一節。

  3. 在導覽窗格中,選取 [計量]。 [計量] 頁面提供下拉功能表和選項,以定義此程序中的圖表。 針對所有圖表,將 [計量命名空間] 設為 azure.applicationinsights

    Azure 入口網站 Application Insights Metrics 頁面的螢幕擷取畫面,其中 [計量命名空間] 功能表開啟,並且醒目提示 azure-applicationinsights。

  4. 將 [計量] 設定為 resilience4j_circuitbreaker_buffered_calls,然後將 [彙總] 設定為 Avg

    Azure 入口網站 Application Insights 計量頁面的螢幕擷取畫面,其中顯示具有斷路器緩衝呼叫和平均彙總的圖表。

  5. 將 [計量] 設定為 resilience4j_circuitbreaker_calls,然後將 [彙總] 設定為 Avg

    Azure 入口網站 Application Insights 計量頁面的螢幕擷取畫面,其中顯示具有斷路器呼叫和平均彙總的圖表。

  6. 將 [計量] 設定為 resilience4j_circuitbreaker_calls,然後將 [彙總] 設定為 Avg。選取 [新增篩選],並將 [名稱] 設定為 [延遲]

    Azure 入口網站 Application Insights 計量頁面的螢幕擷取畫面,其中顯示具有斷路器呼叫、平均彙總和延遲篩選的圖表。

  7. 將 [計量] 設定為 resilience4j_circuitbreaker_calls,然後將 [彙總] 設定為 Avg。選取 [套用分割],並將 [分割依據] 設定為 [種類]

    Azure 入口網站 Application Insights 計量頁面的螢幕擷取畫面,其中顯示具有斷路器呼叫、平均彙總和分割的圖表。

  8. 將 [計量] 設定為 resilience4j_circuitbreaker_calls,然後將 [彙總] 設定為 Avg。選取 [新增計量] 並將 [計量] 設定為 resilience4j_circuitbreaker_buffered_calls,然後將 [彙總] 設定為 Avg。再次選取 [新增計量] 並將 [計量] 設定為 resilience4j_circuitbreaker_slow_calls,然後將 [彙總] 設定為 Avg

    Azure 入口網站的螢幕擷取畫面,其中顯示Application Insights 計量頁面並包含此步驟中所述的圖表。

下一步