From 1d26fe6dfad1efb4899d030812c814fd6c52e189 Mon Sep 17 00:00:00 2001 From: Haotian Zhang Date: Wed, 26 Feb 2025 19:00:50 +0800 Subject: [PATCH] feat:support circuit breaker metrics reporting. --- CHANGELOG.md | 1 + .../cloud/polaris/circuitbreaker/PolarisCircuitBreaker.java | 6 +++++- .../circuitbreaker/reporter/CircuitBreakerPlugin.java | 1 + .../rpc/enhancement/stat/config/PolarisStatProperties.java | 6 +++--- .../META-INF/additional-spring-configuration-metadata.json | 4 ++-- 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d60f2ae39..ed1083fd80 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,3 +3,4 @@ - [feat: implement circuit breaker in enhance plugin, support listen config group, support refresh single config in refresh_context mode.](https://github.com/Tencent/spring-cloud-tencent/pull/1566) - [feat:support polaris event.](https://github.com/Tencent/spring-cloud-tencent/pull/1571) +- [feat:support circuit breaker metrics reporting.](https://github.com/Tencent/spring-cloud-tencent/pull/1572) diff --git a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/PolarisCircuitBreaker.java b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/PolarisCircuitBreaker.java index 1f562f42a5..8830dcc7e3 100644 --- a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/PolarisCircuitBreaker.java +++ b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/PolarisCircuitBreaker.java @@ -75,7 +75,7 @@ public T run(Supplier toRun, Function fallback) { } catch (CallAbortedException e) { LOGGER.debug("PolarisCircuitBreaker CallAbortedException: {}", e.getMessage()); - PolarisCircuitBreakerUtils.reportStatus(consumerAPI, conf, e); + reportStatus(e); return fallback.apply(e); } catch (Exception e) { @@ -97,4 +97,8 @@ public void onSuccess(InvokeContext.ResponseContext responseContext) { public void onError(InvokeContext.ResponseContext responseContext) { invokeHandler.onError(responseContext); } + + public void reportStatus(CallAbortedException e) { + PolarisCircuitBreakerUtils.reportStatus(consumerAPI, conf, e); + } } diff --git a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/reporter/CircuitBreakerPlugin.java b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/reporter/CircuitBreakerPlugin.java index 23588515fd..b33295b68b 100644 --- a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/reporter/CircuitBreakerPlugin.java +++ b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/reporter/CircuitBreakerPlugin.java @@ -86,6 +86,7 @@ public void run(EnhancedPluginContext context) throws Throwable { } catch (CallAbortedException e) { LOG.debug("[CircuitBreakerPlugin] request is aborted. request service url=[{}]", request.getServiceUrl()); + polarisCircuitBreaker.reportStatus(e); if (e.getFallbackInfo() != null) { Object fallbackResponse = new PolarisCircuitBreakerHttpResponse(e.getFallbackInfo()); putMetadataObjectValue(ContextConstant.CircuitBreaker.CIRCUIT_BREAKER_FALLBACK_HTTP_RESPONSE, fallbackResponse); diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/stat/config/PolarisStatProperties.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/stat/config/PolarisStatProperties.java index 0477a259b9..d871b0d7f2 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/stat/config/PolarisStatProperties.java +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/stat/config/PolarisStatProperties.java @@ -52,10 +52,10 @@ public class PolarisStatProperties { /** * Push metrics interval. - * unit: milliseconds default 30s. + * unit: milliseconds default 60s. */ - @Value("${spring.cloud.polaris.stat.pushgateway.push-interval:#{30000}}") - private Long pushGatewayPushInterval = 30 * 1000L; + @Value("${spring.cloud.polaris.stat.pushgateway.push-interval:#{60000}}") + private Long pushGatewayPushInterval = 60 * 1000L; /** * If push gateway gzip open. default false. diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-cloud-tencent-rpc-enhancement/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 7c6745ba81..da7f0e8f61 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-cloud-tencent-rpc-enhancement/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -69,9 +69,9 @@ { "name": "spring.cloud.polaris.stat.pushgateway.push-interval", "type": "java.lang.Long", - "description": "Push metrics interval. unit: milliseconds default 30s.", + "description": "Push metrics interval. unit: milliseconds default 60000ms.", "sourceType": "com.tencent.cloud.rpc.enhancement.stat.config.PolarisStatProperties", - "defaultValue": 30000 + "defaultValue": 60000 }, { "name": "spring.cloud.polaris.stat.pushgateway.open-gzip",