你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
通过 Micrometer 收集 Spring Cloud Resilience4J 断路器指标(预览版)
注意
从 2025 年 3 月中旬开始,基本、标准和企业计划将弃用,停用期为三年。 建议过渡到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告。
从 2024 年 9 月 30 日开始,标准消耗和专用计划将弃用,六个月后将完全关闭。 建议过渡到 Azure 容器应用。 有关详细信息,请参阅将 Azure Spring Apps 标准消耗和专用计划迁移到 Azure 容器应用。
本文适用于:✔️ 基本版/标准版 ✔️ 企业版
本文介绍如何通过 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 是作为在你包括 Spring Cloud 断路器入门版时自动创建的bean
实现的。 有关详细信息,请参阅 Spring Cloud 断路器。以下 2 个依赖项与 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 进程内代理。 有关详细信息,请参阅在 Azure Spring Apps 中使用 Application Insights Java 进程内代理的使用 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 进程内代理。 有关详细信息,请参阅在 Azure Spring Apps 中使用 Application Insights Java 进程内代理的使用 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”,然后将“聚合”设置为“平均值”。