From b295f81e015ffd31904bff2d6bec572b6121898e Mon Sep 17 00:00:00 2001 From: tjq Date: Mon, 11 May 2020 17:34:42 +0800 Subject: [PATCH] [dev] add instanceLog Cleaner --- .gitignore | 1 + .../oms/server/akka/actors/ServerActor.java | 2 +- .../service/instance/InstanceManager.java | 2 +- .../service/log/InstanceLogCleanService.java | 109 ++++++++++++++++++ .../service/{ => log}/InstanceLogService.java | 29 +++-- .../web/controller/InstanceController.java | 7 +- .../resources/application-daily.properties | 6 +- .../main/resources/application-pre.properties | 6 +- .../resources/application-product.properties | 6 +- .../src/main/resources/application.properties | 1 + ...228328.css => chunk-4947264f.596fc436.css} | 2 +- .../src/main/resources/static/index.html | 2 +- .../js/{app.65e5a27b.js => app.1ed552fe.js} | 4 +- ...pp.65e5a27b.js.map => app.1ed552fe.js.map} | 2 +- .../static/js/chunk-29e8f75a.a9aa0f8f.js | 2 - .../static/js/chunk-29e8f75a.a9aa0f8f.js.map | 1 - .../static/js/chunk-2d0c76e2.50e949d3.js.map | 1 - ...50e949d3.js => chunk-2d0c76e2.d0248019.js} | 4 +- .../static/js/chunk-2d0c76e2.d0248019.js.map | 1 + .../static/js/chunk-4947264f.10340ff7.js | 2 + .../static/js/chunk-4947264f.10340ff7.js.map | 1 + .../kfcfans/oms/server/test/OmsLogTest.java | 58 ++++++++++ .../oms/server/test/RepositoryTest.java | 2 + .../kfcfans/oms/server/test/ServiceTest.java | 2 + .../oms/server/OhMySchedulerConfig.java | 3 +- .../processors/MapReduceProcessorDemo.java | 14 ++- .../oms/worker/actors/TaskTrackerActor.java | 2 +- .../oms/worker/background/OmsLogHandler.java | 6 +- .../core/executor/ProcessorRunnable.java | 3 +- .../tracker/processor/ProcessorTracker.java | 5 +- .../worker/persistence/ConnectionFactory.java | 1 - 31 files changed, 242 insertions(+), 45 deletions(-) create mode 100644 oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/service/log/InstanceLogCleanService.java rename oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/service/{ => log}/InstanceLogService.java (94%) rename oh-my-scheduler-server/src/main/resources/static/css/{chunk-29e8f75a.57228328.css => chunk-4947264f.596fc436.css} (81%) rename oh-my-scheduler-server/src/main/resources/static/js/{app.65e5a27b.js => app.1ed552fe.js} (94%) rename oh-my-scheduler-server/src/main/resources/static/js/{app.65e5a27b.js.map => app.1ed552fe.js.map} (98%) delete mode 100644 oh-my-scheduler-server/src/main/resources/static/js/chunk-29e8f75a.a9aa0f8f.js delete mode 100644 oh-my-scheduler-server/src/main/resources/static/js/chunk-29e8f75a.a9aa0f8f.js.map delete mode 100644 oh-my-scheduler-server/src/main/resources/static/js/chunk-2d0c76e2.50e949d3.js.map rename oh-my-scheduler-server/src/main/resources/static/js/{chunk-2d0c76e2.50e949d3.js => chunk-2d0c76e2.d0248019.js} (61%) create mode 100644 oh-my-scheduler-server/src/main/resources/static/js/chunk-2d0c76e2.d0248019.js.map create mode 100644 oh-my-scheduler-server/src/main/resources/static/js/chunk-4947264f.10340ff7.js create mode 100644 oh-my-scheduler-server/src/main/resources/static/js/chunk-4947264f.10340ff7.js.map create mode 100644 oh-my-scheduler-server/src/test/java/com/github/kfcfans/oms/server/test/OmsLogTest.java diff --git a/.gitignore b/.gitignore index 5a7e1cf9..15e8d172 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,4 @@ build/ *.jar *.log */.DS_Store +.DS_Store diff --git a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/akka/actors/ServerActor.java b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/akka/actors/ServerActor.java index 30ac4662..fb6ffca9 100644 --- a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/akka/actors/ServerActor.java +++ b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/akka/actors/ServerActor.java @@ -7,7 +7,7 @@ import com.github.kfcfans.oms.common.request.WorkerHeartbeat; import com.github.kfcfans.oms.common.request.WorkerLogReportReq; import com.github.kfcfans.oms.common.response.AskResponse; import com.github.kfcfans.oms.server.common.utils.SpringUtils; -import com.github.kfcfans.oms.server.service.InstanceLogService; +import com.github.kfcfans.oms.server.service.log.InstanceLogService; import com.github.kfcfans.oms.server.service.instance.InstanceManager; import com.github.kfcfans.oms.server.service.ha.WorkerManagerService; import lombok.extern.slf4j.Slf4j; diff --git a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/service/instance/InstanceManager.java b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/service/instance/InstanceManager.java index 28bc948c..9ae0cedd 100644 --- a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/service/instance/InstanceManager.java +++ b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/service/instance/InstanceManager.java @@ -11,7 +11,7 @@ import com.github.kfcfans.oms.server.persistence.core.repository.InstanceInfoRep import com.github.kfcfans.oms.server.persistence.core.repository.JobInfoRepository; import com.github.kfcfans.oms.server.persistence.core.repository.UserInfoRepository; import com.github.kfcfans.oms.server.service.DispatchService; -import com.github.kfcfans.oms.server.service.InstanceLogService; +import com.github.kfcfans.oms.server.service.log.InstanceLogService; import com.github.kfcfans.oms.server.service.alarm.AlarmContent; import com.github.kfcfans.oms.server.service.alarm.Alarmable; import com.github.kfcfans.oms.server.service.timing.schedule.HashedWheelTimerHolder; diff --git a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/service/log/InstanceLogCleanService.java b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/service/log/InstanceLogCleanService.java new file mode 100644 index 00000000..bdee31b0 --- /dev/null +++ b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/service/log/InstanceLogCleanService.java @@ -0,0 +1,109 @@ +package com.github.kfcfans.oms.server.service.log; + +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Stopwatch; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.time.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.mongodb.gridfs.GridFsTemplate; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; + +import java.io.File; +import java.util.Date; + +/** + * 定时清理任务实例运行日志,包括本地和MongoDB + * + * @author tjq + * @since 2020/5/11 + */ +@Slf4j +@Service +public class InstanceLogCleanService { + + @Value("${oms.log.retention.local}") + private int localRetentionDay; + @Value("${oms.log.retention.remote}") + private int remoteRetentionDay; + + // 直接操作 mongoDB 文件系统 + private GridFsTemplate gridFsTemplate; + // 每天凌晨3点定时清理 + private static final String CLEAN_TIME_EXPRESSION = "0 0 3 * * ?"; + + @Async("omsTimingPool") + @Scheduled(cron = CLEAN_TIME_EXPRESSION) + public void timingClean() { + cleanRemote(); + cleanLocal(); + } + + @VisibleForTesting + public void cleanLocal() { + + if (localRetentionDay < 0) { + log.info("[InstanceLogCleanService] won't clean up local logs because of localRetentionDay <= 0."); + return; + } + + Stopwatch stopwatch = Stopwatch.createStarted(); + String path = InstanceLogService.genLogDirPath(); + File dir = new File(path); + if (!dir.exists()) { + return; + } + File[] logFiles = dir.listFiles(); + if (logFiles == null || logFiles.length == 0) { + return; + } + + // 计算最大偏移量 + long maxOffset = localRetentionDay * 24 * 60 * 60 * 1000; + + for (File f : logFiles) { + long offset = System.currentTimeMillis() - f.lastModified(); + if (offset >= maxOffset) { + if (!f.delete()) { + log.warn("[InstanceLogCleanService] delete local log({}) failed.", f.getName()); + }else { + log.info("[InstanceLogCleanService] delete local log({}) successfully.", f.getName()); + } + } + } + log.info("[InstanceLogCleanService] clean local instance log file successfully, using {}.", stopwatch.stop()); + } + + @VisibleForTesting + public void cleanRemote() { + + if (remoteRetentionDay < 0) { + log.info("[InstanceLogCleanService] won't clean up remote logs because of remoteRetentionDay <= 0."); + return; + } + if (gridFsTemplate == null) { + return; + } + + Stopwatch stopwatch = Stopwatch.createStarted(); + try { + // 计算时间 + Date date = DateUtils.addDays(new Date(), -remoteRetentionDay); + Query mongoQuery = Query.query(Criteria.where("uploadDate").lt(date)); + gridFsTemplate.delete(mongoQuery); + }catch (Exception e) { + log.warn("[InstanceLogCleanService] clean remote log failed.", e); + } + log.info("[InstanceLogCleanService] clean remote instance log file finished, using {}.", stopwatch.stop()); + } + + @Autowired(required = false) + public void setGridFsTemplate(GridFsTemplate gridFsTemplate) { + this.gridFsTemplate = gridFsTemplate; + } + +} diff --git a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/service/InstanceLogService.java b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/service/log/InstanceLogService.java similarity index 94% rename from oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/service/InstanceLogService.java rename to oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/service/log/InstanceLogService.java index d97e0cd0..d812b8af 100644 --- a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/service/InstanceLogService.java +++ b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/service/log/InstanceLogService.java @@ -1,4 +1,4 @@ -package com.github.kfcfans.oms.server.service; +package com.github.kfcfans.oms.server.service.log; import com.github.kfcfans.oms.common.TimeExpressionType; import com.github.kfcfans.oms.common.model.InstanceLogContent; @@ -216,6 +216,13 @@ public class InstanceLogService { if (f.exists() && (System.currentTimeMillis() - f.lastModified()) < EXPIRE_INTERVAL_MS) { return f; } + + // 创建父文件夹(文件在开流时自动会被创建) + if (!f.getParentFile().exists()) { + if (!f.getParentFile().mkdirs()) { + throw new RuntimeException("create dir failed"); + } + } // 重新构建文件 try (Stream allLogStream = localInstanceLogRepository.findByInstanceIdOrderByLogTime(instanceId)) { stream2File(allLogStream, f); @@ -234,6 +241,13 @@ public class InstanceLogService { return f; } + // 创建父文件夹(文件在开流时自动会被创建) + if (!f.getParentFile().exists()) { + if (!f.getParentFile().mkdirs()) { + throw new RuntimeException("create dir failed"); + } + } + // 本地存在数据,从本地持久化(对应 SYNC 的情况) if (instanceId2LastReportTime.containsKey(instanceId)) { try (Stream allLogStream = localInstanceLogRepository.findByInstanceIdOrderByLogTime(instanceId)) { @@ -266,12 +280,6 @@ public class InstanceLogService { * @param logFile 目标日志文件 */ private void stream2File(Stream stream, File logFile) { - if (!logFile.getParentFile().exists()) { - if (!logFile.getParentFile().mkdirs()) { - log.warn("[InstanceLogService] create dir for instanceLog failed, path is {}.", logFile.getPath()); - return; - } - } try (FileWriter fw = new FileWriter(logFile); BufferedWriter bfw = new BufferedWriter(fw)) { stream.forEach(instanceLog -> { try { @@ -354,12 +362,15 @@ public class InstanceLogService { // 2. 删除长时间未 REPORT 的日志 } + public static String genLogDirPath() { + return USER_HOME + "/oms-server/online_log/"; + } private static String genLogFilePath(long instanceId, boolean stable) { if (stable) { - return USER_HOME + "/oms-server/online_log/" + String.format("%d-stable.log", instanceId); + return genLogDirPath() + String.format("%d-stable.log", instanceId); }else { - return USER_HOME + "/oms-server/online_log/" + String.format("%d-temporary.log", instanceId); + return genLogDirPath() + String.format("%d-temporary.log", instanceId); } } private static String genMongoFileName(long instanceId) { diff --git a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/web/controller/InstanceController.java b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/web/controller/InstanceController.java index a9dfb18e..0fca009f 100644 --- a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/web/controller/InstanceController.java +++ b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/web/controller/InstanceController.java @@ -11,27 +11,22 @@ import com.github.kfcfans.oms.server.persistence.core.model.InstanceInfoDO; import com.github.kfcfans.oms.server.persistence.core.repository.AppInfoRepository; import com.github.kfcfans.oms.server.persistence.core.repository.InstanceInfoRepository; import com.github.kfcfans.oms.server.service.CacheService; -import com.github.kfcfans.oms.server.service.InstanceLogService; +import com.github.kfcfans.oms.server.service.log.InstanceLogService; import com.github.kfcfans.oms.server.service.instance.InstanceService; import com.github.kfcfans.oms.server.web.request.QueryInstanceRequest; import com.github.kfcfans.oms.server.web.response.InstanceLogVO; import org.apache.commons.lang3.time.DateFormatUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; -import org.springframework.core.io.InputStreamResource; -import org.springframework.core.io.UrlResource; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; diff --git a/oh-my-scheduler-server/src/main/resources/application-daily.properties b/oh-my-scheduler-server/src/main/resources/application-daily.properties index 63552c0f..c96fcbd5 100644 --- a/oh-my-scheduler-server/src/main/resources/application-daily.properties +++ b/oh-my-scheduler-server/src/main/resources/application-daily.properties @@ -18,4 +18,8 @@ spring.mail.username=zqq spring.mail.password=qqz spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true -spring.mail.properties.mail.smtp.starttls.required=true \ No newline at end of file +spring.mail.properties.mail.smtp.starttls.required=true + +####### 日志保留天数,单位天 ####### +oms.log.retention.local=0 +oms.log.retention.remote=0 \ No newline at end of file diff --git a/oh-my-scheduler-server/src/main/resources/application-pre.properties b/oh-my-scheduler-server/src/main/resources/application-pre.properties index 5b41b7b3..2c6656ef 100644 --- a/oh-my-scheduler-server/src/main/resources/application-pre.properties +++ b/oh-my-scheduler-server/src/main/resources/application-pre.properties @@ -18,4 +18,8 @@ spring.mail.username=zqq spring.mail.password=qqz spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true -spring.mail.properties.mail.smtp.starttls.required=true \ No newline at end of file +spring.mail.properties.mail.smtp.starttls.required=true + +####### 日志保留天数,单位天 ####### +oms.log.retention.local=3 +oms.log.retention.remote=3 \ No newline at end of file diff --git a/oh-my-scheduler-server/src/main/resources/application-product.properties b/oh-my-scheduler-server/src/main/resources/application-product.properties index a01f03ae..aff70523 100644 --- a/oh-my-scheduler-server/src/main/resources/application-product.properties +++ b/oh-my-scheduler-server/src/main/resources/application-product.properties @@ -18,4 +18,8 @@ spring.mail.username=zqq spring.mail.password=qqz spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true -spring.mail.properties.mail.smtp.starttls.required=true \ No newline at end of file +spring.mail.properties.mail.smtp.starttls.required=true + +####### 日志保留天数,单位天 ####### +oms.log.retention.local=3 +oms.log.retention.remote=3 \ No newline at end of file diff --git a/oh-my-scheduler-server/src/main/resources/application.properties b/oh-my-scheduler-server/src/main/resources/application.properties index 8ef156ae..23dfa4f3 100644 --- a/oh-my-scheduler-server/src/main/resources/application.properties +++ b/oh-my-scheduler-server/src/main/resources/application.properties @@ -1,5 +1,6 @@ server.port=7700 +spring.profiles.active=daily spring.jpa.open-in-view=false spring.data.mongodb.repositories.type=none diff --git a/oh-my-scheduler-server/src/main/resources/static/css/chunk-29e8f75a.57228328.css b/oh-my-scheduler-server/src/main/resources/static/css/chunk-4947264f.596fc436.css similarity index 81% rename from oh-my-scheduler-server/src/main/resources/static/css/chunk-29e8f75a.57228328.css rename to oh-my-scheduler-server/src/main/resources/static/css/chunk-4947264f.596fc436.css index bdbc0f77..59a66e1e 100644 --- a/oh-my-scheduler-server/src/main/resources/static/css/chunk-29e8f75a.57228328.css +++ b/oh-my-scheduler-server/src/main/resources/static/css/chunk-4947264f.596fc436.css @@ -1 +1 @@ -.wrap[data-v-9781a346]{background:#fff;display:flex;text-align:center;justify-content:space-around;align-items:center;margin:10px;box-shadow:0 2px 12px 0 rgba(0,0,0,.2);font-size:1.5rem;font-weight:bolder;height:131px}.el-table .warning-row{background:#fdf5e6}.el-table .success-row{background:#8fbc8f}.el-table .error-row{background:#ff5831} \ No newline at end of file +.wrap[data-v-bbc92dba]{background:#fff;display:flex;text-align:center;justify-content:space-around;align-items:center;margin:10px;box-shadow:0 2px 12px 0 rgba(0,0,0,.2);font-size:1.5rem;font-weight:bolder;height:131px}.el-table .warning-row{background:#fdf5e6}.el-table .success-row{background:#8fbc8f}.el-table .error-row{background:#ff5831} \ No newline at end of file diff --git a/oh-my-scheduler-server/src/main/resources/static/index.html b/oh-my-scheduler-server/src/main/resources/static/index.html index 7789eaa1..c825b412 100644 --- a/oh-my-scheduler-server/src/main/resources/static/index.html +++ b/oh-my-scheduler-server/src/main/resources/static/index.html @@ -1 +1 @@ -oms-console
\ No newline at end of file +oms-console
\ No newline at end of file diff --git a/oh-my-scheduler-server/src/main/resources/static/js/app.65e5a27b.js b/oh-my-scheduler-server/src/main/resources/static/js/app.1ed552fe.js similarity index 94% rename from oh-my-scheduler-server/src/main/resources/static/js/app.65e5a27b.js rename to oh-my-scheduler-server/src/main/resources/static/js/app.1ed552fe.js index 51fabaa7..3bfaafb3 100644 --- a/oh-my-scheduler-server/src/main/resources/static/js/app.65e5a27b.js +++ b/oh-my-scheduler-server/src/main/resources/static/js/app.1ed552fe.js @@ -1,2 +1,2 @@ -(function(e){function t(t){for(var r,a,i=t[0],c=t[1],s=t[2],l=0,f=[];l\n
\n
\n

OhMyScheduler

\n
\n\n
\n
\n
\n\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Navbar.vue?vue&type=template&id=90a84a42&scoped=true&\"\nimport script from \"./Navbar.vue?vue&type=script&lang=js&\"\nexport * from \"./Navbar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Navbar.vue?vue&type=style&index=0&id=90a84a42&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"90a84a42\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=c8951c4e&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport Element from 'element-ui'\nimport '../element-variables.scss'\n\nVue.use(Element)\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"console\"}},[_c('navbar'),_c('sidebar')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Console.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Console.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Console.vue?vue&type=template&id=a40f99c2&scoped=true&\"\nimport script from \"./Console.vue?vue&type=script&lang=js&\"\nexport * from \"./Console.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Console.vue?vue&type=style&index=0&id=a40f99c2&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a40f99c2\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport Console from \"./components/Console\";\n\nVue.use(VueRouter);\n\nconst router = new VueRouter({\n routes: [\n { path: \"/\", redirect: '/welcome' },\n { path: \"/welcome\", component: () => import('./components/Welcome') },\n {\n path: \"/oms\", component: Console, redirect: \"/oms/home\", children: [\n // 二级路由\n { path: \"/oms/home\", meta: { title: '主页' }, component: () => import('./components/views/Home') },\n { path: \"/oms/job\", meta: { title: '任务管理' }, component: () => import('./components/views/JobManager') },\n { path: \"/oms/instance\", meta: { title: '实例管理' }, component: () => import('./components/views/InstanceManager') },\n ]\n },\n // 调试用\n { path: \"/sidebar\", component: () => import('./components/bar/Sidebar') },\n { path: \"/navbar\", component: () => import('./components/bar/Navbar') },\n ]\n});\n\n// 默认导出,供 main.js 引入,作为项目的路由器\nexport default router;\n","import Vue from \"vue\"\nimport Vuex from \"vuex\"\n\nVue.use(Vuex);\n\nconst store = new Vuex.Store({\n state: {\n // 包含两个属性:id和appName\n appInfo: {}\n },\n // 推荐使用 mutations 改变 store中的值,调用方法:this.$store.commit('initAppInfo', xxx)\n mutations: {\n initAppInfo(state, appInfo) {\n state.appInfo = appInfo;\n }\n }\n});\n\nexport default store;\n","let timestamp2Str = ts => {\n if (ts < 10000) {\n return \"N/A\";\n }\n try {\n let date = new Date(ts);\n let Y = date.getFullYear() + '-';\n let M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';\n let D = date.getDate() + ' ';\n let h = date.getHours() + ':';\n let m = date.getMinutes() + ':';\n let s = date.getSeconds();\n return Y+M+D+h+m+s;\n }catch (e) {\n return \"N/A\";\n }\n};\n\nexport default {\n timestamp2Str\n}\n","import Vue from 'vue'\nimport App from './App.vue'\nimport ElementUI from 'element-ui'\nimport { Message } from 'element-ui';\nimport './styles.scss'\nimport './plugins/element.js'\n\nimport axios from 'axios'\nimport router from \"./router\";\nimport store from \"./stroe\";\nimport common from \"./common\";\n// import VueCookies from 'vue-cookies';\n\nVue.use(ElementUI);\n// Vue.use(VueCookies);\n\nVue.prototype.common = common;\n/* ******* axios config ******* */\nVue.prototype.axios = axios;\naxios.defaults.baseURL = \"http://localhost:7700\";\naxios.defaults.timeout = 5000;\n\nVue.config.productionTip = false;\n\nnew Vue({\n router,\n store,\n render: h => h(App),\n}).$mount('#app');\n\n// 请求返回拦截,封装公共处理逻辑\naxios.interceptors.response.use((response) => {\n if (response.data.success === true) {\n return response.data.data;\n }\n Message.warning(\"错误信息:\" + response.data.message);\n return Promise.reject(response.data.msg);\n}, (error) => {\n Message.error(error.toString());\n return Promise.reject(error);\n});\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sidebar.vue?vue&type=style&index=0&id=90245f58&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sidebar.vue?vue&type=style&index=0&id=90245f58&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"sidebar\"}},[_c('el-container',{staticStyle:{\"width\":\"200px\"}},[_c('el-aside',{attrs:{\"width\":\"200px\"}},[_c('el-menu',{attrs:{\"router\":true,\"default-active\":_vm.default_active_index}},[_c('el-menu-item',{attrs:{\"index\":\"/oms/home\"}},[_c('template',{slot:\"title\"},[_c('i',{staticClass:\"el-icon-monitor\"}),_c('span',[_vm._v(\"系统首页\")])])],2),_c('el-menu-item',{attrs:{\"index\":\"/oms/job\"}},[_c('template',{slot:\"title\"},[_c('i',{staticClass:\"el-icon-data-analysis\"}),_c('span',[_vm._v(\"任务管理\")])])],2),_c('el-menu-item',{attrs:{\"index\":\"/oms/instance\"}},[_c('template',{slot:\"title\"},[_c('i',{staticClass:\"el-icon-s-data\"}),_c('span',[_vm._v(\"运行状态\")])])],2)],1)],1)],1),_c('div',{staticClass:\"wrap\"},[_c('router-view')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sidebar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sidebar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Sidebar.vue?vue&type=template&id=90245f58&scoped=true&\"\nimport script from \"./Sidebar.vue?vue&type=script&lang=js&\"\nexport * from \"./Sidebar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Sidebar.vue?vue&type=style&index=0&id=90245f58&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"90245f58\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?7e02","webpack:///./src/components/bar/Navbar.vue?25b9","webpack:///./src/components/Console.vue?a2d0","webpack:///./src/components/bar/Navbar.vue?b06c","webpack:///src/components/bar/Navbar.vue","webpack:///./src/components/bar/Navbar.vue?657f","webpack:///./src/components/bar/Navbar.vue?f50b","webpack:///./src/App.vue?75a2","webpack:///src/App.vue","webpack:///./src/App.vue?1160","webpack:///./src/App.vue?bff9","webpack:///./src/plugins/element.js","webpack:///./src/components/Console.vue?854e","webpack:///src/components/Console.vue","webpack:///./src/components/Console.vue?ff91","webpack:///./src/components/Console.vue?1637","webpack:///./src/router.js","webpack:///./src/stroe.js","webpack:///./src/common.js","webpack:///./src/main.js","webpack:///./src/components/bar/Sidebar.vue?957f","webpack:///./src/components/bar/Sidebar.vue?af61","webpack:///src/components/bar/Sidebar.vue","webpack:///./src/components/bar/Sidebar.vue?186a","webpack:///./src/components/bar/Sidebar.vue?6b73"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","render","_vm","this","_h","$createElement","_self","_c","_m","staticRenderFns","attrs","_v","component","Vue","use","Element","VueRouter","router","routes","path","redirect","Console","children","meta","title","Vuex","store","Store","state","appInfo","mutations","initAppInfo","timestamp2Str","ts","date","Date","Y","getFullYear","M","getMonth","D","getDate","h","getHours","getMinutes","getSeconds","ElementUI","common","axios","defaults","baseURL","config","productionTip","App","$mount","interceptors","response","success","Message","warning","msg","toString","staticStyle","default_active_index","slot","staticClass"],"mappings":"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","file":"js/app.1ed552fe.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-2d0c76e2\":\"d0248019\",\"chunk-2d21772a\":\"415195dc\",\"chunk-4947264f\":\"10340ff7\",\"chunk-7602a25e\":\"165fb79d\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-4947264f\":1,\"chunk-7602a25e\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-2d0c76e2\":\"31d6cfe0\",\"chunk-2d21772a\":\"31d6cfe0\",\"chunk-4947264f\":\"596fc436\",\"chunk-7602a25e\":\"b9e33c01\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=style&index=0&id=90a84a42&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=style&index=0&id=90a84a42&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Console.vue?vue&type=style&index=0&id=a40f99c2&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Console.vue?vue&type=style&index=0&id=a40f99c2&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"navbar\"}},[_c('div',{attrs:{\"id\":\"logo_content\"}},[_c('p',[_vm._v(\"OhMyScheduler\")])]),_c('div',{attrs:{\"id\":\"right_content\"}})])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Navbar.vue?vue&type=template&id=90a84a42&scoped=true&\"\nimport script from \"./Navbar.vue?vue&type=script&lang=js&\"\nexport * from \"./Navbar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Navbar.vue?vue&type=style&index=0&id=90a84a42&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"90a84a42\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=c8951c4e&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport Element from 'element-ui'\nimport '../element-variables.scss'\n\nVue.use(Element)\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"console\"}},[_c('navbar'),_c('sidebar')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Console.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Console.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Console.vue?vue&type=template&id=a40f99c2&scoped=true&\"\nimport script from \"./Console.vue?vue&type=script&lang=js&\"\nexport * from \"./Console.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Console.vue?vue&type=style&index=0&id=a40f99c2&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a40f99c2\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport Console from \"./components/Console\";\n\nVue.use(VueRouter);\n\nconst router = new VueRouter({\n routes: [\n { path: \"/\", redirect: '/welcome' },\n { path: \"/welcome\", component: () => import('./components/Welcome') },\n {\n path: \"/oms\", component: Console, redirect: \"/oms/home\", children: [\n // 二级路由\n { path: \"/oms/home\", meta: { title: '主页' }, component: () => import('./components/views/Home') },\n { path: \"/oms/job\", meta: { title: '任务管理' }, component: () => import('./components/views/JobManager') },\n { path: \"/oms/instance\", meta: { title: '实例管理' }, component: () => import('./components/views/InstanceManager') },\n ]\n },\n // 调试用\n { path: \"/sidebar\", component: () => import('./components/bar/Sidebar') },\n { path: \"/navbar\", component: () => import('./components/bar/Navbar') },\n ]\n});\n\n// 默认导出,供 main.js 引入,作为项目的路由器\nexport default router;\n","import Vue from \"vue\"\nimport Vuex from \"vuex\"\n\nVue.use(Vuex);\n\nconst store = new Vuex.Store({\n state: {\n // 包含两个属性:id和appName\n appInfo: {}\n },\n // 推荐使用 mutations 改变 store中的值,调用方法:this.$store.commit('initAppInfo', xxx)\n mutations: {\n initAppInfo(state, appInfo) {\n state.appInfo = appInfo;\n }\n }\n});\n\nexport default store;\n","let timestamp2Str = ts => {\n if (ts < 10000) {\n return \"N/A\";\n }\n try {\n let date = new Date(ts);\n let Y = date.getFullYear() + '-';\n let M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';\n let D = date.getDate() + ' ';\n let h = date.getHours() + ':';\n let m = date.getMinutes() + ':';\n let s = date.getSeconds();\n return Y+M+D+h+m+s;\n }catch (e) {\n return \"N/A\";\n }\n};\n\nexport default {\n timestamp2Str\n}\n","import Vue from 'vue'\nimport App from './App.vue'\nimport ElementUI from 'element-ui'\nimport { Message } from 'element-ui';\nimport './styles.scss'\nimport './plugins/element.js'\n\nimport axios from 'axios'\nimport router from \"./router\";\nimport store from \"./stroe\";\nimport common from \"./common\";\n// import VueCookies from 'vue-cookies';\n\nVue.use(ElementUI);\n// Vue.use(VueCookies);\n\nVue.prototype.common = common;\n/* ******* axios config ******* */\nVue.prototype.axios = axios;\naxios.defaults.baseURL = \"http://localhost:7700\";\naxios.defaults.timeout = 5000;\n\nVue.config.productionTip = false;\n\nnew Vue({\n router,\n store,\n render: h => h(App),\n}).$mount('#app');\n\n// 请求返回拦截,封装公共处理逻辑\naxios.interceptors.response.use((response) => {\n if (response.data.success === true) {\n return response.data.data;\n }\n Message.warning(\"错误信息:\" + response.data.message);\n return Promise.reject(response.data.msg);\n}, (error) => {\n Message.error(error.toString());\n return Promise.reject(error);\n});\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sidebar.vue?vue&type=style&index=0&id=90245f58&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sidebar.vue?vue&type=style&index=0&id=90245f58&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"sidebar\"}},[_c('el-container',{staticStyle:{\"width\":\"200px\"}},[_c('el-aside',{attrs:{\"width\":\"200px\"}},[_c('el-menu',{attrs:{\"router\":true,\"default-active\":_vm.default_active_index}},[_c('el-menu-item',{attrs:{\"index\":\"/oms/home\"}},[_c('template',{slot:\"title\"},[_c('i',{staticClass:\"el-icon-monitor\"}),_c('span',[_vm._v(\"系统首页\")])])],2),_c('el-menu-item',{attrs:{\"index\":\"/oms/job\"}},[_c('template',{slot:\"title\"},[_c('i',{staticClass:\"el-icon-data-analysis\"}),_c('span',[_vm._v(\"任务管理\")])])],2),_c('el-menu-item',{attrs:{\"index\":\"/oms/instance\"}},[_c('template',{slot:\"title\"},[_c('i',{staticClass:\"el-icon-s-data\"}),_c('span',[_vm._v(\"运行状态\")])])],2)],1)],1)],1),_c('div',{staticClass:\"wrap\"},[_c('router-view')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sidebar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sidebar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Sidebar.vue?vue&type=template&id=90245f58&scoped=true&\"\nimport script from \"./Sidebar.vue?vue&type=script&lang=js&\"\nexport * from \"./Sidebar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Sidebar.vue?vue&type=style&index=0&id=90245f58&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"90245f58\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/oh-my-scheduler-server/src/main/resources/static/js/chunk-29e8f75a.a9aa0f8f.js b/oh-my-scheduler-server/src/main/resources/static/js/chunk-29e8f75a.a9aa0f8f.js deleted file mode 100644 index 0bbebf60..00000000 --- a/oh-my-scheduler-server/src/main/resources/static/js/chunk-29e8f75a.a9aa0f8f.js +++ /dev/null @@ -1,2 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-29e8f75a"],{6337:function(t,s,a){"use strict";var e=a("ffdc"),n=a.n(e);n.a},"7d8a":function(t,s,a){"use strict";a.r(s);var e=function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{attrs:{id:"home"}},[a("el-row",{attrs:{gutter:24}},[a("el-col",{attrs:{span:6}},[a("div",{staticClass:"wrap"},[a("div",{staticClass:"grid-content bg-purple"},[a("div",{staticClass:"text"},[t._v("任务总数")]),a("div",{staticClass:"text"},[t._v(t._s(t.systemInfo.jobCount))])]),a("i",{staticClass:"el-icon-s-custom"})])]),a("el-col",{attrs:{span:6}},[a("div",{staticClass:"wrap"},[a("div",{staticClass:"grid-content bg-purple"},[a("div",{staticClass:"text"},[t._v("当前运行实例数")]),a("div",{staticClass:"text"},[t._v(t._s(t.systemInfo.runningInstanceCount))])]),a("i",{staticClass:"el-icon-s-custom"})])]),a("el-col",{attrs:{span:6}},[a("div",{staticClass:"wrap"},[a("div",{staticClass:"grid-content bg-purple"},[a("div",{staticClass:"text"},[t._v("近期失败任务数")]),a("div",{staticClass:"text"},[t._v(t._s(t.systemInfo.failedInstanceCount))])]),a("i",{staticClass:"el-icon-s-custom"})])]),a("el-col",{attrs:{span:6}},[a("div",{staticClass:"wrap"},[a("div",{staticClass:"grid-content bg-purple"},[a("div",{staticClass:"text"},[t._v("集群机器数")]),a("div",{staticClass:"text"},[t._v(t._s(t.activeWorkerCount))])]),a("i",{staticClass:"el-icon-s-custom"})])])],1),a("el-row",[a("el-col",{attrs:{span:24}},[a("el-table",{staticStyle:{width:"100%"},attrs:{data:t.workerList,height:"400px","row-class-name":t.workerTableRowClassName}},[a("el-table-column",{attrs:{prop:"address",label:"机器地址"}}),a("el-table-column",{attrs:{prop:"cpuLoad",label:"CPU占用"}}),a("el-table-column",{attrs:{prop:"memoryLoad",label:"内存占用"}}),a("el-table-column",{attrs:{prop:"diskLoad",label:"磁盘占用"}})],1)],1)],1)],1)},n=[],i={name:"Home",data:function(){return{systemInfo:{jobCount:"N/A",runningInstanceCount:"N/A",failedInstanceCount:"N/A"},activeWorkerCount:"N/A",workerList:[]}},methods:{workerTableRowClassName:function(t){var s=t.row;switch(s.status){case 1:return"success-row";case 2:return"warning-row";case 3:return"error-row"}}},mounted:function(){var t=this,s=t.$store.state.appInfo.id;t.axios.get("/system/overview?appId="+s).then((function(s){return t.systemInfo=s})),t.axios.get("/system/listWorker?appId="+s).then((function(s){t.workerList=s,t.activeWorkerCount=t.workerList.length}))}},o=i,r=(a("ba4d"),a("6337"),a("2877")),c=Object(r["a"])(o,e,n,!1,null,"9781a346",null);s["default"]=c.exports},ba4d:function(t,s,a){"use strict";var e=a("ff73"),n=a.n(e);n.a},ff73:function(t,s,a){},ffdc:function(t,s,a){}}]); -//# sourceMappingURL=chunk-29e8f75a.a9aa0f8f.js.map \ No newline at end of file diff --git a/oh-my-scheduler-server/src/main/resources/static/js/chunk-29e8f75a.a9aa0f8f.js.map b/oh-my-scheduler-server/src/main/resources/static/js/chunk-29e8f75a.a9aa0f8f.js.map deleted file mode 100644 index d14232c4..00000000 --- a/oh-my-scheduler-server/src/main/resources/static/js/chunk-29e8f75a.a9aa0f8f.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/components/views/Home.vue?a265","webpack:///./src/components/views/Home.vue?2c91","webpack:///src/components/views/Home.vue","webpack:///./src/components/views/Home.vue?65e5","webpack:///./src/components/views/Home.vue?577d","webpack:///./src/components/views/Home.vue?916e"],"names":["render","_vm","this","_h","$createElement","_c","_self","attrs","staticClass","_v","_s","systemInfo","jobCount","runningInstanceCount","failedInstanceCount","activeWorkerCount","staticStyle","workerList","workerTableRowClassName","staticRenderFns","component"],"mappings":"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","file":"js/chunk-29e8f75a.a9aa0f8f.js","sourcesContent":["import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=1&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=1&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"home\"}},[_c('el-row',{attrs:{\"gutter\":24}},[_c('el-col',{attrs:{\"span\":6}},[_c('div',{staticClass:\"wrap\"},[_c('div',{staticClass:\"grid-content bg-purple\"},[_c('div',{staticClass:\"text\"},[_vm._v(\"任务总数\")]),_c('div',{staticClass:\"text\"},[_vm._v(_vm._s(_vm.systemInfo.jobCount))])]),_c('i',{staticClass:\"el-icon-s-custom\"})])]),_c('el-col',{attrs:{\"span\":6}},[_c('div',{staticClass:\"wrap\"},[_c('div',{staticClass:\"grid-content bg-purple\"},[_c('div',{staticClass:\"text\"},[_vm._v(\"当前运行实例数\")]),_c('div',{staticClass:\"text\"},[_vm._v(_vm._s(_vm.systemInfo.runningInstanceCount))])]),_c('i',{staticClass:\"el-icon-s-custom\"})])]),_c('el-col',{attrs:{\"span\":6}},[_c('div',{staticClass:\"wrap\"},[_c('div',{staticClass:\"grid-content bg-purple\"},[_c('div',{staticClass:\"text\"},[_vm._v(\"近期失败任务数\")]),_c('div',{staticClass:\"text\"},[_vm._v(_vm._s(_vm.systemInfo.failedInstanceCount))])]),_c('i',{staticClass:\"el-icon-s-custom\"})])]),_c('el-col',{attrs:{\"span\":6}},[_c('div',{staticClass:\"wrap\"},[_c('div',{staticClass:\"grid-content bg-purple\"},[_c('div',{staticClass:\"text\"},[_vm._v(\"集群机器数\")]),_c('div',{staticClass:\"text\"},[_vm._v(_vm._s(_vm.activeWorkerCount))])]),_c('i',{staticClass:\"el-icon-s-custom\"})])])],1),_c('el-row',[_c('el-col',{attrs:{\"span\":24}},[_c('el-table',{staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.workerList,\"height\":\"400px\",\"row-class-name\":_vm.workerTableRowClassName}},[_c('el-table-column',{attrs:{\"prop\":\"address\",\"label\":\"机器地址\"}}),_c('el-table-column',{attrs:{\"prop\":\"cpuLoad\",\"label\":\"CPU占用\"}}),_c('el-table-column',{attrs:{\"prop\":\"memoryLoad\",\"label\":\"内存占用\"}}),_c('el-table-column',{attrs:{\"prop\":\"diskLoad\",\"label\":\"磁盘占用\"}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=9781a346&scoped=true&\"\nimport script from \"./Home.vue?vue&type=script&lang=js&\"\nexport * from \"./Home.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Home.vue?vue&type=style&index=0&id=9781a346&scoped=true&lang=css&\"\nimport style1 from \"./Home.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9781a346\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=0&id=9781a346&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=0&id=9781a346&scoped=true&lang=css&\""],"sourceRoot":""} \ No newline at end of file diff --git a/oh-my-scheduler-server/src/main/resources/static/js/chunk-2d0c76e2.50e949d3.js.map b/oh-my-scheduler-server/src/main/resources/static/js/chunk-2d0c76e2.50e949d3.js.map deleted file mode 100644 index 6fbb8c56..00000000 --- a/oh-my-scheduler-server/src/main/resources/static/js/chunk-2d0c76e2.50e949d3.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/components/views/InstanceManager.vue?a4f5","webpack:///src/components/views/InstanceManager.vue","webpack:///./src/components/views/InstanceManager.vue?4ce7","webpack:///./src/components/views/InstanceManager.vue"],"names":["render","_vm","this","_h","$createElement","_c","_self","attrs","staticClass","instanceQueryContent","model","value","callback","$$v","$set","expression","on","listInstanceInfos","_v","onClickRest","staticStyle","instancePageResult","data","instanceTableRowClassName","scopedSlots","_u","key","fn","scope","$event","onClickShowDetail","row","onClickShowLog","onClickStop","totalItems","pageSize","onClickChangeInstancePage","instanceDetailVisible","_s","instanceDetail","status","runningTimes","taskTrackerAddress","common","timestamp2Str","actualTriggerTime","finishedTime","result","taskDetail","subInstanceDetails","instanceLogVisible","onclickDownloadLog","paginableInstanceLog","totalPages","onClickChangeLogPage","staticRenderFns","component"],"mappings":"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","file":"js/chunk-2d0c76e2.50e949d3.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"instance_manager\"}},[_c('el-row',[_c('el-col',{attrs:{\"span\":20}},[_c('el-form',{staticClass:\"el-form--inline\",attrs:{\"inline\":true,\"model\":_vm.instanceQueryContent}},[_c('el-form-item',{attrs:{\"label\":\"实例ID\"}},[_c('el-input',{attrs:{\"placeholder\":\"实例ID\"},model:{value:(_vm.instanceQueryContent.instanceId),callback:function ($$v) {_vm.$set(_vm.instanceQueryContent, \"instanceId\", $$v)},expression:\"instanceQueryContent.instanceId\"}})],1),_c('el-form-item',{attrs:{\"label\":\"任务ID\"}},[_c('el-input',{attrs:{\"placeholder\":\"任务ID\"},model:{value:(_vm.instanceQueryContent.jobId),callback:function ($$v) {_vm.$set(_vm.instanceQueryContent, \"jobId\", $$v)},expression:\"instanceQueryContent.jobId\"}})],1),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.listInstanceInfos}},[_vm._v(\"查询\")]),_c('el-button',{attrs:{\"type\":\"cancel\"},on:{\"click\":_vm.onClickRest}},[_vm._v(\"重置\")])],1)],1)],1),_c('el-col',{attrs:{\"span\":4}},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.listInstanceInfos}},[_vm._v(\"刷新\")])],1)],1),_c('el-row',[_c('el-table',{staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.instancePageResult.data,\"row-class-name\":_vm.instanceTableRowClassName}},[_c('el-table-column',{attrs:{\"prop\":\"jobId\",\"label\":\"任务ID\"}}),_c('el-table-column',{attrs:{\"prop\":\"jobName\",\"label\":\"任务名称\"}}),_c('el-table-column',{attrs:{\"prop\":\"instanceId\",\"label\":\"实例ID\"}}),_c('el-table-column',{attrs:{\"prop\":\"statusStr\",\"label\":\"状态\"}}),_c('el-table-column',{attrs:{\"prop\":\"actualTriggerTime\",\"label\":\"触发时间\"}}),_c('el-table-column',{attrs:{\"prop\":\"finishedTime\",\"label\":\"结束时间\"}}),_c('el-table-column',{attrs:{\"label\":\"操作\",\"width\":\"240px\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.onClickShowDetail(scope.row)}}},[_vm._v(\"详情\")]),_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.onClickShowLog(scope.row)}}},[_vm._v(\"日志\")]),_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.onClickStop(scope.row)}}},[_vm._v(\"停止\")])]}}])})],1)],1),_c('el-row',[_c('el-col',{attrs:{\"span\":24}},[_c('el-pagination',{attrs:{\"hide-on-single-page\":true,\"total\":this.instancePageResult.totalItems,\"page-size\":this.instancePageResult.pageSize,\"layout\":\"prev, pager, next\"},on:{\"current-change\":_vm.onClickChangeInstancePage}})],1)],1),_c('el-dialog',{attrs:{\"title\":\"任务详情\",\"visible\":_vm.instanceDetailVisible},on:{\"update:visible\":function($event){_vm.instanceDetailVisible=$event}}},[_c('el-row',[_c('el-col',{attrs:{\"span\":8}},[_vm._v(\" 状态: \"+_vm._s(_vm.instanceDetail.status)+\" \")]),_c('el-col',{attrs:{\"span\":16}},[_vm._v(\" 运行次数:\"+_vm._s(_vm.instanceDetail.runningTimes)+\" \")])],1),_c('el-row',[_c('el-col',{attrs:{\"span\":24}},[_vm._v(\" TaskTracker地址: \"+_vm._s(_vm.instanceDetail.taskTrackerAddress)+\" \")])],1),_c('el-row',[_c('el-col',{attrs:{\"span\":8}},[_vm._v(\" 开始时间: \"+_vm._s(this.common.timestamp2Str(_vm.instanceDetail.actualTriggerTime))+\" \")]),_c('el-col',{attrs:{\"span\":8}},[_vm._v(\" 结束时间: \"+_vm._s(this.common.timestamp2Str(_vm.instanceDetail.finishedTime))+\" \")])],1),_c('el-row',[_c('el-col',{attrs:{\"span\":24}},[_vm._v(\" 运行结果: \"+_vm._s(_vm.instanceDetail.result)+\" \")])],1),_c('el-row',{attrs:{\"id\":\"taskDetail\"}},[_vm._v(\" 子任务数据: \"+_vm._s(_vm.instanceDetail.taskDetail)+\" \")]),_c('el-row',[_vm._v(\" 最近10条秒级任务历史记录 \"),_c('el-table',{staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.instanceDetail.subInstanceDetails}},[_c('el-table-column',{attrs:{\"prop\":\"subInstanceId\",\"label\":\"子实例ID\",\"width\":\"100\"}}),_c('el-table-column',{attrs:{\"prop\":\"startTime\",\"label\":\"开始时间\",\"width\":\"160\"}}),_c('el-table-column',{attrs:{\"prop\":\"finishedTime\",\"label\":\"结束时间\",\"width\":\"160\"}}),_c('el-table-column',{attrs:{\"prop\":\"status\",\"label\":\"运行状态\",\"width\":\"100\"}}),_c('el-table-column',{attrs:{\"prop\":\"result\",\"label\":\"运行结果\"}})],1)],1)],1),_c('el-dialog',{attrs:{\"title\":\"日志\",\"visible\":_vm.instanceLogVisible,\"width\":\"80%\"},on:{\"update:visible\":function($event){_vm.instanceLogVisible=$event}}},[_c('el-row',[_c('el-col',{attrs:{\"span\":4,\"offset\":20}},[_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.onclickDownloadLog()}}},[_vm._v(\"下载\")])],1)],1),_c('el-row',[_c('el-col',{attrs:{\"span\":24}},[_c('div',{staticStyle:{\"white-space\":\"pre-line\"}},[_vm._v(\" \"+_vm._s(this.paginableInstanceLog.data)+\" \")])])],1),_c('el-row',[_c('el-col',{attrs:{\"span\":24}},[_c('el-pagination',{attrs:{\"hide-on-single-page\":true,\"page-count\":_vm.paginableInstanceLog.totalPages,\"layout\":\"prev, pager, next\"},on:{\"current-change\":_vm.onClickChangeLogPage}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InstanceManager.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InstanceManager.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InstanceManager.vue?vue&type=template&id=3dfa7f3b&scoped=true&\"\nimport script from \"./InstanceManager.vue?vue&type=script&lang=js&\"\nexport * from \"./InstanceManager.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3dfa7f3b\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/oh-my-scheduler-server/src/main/resources/static/js/chunk-2d0c76e2.50e949d3.js b/oh-my-scheduler-server/src/main/resources/static/js/chunk-2d0c76e2.d0248019.js similarity index 61% rename from oh-my-scheduler-server/src/main/resources/static/js/chunk-2d0c76e2.50e949d3.js rename to oh-my-scheduler-server/src/main/resources/static/js/chunk-2d0c76e2.d0248019.js index ba33dfa8..5cc7ece3 100644 --- a/oh-my-scheduler-server/src/main/resources/static/js/chunk-2d0c76e2.50e949d3.js +++ b/oh-my-scheduler-server/src/main/resources/static/js/chunk-2d0c76e2.d0248019.js @@ -1,2 +1,2 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0c76e2"],{"511a":function(t,e,n){"use strict";n.r(e);var a=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{attrs:{id:"instance_manager"}},[n("el-row",[n("el-col",{attrs:{span:20}},[n("el-form",{staticClass:"el-form--inline",attrs:{inline:!0,model:t.instanceQueryContent}},[n("el-form-item",{attrs:{label:"实例ID"}},[n("el-input",{attrs:{placeholder:"实例ID"},model:{value:t.instanceQueryContent.instanceId,callback:function(e){t.$set(t.instanceQueryContent,"instanceId",e)},expression:"instanceQueryContent.instanceId"}})],1),n("el-form-item",{attrs:{label:"任务ID"}},[n("el-input",{attrs:{placeholder:"任务ID"},model:{value:t.instanceQueryContent.jobId,callback:function(e){t.$set(t.instanceQueryContent,"jobId",e)},expression:"instanceQueryContent.jobId"}})],1),n("el-form-item",[n("el-button",{attrs:{type:"primary"},on:{click:t.listInstanceInfos}},[t._v("查询")]),n("el-button",{attrs:{type:"cancel"},on:{click:t.onClickRest}},[t._v("重置")])],1)],1)],1),n("el-col",{attrs:{span:4}},[n("el-button",{attrs:{type:"primary"},on:{click:t.listInstanceInfos}},[t._v("刷新")])],1)],1),n("el-row",[n("el-table",{staticStyle:{width:"100%"},attrs:{data:t.instancePageResult.data,"row-class-name":t.instanceTableRowClassName}},[n("el-table-column",{attrs:{prop:"jobId",label:"任务ID"}}),n("el-table-column",{attrs:{prop:"jobName",label:"任务名称"}}),n("el-table-column",{attrs:{prop:"instanceId",label:"实例ID"}}),n("el-table-column",{attrs:{prop:"statusStr",label:"状态"}}),n("el-table-column",{attrs:{prop:"actualTriggerTime",label:"触发时间"}}),n("el-table-column",{attrs:{prop:"finishedTime",label:"结束时间"}}),n("el-table-column",{attrs:{label:"操作",width:"240px"},scopedSlots:t._u([{key:"default",fn:function(e){return[n("el-button",{attrs:{size:"mini"},on:{click:function(n){return t.onClickShowDetail(e.row)}}},[t._v("详情")]),n("el-button",{attrs:{size:"mini"},on:{click:function(n){return t.onClickShowLog(e.row)}}},[t._v("日志")]),n("el-button",{attrs:{size:"mini"},on:{click:function(n){return t.onClickStop(e.row)}}},[t._v("停止")])]}}])})],1)],1),n("el-row",[n("el-col",{attrs:{span:24}},[n("el-pagination",{attrs:{"hide-on-single-page":!0,total:this.instancePageResult.totalItems,"page-size":this.instancePageResult.pageSize,layout:"prev, pager, next"},on:{"current-change":t.onClickChangeInstancePage}})],1)],1),n("el-dialog",{attrs:{title:"任务详情",visible:t.instanceDetailVisible},on:{"update:visible":function(e){t.instanceDetailVisible=e}}},[n("el-row",[n("el-col",{attrs:{span:8}},[t._v(" 状态: "+t._s(t.instanceDetail.status)+" ")]),n("el-col",{attrs:{span:16}},[t._v(" 运行次数:"+t._s(t.instanceDetail.runningTimes)+" ")])],1),n("el-row",[n("el-col",{attrs:{span:24}},[t._v(" TaskTracker地址: "+t._s(t.instanceDetail.taskTrackerAddress)+" ")])],1),n("el-row",[n("el-col",{attrs:{span:8}},[t._v(" 开始时间: "+t._s(this.common.timestamp2Str(t.instanceDetail.actualTriggerTime))+" ")]),n("el-col",{attrs:{span:8}},[t._v(" 结束时间: "+t._s(this.common.timestamp2Str(t.instanceDetail.finishedTime))+" ")])],1),n("el-row",[n("el-col",{attrs:{span:24}},[t._v(" 运行结果: "+t._s(t.instanceDetail.result)+" ")])],1),n("el-row",{attrs:{id:"taskDetail"}},[t._v(" 子任务数据: "+t._s(t.instanceDetail.taskDetail)+" ")]),n("el-row",[t._v(" 最近10条秒级任务历史记录 "),n("el-table",{staticStyle:{width:"100%"},attrs:{data:t.instanceDetail.subInstanceDetails}},[n("el-table-column",{attrs:{prop:"subInstanceId",label:"子实例ID",width:"100"}}),n("el-table-column",{attrs:{prop:"startTime",label:"开始时间",width:"160"}}),n("el-table-column",{attrs:{prop:"finishedTime",label:"结束时间",width:"160"}}),n("el-table-column",{attrs:{prop:"status",label:"运行状态",width:"100"}}),n("el-table-column",{attrs:{prop:"result",label:"运行结果"}})],1)],1)],1),n("el-dialog",{attrs:{title:"日志",visible:t.instanceLogVisible,width:"80%"},on:{"update:visible":function(e){t.instanceLogVisible=e}}},[n("el-row",[n("el-col",{attrs:{span:4,offset:20}},[n("el-button",{attrs:{size:"mini"},on:{click:function(e){return t.onclickDownloadLog()}}},[t._v("下载")])],1)],1),n("el-row",[n("el-col",{attrs:{span:24}},[n("div",{staticStyle:{"white-space":"pre-line"}},[t._v(" "+t._s(this.paginableInstanceLog.data)+" ")])])],1),n("el-row",[n("el-col",{attrs:{span:24}},[n("el-pagination",{attrs:{"hide-on-single-page":!0,"page-count":t.paginableInstanceLog.totalPages,layout:"prev, pager, next"},on:{"current-change":t.onClickChangeLogPage}})],1)],1)],1)],1)},i=[],s={name:"InstanceManager",data:function(){return{instanceQueryContent:{appId:this.$store.state.appInfo.id,index:0,pageSize:10,instanceId:void 0,jobId:void 0},instancePageResult:{pageSize:10,totalItems:0,data:[]},instanceDetail:{},instanceDetailVisible:!1,logQueryContent:{instanceId:void 0,index:0},instanceLogVisible:!1,paginableInstanceLog:{index:0,totalPages:0,data:""}}},methods:{listInstanceInfos:function(){var t=this;t.axios.post("/instance/list",t.instanceQueryContent).then((function(e){t.instancePageResult=e}))},onClickRest:function(){this.instanceQueryContent.jobId=void 0,this.instanceQueryContent.instanceId=void 0,this.listInstanceInfos()},onClickShowDetail:function(t){var e=this,n="/instance/status?instanceId="+t.instanceId;this.axios.get(n).then((function(t){e.instanceDetail=t,e.instanceDetailVisible=!0}))},onClickStop:function(t){var e=this,n="/instance/stop?instanceId="+t.instanceId;this.axios.get(n).then((function(){e.$message.success("停止成功"),e.listInstanceInfos()}))},onClickChangeInstancePage:function(t){this.instanceQueryContent.index=t-1,this.listInstanceInfos()},instanceTableRowClassName:function(t){var e=t.row;switch(e.status){case 4:return"error-row";case 5:return"success-row";case 10:return"warning-row"}},queryLog:function(){var t=this,e="/instance/log?instanceId="+this.logQueryContent.instanceId+"&index="+this.logQueryContent.index;this.axios.get(e).then((function(e){t.paginableInstanceLog=e,t.instanceLogVisible=!0}))},onClickShowLog:function(t){this.logQueryContent.instanceId=t.instanceId,this.queryLog()},onClickChangeLogPage:function(t){this.logQueryContent.index=t-1,this.queryLog()},onclickDownloadLog:function(){var t="/instance/downloadLogUrl?instanceId="+this.logQueryContent.instanceId;this.axios.get(t).then((function(t){return window.open(t)}))}},mounted:function(){this.listInstanceInfos()}},l=s,o=n("2877"),c=Object(o["a"])(l,a,i,!1,null,"3dfa7f3b",null);e["default"]=c.exports}}]); -//# sourceMappingURL=chunk-2d0c76e2.50e949d3.js.map \ No newline at end of file +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0c76e2"],{"511a":function(t,e,n){"use strict";n.r(e);var a=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{attrs:{id:"instance_manager"}},[n("el-row",[n("el-col",{attrs:{span:20}},[n("el-form",{staticClass:"el-form--inline",attrs:{inline:!0,model:t.instanceQueryContent}},[n("el-form-item",{attrs:{label:"实例ID"}},[n("el-input",{attrs:{placeholder:"实例ID"},model:{value:t.instanceQueryContent.instanceId,callback:function(e){t.$set(t.instanceQueryContent,"instanceId",e)},expression:"instanceQueryContent.instanceId"}})],1),n("el-form-item",{attrs:{label:"任务ID"}},[n("el-input",{attrs:{placeholder:"任务ID"},model:{value:t.instanceQueryContent.jobId,callback:function(e){t.$set(t.instanceQueryContent,"jobId",e)},expression:"instanceQueryContent.jobId"}})],1),n("el-form-item",[n("el-button",{attrs:{type:"primary"},on:{click:t.listInstanceInfos}},[t._v("查询")]),n("el-button",{attrs:{type:"cancel"},on:{click:t.onClickRest}},[t._v("重置")])],1)],1)],1),n("el-col",{attrs:{span:4}},[n("el-button",{attrs:{type:"primary"},on:{click:t.listInstanceInfos}},[t._v("刷新")])],1)],1),n("el-row",[n("el-table",{staticStyle:{width:"100%"},attrs:{data:t.instancePageResult.data,"row-class-name":t.instanceTableRowClassName}},[n("el-table-column",{attrs:{prop:"jobId",label:"任务ID"}}),n("el-table-column",{attrs:{prop:"jobName",label:"任务名称"}}),n("el-table-column",{attrs:{prop:"instanceId",label:"实例ID"}}),n("el-table-column",{attrs:{prop:"statusStr",label:"状态"}}),n("el-table-column",{attrs:{prop:"actualTriggerTime",label:"触发时间"}}),n("el-table-column",{attrs:{prop:"finishedTime",label:"结束时间"}}),n("el-table-column",{attrs:{label:"操作",width:"240px"},scopedSlots:t._u([{key:"default",fn:function(e){return[n("el-button",{attrs:{size:"mini"},on:{click:function(n){return t.onClickShowDetail(e.row)}}},[t._v("详情")]),n("el-button",{attrs:{size:"mini"},on:{click:function(n){return t.onClickShowLog(e.row)}}},[t._v("日志")]),n("el-button",{attrs:{size:"mini"},on:{click:function(n){return t.onClickStop(e.row)}}},[t._v("停止")])]}}])})],1)],1),n("el-row",[n("el-col",{attrs:{span:24}},[n("el-pagination",{attrs:{"hide-on-single-page":!0,total:this.instancePageResult.totalItems,"page-size":this.instancePageResult.pageSize,layout:"prev, pager, next"},on:{"current-change":t.onClickChangeInstancePage}})],1)],1),n("el-dialog",{attrs:{title:"任务详情",visible:t.instanceDetailVisible},on:{"update:visible":function(e){t.instanceDetailVisible=e}}},[n("el-row",[n("el-col",{attrs:{span:8}},[t._v(" 状态: "+t._s(t.instanceDetail.status)+" ")]),n("el-col",{attrs:{span:16}},[t._v(" 运行次数:"+t._s(t.instanceDetail.runningTimes)+" ")])],1),n("el-row",[n("el-col",{attrs:{span:24}},[t._v(" TaskTracker地址: "+t._s(t.instanceDetail.taskTrackerAddress)+" ")])],1),n("el-row",[n("el-col",{attrs:{span:8}},[t._v(" 开始时间: "+t._s(this.common.timestamp2Str(t.instanceDetail.actualTriggerTime))+" ")]),n("el-col",{attrs:{span:8}},[t._v(" 结束时间: "+t._s(this.common.timestamp2Str(t.instanceDetail.finishedTime))+" ")])],1),n("el-row",[n("el-col",{attrs:{span:24}},[t._v(" 运行结果: "+t._s(t.instanceDetail.result)+" ")])],1),n("el-row",{attrs:{id:"taskDetail"}},[t._v(" 子任务数据: "+t._s(t.instanceDetail.taskDetail)+" ")]),n("el-row",[t._v(" 最近10条秒级任务历史记录 "),n("el-table",{staticStyle:{width:"100%"},attrs:{data:t.instanceDetail.subInstanceDetails}},[n("el-table-column",{attrs:{prop:"subInstanceId",label:"子实例ID",width:"100"}}),n("el-table-column",{attrs:{prop:"startTime",label:"开始时间",width:"160"}}),n("el-table-column",{attrs:{prop:"finishedTime",label:"结束时间",width:"160"}}),n("el-table-column",{attrs:{prop:"status",label:"运行状态",width:"100"}}),n("el-table-column",{attrs:{prop:"result",label:"运行结果"}})],1)],1)],1),n("el-dialog",{attrs:{title:"日志",visible:t.instanceLogVisible,width:"80%"},on:{"update:visible":function(e){t.instanceLogVisible=e}}},[n("el-row",[n("el-col",{attrs:{span:4,offset:20}},[n("el-button",{attrs:{type:"primary",size:"mini",icon:"el-icon-download"},on:{click:function(e){return t.onclickDownloadLog()}}},[t._v("下载")])],1)],1),n("el-row",[n("el-col",{attrs:{span:24}},[n("div",{staticStyle:{"white-space":"pre-line"}},[t._v(" "+t._s(this.paginableInstanceLog.data)+" ")])])],1),n("el-row",[n("el-col",{attrs:{span:24}},[n("el-pagination",{attrs:{"hide-on-single-page":!0,"page-count":t.paginableInstanceLog.totalPages,layout:"prev, pager, next"},on:{"current-change":t.onClickChangeLogPage}})],1)],1)],1)],1)},i=[],s={name:"InstanceManager",data:function(){return{instanceQueryContent:{appId:this.$store.state.appInfo.id,index:0,pageSize:10,instanceId:void 0,jobId:void 0},instancePageResult:{pageSize:10,totalItems:0,data:[]},instanceDetail:{},instanceDetailVisible:!1,logQueryContent:{instanceId:void 0,index:0},instanceLogVisible:!1,paginableInstanceLog:{index:0,totalPages:0,data:""}}},methods:{listInstanceInfos:function(){var t=this;t.axios.post("/instance/list",t.instanceQueryContent).then((function(e){t.instancePageResult=e}))},onClickRest:function(){this.instanceQueryContent.jobId=void 0,this.instanceQueryContent.instanceId=void 0,this.listInstanceInfos()},onClickShowDetail:function(t){var e=this,n="/instance/status?instanceId="+t.instanceId;this.axios.get(n).then((function(t){e.instanceDetail=t,e.instanceDetailVisible=!0}))},onClickStop:function(t){var e=this,n="/instance/stop?instanceId="+t.instanceId;this.axios.get(n).then((function(){e.$message.success("停止成功"),e.listInstanceInfos()}))},onClickChangeInstancePage:function(t){this.instanceQueryContent.index=t-1,this.listInstanceInfos()},instanceTableRowClassName:function(t){var e=t.row;switch(e.status){case 4:return"error-row";case 5:return"success-row";case 10:return"warning-row"}},queryLog:function(){var t=this,e="/instance/log?instanceId="+this.logQueryContent.instanceId+"&index="+this.logQueryContent.index;this.axios.get(e).then((function(e){t.paginableInstanceLog=e,t.instanceLogVisible=!0}))},onClickShowLog:function(t){this.logQueryContent.instanceId=t.instanceId,this.logQueryContent.index=0,this.queryLog()},onClickChangeLogPage:function(t){this.logQueryContent.index=t-1,this.queryLog()},onclickDownloadLog:function(){var t="/instance/downloadLogUrl?instanceId="+this.logQueryContent.instanceId;this.axios.get(t).then((function(t){return window.open(t)}))}},mounted:function(){this.listInstanceInfos()}},l=s,o=n("2877"),c=Object(o["a"])(l,a,i,!1,null,"1997fff2",null);e["default"]=c.exports}}]); +//# sourceMappingURL=chunk-2d0c76e2.d0248019.js.map \ No newline at end of file diff --git a/oh-my-scheduler-server/src/main/resources/static/js/chunk-2d0c76e2.d0248019.js.map b/oh-my-scheduler-server/src/main/resources/static/js/chunk-2d0c76e2.d0248019.js.map new file mode 100644 index 00000000..91bf4803 --- /dev/null +++ b/oh-my-scheduler-server/src/main/resources/static/js/chunk-2d0c76e2.d0248019.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/components/views/InstanceManager.vue?1165","webpack:///src/components/views/InstanceManager.vue","webpack:///./src/components/views/InstanceManager.vue?4ce7","webpack:///./src/components/views/InstanceManager.vue"],"names":["render","_vm","this","_h","$createElement","_c","_self","attrs","staticClass","instanceQueryContent","model","value","callback","$$v","$set","expression","on","listInstanceInfos","_v","onClickRest","staticStyle","instancePageResult","data","instanceTableRowClassName","scopedSlots","_u","key","fn","scope","$event","onClickShowDetail","row","onClickShowLog","onClickStop","totalItems","pageSize","onClickChangeInstancePage","instanceDetailVisible","_s","instanceDetail","status","runningTimes","taskTrackerAddress","common","timestamp2Str","actualTriggerTime","finishedTime","result","taskDetail","subInstanceDetails","instanceLogVisible","onclickDownloadLog","paginableInstanceLog","totalPages","onClickChangeLogPage","staticRenderFns","component"],"mappings":"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","file":"js/chunk-2d0c76e2.d0248019.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"instance_manager\"}},[_c('el-row',[_c('el-col',{attrs:{\"span\":20}},[_c('el-form',{staticClass:\"el-form--inline\",attrs:{\"inline\":true,\"model\":_vm.instanceQueryContent}},[_c('el-form-item',{attrs:{\"label\":\"实例ID\"}},[_c('el-input',{attrs:{\"placeholder\":\"实例ID\"},model:{value:(_vm.instanceQueryContent.instanceId),callback:function ($$v) {_vm.$set(_vm.instanceQueryContent, \"instanceId\", $$v)},expression:\"instanceQueryContent.instanceId\"}})],1),_c('el-form-item',{attrs:{\"label\":\"任务ID\"}},[_c('el-input',{attrs:{\"placeholder\":\"任务ID\"},model:{value:(_vm.instanceQueryContent.jobId),callback:function ($$v) {_vm.$set(_vm.instanceQueryContent, \"jobId\", $$v)},expression:\"instanceQueryContent.jobId\"}})],1),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.listInstanceInfos}},[_vm._v(\"查询\")]),_c('el-button',{attrs:{\"type\":\"cancel\"},on:{\"click\":_vm.onClickRest}},[_vm._v(\"重置\")])],1)],1)],1),_c('el-col',{attrs:{\"span\":4}},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.listInstanceInfos}},[_vm._v(\"刷新\")])],1)],1),_c('el-row',[_c('el-table',{staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.instancePageResult.data,\"row-class-name\":_vm.instanceTableRowClassName}},[_c('el-table-column',{attrs:{\"prop\":\"jobId\",\"label\":\"任务ID\"}}),_c('el-table-column',{attrs:{\"prop\":\"jobName\",\"label\":\"任务名称\"}}),_c('el-table-column',{attrs:{\"prop\":\"instanceId\",\"label\":\"实例ID\"}}),_c('el-table-column',{attrs:{\"prop\":\"statusStr\",\"label\":\"状态\"}}),_c('el-table-column',{attrs:{\"prop\":\"actualTriggerTime\",\"label\":\"触发时间\"}}),_c('el-table-column',{attrs:{\"prop\":\"finishedTime\",\"label\":\"结束时间\"}}),_c('el-table-column',{attrs:{\"label\":\"操作\",\"width\":\"240px\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.onClickShowDetail(scope.row)}}},[_vm._v(\"详情\")]),_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.onClickShowLog(scope.row)}}},[_vm._v(\"日志\")]),_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.onClickStop(scope.row)}}},[_vm._v(\"停止\")])]}}])})],1)],1),_c('el-row',[_c('el-col',{attrs:{\"span\":24}},[_c('el-pagination',{attrs:{\"hide-on-single-page\":true,\"total\":this.instancePageResult.totalItems,\"page-size\":this.instancePageResult.pageSize,\"layout\":\"prev, pager, next\"},on:{\"current-change\":_vm.onClickChangeInstancePage}})],1)],1),_c('el-dialog',{attrs:{\"title\":\"任务详情\",\"visible\":_vm.instanceDetailVisible},on:{\"update:visible\":function($event){_vm.instanceDetailVisible=$event}}},[_c('el-row',[_c('el-col',{attrs:{\"span\":8}},[_vm._v(\" 状态: \"+_vm._s(_vm.instanceDetail.status)+\" \")]),_c('el-col',{attrs:{\"span\":16}},[_vm._v(\" 运行次数:\"+_vm._s(_vm.instanceDetail.runningTimes)+\" \")])],1),_c('el-row',[_c('el-col',{attrs:{\"span\":24}},[_vm._v(\" TaskTracker地址: \"+_vm._s(_vm.instanceDetail.taskTrackerAddress)+\" \")])],1),_c('el-row',[_c('el-col',{attrs:{\"span\":8}},[_vm._v(\" 开始时间: \"+_vm._s(this.common.timestamp2Str(_vm.instanceDetail.actualTriggerTime))+\" \")]),_c('el-col',{attrs:{\"span\":8}},[_vm._v(\" 结束时间: \"+_vm._s(this.common.timestamp2Str(_vm.instanceDetail.finishedTime))+\" \")])],1),_c('el-row',[_c('el-col',{attrs:{\"span\":24}},[_vm._v(\" 运行结果: \"+_vm._s(_vm.instanceDetail.result)+\" \")])],1),_c('el-row',{attrs:{\"id\":\"taskDetail\"}},[_vm._v(\" 子任务数据: \"+_vm._s(_vm.instanceDetail.taskDetail)+\" \")]),_c('el-row',[_vm._v(\" 最近10条秒级任务历史记录 \"),_c('el-table',{staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.instanceDetail.subInstanceDetails}},[_c('el-table-column',{attrs:{\"prop\":\"subInstanceId\",\"label\":\"子实例ID\",\"width\":\"100\"}}),_c('el-table-column',{attrs:{\"prop\":\"startTime\",\"label\":\"开始时间\",\"width\":\"160\"}}),_c('el-table-column',{attrs:{\"prop\":\"finishedTime\",\"label\":\"结束时间\",\"width\":\"160\"}}),_c('el-table-column',{attrs:{\"prop\":\"status\",\"label\":\"运行状态\",\"width\":\"100\"}}),_c('el-table-column',{attrs:{\"prop\":\"result\",\"label\":\"运行结果\"}})],1)],1)],1),_c('el-dialog',{attrs:{\"title\":\"日志\",\"visible\":_vm.instanceLogVisible,\"width\":\"80%\"},on:{\"update:visible\":function($event){_vm.instanceLogVisible=$event}}},[_c('el-row',[_c('el-col',{attrs:{\"span\":4,\"offset\":20}},[_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"mini\",\"icon\":\"el-icon-download\"},on:{\"click\":function($event){return _vm.onclickDownloadLog()}}},[_vm._v(\"下载\")])],1)],1),_c('el-row',[_c('el-col',{attrs:{\"span\":24}},[_c('div',{staticStyle:{\"white-space\":\"pre-line\"}},[_vm._v(\" \"+_vm._s(this.paginableInstanceLog.data)+\" \")])])],1),_c('el-row',[_c('el-col',{attrs:{\"span\":24}},[_c('el-pagination',{attrs:{\"hide-on-single-page\":true,\"page-count\":_vm.paginableInstanceLog.totalPages,\"layout\":\"prev, pager, next\"},on:{\"current-change\":_vm.onClickChangeLogPage}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InstanceManager.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InstanceManager.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InstanceManager.vue?vue&type=template&id=1997fff2&scoped=true&\"\nimport script from \"./InstanceManager.vue?vue&type=script&lang=js&\"\nexport * from \"./InstanceManager.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1997fff2\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/oh-my-scheduler-server/src/main/resources/static/js/chunk-4947264f.10340ff7.js b/oh-my-scheduler-server/src/main/resources/static/js/chunk-4947264f.10340ff7.js new file mode 100644 index 00000000..d7a35680 --- /dev/null +++ b/oh-my-scheduler-server/src/main/resources/static/js/chunk-4947264f.10340ff7.js @@ -0,0 +1,2 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-4947264f"],{"05fd":function(t,s,a){"use strict";var e=a("ac51"),n=a.n(e);n.a},6337:function(t,s,a){"use strict";var e=a("ffdc"),n=a.n(e);n.a},"7d8a":function(t,s,a){"use strict";a.r(s);var e=function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{attrs:{id:"home"}},[a("el-row",{attrs:{gutter:24}},[a("el-col",{attrs:{span:6}},[a("div",{staticClass:"wrap"},[a("div",{staticClass:"grid-content bg-purple"},[a("div",{staticClass:"text"},[t._v("任务总数")]),a("div",{staticClass:"text"},[t._v(t._s(t.systemInfo.jobCount))])]),a("i",{staticClass:"el-icon-orange"})])]),a("el-col",{attrs:{span:6}},[a("div",{staticClass:"wrap"},[a("div",{staticClass:"grid-content bg-purple"},[a("div",{staticClass:"text"},[t._v("当前运行实例数")]),a("div",{staticClass:"text"},[t._v(t._s(t.systemInfo.runningInstanceCount))])]),a("i",{staticClass:"el-icon-loading"})])]),a("el-col",{attrs:{span:6}},[a("div",{staticClass:"wrap"},[a("div",{staticClass:"grid-content bg-purple"},[a("div",{staticClass:"text"},[t._v("近期失败任务数")]),a("div",{staticClass:"text"},[t._v(t._s(t.systemInfo.failedInstanceCount))])]),a("i",{staticClass:"el-icon-bell"})])]),a("el-col",{attrs:{span:6}},[a("div",{staticClass:"wrap"},[a("div",{staticClass:"grid-content bg-purple"},[a("div",{staticClass:"text"},[t._v("集群机器数")]),a("div",{staticClass:"text"},[t._v(t._s(t.activeWorkerCount))])]),a("i",{staticClass:"el-icon-grape"})])])],1),a("el-row",[a("el-col",{attrs:{span:24}},[a("el-table",{staticStyle:{width:"100%"},attrs:{data:t.workerList,height:"400px","row-class-name":t.workerTableRowClassName}},[a("el-table-column",{attrs:{prop:"address",label:"机器地址"}}),a("el-table-column",{attrs:{prop:"cpuLoad",label:"CPU占用"}}),a("el-table-column",{attrs:{prop:"memoryLoad",label:"内存占用"}}),a("el-table-column",{attrs:{prop:"diskLoad",label:"磁盘占用"}})],1)],1)],1)],1)},n=[],r={name:"Home",data:function(){return{systemInfo:{jobCount:"N/A",runningInstanceCount:"N/A",failedInstanceCount:"N/A"},activeWorkerCount:"N/A",workerList:[]}},methods:{workerTableRowClassName:function(t){var s=t.row;switch(s.status){case 1:return"success-row";case 2:return"warning-row";case 3:return"error-row"}}},mounted:function(){var t=this,s=t.$store.state.appInfo.id;t.axios.get("/system/overview?appId="+s).then((function(s){return t.systemInfo=s})),t.axios.get("/system/listWorker?appId="+s).then((function(s){t.workerList=s,t.activeWorkerCount=t.workerList.length}))}},i=r,o=(a("05fd"),a("6337"),a("2877")),l=Object(o["a"])(i,e,n,!1,null,"bbc92dba",null);s["default"]=l.exports},ac51:function(t,s,a){},ffdc:function(t,s,a){}}]); +//# sourceMappingURL=chunk-4947264f.10340ff7.js.map \ No newline at end of file diff --git a/oh-my-scheduler-server/src/main/resources/static/js/chunk-4947264f.10340ff7.js.map b/oh-my-scheduler-server/src/main/resources/static/js/chunk-4947264f.10340ff7.js.map new file mode 100644 index 00000000..5037d649 --- /dev/null +++ b/oh-my-scheduler-server/src/main/resources/static/js/chunk-4947264f.10340ff7.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/components/views/Home.vue?52c4","webpack:///./src/components/views/Home.vue?a265","webpack:///./src/components/views/Home.vue?3177","webpack:///src/components/views/Home.vue","webpack:///./src/components/views/Home.vue?65e5","webpack:///./src/components/views/Home.vue?577d"],"names":["render","_vm","this","_h","$createElement","_c","_self","attrs","staticClass","_v","_s","systemInfo","jobCount","runningInstanceCount","failedInstanceCount","activeWorkerCount","staticStyle","workerList","workerTableRowClassName","staticRenderFns","component"],"mappings":"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","file":"js/chunk-4947264f.10340ff7.js","sourcesContent":["import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=0&id=bbc92dba&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=0&id=bbc92dba&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=1&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=1&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"home\"}},[_c('el-row',{attrs:{\"gutter\":24}},[_c('el-col',{attrs:{\"span\":6}},[_c('div',{staticClass:\"wrap\"},[_c('div',{staticClass:\"grid-content bg-purple\"},[_c('div',{staticClass:\"text\"},[_vm._v(\"任务总数\")]),_c('div',{staticClass:\"text\"},[_vm._v(_vm._s(_vm.systemInfo.jobCount))])]),_c('i',{staticClass:\"el-icon-orange\"})])]),_c('el-col',{attrs:{\"span\":6}},[_c('div',{staticClass:\"wrap\"},[_c('div',{staticClass:\"grid-content bg-purple\"},[_c('div',{staticClass:\"text\"},[_vm._v(\"当前运行实例数\")]),_c('div',{staticClass:\"text\"},[_vm._v(_vm._s(_vm.systemInfo.runningInstanceCount))])]),_c('i',{staticClass:\"el-icon-loading\"})])]),_c('el-col',{attrs:{\"span\":6}},[_c('div',{staticClass:\"wrap\"},[_c('div',{staticClass:\"grid-content bg-purple\"},[_c('div',{staticClass:\"text\"},[_vm._v(\"近期失败任务数\")]),_c('div',{staticClass:\"text\"},[_vm._v(_vm._s(_vm.systemInfo.failedInstanceCount))])]),_c('i',{staticClass:\"el-icon-bell\"})])]),_c('el-col',{attrs:{\"span\":6}},[_c('div',{staticClass:\"wrap\"},[_c('div',{staticClass:\"grid-content bg-purple\"},[_c('div',{staticClass:\"text\"},[_vm._v(\"集群机器数\")]),_c('div',{staticClass:\"text\"},[_vm._v(_vm._s(_vm.activeWorkerCount))])]),_c('i',{staticClass:\"el-icon-grape\"})])])],1),_c('el-row',[_c('el-col',{attrs:{\"span\":24}},[_c('el-table',{staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.workerList,\"height\":\"400px\",\"row-class-name\":_vm.workerTableRowClassName}},[_c('el-table-column',{attrs:{\"prop\":\"address\",\"label\":\"机器地址\"}}),_c('el-table-column',{attrs:{\"prop\":\"cpuLoad\",\"label\":\"CPU占用\"}}),_c('el-table-column',{attrs:{\"prop\":\"memoryLoad\",\"label\":\"内存占用\"}}),_c('el-table-column',{attrs:{\"prop\":\"diskLoad\",\"label\":\"磁盘占用\"}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=bbc92dba&scoped=true&\"\nimport script from \"./Home.vue?vue&type=script&lang=js&\"\nexport * from \"./Home.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Home.vue?vue&type=style&index=0&id=bbc92dba&scoped=true&lang=css&\"\nimport style1 from \"./Home.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bbc92dba\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/oh-my-scheduler-server/src/test/java/com/github/kfcfans/oms/server/test/OmsLogTest.java b/oh-my-scheduler-server/src/test/java/com/github/kfcfans/oms/server/test/OmsLogTest.java new file mode 100644 index 00000000..8909af67 --- /dev/null +++ b/oh-my-scheduler-server/src/test/java/com/github/kfcfans/oms/server/test/OmsLogTest.java @@ -0,0 +1,58 @@ +package com.github.kfcfans.oms.server.test; + +import com.github.kfcfans.oms.server.service.log.InstanceLogCleanService; +import com.mongodb.client.gridfs.model.GridFSFile; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.mongodb.gridfs.GridFsTemplate; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.function.Consumer; + +/** + * 在线日志测试 + * + * @author tjq + * @since 2020/5/11 + */ + +@ActiveProfiles("daily") +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +public class OmsLogTest { + + @Resource + private MongoTemplate mongoTemplate; + @Resource + private GridFsTemplate gridFsTemplate; + @Resource + private InstanceLogCleanService instanceLogCleanService; + + @Test + public void testLocalLogCleaner() { + instanceLogCleanService.cleanLocal(); + } + + @Test + public void testRemoteLogCleaner() { + instanceLogCleanService.cleanRemote(); + } + + @Test + public void testGridFsQuery() { + Query mongoQuery = Query.query(Criteria.where("uploadDate").gt(new Date())); + gridFsTemplate.find(mongoQuery).forEach(new Consumer() { + @Override + public void accept(GridFSFile gridFSFile) { + System.out.println(gridFSFile.getFilename()); + } + }); + } +} diff --git a/oh-my-scheduler-server/src/test/java/com/github/kfcfans/oms/server/test/RepositoryTest.java b/oh-my-scheduler-server/src/test/java/com/github/kfcfans/oms/server/test/RepositoryTest.java index 16e66977..4ab3b498 100644 --- a/oh-my-scheduler-server/src/test/java/com/github/kfcfans/oms/server/test/RepositoryTest.java +++ b/oh-my-scheduler-server/src/test/java/com/github/kfcfans/oms/server/test/RepositoryTest.java @@ -13,6 +13,7 @@ import org.assertj.core.util.Lists; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; import javax.annotation.Resource; @@ -24,6 +25,7 @@ import java.util.List; * @author tjq * @since 2020/4/5 */ +@ActiveProfiles("daily") @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class RepositoryTest { diff --git a/oh-my-scheduler-server/src/test/java/com/github/kfcfans/oms/server/test/ServiceTest.java b/oh-my-scheduler-server/src/test/java/com/github/kfcfans/oms/server/test/ServiceTest.java index 94e0a270..47ab56d6 100644 --- a/oh-my-scheduler-server/src/test/java/com/github/kfcfans/oms/server/test/ServiceTest.java +++ b/oh-my-scheduler-server/src/test/java/com/github/kfcfans/oms/server/test/ServiceTest.java @@ -6,6 +6,7 @@ import org.assertj.core.util.Lists; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; import javax.annotation.Resource; @@ -17,6 +18,7 @@ import java.util.List; * @author tjq * @since 2020/4/2 */ +@ActiveProfiles("daily") @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class ServiceTest { diff --git a/oh-my-scheduler-worker-samples/src/main/java/com/github/kfcfans/oms/server/OhMySchedulerConfig.java b/oh-my-scheduler-worker-samples/src/main/java/com/github/kfcfans/oms/server/OhMySchedulerConfig.java index 05a028b7..7a23f673 100644 --- a/oh-my-scheduler-worker-samples/src/main/java/com/github/kfcfans/oms/server/OhMySchedulerConfig.java +++ b/oh-my-scheduler-worker-samples/src/main/java/com/github/kfcfans/oms/server/OhMySchedulerConfig.java @@ -21,13 +21,14 @@ public class OhMySchedulerConfig { @Bean public OhMyWorker initOMS() throws Exception { - List serverAddress = Lists.newArrayList("192.168.1.6:7700", "127.0.0.1:7700"); + List serverAddress = Lists.newArrayList("127.0.0.1:7700", "127.0.0.1:7701"); // 1. 创建配置文件 OhMyConfig config = new OhMyConfig(); config.setAppName("oms-test"); config.setServerAddress(serverAddress); // 如果没有大型 Map/MapReduce 的需求,建议使用内存来加速计算 + // 为了本地模拟多个实例,只能使用 MEMORY 启动(文件只能由一个应用占有) config.setStoreStrategy(StoreStrategy.MEMORY); // 2. 创建 Worker 对象,设置配置文件 diff --git a/oh-my-scheduler-worker-samples/src/main/java/com/github/kfcfans/oms/server/processors/MapReduceProcessorDemo.java b/oh-my-scheduler-worker-samples/src/main/java/com/github/kfcfans/oms/server/processors/MapReduceProcessorDemo.java index f8975218..c711035c 100644 --- a/oh-my-scheduler-worker-samples/src/main/java/com/github/kfcfans/oms/server/processors/MapReduceProcessorDemo.java +++ b/oh-my-scheduler-worker-samples/src/main/java/com/github/kfcfans/oms/server/processors/MapReduceProcessorDemo.java @@ -1,5 +1,6 @@ package com.github.kfcfans.oms.server.processors; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.github.kfcfans.oms.common.utils.JsonUtils; import com.github.kfcfans.oms.worker.core.processor.ProcessResult; @@ -29,11 +30,6 @@ import java.util.concurrent.ThreadLocalRandom; @Component public class MapReduceProcessorDemo extends MapReduceProcessor { - // 每一批发送任务大小 - private static final int batchSize = 100; - // 发送的批次 - private static final int batchNum = 2; - @Override public ProcessResult process(TaskContext context) throws Exception { @@ -43,6 +39,12 @@ public class MapReduceProcessorDemo extends MapReduceProcessor { System.out.println("isRootTask:" + isRootTask()); System.out.println("taskContext:" + JsonUtils.toJSONString(context)); + // 根据控制台参数获取MR批次及子任务大小 + final JSONObject jobParams = JSONObject.parseObject(context.getJobParams()); + + Integer batchSize = (Integer) jobParams.getOrDefault("batchSize", 100); + Integer batchNum = (Integer) jobParams.getOrDefault("batchNum", 10); + if (isRootTask()) { System.out.println("==== MAP ===="); omsLogger.info("[DemoMRProcessor] start root task~"); @@ -60,7 +62,7 @@ public class MapReduceProcessorDemo extends MapReduceProcessor { return new ProcessResult(true, "MAP_SUCCESS"); }else { System.out.println("==== NORMAL_PROCESS ===="); - omsLogger.info("[DemoMRProcessor] normal process~"); + omsLogger.info("[DemoMRProcessor] process subTask: {}.", JSON.toJSONString(context.getSubTask())); System.out.println("subTask: " + JsonUtils.toJSONString(context.getSubTask())); Thread.sleep(1000); if (context.getCurrentRetryTimes() == 0) { diff --git a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/actors/TaskTrackerActor.java b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/actors/TaskTrackerActor.java index a20145b2..0a3d2871 100644 --- a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/actors/TaskTrackerActor.java +++ b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/actors/TaskTrackerActor.java @@ -48,10 +48,10 @@ public class TaskTrackerActor extends AbstractActor { private void onReceiveProcessorReportTaskStatusReq(ProcessorReportTaskStatusReq req) { TaskTracker taskTracker = TaskTrackerPool.getTaskTrackerPool(req.getInstanceId()); + // 手动停止 TaskTracker 的情况下会出现这种情况 if (taskTracker == null) { log.warn("[TaskTrackerActor] receive ProcessorReportTaskStatusReq({}) but system can't find TaskTracker.", req); } else { - taskTracker.updateTaskStatus(req.getTaskId(), req.getStatus(), req.getReportTime(), req.getResult()); } } diff --git a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/background/OmsLogHandler.java b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/background/OmsLogHandler.java index e78fc3df..9aed04e6 100644 --- a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/background/OmsLogHandler.java +++ b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/background/OmsLogHandler.java @@ -76,8 +76,10 @@ public class OmsLogHandler { String serverPath = AkkaUtils.getAkkaServerPath(RemoteConstant.SERVER_ACTOR_NAME); // 当前无可用 Server if (StringUtils.isEmpty(serverPath)) { - logQueue.clear(); - log.warn("[OmsLogHandler] because there is no available server to report logs which leads to queue accumulation, oms discarded all logs."); + if (!logQueue.isEmpty()) { + logQueue.clear(); + log.warn("[OmsLogHandler] because there is no available server to report logs which leads to queue accumulation, oms discarded all logs."); + } return; } diff --git a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/core/executor/ProcessorRunnable.java b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/core/executor/ProcessorRunnable.java index ae88beff..d2708401 100644 --- a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/core/executor/ProcessorRunnable.java +++ b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/core/executor/ProcessorRunnable.java @@ -43,7 +43,7 @@ public class ProcessorRunnable implements Runnable { private final BasicProcessor processor; private final OmsLogger omsLogger; - public void innerRun() { + public void innerRun() throws InterruptedException { String taskId = task.getTaskId(); Long instanceId = task.getInstanceId(); @@ -176,6 +176,7 @@ public class ProcessorRunnable implements Runnable { public void run() { try { innerRun(); + }catch (InterruptedException ignore) { }catch (Exception e) { log.error("[ProcessorRunnable-{}] execute failed, please fix this bug @tjq!", task.getInstanceId(), e); }finally { diff --git a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/core/tracker/processor/ProcessorTracker.java b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/core/tracker/processor/ProcessorTracker.java index 569b8a71..7bc23fef 100644 --- a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/core/tracker/processor/ProcessorTracker.java +++ b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/core/tracker/processor/ProcessorTracker.java @@ -77,12 +77,12 @@ public class ProcessorTracker { this.omsLogger = new OmsServerLogger(instanceId); + // 初始化 线程池,TimingPool 启动的任务会检查 ThreadPool,所以必须先初始化线程池,否则NPE + initThreadPool(); // 初始化定时任务 initTimingJob(); // 初始化 Processor initProcessor(); - // 初始化 线程池,如果处理器创建失败则不执行 - initThreadPool(); log.info("[ProcessorTracker-{}] ProcessorTracker was successfully created!", instanceId); }catch (Exception e) { @@ -221,6 +221,7 @@ public class ProcessorTracker { long waitingNum = threadPool.getQueue().size(); ProcessorTrackerStatusReportReq req = new ProcessorTrackerStatusReportReq(instanceId, waitingNum); taskTrackerActorRef.tell(req, null); + log.debug("[ProcessorTracker-{}] send heartbeat to TaskTracker, current waiting task num is {}.", instanceId, waitingNum); } } diff --git a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/persistence/ConnectionFactory.java b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/persistence/ConnectionFactory.java index a6202b7b..ec89fa4e 100644 --- a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/persistence/ConnectionFactory.java +++ b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/persistence/ConnectionFactory.java @@ -44,7 +44,6 @@ public class ConnectionFactory { // 池中最大连接数量 config.setMaximumPoolSize(32); dataSource = new HikariDataSource(config); - } } return dataSource;