Share via


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

注意

Azure Spring Apps 是 Azure Spring Cloud 服務的新名稱。 雖然服務有新的名稱,但是您暫時還是會在某些位置看到舊的名稱。我們正在致力更新螢幕擷取畫面、影片和圖表等資產。

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

本文說明如何使用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 Apps 的企業方案實例,您必須執行下列命令:

    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 會在 bean 您包含 Spring Cloud 斷路器入門時自動建立。 如需詳細資訊,請參閱 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 Apps 實例中,選取 瀏覽窗格中的 [Application Insights ],然後在頁面上選取 [Application Insights ]。

    顯示 Azure Spring Apps Application Insights 頁面的 Azure 入口網站 螢幕快照,其中已醒目提示 Application Insights。

    注意

    如果您未啟用 Application Insights,您可以啟用 Java In-Process 代理程式。 如需詳細資訊,請參閱在 Azure Spring Apps 中使用 Application Insights Java In-Process Agent 的 Azure 入口網站 一節來管理 Application Insights。

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

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

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

  4. 將 [計量] 設定[resilience4j_circuitbreaker_buffered_calls],然後將 [匯總] 設定[平均]。

    [Azure 入口網站 Application Insights 計量] 頁面的螢幕快照,其中顯示具有斷路器緩衝呼叫和平均匯總的圖表。

  5. 將 [計量] 設定[resilience4j_circuitbreaker_calls],然後將 [匯總] 設定[平均]。

    [Azure 入口網站 Application Insights 計量] 頁面的螢幕快照,其中顯示具有斷路器呼叫和平均匯總的圖表。

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

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

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

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

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

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

  1. 在您的 Azure Spring Apps 實例中,選取 瀏覽窗格中的 Application Insights ,然後在頁面上選取預設 的 Application Insights

    顯示 Azure Spring Apps Application Insights 頁面的 Azure 入口網站 螢幕快照,其中已醒目提示預設 Application Insights 實例。

    注意

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

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

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

    [Azure 入口網站 Application Insights 計量] 頁面的螢幕快照,其中已開啟 [計量命名空間] 功能表,並醒目提示 azure.applicationinsights。

  4. 將 [計量] 設定[resilience4j_circuitbreaker_buffered_calls],然後將 [匯總] 設定[平均]。

    [Azure 入口網站 Application Insights 計量] 頁面的螢幕快照,其中顯示具有斷路器緩衝呼叫和平均匯總的圖表。

  5. 將 [計量] 設定[resilience4j_circuitbreaker_calls],然後將 [匯總] 設定[平均]。

    [Azure 入口網站 Application Insights 計量] 頁面的螢幕快照,其中顯示具有斷路器呼叫和平均匯總的圖表。

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

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

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

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

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

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

下一步