summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorshizhendong <[email protected]>2023-11-01 15:33:42 +0800
committershizhendong <[email protected]>2023-11-01 15:33:42 +0800
commit6630031cd2aaab3f0c3101e36bef5348ac2eb3d1 (patch)
tree11847606faff64c91a393fcd6b33810f801edf39 /src
parent335f43e039deb0311ee1fa788a69450a30219c22 (diff)
fix: NEZ-3295 接收参数方式调整
Diffstat (limited to 'src')
-rw-r--r--src/main/java/net/geedge/controller/MetricController.java65
1 files changed, 41 insertions, 24 deletions
diff --git a/src/main/java/net/geedge/controller/MetricController.java b/src/main/java/net/geedge/controller/MetricController.java
index dfd1d0f..bc3bb1c 100644
--- a/src/main/java/net/geedge/controller/MetricController.java
+++ b/src/main/java/net/geedge/controller/MetricController.java
@@ -1,5 +1,6 @@
package net.geedge.controller;
+import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.net.url.UrlBuilder;
@@ -55,6 +56,8 @@ public class MetricController {
private static Map<String, JSONObject> METADATA_INFO;
+ private static String[] DEFAULT_EXCLUDE_LABELS;
+
private static String rootPath = Tool.WebPathUtil.getRootPath();
static {
@@ -63,18 +66,29 @@ public class MetricController {
String content = FileUtil.readString(file, Charset.forName("UTF-8"));
METADATA_INFO = JSONObject.parseObject(content, Map.class);
+
+ // NZ default_exclude_labels
+ DEFAULT_EXCLUDE_LABELS = new String[]{
+ "datacenter", "datacenter_id",
+ "project", "project_id",
+ "asset", "asset_id",
+ "module", "module_id",
+ "endpoint", "endpoint_id",
+ "parent_asset", "parent_asset_id",
+ "nz_agent_id"
+ };
}
@GetMapping(value = "/metrics", produces = "text/plain;charset=utf-8")
- public void metrics(
- @RequestParam(required = false, value = "key[]") String[] keys,
- @RequestParam(required = false, value = "query") String query,
- @RequestParam(required = false, value = "exclude-metrics") String excludeMetrics,
- @RequestParam(required = false, value = "exclude-labels") String excludeLabels,
- @RequestParam(required = false, value = "timeout", defaultValue = "5") Integer timeout,
- HttpServletResponse response
- ) {
- String urlStr = this.buildUrl(query, keys, timeout);
+ public void metrics(@RequestParam Map<String, String> params, HttpServletResponse response) {
+ // params
+ String query = MapUtil.getStr(params, "query");
+ String excludeMetrics = MapUtil.getStr(params, "exclude-metrics");
+ String excludeLabels = MapUtil.getStr(params, "exclude-labels");
+ String timeout = MapUtil.getStr(params, "timeout", "15");
+
+ Map<String, String> keyMap = MapUtil.removeAny(params, "query", "exclude-metrics", "exclude-labels", "timeout");
+ String urlStr = this.buildUrl(query, keyMap, timeout);
log.info("[metrics] [query url: {}]", urlStr);
ResponseEntity<String> exchange = null;
@@ -164,11 +178,11 @@ public class MetricController {
* build url
*
* @param query
- * @param keys
+ * @param keyMap
* @param timeout
* @return
*/
- private String buildUrl(String query, String[] keys, Integer timeout) {
+ private String buildUrl(String query, Map<String, String> keyMap, String timeout) {
UrlBuilder urlBuilder = UrlBuilder.create()
.setScheme("http").setHost(this.ip).setPort(this.port)
.setPath(UrlPath.of("/api/v1/query", Charset.forName("UTF-8")));
@@ -176,8 +190,10 @@ public class MetricController {
UrlQuery urlQuery = new UrlQuery();
if (StrUtil.isNotEmpty(query)) {
urlQuery.add("query", query);
- } else if (keys != null) {
- String queryStr = Stream.of(keys).collect(Collectors.joining(",", "{", "}"));
+ } else if (CollUtil.isNotEmpty(keyMap)) {
+ String queryStr = keyMap.entrySet().stream()
+ .map(e -> e.getKey() + "=" + "\"" + e.getValue() + "\"")
+ .collect(Collectors.joining(",", "{", "}"));
urlQuery.add("query", queryStr);
}
urlQuery.add("timeout", timeout + "s");
@@ -235,17 +251,18 @@ public class MetricController {
*/
private List<Object> filterExcludeLabel(List<Object> resultArray, String excludeLabels) {
// excludeLabels
- if (StrUtil.isNotEmpty(excludeLabels)) {
- String[] excludeLabelList = StrUtil.split(excludeLabels, ",");
-
- // filter
- resultArray.parallelStream().forEach(obj -> {
- JSONObject jsonObject = (JSONObject) obj;
- JSONObject metric = jsonObject.getJSONObject("metric");
- MapUtil.removeAny(metric, excludeLabelList);
- });
- }
-
+ String[] split = StrUtil.split(excludeLabels, ",");
+ String[] excludeLabelList = Stream.concat(Arrays.stream(split), Arrays.stream(DEFAULT_EXCLUDE_LABELS))
+ .distinct()
+ .filter(s -> StrUtil.isNotEmpty(s))
+ .toArray(String[]::new);
+
+ // filter
+ resultArray.parallelStream().forEach(obj -> {
+ JSONObject jsonObject = (JSONObject) obj;
+ JSONObject metric = jsonObject.getJSONObject("metric");
+ MapUtil.removeAny(metric, excludeLabelList);
+ });
return resultArray;
}