From 6f881b0cb63a30d37a72c5368e0981d3376c9d0d Mon Sep 17 00:00:00 2001 From: Haotian Zhang Date: Wed, 4 Jun 2025 14:30:44 +0800 Subject: [PATCH] feat:support stat reporting path aggregation. (#1602) --- CHANGELOG.md | 1 + .../caller/QuickstartCallerController.java | 11 +++++++++++ .../src/main/resources/application.yml | 2 ++ .../stat/config/PolarisStatProperties.java | 17 +++++++++++++++++ .../stat/config/StatConfigModifier.java | 1 + 5 files changed, 32 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 478a925df..b2a403006 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,3 +6,4 @@ - [feat:support dynamic multi-discovery.](https://github.com/Tencent/spring-cloud-tencent/pull/1591) - [feat:support ipv6.](https://github.com/Tencent/spring-cloud-tencent/pull/1592) - [feat:support config all recover enabled.](https://github.com/Tencent/spring-cloud-tencent/pull/1593) +- [feat:support stat reporting path aggregation.](https://github.com/Tencent/spring-cloud-tencent/pull/1602) diff --git a/spring-cloud-tencent-examples/quickstart-example/quickstart-caller-service/src/main/java/com/tencent/cloud/quickstart/caller/QuickstartCallerController.java b/spring-cloud-tencent-examples/quickstart-example/quickstart-caller-service/src/main/java/com/tencent/cloud/quickstart/caller/QuickstartCallerController.java index 3777856e6..c529f9c5e 100644 --- a/spring-cloud-tencent-examples/quickstart-example/quickstart-caller-service/src/main/java/com/tencent/cloud/quickstart/caller/QuickstartCallerController.java +++ b/spring-cloud-tencent-examples/quickstart-example/quickstart-caller-service/src/main/java/com/tencent/cloud/quickstart/caller/QuickstartCallerController.java @@ -35,6 +35,7 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -214,4 +215,14 @@ public class QuickstartCallerController { public String healthCheck() { return "ok"; } + + /** + * health check. + * @return health check info + */ + @GetMapping("/test/{num}") + public String test1(@PathVariable int num) { + String path = "http://QuickstartCalleeService/quickstart/callee/test/" + num + "/echo"; + return restTemplate.getForObject(path, String.class); + } } diff --git a/spring-cloud-tencent-examples/quickstart-example/quickstart-caller-service/src/main/resources/application.yml b/spring-cloud-tencent-examples/quickstart-example/quickstart-caller-service/src/main/resources/application.yml index 04223094c..232336099 100644 --- a/spring-cloud-tencent-examples/quickstart-example/quickstart-caller-service/src/main/resources/application.yml +++ b/spring-cloud-tencent-examples/quickstart-example/quickstart-caller-service/src/main/resources/application.yml @@ -28,6 +28,8 @@ spring: port: 28082 stat: enabled: true + path-regex-list: + - /quickstart/callee/test/(.+)/echo # pushgateway: # enabled: true # address: 127.0.0.1:9091 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 02a0c94d0..c9bea57de 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 @@ -17,6 +17,9 @@ package com.tencent.cloud.rpc.enhancement.stat.config; +import java.util.ArrayList; +import java.util.List; + import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -75,6 +78,11 @@ public class PolarisStatProperties { @Value("${spring.cloud.polaris.stat.pushgateway.open-gzip:#{false}}") private Boolean openGzip = false; + /** + * The path regex list for stat for aggregation. + */ + private List pathRegexList = new ArrayList<>(); + public boolean isEnabled() { return enabled; } @@ -139,6 +147,14 @@ public class PolarisStatProperties { this.openGzip = openGzip; } + public List getPathRegexList() { + return pathRegexList; + } + + public void setPathRegexList(List pathRegexList) { + this.pathRegexList = pathRegexList; + } + @Override public String toString() { return "PolarisStatProperties{" + @@ -150,6 +166,7 @@ public class PolarisStatProperties { ", statService='" + statService + '\'' + ", pushGatewayPushInterval=" + pushGatewayPushInterval + ", openGzip=" + openGzip + + ", pathRegexList=" + pathRegexList + '}'; } } diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/stat/config/StatConfigModifier.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/stat/config/StatConfigModifier.java index cd550142b..294293a58 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/stat/config/StatConfigModifier.java +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/stat/config/StatConfigModifier.java @@ -45,6 +45,7 @@ public class StatConfigModifier implements PolarisConfigModifier { StatReporterConfigImpl statReporterConfig = configuration.getGlobal().getStatReporter(); statReporterConfig.setEnable(polarisStatProperties.isEnabled()); PrometheusHandlerConfig prometheusHandlerConfig = statReporterConfig.getPluginConfig(DEFAULT_REPORTER_PROMETHEUS, PrometheusHandlerConfig.class); + prometheusHandlerConfig.setPathRegexList(polarisStatProperties.getPathRegexList()); // Set prometheus plugin. if (polarisStatProperties.isEnabled()) { if (polarisStatProperties.isPushGatewayEnabled()) {