|
@@ -65,6 +65,16 @@ public class SysAlarmServiceImpl implements ISysAlarmService {
|
|
|
return sysAlarmMapper.selectSysAlarmList(sysAlarm);
|
|
|
}
|
|
|
|
|
|
+ private AlarmVO getConfig() {
|
|
|
+ SysConfig config = sysConfigService.selectConfig("alarm.config");
|
|
|
+ String value = config.getConfigValue();
|
|
|
+ //先解压缩,再SM2解密
|
|
|
+ value = Tools.uncompress(value);
|
|
|
+ value = Sm2Util.decrypt(value);
|
|
|
+ return JSONObject.parseObject(value, AlarmVO.class);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 新增系统告警
|
|
|
*
|
|
@@ -74,30 +84,32 @@ public class SysAlarmServiceImpl implements ISysAlarmService {
|
|
|
@Override
|
|
|
public int insertSysAlarm(SysAlarm sysAlarm) {
|
|
|
int r = sysAlarmMapper.insertSysAlarm(sysAlarm);
|
|
|
- SysConfig config = sysConfigService.selectConfig("alarm.config");
|
|
|
- try {
|
|
|
- String value = config.getConfigValue();
|
|
|
- //先解压缩,再SM2解密
|
|
|
- value = Tools.uncompress(value);
|
|
|
- value = Sm2Util.decrypt(value);
|
|
|
- AlarmVO vo = JSONObject.parseObject(value, AlarmVO.class);
|
|
|
- String open = "1";
|
|
|
- //短信开启状态为1
|
|
|
- if (!open.equals(vo.getStatus())) {
|
|
|
- return r;
|
|
|
- }
|
|
|
+ AlarmVO vo = getConfig();
|
|
|
+ //短信开启状态为1
|
|
|
+ String open = "1";
|
|
|
+ if (open.equals(vo.getStatus())) {
|
|
|
+ //如果告警短信开启,则处理后续短信发送相关内容
|
|
|
+ processAndSendSMS(sysAlarm, vo);
|
|
|
+ }
|
|
|
+ return r;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 处理短信发送相关
|
|
|
+ *
|
|
|
+ * @param sysAlarm 告警对象
|
|
|
+ * @param config 告警配置
|
|
|
+ */
|
|
|
|
|
|
- //1.先查询是否已经发送过短信
|
|
|
+ private void processAndSendSMS(SysAlarm sysAlarm, AlarmVO config) {
|
|
|
+ try {
|
|
|
int type = sysAlarm.getAlarmType();
|
|
|
- if (alarmSmsService.isSend(type, sysAlarm.getRemark())) {
|
|
|
- return r;
|
|
|
- }
|
|
|
- //2.在查询是否满足发送短信的条件
|
|
|
+
|
|
|
+ //查询是否满足发送短信的条件
|
|
|
if (type == AlarmType.MONITOR_HDD.ordinal()) {
|
|
|
- if (Double.parseDouble(sysAlarm.getRemark()) > vo.getHdd_used()) {
|
|
|
- insertRecord(sysAlarm);
|
|
|
- //发送短信
|
|
|
- smsService.send(SmsType.PERFORMANCE_MONITORING, vo.getPhone(), "硬盘", "空间", sysAlarm.getRemark() + "%");
|
|
|
+ if (Double.parseDouble(sysAlarm.getRemark()) > config.getHdd_used()) {
|
|
|
+ String key = "hdd";
|
|
|
+ sendProcess(type, key, SmsType.PERFORMANCE_MONITORING, config.getPhone(), "硬盘", "空间", sysAlarm.getRemark() + "%");
|
|
|
}
|
|
|
}
|
|
|
SysAlarm search = new SysAlarm();
|
|
@@ -108,10 +120,8 @@ public class SysAlarmServiceImpl implements ISysAlarmService {
|
|
|
search.setRemark(sysAlarm.getRemark());
|
|
|
list = sysAlarmMapper.selectSysAlarmList(search);
|
|
|
String content = sysAlarm.getRemark().replace(".", "-");
|
|
|
- if (list.size() > vo.getIp_times()) {
|
|
|
- insertRecord(sysAlarm);
|
|
|
- //发送短信
|
|
|
- smsService.send(SmsType.ALARM_ILLEGAL, vo.getPhone(), DateUtils.getTime(), content, "多次非法访问");
|
|
|
+ if (list.size() > config.getIp_times()) {
|
|
|
+ sendProcess(type, content, SmsType.ALARM_ILLEGAL, config.getPhone(), DateUtils.getTime(), content, "多次非法访问");
|
|
|
}
|
|
|
} else {
|
|
|
list = sysAlarmMapper.selectSysAlarmList(search);
|
|
@@ -119,13 +129,13 @@ public class SysAlarmServiceImpl implements ISysAlarmService {
|
|
|
AtomicInteger times = new AtomicInteger();
|
|
|
list.forEach(alarm -> {
|
|
|
double d = Double.parseDouble(alarm.getRemark());
|
|
|
- if (d > vo.getCpu_used()) {
|
|
|
+ if (d > config.getCpu_used()) {
|
|
|
times.getAndIncrement();
|
|
|
}
|
|
|
});
|
|
|
- if (times.intValue() > vo.getCpu_times()) {
|
|
|
- insertRecord(sysAlarm);
|
|
|
- smsService.send(SmsType.PERFORMANCE_MONITORING, vo.getPhone(), "CPU", "当前", sysAlarm.getRemark() + "%");
|
|
|
+ if (times.intValue() > config.getCpu_times()) {
|
|
|
+ String key = "cpu";
|
|
|
+ sendProcess(type, key, SmsType.PERFORMANCE_MONITORING, config.getPhone(), "CPU", "当前", sysAlarm.getRemark() + "%");
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -133,31 +143,46 @@ public class SysAlarmServiceImpl implements ISysAlarmService {
|
|
|
AtomicInteger times = new AtomicInteger();
|
|
|
list.forEach(alarm -> {
|
|
|
double d = Double.parseDouble(alarm.getRemark());
|
|
|
- if (d > vo.getMem_used()) {
|
|
|
+ if (d > config.getMem_used()) {
|
|
|
times.getAndIncrement();
|
|
|
}
|
|
|
});
|
|
|
- if (times.intValue() > vo.getMem_times()) {
|
|
|
- insertRecord(sysAlarm);
|
|
|
- smsService.send(SmsType.PERFORMANCE_MONITORING, vo.getPhone(), "内存", "当前", sysAlarm.getRemark() + "%");
|
|
|
+ if (times.intValue() > config.getMem_times()) {
|
|
|
+ String key = "mem";
|
|
|
+ sendProcess(type, key, SmsType.PERFORMANCE_MONITORING, config.getPhone(), "内存", "当前", sysAlarm.getRemark() + "%");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
- //3.如果满足,则发送短信
|
|
|
-
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
- return r;
|
|
|
}
|
|
|
|
|
|
- private void insertRecord(SysAlarm alarm) {
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 短信发送处理
|
|
|
+ *
|
|
|
+ * @param type 类型
|
|
|
+ * @param key 关键字
|
|
|
+ * @param smsType 短信类型
|
|
|
+ * @param phone 电话号码
|
|
|
+ * @param params 参数
|
|
|
+ */
|
|
|
+ private void sendProcess(int type, String key, SmsType smsType, String phone, String... params) {
|
|
|
+ if (alarmSmsService.isSend(type, key)) {
|
|
|
+ //当日已发送过同类型的短信,则不作处理
|
|
|
+ return;
|
|
|
+ }
|
|
|
+// 插入告警短信记录,以保证每天只发送一次
|
|
|
SysAlarmSms alarmSms = new SysAlarmSms();
|
|
|
alarmSms.setSendTime(new Date());
|
|
|
- alarmSms.setAlarmType((long) alarm.getAlarmType());
|
|
|
- alarmSms.setAlartKey(alarm.getRemark());
|
|
|
+ alarmSms.setAlarmType((long) type);
|
|
|
+ alarmSms.setAlartKey(key);
|
|
|
alarmSmsService.insertSysAlarmSms(alarmSms);
|
|
|
+
|
|
|
+ smsService.send(smsType, phone, params);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|