From 8e93b1264759561996b766dd9da76eb00eeeaf32 Mon Sep 17 00:00:00 2001 From: Fishtail <49390359+fuyuwei01@users.noreply.github.com> Date: Wed, 4 Jun 2025 15:53:45 +0800 Subject: [PATCH] feat:support stat reporting path aggregation. (#1607) Co-authored-by: Haotian Zhang --- CHANGELOG.md | 1 + .../caller/QuickstartCallerController.java | 11 +++++++++++ .../src/main/resources/bootstrap.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 739a8af4d..7e363131b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,3 +41,4 @@ - [feat:support dynamic multi-discovery.](https://github.com/Tencent/spring-cloud-tencent/pull/1594) - [feat:support ipv6.](https://github.com/Tencent/spring-cloud-tencent/pull/1600) - [feat:support config all recover enabled.](https://github.com/Tencent/spring-cloud-tencent/pull/1603) +- [feat:support stat reporting path aggregation.](https://github.com/Tencent/spring-cloud-tencent/pull/1607) 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/bootstrap.yml b/spring-cloud-tencent-examples/quickstart-example/quickstart-caller-service/src/main/resources/bootstrap.yml index 9b64718bd..34789d969 100644 --- a/spring-cloud-tencent-examples/quickstart-example/quickstart-caller-service/src/main/resources/bootstrap.yml +++ b/spring-cloud-tencent-examples/quickstart-example/quickstart-caller-service/src/main/resources/bootstrap.yml @@ -26,6 +26,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()) {