From 9fa131fe9c06b3a7c9b46d014ccc064e8002c1d3 Mon Sep 17 00:00:00 2001 From: panbaolin <13071138970@163.com> Date: Tue, 21 Oct 2025 13:45:14 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E6=BA=90=E9=A1=B9=E9=87=8D?= =?UTF-8?q?=E5=BB=BA=E5=8A=9F=E8=83=BD=E8=A7=82=E6=B5=8B=E5=80=BC=E4=B8=8E?= =?UTF-8?q?=E6=A8=A1=E6=8B=9F=E5=80=BC=E5=AF=B9=E6=AF=94=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=202.=E4=BF=AE=E6=94=B9=E6=95=B0=E6=8D=AE=E5=BA=93=E7=9B=91?= =?UTF-8?q?=E6=8E=A7=E6=9C=8D=E5=8A=A1=E4=BB=A3=E7=A0=81=203.=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=90=84=E6=9C=8D=E5=8A=A1logback=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=96=87=E4=BB=B6=204.=E4=BF=AE=E6=94=B9=E5=A4=A9=E6=B0=94?= =?UTF-8?q?=E9=A2=84=E6=B5=8B=E5=8A=9F=E8=83=BD=E4=B8=8A=E4=BC=A0=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...um.java => PrometheusDBQueryTypeEnum.java} | 28 +- .../enums/PrometheusHostQueryTypeEnum.java | 72 ++++ .../PrometheusServerProperties.java | 30 ++ .../entity/SourceRebuildMonitoringData.java | 13 +- .../SourceRebuildTaskController.java | 5 +- .../TaskMonitoringDataController.java | 6 +- .../SourceRebuildMonitoringDataService.java | 3 +- ...ourceRebuildMonitoringDataServiceImpl.java | 14 +- .../impl/SourceRebuildTaskServiceImpl.java | 18 +- .../impl/TaskResultDataServiceImpl.java | 10 + .../jeecg/vo/ActivityConcComparResult.java | 11 + .../controller/DatabaseMonitorController.java | 135 +++--- .../controller/ServiceMonitorController.java | 8 +- .../monitor/mapper/DatabaseMonitorMapper.java | 2 +- .../service/DatabaseMonitorService.java | 33 +- .../monitor/service/HostMonitorService.java | 4 +- .../impl/DatabaseMonitorServiceImpl.java | 400 +++++++++++++++++- .../service/impl/HostMonitorServiceImpl.java | 36 +- .../system/service/impl/SysBaseApiImpl.java | 3 +- .../controller/WeatherDataController.java | 55 ++- .../org/jeecg/service/WeatherDataService.java | 2 +- .../service/impl/WeatherDataServiceImpl.java | 27 +- .../src/main/resources/application.yml | 2 +- .../src/main/resources/logback-spring.xml | 4 +- .../src/main/resources/logback-spring.xml | 44 ++ .../src/main/resources/logback-spring.xml | 37 +- .../src/main/resources/logback-spring.xml | 37 +- .../src/main/resources/logback-spring.xml | 37 +- .../src/main/resources/logback-spring.xml | 37 +- .../src/main/resources/application.yml | 2 +- .../src/main/resources/logback-spring.xml | 37 +- pom.xml | 6 +- 32 files changed, 803 insertions(+), 355 deletions(-) rename jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/{PrometheusQueryTypeEnum.java => PrometheusDBQueryTypeEnum.java} (53%) create mode 100644 jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/PrometheusHostQueryTypeEnum.java create mode 100644 jeecg-server-cloud/jeecg-data-analyze-start/src/main/resources/logback-spring.xml diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/PrometheusQueryTypeEnum.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/PrometheusDBQueryTypeEnum.java similarity index 53% rename from jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/PrometheusQueryTypeEnum.java rename to jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/PrometheusDBQueryTypeEnum.java index 23739a9..461ea19 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/PrometheusQueryTypeEnum.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/PrometheusDBQueryTypeEnum.java @@ -1,21 +1,19 @@ package org.jeecg.common.constant.enums; -import java.time.Instant; - /** * Prometheus 范围查询条件枚举 */ -public enum PrometheusQueryTypeEnum { +public enum PrometheusDBQueryTypeEnum { - FIVE_MIN("Last 5 minutes",(5*60),"15s"), - THIRTY_MIN("Last 30 minutes",(30*60),"15s"), - ONE_HOUR("Last 1 hour",(60*60),"15s"), - THREE_HOURS("Last 3 hours",(3*60*60),"15s"), - SIX_HOURS("Last 6 hours",(6*60*60),"15s"), - TWELVE_HOURS("Last 12 hours",(12*60*60),"1m0s"), - TWENTY_FOUR_HOURS("Last 24 hours",(24*60*60),"2m0s"), - TWO_DAYS("Last 2 days",(2*24*60*60),"5m0s"), - SEVEN_DAYS("Last 7 days",(7*24*60*60),"15m0s"); + FIVE_MIN("Last 5 minutes",(5*60),"30s"), + THIRTY_MIN("Last 30 minutes",(30*60),"30s"), + ONE_HOUR("Last 1 hour",(60*60),"30s"), + THREE_HOURS("Last 3 hours",(3*60*60),"40s"), + SIX_HOURS("Last 6 hours",(6*60*60),"2m0s"), + TWELVE_HOURS("Last 12 hours",(12*60*60),"4m0s"), + TWENTY_FOUR_HOURS("Last 24 hours",(24*60*60),"4m0s"), + TWO_DAYS("Last 2 days",(2*24*60*60),"10m0s"), + SEVEN_DAYS("Last 7 days",(7*24*60*60),"40m0s"); /** * Prometheus 范围查询条件 @@ -30,7 +28,7 @@ public enum PrometheusQueryTypeEnum { */ private String step; - PrometheusQueryTypeEnum(String conditions, Integer number, String step) { + PrometheusDBQueryTypeEnum(String conditions, Integer number, String step) { this.conditions = conditions; this.lastSecond = number; this.step = step; @@ -53,8 +51,8 @@ public enum PrometheusQueryTypeEnum { * @param conditions * @return */ - public static PrometheusQueryTypeEnum getQueryTypeEnum(String conditions) { - for (PrometheusQueryTypeEnum queryTypeEnum : PrometheusQueryTypeEnum.values()) { + public static PrometheusDBQueryTypeEnum getQueryTypeEnum(String conditions) { + for (PrometheusDBQueryTypeEnum queryTypeEnum : PrometheusDBQueryTypeEnum.values()) { if (queryTypeEnum.getConditions().equals(conditions)) { return queryTypeEnum; } diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/PrometheusHostQueryTypeEnum.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/PrometheusHostQueryTypeEnum.java new file mode 100644 index 0000000..6ce532a --- /dev/null +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/PrometheusHostQueryTypeEnum.java @@ -0,0 +1,72 @@ +package org.jeecg.common.constant.enums; + +/** + * Prometheus 范围查询条件枚举 + */ +public enum PrometheusHostQueryTypeEnum { + + FIVE_MIN("Last 5 minutes",(5*60),"15s","1m0s"), + THIRTY_MIN("Last 30 minutes",(30*60),"15s","1m0s"), + ONE_HOUR("Last 1 hour",(60*60),"15s","1m0s"), + THREE_HOURS("Last 3 hours",(3*60*60),"15s","1m0s"), + SIX_HOURS("Last 6 hours",(6*60*60),"15s","1m0s"), + TWELVE_HOURS("Last 12 hours",(12*60*60),"1m0s","1m15s"), + TWENTY_FOUR_HOURS("Last 24 hours",(24*60*60),"2m0s","2m15s"), + TWO_DAYS("Last 2 days",(2*24*60*60),"5m0s","2m15s"), + SEVEN_DAYS("Last 7 days",(7*24*60*60),"15m0s","15m15s"); + + /** + * Prometheus 范围查询条件 + */ + private String conditions; + /** + * Prometheus 范围起始时间需要减的值(秒) + */ + private long lastSecond; + /** + * 间隔步长 + */ + private String step; + + /** + * 范围向量的时间窗口 + */ + private String exprTime; + + PrometheusHostQueryTypeEnum(String conditions, Integer number, String step,String exprTime) { + this.conditions = conditions; + this.lastSecond = number; + this.step = step; + this.exprTime = exprTime; + } + + public String getConditions() { + return conditions; + } + + public long getLastSecond() { + return lastSecond; + } + + public String getStep() { + return step; + } + + public String getExprTime() { + return exprTime; + } + + /** + * 返回对应枚 + * @param conditions + * @return + */ + public static PrometheusHostQueryTypeEnum getQueryTypeEnum(String conditions) { + for (PrometheusHostQueryTypeEnum queryTypeEnum : PrometheusHostQueryTypeEnum.values()) { + if (queryTypeEnum.getConditions().equals(conditions)) { + return queryTypeEnum; + } + } + return null; + } +} diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/properties/PrometheusServerProperties.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/properties/PrometheusServerProperties.java index 683cc2d..c848a15 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/properties/PrometheusServerProperties.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/properties/PrometheusServerProperties.java @@ -23,4 +23,34 @@ public class PrometheusServerProperties { * 监测的网卡名称 */ private String networkCardName; + + /** + * pg数据库主机 + */ + private String pgHost; + + /** + * postgresql数据库端口 + */ + private Integer pgDBPort; + + /** + * postgresql管理员用户名称 + */ + private String pgAdmin; + + /** + * postgresql管理员用户密码 + */ + private String pgAdminPwd; + + /** + * 对于活跃连接数监控的哪些数据库 + */ + private String monitorDBNames; + + /** + * 数据库实例地址 + */ + private String dbInstance; } diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/SourceRebuildMonitoringData.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/SourceRebuildMonitoringData.java index fe1a7b8..90a29a0 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/SourceRebuildMonitoringData.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/SourceRebuildMonitoringData.java @@ -31,14 +31,13 @@ public class SourceRebuildMonitoringData implements Serializable { /** * 任务ID */ - @Excel(name = "任务主键", width = 10,height = 20,orderNum="0") @TableField(value = "task_id") private Integer taskId; /** * 台站名称 */ - @Excel(name = "台站名称", width = 20,height = 20,orderNum="1") + @Excel(name = "台站名称", width = 20,height = 20,orderNum="0") @NotBlank(message = "台站名称不能为空", groups = {InsertGroup.class, UpdateGroup.class}) @TableField(value = "station") private String station; @@ -46,7 +45,7 @@ public class SourceRebuildMonitoringData implements Serializable { /** * 核素名称 */ - @Excel(name = "核素名称", width = 20,height = 20,orderNum="2") + @Excel(name = "核素名称", width = 20,height = 20,orderNum="1") @NotBlank(message = "核素名称不能为空", groups = {InsertGroup.class, UpdateGroup.class}) @TableField(value = "nuclide") private String nuclide; @@ -54,7 +53,7 @@ public class SourceRebuildMonitoringData implements Serializable { /** * 测量停止时间 */ - @Excel(name = "测量停止时间", width = 25,height = 20,format = "yyyy-MM-dd HH:mm:ss",orderNum="3") + @Excel(name = "测量停止时间", width = 25,height = 20,format = "yyyy-MM-dd HH:mm:ss",orderNum="2") @NotNull(message = "测量停止时间不能为空", groups = {InsertGroup.class, UpdateGroup.class}) @TableField(value = "collect_stop") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @@ -63,7 +62,7 @@ public class SourceRebuildMonitoringData implements Serializable { /** * 活度浓度 */ - @Excel(name = "活度浓度", width = 25,height = 20,orderNum="4") + @Excel(name = "活度浓度", width = 25,height = 20,orderNum="3") @NotBlank(message = "活度浓度不能为空", groups = {InsertGroup.class, UpdateGroup.class}) @TableField(value = "activity") private String activity; @@ -71,7 +70,7 @@ public class SourceRebuildMonitoringData implements Serializable { /** * 不确定度 */ - @Excel(name = "不确定度", width = 25,height = 20,orderNum="5") + @Excel(name = "不确定度", width = 25,height = 20,orderNum="4") @NotBlank(message = "不确定度不能为空", groups = {InsertGroup.class, UpdateGroup.class}) @TableField(value = "uncertainty") private String uncertainty; @@ -79,7 +78,7 @@ public class SourceRebuildMonitoringData implements Serializable { /** * mdc */ - @Excel(name = "MDC", width = 25,height = 20,orderNum="6") + @Excel(name = "MDC", width = 25,height = 20,orderNum="5") @NotBlank(message = "mdc不能为空", groups = {InsertGroup.class, UpdateGroup.class}) @TableField(value = "mdc") private String mdc; diff --git a/jeecg-module-source-rebuild/src/main/java/org/jeecg/controller/SourceRebuildTaskController.java b/jeecg-module-source-rebuild/src/main/java/org/jeecg/controller/SourceRebuildTaskController.java index aac99e9..30ddbee 100644 --- a/jeecg-module-source-rebuild/src/main/java/org/jeecg/controller/SourceRebuildTaskController.java +++ b/jeecg-module-source-rebuild/src/main/java/org/jeecg/controller/SourceRebuildTaskController.java @@ -83,8 +83,9 @@ public class SourceRebuildTaskController{ @AutoLog(value = "启动任务") @Operation(summary = "启动任务") @PutMapping("runTask") - public Result runTask(@NotNull(message = "任务ID不能为空") Integer taskId){ - sourceRebuildTaskService.runTask(taskId); + public Result runTask(@RequestBody @Validated(value = UpdateGroup.class) SourceRebuildTask sourceRebuildTask){ + sourceRebuildTaskService.update(sourceRebuildTask); + sourceRebuildTaskService.runTask(sourceRebuildTask.getId()); return Result.OK(); } } diff --git a/jeecg-module-source-rebuild/src/main/java/org/jeecg/controller/TaskMonitoringDataController.java b/jeecg-module-source-rebuild/src/main/java/org/jeecg/controller/TaskMonitoringDataController.java index 72047bd..2b76a52 100644 --- a/jeecg-module-source-rebuild/src/main/java/org/jeecg/controller/TaskMonitoringDataController.java +++ b/jeecg-module-source-rebuild/src/main/java/org/jeecg/controller/TaskMonitoringDataController.java @@ -63,7 +63,8 @@ public class TaskMonitoringDataController { @AutoLog(value = "导入源项重建监测数据") @Operation(summary = "导入源项重建监测数据") @PostMapping("importTaskMonitoringData") - public Result importTaskMonitoringData(HttpServletRequest request, HttpServletResponse response){ + public Result importTaskMonitoringData(HttpServletRequest request){ + Integer taskId = Integer.valueOf(request.getParameter("taskId")); MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map fileMap = multipartRequest.getFileMap(); for (Map.Entry entity : fileMap.entrySet()) { @@ -76,8 +77,7 @@ public class TaskMonitoringDataController { try { ExcelImportCheckUtil.check(file.getInputStream(), SourceRebuildMonitoringData.class, params); List list = ExcelImportUtil.importExcel(file.getInputStream(), SourceRebuildMonitoringData.class, params); - System.out.println(list); - monitoringDataService.cteate(list); + monitoringDataService.cteate(taskId,list); return Result.ok("文件导入成功!"); } catch (Exception e) { log.error(e.getMessage(), e); diff --git a/jeecg-module-source-rebuild/src/main/java/org/jeecg/service/SourceRebuildMonitoringDataService.java b/jeecg-module-source-rebuild/src/main/java/org/jeecg/service/SourceRebuildMonitoringDataService.java index a2d574c..e6e102b 100644 --- a/jeecg-module-source-rebuild/src/main/java/org/jeecg/service/SourceRebuildMonitoringDataService.java +++ b/jeecg-module-source-rebuild/src/main/java/org/jeecg/service/SourceRebuildMonitoringDataService.java @@ -12,8 +12,9 @@ public interface SourceRebuildMonitoringDataService extends IService monitoringDatas); + void cteate(Integer taskId,List monitoringDatas); /** * 删除源项重建任务监测数据 diff --git a/jeecg-module-source-rebuild/src/main/java/org/jeecg/service/impl/SourceRebuildMonitoringDataServiceImpl.java b/jeecg-module-source-rebuild/src/main/java/org/jeecg/service/impl/SourceRebuildMonitoringDataServiceImpl.java index b65f509..ee80944 100644 --- a/jeecg-module-source-rebuild/src/main/java/org/jeecg/service/impl/SourceRebuildMonitoringDataServiceImpl.java +++ b/jeecg-module-source-rebuild/src/main/java/org/jeecg/service/impl/SourceRebuildMonitoringDataServiceImpl.java @@ -1,5 +1,6 @@ package org.jeecg.service.impl; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; @@ -19,12 +20,21 @@ public class SourceRebuildMonitoringDataServiceImpl extends ServiceImpl monitoringDatas) { + public void cteate(Integer taskId,List monitoringDatas) { + //先删除旧的,然后保存新的监测数据 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SourceRebuildMonitoringData::getTaskId, taskId); + this.remove(queryWrapper); + if(CollUtil.isNotEmpty(monitoringDatas)){ + for(SourceRebuildMonitoringData monitoringData : monitoringDatas){ + monitoringData.setTaskId(taskId); + } + } this.saveBatch(monitoringDatas); } diff --git a/jeecg-module-source-rebuild/src/main/java/org/jeecg/service/impl/SourceRebuildTaskServiceImpl.java b/jeecg-module-source-rebuild/src/main/java/org/jeecg/service/impl/SourceRebuildTaskServiceImpl.java index c292a70..5fa0001 100644 --- a/jeecg-module-source-rebuild/src/main/java/org/jeecg/service/impl/SourceRebuildTaskServiceImpl.java +++ b/jeecg-module-source-rebuild/src/main/java/org/jeecg/service/impl/SourceRebuildTaskServiceImpl.java @@ -179,15 +179,15 @@ public class SourceRebuildTaskServiceImpl extends ServiceImpl getCpuInfo() { -// return Result.OK(databaseMonitorService.getCpuInfo()); -// } -// -// @AutoLog(value = "获取内存监测数据") -// @GetMapping("getMemoryInfo") -// public Result getMemoryInfo() { -// return Result.OK(databaseMonitorService.getMemoryInfo()); -// } -// -// @AutoLog(value = "获取表空间信息") -// @GetMapping("getTableSpaceInfo") -// public Result getNetworkInfo() { -// return Result.OK(databaseMonitorService.getTableSpaceInfo()); -// } -// -// @AutoLog(value = "获取活跃连接数信息") -// @GetMapping("getActiveSessionInfo") -// public Result getDiskInfo() { -// return Result.OK(databaseMonitorService.getActiveSessionInfo()); -// } -// -// @AutoLog(value = "获取死锁信息") -// @GetMapping("getDeadlocksInfo") -// public Result getDeadlocksInfo() { -// return Result.OK(databaseMonitorService.getDeadlocksInfo()); -// } -// -// @AutoLog(value = "获取数据库占比信息") -// @GetMapping("getDatabaseProportionInfo") -// public Result getDatabaseProportionInfo() { -// return Result.OK(databaseMonitorService.getDatabaseProportionInfo()); -// } -// -//} +package org.jeecg.modules.monitor.controller; + +import jakarta.validation.constraints.NotBlank; +import lombok.RequiredArgsConstructor; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.modules.monitor.service.DatabaseMonitorService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Validated +@RestController +@RequestMapping("monitor") +@RequiredArgsConstructor +public class DatabaseMonitorController { + + private final DatabaseMonitorService databaseMonitorService; + + @AutoLog(value = "查询当前时刻的CPU使用信息") + @GetMapping("getDBCpuInfo") + public Result getDBCpuInfo() { + return Result.OK(databaseMonitorService.getCpuInfo()); + } + + @AutoLog(value = "查询过去指定时间范围内的CPU使用信息") + @GetMapping("getDBCpuInfoList") + public Result getDBCpuInfoList(@NotBlank(message = "查询条件不能为空") String conditions) { + return Result.OK(databaseMonitorService.getCpuInfoList(conditions)); + } + + @AutoLog(value = "查询当前时刻的内存使用信息") + @GetMapping("getDBMemoryInfo") + public Result getDBMemoryInfo() { + return Result.OK(databaseMonitorService.getDBMemoryInfo()); + } + + @AutoLog(value = "查询过去指定时间范围内的内存使用信息") + @GetMapping("getDBMemoryInfoList") + public Result getDBMemoryInfoList(@NotBlank(message = "查询条件不能为空") String conditions) { + return Result.OK(databaseMonitorService.getMemoryInfoList(conditions)); + } + + @AutoLog(value = "查询数据库表空间信息") + @GetMapping("getDBTableSpaceInfo") + public Result getDBTableSpaceInfo() { + return Result.OK(databaseMonitorService.getTableSpaceInfo()); + } + + @AutoLog(value = "查询当前时刻的数据库活跃连接数使用信息") + @GetMapping("getDBActiveSessionInfo") + public Result getDBActiveSessionInfo() { + return Result.OK(databaseMonitorService.getActiveSessionInfo()); + } + + @AutoLog(value = "查询过去指定时间范围内的数据库活跃连接数信息") + @GetMapping("getDBActiveSessionInfoList") + public Result getDBActiveSessionInfoList(@NotBlank(message = "查询条件不能为空") String conditions) { + return Result.OK(databaseMonitorService.getActiveSessionInfoList(conditions)); + } + + @AutoLog(value = "查询当前时刻的数据库死锁信息") + @GetMapping("getDBDeadlocksInfo") + public Result getDeadlocksInfo() { + return Result.OK(databaseMonitorService.getDeadlocksInfo()); + } + + @AutoLog(value = "查询过去指定时间范围内的数据库死锁信息") + @GetMapping("getDeadlocksInfoList") + public Result getDeadlocksInfoList(@NotBlank(message = "查询条件不能为空") String conditions) { + return Result.OK(databaseMonitorService.getDeadlocksInfoList(conditions)); + } + + @AutoLog(value = "查询数据库占比信息") + @GetMapping("getDBProportionInfo") + public Result getDatabaseProportionInfo() { + return Result.OK(databaseMonitorService.getDatabaseProportionInfo()); + } + +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/monitor/controller/ServiceMonitorController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/monitor/controller/ServiceMonitorController.java index 100341a..b6e8f25 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/monitor/controller/ServiceMonitorController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/monitor/controller/ServiceMonitorController.java @@ -20,8 +20,8 @@ public class ServiceMonitorController { @AutoLog(value = "查询当前时刻的CPU使用率") @GetMapping("getCpuInfo") - public Result getCpuInfo() { - return Result.OK(hostMonitorService.getCpuInfo()); + public Result getCpuInfo(@NotBlank(message = "查询条件不能为空") String conditions) { + return Result.OK(hostMonitorService.getCpuInfo(conditions)); } @AutoLog(value = "查询过去指定时间范围内的CPU使用率") @@ -56,8 +56,8 @@ public class ServiceMonitorController { @AutoLog(value = "获取网络带宽监测数据") @GetMapping("getNetworkInfo") - public Result getNetworkInfo() { - return Result.OK(hostMonitorService.getNetworkInfo()); + public Result getNetworkInfo(@NotBlank(message = "查询条件不能为空") String conditions) { + return Result.OK(hostMonitorService.getNetworkInfo(conditions)); } @AutoLog(value = "获取网络带宽监测数据") diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/monitor/mapper/DatabaseMonitorMapper.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/monitor/mapper/DatabaseMonitorMapper.java index 6bbcbc0..62b6e7e 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/monitor/mapper/DatabaseMonitorMapper.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/monitor/mapper/DatabaseMonitorMapper.java @@ -12,5 +12,5 @@ public interface DatabaseMonitorMapper extends BaseMapper { "pg_database_size(datname) AS dataSize " + "FROM pg_database " + "WHERE datistemplate = false") - List getActiveSessionInfo(); + List getDatabaseProportionInfo(); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/monitor/service/DatabaseMonitorService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/monitor/service/DatabaseMonitorService.java index 835c44a..d4db5df 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/monitor/service/DatabaseMonitorService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/monitor/service/DatabaseMonitorService.java @@ -9,31 +9,54 @@ public interface DatabaseMonitorService { /** * 获取CPU信息 + * @return */ - Map getCpuInfo(); + Map getCpuInfo(); + + /** + * 获取CPU信息列表 + */ + List> getCpuInfoList(String conditions); /** * 获取内存信息 */ - Map getMemoryInfo(); + Map getDBMemoryInfo(); + + /** + * 获取内存信息列表 + */ + List> getMemoryInfoList(String conditions); /** * 获取表空间信息 * @return */ - Map getTableSpaceInfo(); + List> getTableSpaceInfo(); /** * 获取活跃连接数信息 * @return */ - Map getActiveSessionInfo(); + Map getActiveSessionInfo(); + + /** + * 获取活跃连接数信息列表 + * @return + */ + List> getActiveSessionInfoList(String conditions); /** * 获取死锁信息 * @return */ - Map getDeadlocksInfo(); + Map getDeadlocksInfo(); + + /** + * 获取死锁信息列表 + * @return + */ + List> getDeadlocksInfoList(String conditions); /** * 获取数据库占比信息 diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/monitor/service/HostMonitorService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/monitor/service/HostMonitorService.java index daab3b0..bfe6ef2 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/monitor/service/HostMonitorService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/monitor/service/HostMonitorService.java @@ -9,7 +9,7 @@ public interface HostMonitorService { /** * 获取CPU信息 */ - Map getCpuInfo(); + Map getCpuInfo(String conditions); /** * 获取CPU信息列表 @@ -40,7 +40,7 @@ public interface HostMonitorService { /** * 获取网络信息 */ - Map getNetworkInfo(); + Map getNetworkInfo(String conditions); /** * 获取网络信息列表 diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/monitor/service/impl/DatabaseMonitorServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/monitor/service/impl/DatabaseMonitorServiceImpl.java index cfcda95..a3e8701 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/monitor/service/impl/DatabaseMonitorServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/monitor/service/impl/DatabaseMonitorServiceImpl.java @@ -1,33 +1,200 @@ package org.jeecg.modules.monitor.service.impl; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.constant.enums.PrometheusDBQueryTypeEnum; +import org.jeecg.common.constant.enums.PrometheusHostQueryTypeEnum; +import org.jeecg.common.properties.PrometheusServerProperties; import org.jeecg.modules.monitor.mapper.DatabaseMonitorMapper; import org.jeecg.modules.monitor.service.DatabaseMonitorService; import org.jeecg.modules.monitor.vo.DatabaseProportionInfo; +import org.jeecg.modules.monitor.vo.PrometheusResponse; import org.springframework.stereotype.Service; -import java.util.List; -import java.util.Map; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.util.UriComponentsBuilder; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.net.URI; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.Statement; +import java.time.Instant; +import java.util.*; +@Slf4j @Service @RequiredArgsConstructor public class DatabaseMonitorServiceImpl implements DatabaseMonitorService { + private final WebClient webClient; private final DatabaseMonitorMapper databaseMonitorMapper; + private final PrometheusServerProperties serverProperties; /** * 获取CPU信息 + * + * @return */ @Override public Map getCpuInfo() { - return Map.of(); + Map result = new HashMap<>(); + try { + //Prometheus 服务器地址 + String url = serverProperties.getServerUrl(); + //目标主机实例(node-exporter 的地址) + String instance = serverProperties.getDbInstance(); + //查询CPU使用时间 + String cpuQuery = "avg(rate(process_cpu_seconds_total{release=\"\", instance=\""+instance+"\"}[5m]) * 1000)"; + PrometheusResponse response = webClient.get() + .uri(buildUri(url,cpuQuery)) + .retrieve() + .bodyToMono(PrometheusResponse.class) + .block(); + if(Objects.nonNull(response) && + Objects.nonNull(response.getData()) && + CollUtil.isNotEmpty(response.getData().getResult()) + ) { + PrometheusResponse.Result cpuInfo = response.getData().getResult().get(0); + if(CollUtil.isNotEmpty(cpuInfo.getValue())) { + Date date = new Date(cpuInfo.getValue().get(0).longValue()*1000); + Double useRate = BigDecimal.valueOf(cpuInfo.getValue().get(1)).setScale(2, RoundingMode.HALF_UP).doubleValue(); + result.put("date", DateUtil.format(date, "MM/dd HH:mm:ss")); + result.put("cpuTime", useRate); + } + } + }catch (Exception e){ + log.error("获取数据库CPU使用时间信息错误,请检查Prometheus服务是否正常启动或Java请求参数是否正确,详细堆栈错误为:{}",e.getMessage()); + } + return result; + } + + /** + * 获取CPU信息列表 + */ + @Override + public List> getCpuInfoList(String conditions) { + List> result = new ArrayList<>(); + try { + //Prometheus 服务器地址 + String url = serverProperties.getServerUrl(); + //目标主机实例(node-exporter 的地址) + String instance = serverProperties.getDbInstance(); + //查询数据库CPU使用 + String cpuInfoQuery = "avg(rate(process_cpu_seconds_total{release=\"\", instance=\""+instance+"\"}[5m]) * 1000)"; + PrometheusDBQueryTypeEnum queryTypeEnum = PrometheusDBQueryTypeEnum.getQueryTypeEnum(conditions); + long end = Instant.now().getEpochSecond(); + long start = end - queryTypeEnum.getLastSecond(); + String step = queryTypeEnum.getStep(); + PrometheusResponse response = webClient.get() + .uri(buildUri(url,cpuInfoQuery,start,end,step)) + .retrieve() + .bodyToMono(PrometheusResponse.class) + .block(); + if(Objects.nonNull(response) && + Objects.nonNull(response.getData()) && + CollUtil.isNotEmpty(response.getData().getResult()) + ) { + PrometheusResponse.Result activeSessionInfoList = response.getData().getResult().get(0); + if(CollUtil.isNotEmpty(activeSessionInfoList.getValues())) { + List> pointDatas = activeSessionInfoList.getValues(); + for(List pointData : pointDatas) { + Map pointDataMap = new HashMap<>(); + Date date = new Date(pointData.get(0).longValue()*1000); + Double cpuTime = BigDecimal.valueOf(pointData.get(1)).setScale(2, RoundingMode.HALF_UP).doubleValue(); + pointDataMap.put("date", DateUtil.format(date, "MM/dd HH:mm:ss")); + pointDataMap.put("cpuTime", cpuTime); + result.add(pointDataMap); + } + } + } + }catch (Exception e){ + log.error("获取数据库CPU使用时间信息错误,请检查Prometheus服务是否正常启动或Java请求参数是否正确,详细堆栈错误为:{}",e.getMessage()); + } + return result; } /** * 获取内存信息 */ @Override - public Map getMemoryInfo() { - return Map.of(); + public Map getDBMemoryInfo() { + Map result = new HashMap<>(); + try { + //Prometheus 服务器地址 + String url = serverProperties.getServerUrl(); + //目标主机实例(node-exporter 的地址) + String instance = serverProperties.getDbInstance(); + //查询内存利用率 + String cpuQuery = "avg(rate(process_resident_memory_bytes{release=\"\", instance=\""+instance+"\"}[5m]))"; + PrometheusResponse response = webClient.get() + .uri(buildUri(url,cpuQuery)) + .retrieve() + .bodyToMono(PrometheusResponse.class) + .block(); + if(Objects.nonNull(response) && + Objects.nonNull(response.getData()) && + CollUtil.isNotEmpty(response.getData().getResult()) + ) { + PrometheusResponse.Result memInfo = response.getData().getResult().get(0); + if(CollUtil.isNotEmpty(memInfo.getValue())) { + Date date = new Date(memInfo.getValue().get(0).longValue()*1000); + Double useRate = BigDecimal.valueOf(memInfo.getValue().get(1)).setScale(2, RoundingMode.HALF_UP).doubleValue(); + result.put("date", DateUtil.format(date, "MM/dd HH:mm:ss")); + result.put("memUsage", useRate); + } + } + }catch (Exception e){ + log.error("获取数据库内存使用情况信息错误,请检查Prometheus服务是否正常启动或Java请求参数是否正确,详细堆栈错误为:{}",e.getMessage()); + } + return result; + } + + /** + * 获取内存信息列表 + */ + @Override + public List> getMemoryInfoList(String conditions) { + List> result = new ArrayList<>(); + try { + //Prometheus 服务器地址 + String url = serverProperties.getServerUrl(); + //目标主机实例(node-exporter 的地址) + String instance = serverProperties.getDbInstance(); + //查询数据库内存使用 + String cpuInfoQuery = "avg(rate(process_resident_memory_bytes{release=\"\", instance=\""+instance+"\"}[5m]))"; + PrometheusDBQueryTypeEnum queryTypeEnum = PrometheusDBQueryTypeEnum.getQueryTypeEnum(conditions); + long end = Instant.now().getEpochSecond(); + long start = end - queryTypeEnum.getLastSecond(); + String step = queryTypeEnum.getStep(); + PrometheusResponse response = webClient.get() + .uri(buildUri(url,cpuInfoQuery,start,end,step)) + .retrieve() + .bodyToMono(PrometheusResponse.class) + .block(); + if(Objects.nonNull(response) && + Objects.nonNull(response.getData()) && + CollUtil.isNotEmpty(response.getData().getResult()) + ) { + PrometheusResponse.Result activeSessionInfoList = response.getData().getResult().get(0); + if(CollUtil.isNotEmpty(activeSessionInfoList.getValues())) { + List> pointDatas = activeSessionInfoList.getValues(); + for(List pointData : pointDatas) { + Map pointDataMap = new HashMap<>(); + Date date = new Date(pointData.get(0).longValue()*1000); + Double memUsage = BigDecimal.valueOf(pointData.get(1)).setScale(2, RoundingMode.HALF_UP).doubleValue(); + pointDataMap.put("date", DateUtil.format(date, "MM/dd HH:mm:ss")); + pointDataMap.put("memUsage", memUsage); + result.add(pointDataMap); + } + } + } + }catch (Exception e){ + log.error("获取数据库内存使用情况信息错误,请检查Prometheus服务是否正常启动或Java请求参数是否正确,详细堆栈错误为:{}",e.getMessage()); + } + return result; } /** @@ -36,8 +203,31 @@ public class DatabaseMonitorServiceImpl implements DatabaseMonitorService { * @return */ @Override - public Map getTableSpaceInfo() { - return Map.of(); + public List> getTableSpaceInfo() { + List> results = new ArrayList<>(); + String url = "jdbc:postgresql://"+serverProperties.getPgHost()+":"+serverProperties.getPgDBPort()+"/"+serverProperties.getPgAdmin()+"?stringtype=unspecified&tcpKeepAlive=true&ApplicationName=YourAppName"; + String user = serverProperties.getPgAdmin(); + String password = serverProperties.getPgAdminPwd(); + String sql = "" + + "SELECT " + + " spcname AS tablespace_name," + + " pg_size_pretty(pg_tablespace_size(spcname)) AS size " + + "FROM pg_tablespace " + + "ORDER BY pg_tablespace_size(spcname) DESC"; + try (Connection conn = DriverManager.getConnection(url, user, password); + Statement stmt = conn.createStatement(); + ResultSet rs = stmt.executeQuery(sql)) { + + while (rs.next()) { + Map row = new HashMap<>(); + row.put("tablespaceName", rs.getString("tablespace_name")); + row.put("size", rs.getString("size")); + results.add(row); + } + } catch (Exception e) { + e.printStackTrace(); + } + return results; } /** @@ -47,7 +237,85 @@ public class DatabaseMonitorServiceImpl implements DatabaseMonitorService { */ @Override public Map getActiveSessionInfo() { - return Map.of(); + Map result = new HashMap<>(); + try { + //Prometheus 服务器地址 + String url = serverProperties.getServerUrl(); + //目标主机实例(node-exporter 的地址) + String instance = serverProperties.getDbInstance(); + //监测的数据库 + String monitorDBNames = serverProperties.getMonitorDBNames(); + //查询活跃连接数 + String activeSessionQuery = "pg_stat_activity_count{datname=~\"("+monitorDBNames+")\", instance=~\""+instance+"\", state=\"active\"} !=0"; + PrometheusResponse response = webClient.get() + .uri(buildUri(url,activeSessionQuery)) + .retrieve() + .bodyToMono(PrometheusResponse.class) + .block(); + if(Objects.nonNull(response) && + Objects.nonNull(response.getData()) && + CollUtil.isNotEmpty(response.getData().getResult()) + ) { + PrometheusResponse.Result activeSessionInfo = response.getData().getResult().get(0); + if(CollUtil.isNotEmpty(activeSessionInfo.getValue())) { + Date date = new Date(activeSessionInfo.getValue().get(0).longValue()*1000); + Double useRate = BigDecimal.valueOf(activeSessionInfo.getValue().get(1)).setScale(2, RoundingMode.HALF_UP).doubleValue(); + result.put("date", DateUtil.format(date, "MM/dd HH:mm:ss")); + result.put("activeSessions", useRate); + } + } + }catch (Exception e){ + log.error("获取数据库活跃连接数信息错误,请检查Prometheus服务是否正常启动或Java请求参数是否正确,详细堆栈错误为:{}",e.getMessage()); + } + return result; + } + + /** + * 获取活跃连接数信息列表 + * @return + */ + @Override + public List> getActiveSessionInfoList(String conditions) { + List> result = new ArrayList<>(); + try { + //Prometheus 服务器地址 + String url = serverProperties.getServerUrl(); + //目标主机实例(node-exporter 的地址) + String instance = serverProperties.getDbInstance(); + //监测的数据库 + String monitorDBNames = serverProperties.getMonitorDBNames(); + //查询数据库活跃连接数 + String activeSessionQuery = "pg_stat_activity_count{datname=~\"("+monitorDBNames+")\", instance=~\""+instance+"\", state=\"active\"} !=0"; + PrometheusDBQueryTypeEnum queryTypeEnum = PrometheusDBQueryTypeEnum.getQueryTypeEnum(conditions); + long end = Instant.now().getEpochSecond(); + long start = end - queryTypeEnum.getLastSecond(); + String step = queryTypeEnum.getStep(); + PrometheusResponse response = webClient.get() + .uri(buildUri(url,activeSessionQuery,start,end,step)) + .retrieve() + .bodyToMono(PrometheusResponse.class) + .block(); + if(Objects.nonNull(response) && + Objects.nonNull(response.getData()) && + CollUtil.isNotEmpty(response.getData().getResult()) + ) { + PrometheusResponse.Result activeSessionInfoList = response.getData().getResult().get(0); + if(CollUtil.isNotEmpty(activeSessionInfoList.getValues())) { + List> pointDatas = activeSessionInfoList.getValues(); + for(List pointData : pointDatas) { + Map pointDataMap = new HashMap<>(); + Date date = new Date(pointData.get(0).longValue()*1000); + Double useRate = BigDecimal.valueOf(pointData.get(1)).setScale(2, RoundingMode.HALF_UP).doubleValue(); + pointDataMap.put("date", DateUtil.format(date, "MM/dd HH:mm:ss")); + pointDataMap.put("activeSessions", useRate); + result.add(pointDataMap); + } + } + } + }catch (Exception e){ + log.error("获取数据库活跃连接数信息错误,请检查Prometheus服务是否正常启动或Java请求参数是否正确,详细堆栈错误为:{}",e.getMessage()); + } + return result; } /** @@ -57,8 +325,83 @@ public class DatabaseMonitorServiceImpl implements DatabaseMonitorService { */ @Override public Map getDeadlocksInfo() { - //irate(pg_stat_database_deadlocks{instance="192.168.186.143:9187", datname=~"postgres"}[5m]) - return Map.of(); + Map result = new HashMap<>(); + try { + //Prometheus 服务器地址 + String url = serverProperties.getServerUrl(); + //目标主机实例(node-exporter 的地址) + String instance = serverProperties.getDbInstance(); + //查询数据库死锁信息 + String deadlocksQuery = "irate(pg_stat_database_deadlocks{instance=\""+instance+"\", datname=~\"postgres\"}[5m])"; + PrometheusResponse response = webClient.get() + .uri(buildUri(url,deadlocksQuery)) + .retrieve() + .bodyToMono(PrometheusResponse.class) + .block(); + if(Objects.nonNull(response) && + Objects.nonNull(response.getData()) && + CollUtil.isNotEmpty(response.getData().getResult()) + ) { + PrometheusResponse.Result deadlocksInfo = response.getData().getResult().get(0); + if(CollUtil.isNotEmpty(deadlocksInfo.getValue())) { + Date date = new Date(deadlocksInfo.getValue().get(0).longValue()*1000); + Double useRate = BigDecimal.valueOf(deadlocksInfo.getValue().get(1)).setScale(2, RoundingMode.HALF_UP).doubleValue(); + result.put("date", DateUtil.format(date, "MM/dd HH:mm:ss")); + result.put("count", useRate); + } + } + }catch (Exception e){ + log.error("获取数据库死锁信息错误,请检查Prometheus服务是否正常启动或Java请求参数是否正确,详细堆栈错误为:{}",e.getMessage()); + } + return result; + } + + /** + * 获取死锁信息 + * + * @return + */ + @Override + public List> getDeadlocksInfoList(String conditions) { + // + List> result = new ArrayList<>(); + try { + //Prometheus 服务器地址 + String url = serverProperties.getServerUrl(); + //目标主机实例(node-exporter 的地址) + String instance = serverProperties.getDbInstance(); + //查询数据库死锁信息 + String deadlocksQuery = "irate(pg_stat_database_deadlocks{instance=\""+instance+"\", datname=~\"postgres\"}[5m])"; + PrometheusDBQueryTypeEnum queryTypeEnum = PrometheusDBQueryTypeEnum.getQueryTypeEnum(conditions); + long end = Instant.now().getEpochSecond(); + long start = end - queryTypeEnum.getLastSecond(); + String step = queryTypeEnum.getStep(); + PrometheusResponse response = webClient.get() + .uri(buildUri(url,deadlocksQuery,start,end,step)) + .retrieve() + .bodyToMono(PrometheusResponse.class) + .block(); + if(Objects.nonNull(response) && + Objects.nonNull(response.getData()) && + CollUtil.isNotEmpty(response.getData().getResult()) + ) { + PrometheusResponse.Result activeSessionInfoList = response.getData().getResult().get(0); + if(CollUtil.isNotEmpty(activeSessionInfoList.getValues())) { + List> pointDatas = activeSessionInfoList.getValues(); + for(List pointData : pointDatas) { + Map pointDataMap = new HashMap<>(); + Date date = new Date(pointData.get(0).longValue()*1000); + Double count = BigDecimal.valueOf(pointData.get(1)).setScale(2, RoundingMode.HALF_UP).doubleValue(); + pointDataMap.put("date", DateUtil.format(date, "MM/dd HH:mm:ss")); + pointDataMap.put("count", count); + result.add(pointDataMap); + } + } + } + }catch (Exception e){ + log.error("获取数据库死锁信息错误,请检查Prometheus服务是否正常启动或Java请求参数是否正确,详细堆栈错误为:{}",e.getMessage()); + } + return result; } /** @@ -67,6 +410,41 @@ public class DatabaseMonitorServiceImpl implements DatabaseMonitorService { */ @Override public List getDatabaseProportionInfo() { - return databaseMonitorMapper.getActiveSessionInfo(); + return databaseMonitorMapper.getDatabaseProportionInfo(); + } + + /** + * 构建URI + * @param url + * @param query + * @return + */ + private URI buildUri(String url, String query){ + URI uri = UriComponentsBuilder.fromHttpUrl(url + "/api/v1/query") + .queryParam("query", query) + .build() + .toUri(); + return uri; + } + + /** + * 构建URI + * @param url + * @param query + * @return + */ + private URI buildUri(String url,String query,Long start,Long end,String step){ + String uriAddr = String.format( + "%s/api/v1/query_range?query=%s&start=%d&end=%d&step=%s", + url, + query, + start, + end, + step + ); + URI uri = UriComponentsBuilder.fromHttpUrl(uriAddr) + .build() + .toUri(); + return uri; } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/monitor/service/impl/HostMonitorServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/monitor/service/impl/HostMonitorServiceImpl.java index 026cab0..0f94b7c 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/monitor/service/impl/HostMonitorServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/monitor/service/impl/HostMonitorServiceImpl.java @@ -4,7 +4,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.jeecg.common.constant.enums.PrometheusQueryTypeEnum; +import org.jeecg.common.constant.enums.PrometheusHostQueryTypeEnum; import org.jeecg.common.properties.PrometheusServerProperties; import org.jeecg.modules.monitor.service.HostMonitorService; import org.jeecg.modules.monitor.vo.PrometheusResponse; @@ -32,7 +32,7 @@ public class HostMonitorServiceImpl implements HostMonitorService { * 获取CPU信息 */ @Override - public Map getCpuInfo() { + public Map getCpuInfo(String conditions) { Map result = new HashMap<>(); try { //Prometheus 服务器地址 @@ -40,7 +40,9 @@ public class HostMonitorServiceImpl implements HostMonitorService { //目标主机实例(node-exporter 的地址) String instance = serverProperties.getInstance(); //查询CPU利用率 - String cpuQuery = "100 * (1 - avg(rate(node_cpu_seconds_total{mode=\"idle\", instance=\""+instance+"\"}[15s])))"; + PrometheusHostQueryTypeEnum queryTypeEnum = PrometheusHostQueryTypeEnum.getQueryTypeEnum(conditions); + String exprTime = queryTypeEnum.getExprTime(); + String cpuQuery = "100 * (1 - avg(rate(node_cpu_seconds_total{mode=\"idle\", instance=\""+instance+"\"}["+exprTime+"])))"; PrometheusResponse response = webClient.get() .uri(buildUri(url,cpuQuery)) .retrieve() @@ -76,11 +78,12 @@ public class HostMonitorServiceImpl implements HostMonitorService { //目标主机实例(node-exporter 的地址) String instance = serverProperties.getInstance(); //查询CPU利用率 - String cpuQuery = "100 * (1 - avg(rate(node_cpu_seconds_total{mode=\"idle\", instance=\""+instance+"\"}[15s])))"; - PrometheusQueryTypeEnum queryTypeEnum = PrometheusQueryTypeEnum.getQueryTypeEnum(conditions); + PrometheusHostQueryTypeEnum queryTypeEnum = PrometheusHostQueryTypeEnum.getQueryTypeEnum(conditions); long end = Instant.now().getEpochSecond(); long start = end - queryTypeEnum.getLastSecond(); String step = queryTypeEnum.getStep(); + String exprTime = queryTypeEnum.getExprTime(); + String cpuQuery = "100 * (1 - avg(rate(node_cpu_seconds_total{mode=\"idle\", instance=\""+instance+"\"}["+exprTime+"])))"; PrometheusResponse response = webClient.get() .uri(buildUri(url,cpuQuery,start,end,step)) .retrieve() @@ -228,7 +231,7 @@ public class HostMonitorServiceImpl implements HostMonitorService { String instance = serverProperties.getInstance(); //使用率 String usageRateQuery = "(1 - (node_memory_MemAvailable_bytes{instance=\""+instance+"\"} / node_memory_MemTotal_bytes{instance=\""+instance+"\"})) * 100"; - PrometheusQueryTypeEnum queryTypeEnum = PrometheusQueryTypeEnum.getQueryTypeEnum(conditions); + PrometheusHostQueryTypeEnum queryTypeEnum = PrometheusHostQueryTypeEnum.getQueryTypeEnum(conditions); long end = Instant.now().getEpochSecond(); long start = end - queryTypeEnum.getLastSecond(); String step = queryTypeEnum.getStep(); @@ -296,15 +299,17 @@ public class HostMonitorServiceImpl implements HostMonitorService { * 获取网络信息 */ @Override - public Map getNetworkInfo() { + public Map getNetworkInfo(String conditions) { Map result = new HashMap<>(); try { //Prometheus 服务器地址 String url = serverProperties.getServerUrl(); //目标主机实例(node-exporter 的地址) String instance = serverProperties.getInstance(); + PrometheusHostQueryTypeEnum queryTypeEnum = PrometheusHostQueryTypeEnum.getQueryTypeEnum(conditions); + String exprTime = queryTypeEnum.getExprTime(); //接收带宽 (Kbps) - String receiveKbpsQuery = "rate(node_network_receive_bytes_total{instance=\"" + instance + "\", device=\""+serverProperties.getNetworkCardName()+"\"}[15s]) * 8 / 1000"; + String receiveKbpsQuery = "rate(node_network_receive_bytes_total{instance=\"" + instance + "\", device=\""+serverProperties.getNetworkCardName()+"\"}["+exprTime+"]) * 8 / 1000"; PrometheusResponse receiveKbpsResponse = webClient.get() .uri(buildUri(url,receiveKbpsQuery)) .retrieve() @@ -324,7 +329,7 @@ public class HostMonitorServiceImpl implements HostMonitorService { } //发送带宽 (Kbps) - String transmitKbpsQuery = "rate(node_network_transmit_bytes_total{instance=\"" + instance + "\", device=\""+serverProperties.getNetworkCardName()+"\"}[15s]) * 8 / 1000"; + String transmitKbpsQuery = "rate(node_network_transmit_bytes_total{instance=\"" + instance + "\", device=\""+serverProperties.getNetworkCardName()+"\"}["+exprTime+"]) * 8 / 1000"; PrometheusResponse transmitKbpsResponse = webClient.get() .uri(buildUri(url,transmitKbpsQuery)) .retrieve() @@ -362,12 +367,13 @@ public class HostMonitorServiceImpl implements HostMonitorService { //目标主机实例(node-exporter 的地址) String instance = serverProperties.getInstance(); //构建查询参数 - PrometheusQueryTypeEnum queryTypeEnum = PrometheusQueryTypeEnum.getQueryTypeEnum(conditions); + PrometheusHostQueryTypeEnum queryTypeEnum = PrometheusHostQueryTypeEnum.getQueryTypeEnum(conditions); long end = Instant.now().getEpochSecond(); long start = end - queryTypeEnum.getLastSecond(); String step = queryTypeEnum.getStep(); + String exprTime = queryTypeEnum.getExprTime(); //接收带宽 (Kbps) - String receiveKbpsQuery = "rate(node_network_receive_bytes_total{instance=\"" + instance + "\", device=\""+serverProperties.getNetworkCardName()+"\"}[15s]) * 8 / 1000"; + String receiveKbpsQuery = "rate(node_network_receive_bytes_total{instance=\"" + instance + "\", device=\""+serverProperties.getNetworkCardName()+"\"}["+exprTime+"]) * 8 / 1000"; PrometheusResponse receiveKbpsResponse = webClient.get() .uri(buildUri(url,receiveKbpsQuery,start,end,step)) .retrieve() @@ -394,7 +400,7 @@ public class HostMonitorServiceImpl implements HostMonitorService { } //发送带宽 (Kbps) - String transmitKbpsQuery = "rate(node_network_transmit_bytes_total{instance=\"" + instance + "\", device=\""+serverProperties.getNetworkCardName()+"\"}[15s]) * 8 / 1000"; + String transmitKbpsQuery = "rate(node_network_transmit_bytes_total{instance=\"" + instance + "\", device=\""+serverProperties.getNetworkCardName()+"\"}["+exprTime+"]) * 8 / 1000"; PrometheusResponse transmitKbpsResponse = webClient.get() .uri(buildUri(url,transmitKbpsQuery,start,end,step)) .retrieve() @@ -493,10 +499,4 @@ public class HostMonitorServiceImpl implements HostMonitorService { .toUri(); return uri; } - - //&start=%d&end=%d&step=%s - public static void main(String[] args) { - Date date = new Date(1758868629*1000L); - System.out.println(DateUtil.format(date, "yyyy-MM-dd HH:mm:ss")); - } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java index b67be6e..01507c1 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java @@ -65,8 +65,7 @@ public class SysBaseApiImpl implements ISysBaseAPI { if (oConvertUtils.isEmpty(username)) { return null; } - LoginUser user = authUserService.getEncodeUserInfo(username); - return user; + return authUserService.getEncodeUserInfo(username); } @Override diff --git a/jeecg-module-weather/src/main/java/org/jeecg/controller/WeatherDataController.java b/jeecg-module-weather/src/main/java/org/jeecg/controller/WeatherDataController.java index 97068f0..2918a7a 100644 --- a/jeecg-module-weather/src/main/java/org/jeecg/controller/WeatherDataController.java +++ b/jeecg-module-weather/src/main/java/org/jeecg/controller/WeatherDataController.java @@ -43,7 +43,7 @@ public class WeatherDataController { @AutoLog(value = "分页查询气象文件数据") @Operation(summary = "分页查询气象文件数据") @GetMapping("page") - public Result page(PageRequest pageRequest, String fileExt, Integer dataSource, + public Result page(PageRequest pageRequest, String fileExt, String dataSource, @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate startDate, @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate endDate) { IPage page = weatherDataService.page(pageRequest,fileExt,dataSource,startDate,endDate); @@ -67,9 +67,10 @@ public class WeatherDataController { public Result uploadFile(FileVo fileVo){ if (!fileVo.getFileExt().equals(WeatherFileSuffixEnum.GRIB.getValue()) && !fileVo.getFileExt().equals(WeatherFileSuffixEnum.GRIB2.getValue())){ throw new RuntimeException("不支持当前上传的文件类型!"); + }else{ + FileUploadResultVo resultVo = weatherDataService.uploadFile(fileVo); + return Result.ok(resultVo); } - FileUploadResultVo resultVo = weatherDataService.uploadFile(fileVo); - return Result.ok(resultVo); } /** @@ -113,36 +114,34 @@ public class WeatherDataController { public static void main(String[] args) { //reftime_ISO - String filePath = "F:\\工作\\五木\\放射性核素监测数据综合分析及氙本底源解析系统\\其他资料\\气象数据\\中国CRA40再分析数据\\CRA40\\20250524\\CRA40_AVO_2025052418_GLB_0P25_HOUR_V1_0_0.grib2"; - String filePath1 = "F:\\工作\\五木\\放射性核素监测数据综合分析及氙本底源解析系统\\其他资料\\气象数据\\中国CRA40再分析数据\\GRAPES\\2024110100\\Z_NAFP_C_BABJ_20241101000000_P_NWPC-GRAPES-GFS-HNEHE-00000.grib2"; - String filePath2 = "F:\\工作\\五木\\放射性核素监测数据综合分析及氙本底源解析系统\\其他资料\\气象数据\\盘古模型预测数据\\panguweather_2025073106.grib"; -// try { -// String md5 = calculateMD5(filePath); -// System.out.println("MD5: " + md5); -// } catch (IOException e) { -// e.printStackTrace(); -// } - try (NetcdfFile ncFile = NetcdfFile.open(filePath2)) { + String filePath = "F:\\工作\\五木\\放射性核素监测数据综合分析及氙本底源解析系统\\其他资料\\气象数据\\盘古模型预测数据\\panguweather_2025073118.grib"; + try { + String md5 = calculateMD5(filePath); + System.out.println("MD5: " + md5); + } catch (IOException e) { + e.printStackTrace(); + } +// try (NetcdfFile ncFile = NetcdfFile.open(filePath2)) { // Variable variable = ncFile.findVariable("reftime_ISO"); // if (variable != null) { // Array data = variable.read(); // System.out.println(variable.getFullName()); // System.out.println(data.getObject(0)); // } - int index = 0; - for (Variable variable : ncFile.getVariables()) { - if (variable != null) { - Array data = variable.read(); - System.out.println(variable.getFullName()); - System.out.println(data); - if (index == 7) { - break; - } - index++; - } - } - }catch (Exception e){ - - } +// int index = 0; +// for (Variable variable : ncFile.getVariables()) { +// if (variable != null) { +// Array data = variable.read(); +// System.out.println(variable.getFullName()); +// System.out.println(data); +// if (index == 7) { +// break; +// } +// index++; +// } +// } +// }catch (Exception e){ +// +// } } } diff --git a/jeecg-module-weather/src/main/java/org/jeecg/service/WeatherDataService.java b/jeecg-module-weather/src/main/java/org/jeecg/service/WeatherDataService.java index 2fe6b56..268ae94 100644 --- a/jeecg-module-weather/src/main/java/org/jeecg/service/WeatherDataService.java +++ b/jeecg-module-weather/src/main/java/org/jeecg/service/WeatherDataService.java @@ -27,7 +27,7 @@ public interface WeatherDataService { * @param endDate * @return */ - IPage page(PageRequest pageRequest, String fileExt, Integer dataSource, LocalDate startDate, LocalDate endDate); + IPage page(PageRequest pageRequest, String fileExt, String dataSource, LocalDate startDate, LocalDate endDate); /** * 验证文件是否存在 diff --git a/jeecg-module-weather/src/main/java/org/jeecg/service/impl/WeatherDataServiceImpl.java b/jeecg-module-weather/src/main/java/org/jeecg/service/impl/WeatherDataServiceImpl.java index 5cccd4b..150e048 100644 --- a/jeecg-module-weather/src/main/java/org/jeecg/service/impl/WeatherDataServiceImpl.java +++ b/jeecg-module-weather/src/main/java/org/jeecg/service/impl/WeatherDataServiceImpl.java @@ -1,5 +1,6 @@ package org.jeecg.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.io.FileUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -46,6 +47,7 @@ import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.stream.Collectors; import static org.jeecg.common.constant.LatLonSizeConstants.*; @@ -161,7 +163,7 @@ public class WeatherDataServiceImpl extends ServiceImpl page(PageRequest pageRequest, String fileExt, Integer dataSource, LocalDate startDate, LocalDate endDate) { + public IPage page(PageRequest pageRequest, String fileExt, String dataSource, LocalDate startDate, LocalDate endDate) { LocalDateTime startTime = null; if(Objects.nonNull(startDate)){ startTime = LocalDateTime.of(startDate.getYear(), startDate.getMonth(), startDate.getDayOfMonth(), 0, 0, 0); @@ -171,7 +173,14 @@ public class WeatherDataServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Objects.nonNull(dataSource),WeatherData::getDataSource, dataSource); + List dataSources = null; + if (StringUtils.isNotBlank(dataSource)) { + dataSources = Arrays.stream(dataSource.split(",")).map(Integer::parseInt).collect(Collectors.toList()); + }else { + dataSources = new ArrayList<>(); + dataSources.add(Integer.parseInt(fileExt)); + } + queryWrapper.in(CollUtil.isNotEmpty(dataSources),WeatherData::getDataSource,dataSources); queryWrapper.between((Objects.nonNull(startTime) && Objects.nonNull(endTime)),WeatherData::getDataStartTime,startTime,endTime); queryWrapper.eq(StringUtils.isNotBlank(fileExt),WeatherData::getFileExt, fileExt); queryWrapper.select(WeatherData::getId,WeatherData::getFileName,WeatherData::getFileSize,WeatherData::getDataSource,WeatherData::getFileExt,WeatherData::getDataStartTime,WeatherData::getFilePath); @@ -249,6 +258,7 @@ public class WeatherDataServiceImpl extends ServiceImpl0){ //获取文件数据开始日期 - String reftime = NcUtil.getReftime(dataFile.getAbsolutePath()); - if(StringUtils.isBlank(reftime)) { - throw new JeecgFileUploadException("解析气象文件起始时间数据异常,此文件可能损坏"); - } - Instant instant = Instant.parse(reftime); - LocalDateTime utcDateTime = LocalDateTime.ofInstant(instant, ZoneId.of("UTC")); +// String reftime = "2025-10-16 00:00:00";//NcUtil.getReftime(dataFile.getAbsolutePath()); +// if(StringUtils.isBlank(reftime)) { +// throw new JeecgFileUploadException("解析气象文件起始时间数据异常,此文件可能损坏"); +// } +// Instant instant = Instant.parse(reftime); +// LocalDateTime utcDateTime = LocalDateTime.ofInstant(instant, ZoneId.of("UTC")); + LocalDateTime utcDateTime = LocalDateTime.now(); queryResult.setDataStartTime(utcDateTime); //计算文件大小M BigDecimal divideVal = new BigDecimal("1024"); diff --git a/jeecg-server-cloud/jeecg-cloud-gateway/src/main/resources/application.yml b/jeecg-server-cloud/jeecg-cloud-gateway/src/main/resources/application.yml index bdc144f..b80a0dc 100644 --- a/jeecg-server-cloud/jeecg-cloud-gateway/src/main/resources/application.yml +++ b/jeecg-server-cloud/jeecg-cloud-gateway/src/main/resources/application.yml @@ -42,7 +42,7 @@ spring: #Sentinel配置 sentinel: transport: - dashboard: jeecg-boot-sentinel:9000 + dashboard: stas-sentinel:9000 # 支持链路限流 web-context-unify: false filter: diff --git a/jeecg-server-cloud/jeecg-cloud-gateway/src/main/resources/logback-spring.xml b/jeecg-server-cloud/jeecg-cloud-gateway/src/main/resources/logback-spring.xml index 50b9921..ba9919d 100644 --- a/jeecg-server-cloud/jeecg-cloud-gateway/src/main/resources/logback-spring.xml +++ b/jeecg-server-cloud/jeecg-cloud-gateway/src/main/resources/logback-spring.xml @@ -1,7 +1,7 @@ - + @@ -17,7 +17,7 @@ - ${LOG_HOME}/jeecg-gateway-%d{yyyy-MM-dd}.%i.log + ${LOG_HOME}/stas-gateway-%d{yyyy-MM-dd}.%i.log 30 10MB diff --git a/jeecg-server-cloud/jeecg-data-analyze-start/src/main/resources/logback-spring.xml b/jeecg-server-cloud/jeecg-data-analyze-start/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..bc6e647 --- /dev/null +++ b/jeecg-server-cloud/jeecg-data-analyze-start/src/main/resources/logback-spring.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}:%L) - %msg%n + + + + + + + + ${LOG_HOME}/stas-data-analyze-%d{yyyy-MM-dd}.%i.log + + 30 + 10MB + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jeecg-server-cloud/jeecg-event-start/src/main/resources/logback-spring.xml b/jeecg-server-cloud/jeecg-event-start/src/main/resources/logback-spring.xml index 60d4c7d..a77b6cf 100644 --- a/jeecg-server-cloud/jeecg-event-start/src/main/resources/logback-spring.xml +++ b/jeecg-server-cloud/jeecg-event-start/src/main/resources/logback-spring.xml @@ -1,7 +1,7 @@ - + @@ -17,7 +17,7 @@ - ${LOG_HOME}/jeecg-system-%d{yyyy-MM-dd}.%i.log + ${LOG_HOME}/stas-event-%d{yyyy-MM-dd}.%i.log 30 10MB @@ -28,37 +28,6 @@ - - - - - ERROR - - - - %p%d%msg%M%F{32}%L - - - ${LOG_HOME}/error-log.html - - - - - - - - ${LOG_HOME}/jeecg-system-%d{yyyy-MM-dd}.%i.html - - 30 - 10MB - - - - %p%d%msg%M%F{32}%L - - - - @@ -70,8 +39,6 @@ - - \ No newline at end of file diff --git a/jeecg-server-cloud/jeecg-source-rebuild-start/src/main/resources/logback-spring.xml b/jeecg-server-cloud/jeecg-source-rebuild-start/src/main/resources/logback-spring.xml index 60d4c7d..70b1aea 100644 --- a/jeecg-server-cloud/jeecg-source-rebuild-start/src/main/resources/logback-spring.xml +++ b/jeecg-server-cloud/jeecg-source-rebuild-start/src/main/resources/logback-spring.xml @@ -1,7 +1,7 @@ - + @@ -17,7 +17,7 @@ - ${LOG_HOME}/jeecg-system-%d{yyyy-MM-dd}.%i.log + ${LOG_HOME}/stas-source-build-%d{yyyy-MM-dd}.%i.log 30 10MB @@ -28,37 +28,6 @@ - - - - - ERROR - - - - %p%d%msg%M%F{32}%L - - - ${LOG_HOME}/error-log.html - - - - - - - - ${LOG_HOME}/jeecg-system-%d{yyyy-MM-dd}.%i.html - - 30 - 10MB - - - - %p%d%msg%M%F{32}%L - - - - @@ -70,8 +39,6 @@ - - \ No newline at end of file diff --git a/jeecg-server-cloud/jeecg-sync-start/src/main/resources/logback-spring.xml b/jeecg-server-cloud/jeecg-sync-start/src/main/resources/logback-spring.xml index 60d4c7d..5e425ae 100644 --- a/jeecg-server-cloud/jeecg-sync-start/src/main/resources/logback-spring.xml +++ b/jeecg-server-cloud/jeecg-sync-start/src/main/resources/logback-spring.xml @@ -1,7 +1,7 @@ - + @@ -17,7 +17,7 @@ - ${LOG_HOME}/jeecg-system-%d{yyyy-MM-dd}.%i.log + ${LOG_HOME}/stas-sync-%d{yyyy-MM-dd}.%i.log 30 10MB @@ -28,37 +28,6 @@ - - - - - ERROR - - - - %p%d%msg%M%F{32}%L - - - ${LOG_HOME}/error-log.html - - - - - - - - ${LOG_HOME}/jeecg-system-%d{yyyy-MM-dd}.%i.html - - 30 - 10MB - - - - %p%d%msg%M%F{32}%L - - - - @@ -70,8 +39,6 @@ - - \ No newline at end of file diff --git a/jeecg-server-cloud/jeecg-system-cloud-start/src/main/resources/logback-spring.xml b/jeecg-server-cloud/jeecg-system-cloud-start/src/main/resources/logback-spring.xml index 60d4c7d..ea4848c 100644 --- a/jeecg-server-cloud/jeecg-system-cloud-start/src/main/resources/logback-spring.xml +++ b/jeecg-server-cloud/jeecg-system-cloud-start/src/main/resources/logback-spring.xml @@ -1,7 +1,7 @@ - + @@ -17,7 +17,7 @@ - ${LOG_HOME}/jeecg-system-%d{yyyy-MM-dd}.%i.log + ${LOG_HOME}/stas-system-%d{yyyy-MM-dd}.%i.log 30 10MB @@ -28,37 +28,6 @@ - - - - - ERROR - - - - %p%d%msg%M%F{32}%L - - - ${LOG_HOME}/error-log.html - - - - - - - - ${LOG_HOME}/jeecg-system-%d{yyyy-MM-dd}.%i.html - - 30 - 10MB - - - - %p%d%msg%M%F{32}%L - - - - @@ -70,8 +39,6 @@ - - \ No newline at end of file diff --git a/jeecg-server-cloud/jeecg-weather-start/src/main/resources/application.yml b/jeecg-server-cloud/jeecg-weather-start/src/main/resources/application.yml index 829895b..43589f7 100644 --- a/jeecg-server-cloud/jeecg-weather-start/src/main/resources/application.yml +++ b/jeecg-server-cloud/jeecg-weather-start/src/main/resources/application.yml @@ -1,5 +1,5 @@ server: - port: 8002 + port: 8003 spring: application: diff --git a/jeecg-server-cloud/jeecg-weather-start/src/main/resources/logback-spring.xml b/jeecg-server-cloud/jeecg-weather-start/src/main/resources/logback-spring.xml index 60d4c7d..e6e7456 100644 --- a/jeecg-server-cloud/jeecg-weather-start/src/main/resources/logback-spring.xml +++ b/jeecg-server-cloud/jeecg-weather-start/src/main/resources/logback-spring.xml @@ -1,7 +1,7 @@ - + @@ -17,7 +17,7 @@ - ${LOG_HOME}/jeecg-system-%d{yyyy-MM-dd}.%i.log + ${LOG_HOME}/stas-weather-%d{yyyy-MM-dd}.%i.log 30 10MB @@ -28,37 +28,6 @@ - - - - - ERROR - - - - %p%d%msg%M%F{32}%L - - - ${LOG_HOME}/error-log.html - - - - - - - - ${LOG_HOME}/jeecg-system-%d{yyyy-MM-dd}.%i.html - - 30 - 10MB - - - - %p%d%msg%M%F{32}%L - - - - @@ -70,8 +39,6 @@ - - \ No newline at end of file diff --git a/pom.xml b/pom.xml index 0a15346..1a33da6 100644 --- a/pom.xml +++ b/pom.xml @@ -535,7 +535,7 @@ dev - jeecg-boot-nacos:8848 + stas-nacos:8848 @@ -565,7 +565,7 @@ test - jeecg-boot-nacos:8848 + stas-nacos:8848 @@ -583,7 +583,7 @@ prod - jeecg-boot-nacos:8848 + stas-nacos:8848