使用 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。
建置和部署應用程式
依下列步驟組建和部署範例應用程式。
使用下列命令來複製和組建展示版本存放庫:
git clone https://github.com/spring-cloud-samples/spring-cloud-circuitbreaker-demo.git cd spring-cloud-circuitbreaker-demo && mvn clean package -DskipTests
使用下列命令來建立 Azure Spring Apps 服務執行個體:
az spring create \ --resource-group ${resource-group-name} \ --name ${Azure-Spring-Apps-instance-name}
使用下列命令建立具有端點的應用程式:
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
使用下列命令來部署應用程式:
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
使用下列命令來建立 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
使用下列命令建立具有端點的應用程式:
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
使用下列命令來部署應用程式:
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 計量
在 Azure Spring 應用程式執行個體中,選取瀏覽窗格中的 [Application Insights],然後在頁面上選取 [Application Insights]。
注意
如果您未啟用 Application Insights,您可以啟用 Java 內含式代理程式。 如需詳細資訊,請參閱在 Azure Spring 應用程式中使用 Application Insights Java 內含式代理程式的使用 Azure 入口網站管理 Application Insights 一節。
啟用 resilience4j 計量的維度集合。 如需詳細資訊,請參閱 Application Insights 中記錄型和預先彙總計量的自訂計量維度和預先彙總一節。
在導覽窗格中,選取 [計量]。 [計量] 頁面提供下拉功能表和選項,以定義此程序中的圖表。 針對所有圖表,將 [計量命名空間] 設為 azure.applicationinsights。
將 [計量] 設定為 resilience4j_circuitbreaker_buffered_calls,然後將 [彙總] 設定為 Avg。
將 [計量] 設定為 resilience4j_circuitbreaker_calls,然後將 [彙總] 設定為 Avg。
將 [計量] 設定為 resilience4j_circuitbreaker_calls,然後將 [彙總] 設定為 Avg。選取 [新增篩選],並將 [名稱] 設定為 [延遲]。
將 [計量] 設定為 resilience4j_circuitbreaker_calls,然後將 [彙總] 設定為 Avg。選取 [套用分割],並將 [分割依據] 設定為 [種類]。
將 [計量] 設定為 resilience4j_circuitbreaker_calls,然後將 [彙總] 設定為 Avg。選取 [新增計量] 並將 [計量] 設定為 resilience4j_circuitbreaker_buffered_calls,然後將 [彙總] 設定為 Avg。再次選取 [新增計量] 並將 [計量] 設定為 resilience4j_circuitbreaker_slow_calls,然後將 [彙總] 設定為 Avg。
在 Azure Spring 應用程式執行個體中,選取瀏覽窗格中的 [Application Insights],然後在頁面上選取預設 [Application Insights]。
注意
如果沒有可用的預設 Application Insights,您可以啟用 Java 內含式代理程式。 如需詳細資訊,請參閱在 Azure Spring 應用程式中使用 Application Insights Java 內含式代理程式的使用 Azure 入口網站管理 Application Insights 一節。
啟用 resilience4j 計量的維度集合。 如需詳細資訊,請參閱 Application Insights 中記錄型和預先彙總計量的自訂計量維度和預先彙總一節。
在導覽窗格中,選取 [計量]。 [計量] 頁面提供下拉功能表和選項,以定義此程序中的圖表。 針對所有圖表,將 [計量命名空間] 設為 azure.applicationinsights。
將 [計量] 設定為 resilience4j_circuitbreaker_buffered_calls,然後將 [彙總] 設定為 Avg。
將 [計量] 設定為 resilience4j_circuitbreaker_calls,然後將 [彙總] 設定為 Avg。
將 [計量] 設定為 resilience4j_circuitbreaker_calls,然後將 [彙總] 設定為 Avg。選取 [新增篩選],並將 [名稱] 設定為 [延遲]。
將 [計量] 設定為 resilience4j_circuitbreaker_calls,然後將 [彙總] 設定為 Avg。選取 [套用分割],並將 [分割依據] 設定為 [種類]。
將 [計量] 設定為 resilience4j_circuitbreaker_calls,然後將 [彙總] 設定為 Avg。選取 [新增計量] 並將 [計量] 設定為 resilience4j_circuitbreaker_buffered_calls,然後將 [彙總] 設定為 Avg。再次選取 [新增計量] 並將 [計量] 設定為 resilience4j_circuitbreaker_slow_calls,然後將 [彙總] 設定為 Avg。