diff --git a/skywalking-alarm/src/main/java/com/ai/cloud/skywalking/alarm/AlarmMessageProcessThread.java b/skywalking-alarm/src/main/java/com/ai/cloud/skywalking/alarm/AlarmMessageProcessThread.java index 569786732..997fafe45 100644 --- a/skywalking-alarm/src/main/java/com/ai/cloud/skywalking/alarm/AlarmMessageProcessThread.java +++ b/skywalking-alarm/src/main/java/com/ai/cloud/skywalking/alarm/AlarmMessageProcessThread.java @@ -41,12 +41,19 @@ public class AlarmMessageProcessThread extends Thread { @Override public void run() { + long interval = 0L; //注册服务(默认为空闲状态) registerProcessThread(threadId, ProcessThreadStatus.FREE); while (true) { try { //检查是否为忙碌状态 if (status == ProcessThreadStatus.BUSY) { + + if (interval > Config.Server.ALARM_RULE_ACTIVITY_INTERVAL) { + //重新加载用户配置 + cacheProcessUser(processUserIds); + interval = 0; + } //处理告警信息 for (Map.Entry> entry : cacheRules.entrySet()) { for (AlarmRule rule : entry.getValue()) { @@ -74,6 +81,7 @@ public class AlarmMessageProcessThread extends Thread { // 缓存数据 cacheProcessUser(processUserIds); + interval = 0; // 修改自身状态 :(忙碌状态) status = ProcessThreadStatus.BUSY; @@ -82,6 +90,7 @@ public class AlarmMessageProcessThread extends Thread { try { Thread.sleep(Config.ProcessThread.THREAD_WAIT_INTERVAL); + interval += Config.ProcessThread.THREAD_WAIT_INTERVAL; } catch (InterruptedException e) { logger.error("Sleep failed.", e); } @@ -98,6 +107,8 @@ public class AlarmMessageProcessThread extends Thread { private void cacheProcessUser(List processUserIds) throws SQLException { UserInfo tmpUserInfo; List alarmRules; + // 清理原有的CacheRule + cacheRules.clear(); for (String userId : processUserIds) { tmpUserInfo = AlarmMessageDao.selectUser(userId); if (tmpUserInfo == null) { diff --git a/skywalking-alarm/src/main/java/com/ai/cloud/skywalking/alarm/conf/Config.java b/skywalking-alarm/src/main/java/com/ai/cloud/skywalking/alarm/conf/Config.java index 59b61b65d..51d9f4c0e 100644 --- a/skywalking-alarm/src/main/java/com/ai/cloud/skywalking/alarm/conf/Config.java +++ b/skywalking-alarm/src/main/java/com/ai/cloud/skywalking/alarm/conf/Config.java @@ -8,6 +8,8 @@ public class Config { public static long DAEMON_THREAD_WAIT_INTERVAL = 50000L; + public static long ALARM_RULE_ACTIVITY_INTERVAL = 3600000L; + } public static class ProcessThread { @@ -47,13 +49,13 @@ public class Config { public static class DB { - public static String PASSWORD = "devrdbusr13"; + public static String PASSWORD = "devrdbusr21"; - public static String USER_NAME = "devrdbusr13"; + public static String USER_NAME = "devrdbusr21"; public static String DRIVER_CLASS = "com.mysql.jdbc.Driver"; - public static String URL = "jdbc:mysql://10.1.228.200:31306/test"; + public static String URL = "jdbc:mysql://10.1.228.202:31316/test"; public static int MAX_IDLE = 1; diff --git a/skywalking-alarm/src/main/resources/config.properties b/skywalking-alarm/src/main/resources/config.properties index 568abe809..b8758fefc 100644 --- a/skywalking-alarm/src/main/resources/config.properties +++ b/skywalking-alarm/src/main/resources/config.properties @@ -2,6 +2,8 @@ server.process_thread_size=2 #守护线程等待周期 server.daemon_thread_wait_interval=50000 +#告警规则生效周期 +server.alarm_rule_activity_interval=3600000 #处理线程等待周期 processthread.thread_wait_interval=5000