使用微計收集 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。
建置和部署應用程式
使用下列步驟來建置和部署範例應用程式。
使用下列命令複製和建置示範存放庫:
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 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
使用下列命令建立具有端點的應用程式:
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 會在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 計量
在您的 Azure Spring Apps 實例中,選取 瀏覽窗格中的 [Application Insights ],然後在頁面上選取 [Application Insights ]。
注意
如果您未啟用 Application Insights,您可以啟用 Java In-Process 代理程式。 如需詳細資訊,請參閱在 Azure Spring Apps 中使用 Application Insights Java In-Process Agent 的 Azure 入口網站 一節來管理 Application Insights。
啟用 resilience4j 計量的維度集合。 如需詳細資訊,請參閱 Application Insights 中記錄型和預先匯總計量的自定義計量維度和預先匯總一節。
在瀏覽窗格中選取 [計量 ]。 [ 計量] 頁面提供下拉功能表和選項,以定義此程式中的圖表。 針對所有圖表,將計量命名空間設定為 azure.applicationinsights。
將 [計量] 設定為 [resilience4j_circuitbreaker_buffered_calls],然後將 [匯總] 設定為 [平均]。
將 [計量] 設定為 [resilience4j_circuitbreaker_calls],然後將 [匯總] 設定為 [平均]。
將 [計量] 設定為 [resilience4j_circuitbreaker_calls],然後將 [匯總] 設定為 [平均]。選取 [新增篩選],並將 [名稱] 設定為 [延遲]。
將 [計量] 設定為 [resilience4j_circuitbreaker_calls],然後將 [匯總] 設定為 [平均]。選取 [套用分割],並將 [分割依據] 設定為 [種類]。
將 [計量] 設定為 [resilience4j_circuitbreaker_calls],然後將 [匯總] 設定為 [平均]。選取 [新增計量],並將 [計量] 設定為 [resilience4j_circuitbreaker_buffered_calls],然後將 [匯總] 設定為 [平均]。再次選取 [新增計量],並將 [計量] 設定為 [resilience4j_circuitbreaker_slow_calls],然後將 [匯總] 設定為 [平均]。
在您的 Azure Spring Apps 實例中,選取 瀏覽窗格中的 Application Insights ,然後在頁面上選取預設 的 Application Insights 。
注意
如果沒有可用的預設 Application Insights,您可以啟用 Java In-Process 代理程式。 如需詳細資訊,請參閱在 Azure Spring Apps 中使用 Application Insights Java In-Process Agent 的 Azure 入口網站 一節來管理 Application Insights。
啟用 resilience4j 計量的維度集合。 如需詳細資訊,請參閱 Application Insights 中記錄型和預先匯總計量的自定義計量維度和預先匯總一節。
在瀏覽窗格中選取 [計量 ]。 [ 計量] 頁面提供下拉功能表和選項,以定義此程式中的圖表。 針對所有圖表,將計量命名空間設定為 azure.applicationinsights。
將 [計量] 設定為 [resilience4j_circuitbreaker_buffered_calls],然後將 [匯總] 設定為 [平均]。
將 [計量] 設定為 [resilience4j_circuitbreaker_calls],然後將 [匯總] 設定為 [平均]。
將 [計量] 設定為 [resilience4j_circuitbreaker_calls],然後將 [匯總] 設定為 [平均]。選取 [新增篩選],並將 [名稱] 設定為 [延遲]。
將 [計量] 設定為 [resilience4j_circuitbreaker_calls],然後將 [匯總] 設定為 [平均]。選取 [套用分割],並將 [分割依據] 設定為 [種類]。
將 [計量] 設定為 [resilience4j_circuitbreaker_calls],然後將 [匯總] 設定為 [平均]。選取 [新增計量],並將 [計量] 設定為 [resilience4j_circuitbreaker_buffered_calls],然後將 [匯總] 設定為 [平均]。再次選取 [新增計量],並將 [計量] 設定為 [resilience4j_circuitbreaker_slow_calls],然後將 [匯總] 設定為 [平均]。