diff --git a/alerter/src/main/java/com/usthe/alert/calculate/CalculateAlarm.java b/alerter/src/main/java/com/usthe/alert/calculate/CalculateAlarm.java index d694878..a9fb04f 100644 --- a/alerter/src/main/java/com/usthe/alert/calculate/CalculateAlarm.java +++ b/alerter/src/main/java/com/usthe/alert/calculate/CalculateAlarm.java @@ -4,17 +4,20 @@ import com.googlecode.aviator.AviatorEvaluator; import com.googlecode.aviator.Expression; import com.usthe.alert.AlerterWorkerPool; import com.usthe.alert.AlerterDataQueue; +import com.usthe.alert.dao.AlertMonitorDao; import com.usthe.common.entity.alerter.Alert; import com.usthe.common.entity.alerter.AlertDefine; import com.usthe.alert.service.AlertDefineService; import com.usthe.alert.util.AlertTemplateUtil; import com.usthe.collector.dispatch.export.MetricsDataExporter; +import com.usthe.common.entity.manager.Monitor; import com.usthe.common.entity.message.CollectRep; import com.usthe.common.util.CommonConstants; import com.usthe.common.util.CommonUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Configuration; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -37,13 +40,21 @@ public class CalculateAlarm { private Map triggeredMonitorStateAlertMap; public CalculateAlarm (AlerterWorkerPool workerPool, AlerterDataQueue dataQueue, - AlertDefineService alertDefineService, MetricsDataExporter dataExporter) { + AlertDefineService alertDefineService, MetricsDataExporter dataExporter, + AlertMonitorDao monitorDao) { this.workerPool = workerPool; this.dataQueue = dataQueue; this.dataExporter = dataExporter; this.alertDefineService = alertDefineService; this.triggeredAlertMap = new ConcurrentHashMap<>(128); this.triggeredMonitorStateAlertMap = new ConcurrentHashMap<>(128); + // 初始化stateAlertMap + List monitors = monitorDao.findMonitorsByStatusIn(Arrays.asList((byte)2, (byte)3)); + if (monitors != null) { + for (Monitor monitor : monitors) { + this.triggeredMonitorStateAlertMap.put(monitor.getId(), CollectRep.Code.UN_AVAILABLE); + } + } startCalculate(); } diff --git a/alerter/src/main/java/com/usthe/alert/dao/AlertMonitorDao.java b/alerter/src/main/java/com/usthe/alert/dao/AlertMonitorDao.java new file mode 100644 index 0000000..586b679 --- /dev/null +++ b/alerter/src/main/java/com/usthe/alert/dao/AlertMonitorDao.java @@ -0,0 +1,23 @@ +package com.usthe.alert.dao; + +import com.usthe.common.entity.manager.Monitor; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +import java.util.List; + +/** + * Alert Monitor 数据库操作 + * @author tomsun28 + * @date 2021/11/14 11:24 + */ +public interface AlertMonitorDao extends JpaRepository, JpaSpecificationExecutor { + + /** + * 查询指定监控状态的监控 + * @param status 监控状态 + * @return 监控列表 + */ + List findMonitorsByStatusIn(List status); + +}