Преглед изворни кода

增加日志存储空间阈值检测

xusl пре 2 година
родитељ
комит
dab8af84b1

+ 8 - 2
backend/src/main/java/com/jiayue/ssi/controller/SysPolicyController.java

@@ -71,9 +71,15 @@ public class SysPolicyController {
         }
 
         if (sysPolicy.getMemoryWarn()==null) {
-            return ResponseVO.fail("检测内存低于百分比告警不能为空!");
+            return ResponseVO.fail("内存低于阈值告警不能为空!");
         } else if (!String.valueOf(sysPolicy.getMemoryWarn()).matches("^(?:[2-8]\\d|90)$")) {
-            return ResponseVO.fail("检测内存低于百分比告警请输入20-90整数");
+            return ResponseVO.fail("内存低于阈值告警请输入20-90整数");
+        }
+
+        if (sysPolicy.getLogSpaceWarn()==null) {
+            return ResponseVO.fail("日志存储低于阈值告警不能为空!");
+        } else if (!String.valueOf(sysPolicy.getMemoryWarn()).matches("^(?:[2-8]\\d|90)$")) {
+            return ResponseVO.fail("日志存储低于阈值告警请输入20-90整数");
         }
 
         if (sysPolicy.getAuditLog()==null) {

+ 4 - 0
backend/src/main/java/com/jiayue/ssi/entity/SysPolicy.java

@@ -40,6 +40,10 @@ public class SysPolicy extends BaseEntity{
      */
     private Integer auditLog;
     /**
+     * 日志存储空间过低报警
+     */
+    private Integer logSpaceWarn;
+    /**
      * 内存检测小于百分几之报警
      */
     private Integer memoryWarn;

+ 38 - 11
backend/src/main/java/com/jiayue/ssi/job/AutoScanMemory.java

@@ -6,12 +6,15 @@ import com.jiayue.ssi.entity.SysPolicy;
 import com.jiayue.ssi.entity.server.Jvm;
 import com.jiayue.ssi.service.SysAlarmService;
 import com.jiayue.ssi.service.SysPolicyService;
+import com.jiayue.ssi.util.FileUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 
+import java.io.File;
+
 /**
 * 检测内存告警
 *
@@ -33,17 +36,41 @@ public class AutoScanMemory {
     @Scheduled(cron = "0 0/30 * * * ?")
     public void scanMemory() throws Exception{
         SysPolicy sysPolicy = sysPolicyService.getOne(new QueryWrapper<>());
-        int memoryWarn = sysPolicy.getMemoryWarn();
-        Jvm jvm = new Jvm();
-        jvm.setTotal(Runtime.getRuntime().totalMemory());
-        jvm.setMax(Runtime.getRuntime().maxMemory());
-        jvm.setFree(Runtime.getRuntime().freeMemory());
-        if ((100-jvm.getUsage())<memoryWarn){
-            SysAlarm sysAlarm = new SysAlarm();
-            sysAlarm.setAlarmContent("当前JVM使用率:"+jvm.getUsage()+"%,低于设定值"+memoryWarn+"%");
-            sysAlarm.setReadSign("0");
-            // 低于策略设定值则告警
-            sysAlarmService.save(sysAlarm);
+        try {
+            int memoryWarn = sysPolicy.getMemoryWarn();
+            Jvm jvm = new Jvm();
+            jvm.setTotal(Runtime.getRuntime().totalMemory());
+            jvm.setMax(Runtime.getRuntime().maxMemory());
+            jvm.setFree(Runtime.getRuntime().freeMemory());
+            if ((100 - jvm.getUsage()) < memoryWarn) {
+                SysAlarm sysAlarm = new SysAlarm();
+                sysAlarm.setAlarmContent("当前JVM使用率:" + jvm.getUsage() + "%,低于阈值" + memoryWarn + "%");
+                sysAlarm.setReadSign("0");
+                // 低于策略设定值则告警
+                sysAlarmService.save(sysAlarm);
+            }
+        }
+        catch (Exception e){
+            log.error("检测内存阈值出错",e);
+        }
+        try {
+            // 检测日志存储低于阈值告警
+            File file = new File(FileUtil.getLogsPath());
+            // 最低阈值数值
+            double percentValue = Double.parseDouble(sysPolicy.getLogSpaceWarn().toString()) / (double) 100;
+            double lowValue = (file.getTotalSpace() / 1024 / 1024 / 1024) * percentValue;
+            // 可用剩余空间
+            double ableSpaceValue = Double.parseDouble((file.getUsableSpace() / 1024 / 1024 / 1024) + "");
+            if (ableSpaceValue < lowValue) {
+                SysAlarm sysAlarm = new SysAlarm();
+                sysAlarm.setAlarmContent("当前剩余空间:" + ableSpaceValue + "G,低于阈值" + sysPolicy.getLogSpaceWarn() + "%");
+                sysAlarm.setReadSign("0");
+                // 低于策略设定值则告警
+                sysAlarmService.save(sysAlarm);
+            }
+        }
+        catch (Exception e){
+            log.error("检测日志空间阈值出错",e);
         }
     }
 }

+ 0 - 1
ui/src/permission.js

@@ -82,7 +82,6 @@ router.beforeEach(async (to, from, next) => {
         next()
       }
       else{
-        alert(to.path)
         // 否则全部重定向到登录页
         next(`/login?redirect=${to.path}`)
         NProgress.done()

+ 10 - 2
ui/src/views/sysManager/sysPolicy/index.vue

@@ -16,9 +16,12 @@
           <el-form-item label="审计日志保留月数" prop="auditLog">
             <el-input v-model="form.auditLog" style="width: 240px"></el-input>
           </el-form-item>
-          <el-form-item label="检测内存低于百分比告警" prop="memoryWarn">
+          <el-form-item label="内存低于阈值告警(%)" prop="memoryWarn">
             <el-input v-model="form.memoryWarn" style="width: 240px"></el-input>
           </el-form-item>
+          <el-form-item label="日志存储低于阈值告警(%)" prop="logSpaceWarn">
+            <el-input v-model="form.logSpaceWarn" style="width: 240px"></el-input>
+          </el-form-item>
           <el-form-item label="A级别异常通知方式" prop="excNoticeWayA">
             <el-select style="width: 240px" v-model="form.excNoticeWayA" placeholder="请选择通知方式">
               <el-option
@@ -86,6 +89,7 @@ export default {
         inactiveLogout: '',
         auditLog: '',
         memoryWarn: '',
+        logSpaceWarn:'',
         excNoticeWayA: '0',
         excNoticeWayB: '0',
         excLevelLogin: "0",
@@ -114,7 +118,11 @@ export default {
           { pattern: /^([3-9]|(1[0-2]))$/, message: "请输入3-12整数", trigger: "blur"}
         ],
         memoryWarn: [
-          { required: true, message: "检测内存低于百分比告警不能为空", trigger: "blur" },
+          { required: true, message: "内存低于阈值告警不能为空", trigger: "blur" },
+          { pattern: /^(?:[2-8]\d|90)$/, message: "请输入20-90整数", trigger: "blur"}
+        ],
+        logSpaceWarn: [
+          { required: true, message: "日志存储低于阈值告警不能为空", trigger: "blur" },
           { pattern: /^(?:[2-8]\d|90)$/, message: "请输入20-90整数", trigger: "blur"}
         ]
       },