通过 Micrometer 收集 Spring Cloud Resilience4J 断路器指标(预览版)
注意
基本、标准和企业计划将从 2025 年 3 月中旬开始弃用,停用期为 3 年。 建议转换到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告。
标准消耗和专用计划将于 2024 年 9 月 30 日开始弃用,并在六个月后完全关闭。 建议转换到 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
注意
包括 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”,然后将“聚合”设置为“平均值”。