diff options
| author | shizhendong <[email protected]> | 2023-11-01 15:33:42 +0800 |
|---|---|---|
| committer | shizhendong <[email protected]> | 2023-11-01 15:33:42 +0800 |
| commit | 6630031cd2aaab3f0c3101e36bef5348ac2eb3d1 (patch) | |
| tree | 11847606faff64c91a393fcd6b33810f801edf39 /src | |
| parent | 335f43e039deb0311ee1fa788a69450a30219c22 (diff) | |
fix: NEZ-3295 接收参数方式调整
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/net/geedge/controller/MetricController.java | 65 |
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; } |
