From 9419d9122d5ce69bc7702e455c738d529ffd22c7 Mon Sep 17 00:00:00 2001 From: ascrutae Date: Mon, 25 Jan 2016 18:20:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=91=8A=E8=AD=A6=E8=A7=84?= =?UTF-8?q?=E5=88=99=E8=BD=AE=E8=AF=A2=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../skywalking/alarm/AlarmMessageProcessThread.java | 11 +++++++++++ .../com/ai/cloud/skywalking/alarm/conf/Config.java | 8 +++++--- skywalking-alarm/src/main/resources/config.properties | 2 ++ 3 files changed, 18 insertions(+), 3 deletions(-) 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