From 8e9b04acab171aaaa2a21ec3cee43e3b4ef2bd33 Mon Sep 17 00:00:00 2001 From: lanyuanxiaoyao Date: Mon, 29 May 2023 15:09:22 +0800 Subject: [PATCH] =?UTF-8?q?refactor(web):=20=E4=BC=98=E5=8C=96=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=9F=A5=E7=9C=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/loki/LokiQueryApplication.java | 4 +- .../loki/service/LokiQueryService.java | 4 +- .../service/web/controller/LogController.java | 27 +++++++++--- .../resources/static/components/common.js | 42 +++++++++++++++++++ 4 files changed, 67 insertions(+), 10 deletions(-) diff --git a/service-loki-query/src/main/java/com/lanyuanxiaoyao/service/loki/LokiQueryApplication.java b/service-loki-query/src/main/java/com/lanyuanxiaoyao/service/loki/LokiQueryApplication.java index 79aef6c..91992c1 100644 --- a/service-loki-query/src/main/java/com/lanyuanxiaoyao/service/loki/LokiQueryApplication.java +++ b/service-loki-query/src/main/java/com/lanyuanxiaoyao/service/loki/LokiQueryApplication.java @@ -48,7 +48,7 @@ public class LokiQueryApplication { private final LokiQueryService lokiQueryService; @GetMapping("query_range") - public ImmutableList queryRange(@RequestParam Map queryMap) throws Exception { - return lokiQueryService.queryRange(Maps.immutable.ofAll(queryMap)); + public ImmutableList queryRange(@RequestParam Map queryMap, @RequestParam(value = "limit", defaultValue = "200") Integer limit) throws Exception { + return lokiQueryService.queryRange(Maps.immutable.ofAll(queryMap), limit); } } diff --git a/service-loki-query/src/main/java/com/lanyuanxiaoyao/service/loki/service/LokiQueryService.java b/service-loki-query/src/main/java/com/lanyuanxiaoyao/service/loki/service/LokiQueryService.java index 3b0d6f8..cc7a109 100644 --- a/service-loki-query/src/main/java/com/lanyuanxiaoyao/service/loki/service/LokiQueryService.java +++ b/service-loki-query/src/main/java/com/lanyuanxiaoyao/service/loki/service/LokiQueryService.java @@ -47,9 +47,9 @@ public class LokiQueryService { } @Retryable(Throwable.class) - public ImmutableList queryRange(ImmutableMap queryMap) throws Exception { + public ImmutableList queryRange(ImmutableMap queryMap, Integer limit) throws Exception { String query = URLUtil.encodeQuery(buildLokiQuery(queryMap)); - String queryUrl = StrUtil.format("{}/loki/api/v1/query_range?query={}&limit=200", lokiConfiguration.getHost(), query); + String queryUrl = StrUtil.format("{}/loki/api/v1/query_range?query={}&limit={}", lokiConfiguration.getHost(), query, limit); HttpResponse response = HttpUtil.createGet(queryUrl).execute(); if (response.isOk()) { LokiQueryRangeResponse queryRangeResponse = mapper.readValue(response.body(), LokiQueryRangeResponse.class); diff --git a/service-web/src/main/java/com/lanyuanxiaoyao/service/web/controller/LogController.java b/service-web/src/main/java/com/lanyuanxiaoyao/service/web/controller/LogController.java index 7caf8d9..4efebca 100644 --- a/service-web/src/main/java/com/lanyuanxiaoyao/service/web/controller/LogController.java +++ b/service-web/src/main/java/com/lanyuanxiaoyao/service/web/controller/LogController.java @@ -29,17 +29,22 @@ public class LogController extends BaseController { this.lokiService = lokiService; } + private String preHandle(String line) { + return line + .replaceAll("\\n$", "") + .replaceAll("^\\s*(.+?)\\s*#@# :\\s*(.+?)\\s*$", "$1: $2"); + } + @GetMapping("query_sync_log") public AmisResponse querySyncLog(@RequestParam("flink_job_id") Long flinkJobId) { return responseDetail(lokiService.queryRange(MapUtil.builder() .put("app", "hudi-sync") .put("run_type", "sync") .put("flink_job_id", flinkJobId.toString()) + .put("limit", "1000") .build()) .collect(LokiLogLine::getData) - .collect(line -> line.replaceAll(":\\n", "")) - .collect(line -> line.replaceAll("\\n$", "")) - .collect(line -> line.replaceAll("^\\s*(.+)\\s*#@#\\s*(.+)\\s*$", "$1: $2")) + .collect(this::preHandle) .makeString("\n")); } @@ -50,11 +55,21 @@ public class LogController extends BaseController { .put("run_type", "compaction") .put("flink_job_id", flinkJobId.toString()) .put("alias", alias) + .put("limit", "1000") .build()) .collect(LokiLogLine::getData) - .collect(line -> line.replaceAll(":\\n", "")) - .collect(line -> line.replaceAll("\\n$", "")) - .collect(line -> line.replaceAll("^\\s*(.+?)\\s*#@#\\s*(.+?)\\s*$", "$1: $2")) + .collect(this::preHandle) + .makeString("\n")); + } + + @GetMapping("query_application_log") + public AmisResponse queryApplicationLog(@RequestParam("application_id") String applicationId) { + return responseDetail(lokiService.queryRange(MapUtil.builder() + .put("app", "hudi-sync") + .put("app_id", applicationId) + .build()) + .collect(LokiLogLine::getData) + .collect(this::preHandle) .makeString("\n")); } } diff --git a/service-web/src/main/resources/static/components/common.js b/service-web/src/main/resources/static/components/common.js index fd4c784..9b6621b 100644 --- a/service-web/src/main/resources/static/components/common.js +++ b/service-web/src/main/resources/static/components/common.js @@ -6,6 +6,44 @@ function timeAndFrom(field, fromNow, emptyText = '未停止', showSource = true) return tpl } +function applicationLogDialog() { + return { + type: 'action', + level: 'link', + actionType: 'dialog', + dialog: { + title: '应用日志', + size: 'xl', + actions: [], + body: [ + { + type: 'service', + api: { + method: 'GET', + url: '${base}/log/query_application_log', + data: { + application_id: '${id}', + } + }, + body: [ + { + disabled: true, + type: 'editor', + name: 'detail', + label: '应用日志', + size: 'xxl', + placeholder: '没有内容', + options: { + wordWrap: 'on', + } + } + ] + }, + ] + } + } +} + function yarnCrudColumns() { return [ { @@ -163,6 +201,10 @@ function yarnCrudColumns() { actionType: 'url', url: '${trackingUrl}', blank: true, + }, + { + label: '日志', + ...applicationLogDialog(), } ] }