From cb618e648cbe211c01ba6a2ac695246b09fc421d Mon Sep 17 00:00:00 2001 From: "leon.li" Date: Tue, 30 Sep 2014 11:59:38 +0800 Subject: [PATCH] add heartbeat rule page --- .../config/HeartbeatRuleConfigManager.java | 60 +++++++ .../cat/system/page/config/Action.java | 10 +- .../cat/system/page/config/Handler.java | 20 +++ .../cat/system/page/config/JspFile.java | 12 +- .../cat/system/page/config/JspViewer.java | 10 ++ .../resources/META-INF/plexus/components.xml | 12 ++ .../freemaker/rule_heartbeatItems.ftl | 151 ++++++++++++++++++ .../src/main/webapp/WEB-INF/tags/body.tag | 1 + .../src/main/webapp/jsp/system/configTree.jsp | 1 + .../jsp/system/heartbeat/heartbeatConfigs.jsp | 127 +++++++++++++++ .../jsp/system/heartbeat/heartbeatRuleAdd.jsp | 13 ++ 11 files changed, 414 insertions(+), 3 deletions(-) create mode 100644 cat-home/src/main/java/com/dianping/cat/system/config/HeartbeatRuleConfigManager.java create mode 100644 cat-home/src/main/resources/freemaker/rule_heartbeatItems.ftl create mode 100644 cat-home/src/main/webapp/jsp/system/heartbeat/heartbeatConfigs.jsp create mode 100644 cat-home/src/main/webapp/jsp/system/heartbeat/heartbeatRuleAdd.jsp diff --git a/cat-home/src/main/java/com/dianping/cat/system/config/HeartbeatRuleConfigManager.java b/cat-home/src/main/java/com/dianping/cat/system/config/HeartbeatRuleConfigManager.java new file mode 100644 index 000000000..f51c60ada --- /dev/null +++ b/cat-home/src/main/java/com/dianping/cat/system/config/HeartbeatRuleConfigManager.java @@ -0,0 +1,60 @@ +package com.dianping.cat.system.config; + +import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; +import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException; +import org.unidal.dal.jdbc.DalNotFoundException; +import org.unidal.helper.Files; + +import com.dianping.cat.Cat; +import com.dianping.cat.core.config.Config; +import com.dianping.cat.core.config.ConfigEntity; +import com.dianping.cat.home.rule.entity.MonitorRules; +import com.dianping.cat.home.rule.transform.DefaultSaxParser; + +public class HeartbeatRuleConfigManager extends BaseRuleConfigManager implements Initializable { + + private static final String CATEGORY_NAME = "heartbeat"; + + private static final String CONFIG_NAME = "heartbeatRuleConfig"; + + @Override + protected String getCategoryName() { + return CATEGORY_NAME; + } + + @Override + protected String getConfigName() { + return CONFIG_NAME; + } + + @Override + public void initialize() throws InitializationException { + try { + Config config = m_configDao.findByName(CONFIG_NAME, ConfigEntity.READSET_FULL); + String content = config.getContent(); + + m_configId = config.getId(); + m_config = DefaultSaxParser.parse(content); + } catch (DalNotFoundException e) { + try { + String content = Files.forIO().readFrom( + this.getClass().getResourceAsStream("/config/default-heartbeat-rule-config.xml"), "utf-8"); + Config config = m_configDao.createLocal(); + + config.setName(CONFIG_NAME); + config.setContent(content); + m_configDao.insert(config); + + m_configId = config.getId(); + m_config = DefaultSaxParser.parse(content); + } catch (Exception ex) { + Cat.logError(ex); + } + } catch (Exception e) { + Cat.logError(e); + } + if (m_config == null) { + m_config = new MonitorRules(); + } + } +} diff --git a/cat-home/src/main/java/com/dianping/cat/system/page/config/Action.java b/cat-home/src/main/java/com/dianping/cat/system/page/config/Action.java index f98842efe..9c862b495 100644 --- a/cat-home/src/main/java/com/dianping/cat/system/page/config/Action.java +++ b/cat-home/src/main/java/com/dianping/cat/system/page/config/Action.java @@ -70,7 +70,7 @@ public enum Action implements org.unidal.web.mvc.Action { NETWORK_RULE_ADD_OR_UPDATE_SUBMIT("networkRuleSubmit"), NETWORK_RULE_DELETE("networkRulDelete"), - + SYSTEM_RULE_CONFIG_LIST("systemRuleConfigList"), SYSTEM_RULE_ADD_OR_UPDATE("systemRuleUpdate"), @@ -79,6 +79,14 @@ public enum Action implements org.unidal.web.mvc.Action { SYSTEM_RULE_DELETE("systemRulDelete"), + HEARTBEAT_RULE_CONFIG_LIST("heartbeatRuleConfigList"), + + HEARTBEAT_RULE_ADD_OR_UPDATE("heartbeatRuleUpdate"), + + HEARTBEAT_RULE_ADD_OR_UPDATE_SUBMIT("heartbeatRuleSubmit"), + + HEARTBEAT_RULE_DELETE("heartbeatRulDelete"), + ALERT_DEFAULT_RECEIVERS("alertDefaultReceivers"), ALERT_POLICY("alertPolicy"), diff --git a/cat-home/src/main/java/com/dianping/cat/system/page/config/Handler.java b/cat-home/src/main/java/com/dianping/cat/system/page/config/Handler.java index 1f0050f64..c11cacb3c 100644 --- a/cat-home/src/main/java/com/dianping/cat/system/page/config/Handler.java +++ b/cat-home/src/main/java/com/dianping/cat/system/page/config/Handler.java @@ -64,6 +64,7 @@ import com.dianping.cat.system.config.BugConfigManager; import com.dianping.cat.system.config.BusinessRuleConfigManager; import com.dianping.cat.system.config.DomainGroupConfigManager; import com.dianping.cat.system.config.ExceptionConfigManager; +import com.dianping.cat.system.config.HeartbeatRuleConfigManager; import com.dianping.cat.system.config.MetricGroupConfigManager; import com.dianping.cat.system.config.NetGraphConfigManager; import com.dianping.cat.system.config.NetworkRuleConfigManager; @@ -116,6 +117,9 @@ public class Handler implements PageHandler { @Inject private SystemRuleConfigManager m_systemRuleConfigManager; + @Inject + private HeartbeatRuleConfigManager m_heartbeatRuleConfigManager; + @Inject private WebRuleConfigManager m_webRuleConfigManager; @@ -443,6 +447,22 @@ public class Handler implements PageHandler { model.setOpState(deleteRule(m_systemRuleConfigManager, payload.getKey())); generateRuleItemList(m_systemRuleConfigManager, model); break; + case HEARTBEAT_RULE_CONFIG_LIST: + generateRuleItemList(m_heartbeatRuleConfigManager, model); + break; + case HEARTBEAT_RULE_ADD_OR_UPDATE: + generateRuleEditContent(payload.getKey(), "?op=heartbeatRuleSubmit", "rule_heartbeatItems.ftl", + "rule_configs.ftl", m_heartbeatRuleConfigManager, model); + break; + case HEARTBEAT_RULE_ADD_OR_UPDATE_SUBMIT: + model.setOpState(addSubmitRule(m_heartbeatRuleConfigManager, payload.getRuleId(), payload.getMetrics(), + payload.getConfigs())); + generateRuleItemList(m_heartbeatRuleConfigManager, model); + break; + case HEARTBEAT_RULE_DELETE: + model.setOpState(deleteRule(m_heartbeatRuleConfigManager, payload.getKey())); + generateRuleItemList(m_heartbeatRuleConfigManager, model); + break; case ALERT_DEFAULT_RECEIVERS: String alertDefaultReceivers = payload.getContent(); String allOnOrOff = payload.getAllOnOrOff(); diff --git a/cat-home/src/main/java/com/dianping/cat/system/page/config/JspFile.java b/cat-home/src/main/java/com/dianping/cat/system/page/config/JspFile.java index f7ec243ed..030e9a9ba 100644 --- a/cat-home/src/main/java/com/dianping/cat/system/page/config/JspFile.java +++ b/cat-home/src/main/java/com/dianping/cat/system/page/config/JspFile.java @@ -53,6 +53,14 @@ public enum JspFile { SYSTEM_RULE_DELETE("/jsp/system/systemRule/systemConfigs.jsp"), + HEARTBEAT_RULE_CONFIG_LIST("/jsp/system/heartbeat/heartbeatConfigs.jsp"), + + HEARTBEAT_RULE_ADD_OR_UPDATE("/jsp/system/heartbeat/heartbeatRuleAdd.jsp"), + + HEARTBEAT_RULE_ADD_OR_UPDATE_SUBMIT("/jsp/system/heartbeat/heartbeatConfigs.jsp"), + + HEARTBEAT_RULE_DELETE("/jsp/system/heartbeat/heartbeatConfigs.jsp"), + ALERT_DEFAULT_RECEIVERS("/jsp/system/defaultReceiver/alertDefaultReceivers.jsp"), ALERT_POLICY("/jsp/system/alert/policy.jsp"), @@ -76,11 +84,11 @@ public enum JspFile { NET_GRAPH_CONFIG_UPDATE("/jsp/system/netGraphConfig/netGraphConfig.jsp"), WEB_RULE("/jsp/system/webRule/webRule.jsp"), - + WEB_RULE_UPDATE("/jsp/system/webRule/webRuleUpdate.jsp"), APP_RULE("/jsp/system/appRule/appRule.jsp"), - + APP_RULE_UPDATE("/jsp/system/appRule/appRuleUpdate.jsp"), APP_CONFIG_UPDATE("/jsp/system/appConfig/appConfig.jsp"), diff --git a/cat-home/src/main/java/com/dianping/cat/system/page/config/JspViewer.java b/cat-home/src/main/java/com/dianping/cat/system/page/config/JspViewer.java index 59096dbcb..e6cbb9436 100644 --- a/cat-home/src/main/java/com/dianping/cat/system/page/config/JspViewer.java +++ b/cat-home/src/main/java/com/dianping/cat/system/page/config/JspViewer.java @@ -92,6 +92,14 @@ public class JspViewer extends BaseJspViewer return JspFile.SYSTEM_RULE_ADD_OR_UPDATE_SUBMIT.getPath(); case SYSTEM_RULE_DELETE: return JspFile.SYSTEM_RULE_DELETE.getPath(); + case HEARTBEAT_RULE_ADD_OR_UPDATE: + return JspFile.HEARTBEAT_RULE_ADD_OR_UPDATE.getPath(); + case HEARTBEAT_RULE_ADD_OR_UPDATE_SUBMIT: + return JspFile.HEARTBEAT_RULE_ADD_OR_UPDATE_SUBMIT.getPath(); + case HEARTBEAT_RULE_CONFIG_LIST: + return JspFile.HEARTBEAT_RULE_CONFIG_LIST.getPath(); + case HEARTBEAT_RULE_DELETE: + return JspFile.HEARTBEAT_RULE_DELETE.getPath(); case ALERT_DEFAULT_RECEIVERS: return JspFile.ALERT_DEFAULT_RECEIVERS.getPath(); case ALERT_POLICY: @@ -140,6 +148,8 @@ public class JspViewer extends BaseJspViewer return JspFile.THIRD_PARTY_CONFIG_UPDATE.getPath(); case ROUTER_CONFIG_UPDATE: return JspFile.ROUTER_CONFIG_UPDATE.getPath(); + default: + break; } throw new RuntimeException("Unknown action: " + action); diff --git a/cat-home/src/main/resources/META-INF/plexus/components.xml b/cat-home/src/main/resources/META-INF/plexus/components.xml index d5c051ed2..2a627a772 100755 --- a/cat-home/src/main/resources/META-INF/plexus/components.xml +++ b/cat-home/src/main/resources/META-INF/plexus/components.xml @@ -4794,6 +4794,9 @@ com.dianping.cat.system.config.SystemRuleConfigManager + + com.dianping.cat.system.config.HeartbeatRuleConfigManager + com.dianping.cat.system.config.WebRuleConfigManager @@ -4901,6 +4904,15 @@ + + com.dianping.cat.system.config.HeartbeatRuleConfigManager + com.dianping.cat.system.config.HeartbeatRuleConfigManager + + + com.dianping.cat.core.config.ConfigDao + + + com.dianping.cat.system.config.WebRuleConfigManager com.dianping.cat.system.config.WebRuleConfigManager diff --git a/cat-home/src/main/resources/freemaker/rule_heartbeatItems.ftl b/cat-home/src/main/resources/freemaker/rule_heartbeatItems.ftl new file mode 100644 index 000000000..eeebdf9cc --- /dev/null +++ b/cat-home/src/main/resources/freemaker/rule_heartbeatItems.ftl @@ -0,0 +1,151 @@ + + +
+ 匹配对象: + +
+ +
+ 项目: + ip: + 监控类型: + + + + +
+
+ +

+ + diff --git a/cat-home/src/main/webapp/WEB-INF/tags/body.tag b/cat-home/src/main/webapp/WEB-INF/tags/body.tag index 31de5e74d..097f83712 100755 --- a/cat-home/src/main/webapp/WEB-INF/tags/body.tag +++ b/cat-home/src/main/webapp/WEB-INF/tags/body.tag @@ -94,6 +94,7 @@
  • 网络拓扑配置
  • 系统告警配置
  • +
  • 心跳告警配置
  • 告警策略配置
  • 默认告警人配置
  • diff --git a/cat-home/src/main/webapp/jsp/system/configTree.jsp b/cat-home/src/main/webapp/jsp/system/configTree.jsp index 6815886eb..3a7544550 100644 --- a/cat-home/src/main/webapp/jsp/system/configTree.jsp +++ b/cat-home/src/main/webapp/jsp/system/configTree.jsp @@ -24,6 +24,7 @@
  • 网络拓扑配置
  • 系统告警配置
  • +
  • 心跳告警配置
  • 告警策略配置
  • 默认告警人配置
  • diff --git a/cat-home/src/main/webapp/jsp/system/heartbeat/heartbeatConfigs.jsp b/cat-home/src/main/webapp/jsp/system/heartbeat/heartbeatConfigs.jsp new file mode 100644 index 000000000..608e64a94 --- /dev/null +++ b/cat-home/src/main/webapp/jsp/system/heartbeat/heartbeatConfigs.jsp @@ -0,0 +1,127 @@ +<%@ page contentType="text/html; charset=utf-8" %> +<%@ taglib prefix="a" uri="/WEB-INF/app.tld"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib prefix="res" uri="http://www.unidal.org/webres"%> +<%@ taglib prefix="w" uri="http://www.unidal.org/web/core"%> + + + + + + + + + + + + +
    +
    + <%@include file="../configTree.jsp"%> +
    +
    + +

     

    + + + + + + + + + + + + + + + + + + + + + +
    规则id
    项目配置
    ip配置
    次数
    平均值
    总和
    操作
    ${item.id}${item.productlineText}${item.metricText} + + + + + + + + + + + + + + + + + + + + + + 修改规则 + 删除 +
    + 添加监控规则 +
    +
    +
    \ No newline at end of file diff --git a/cat-home/src/main/webapp/jsp/system/heartbeat/heartbeatRuleAdd.jsp b/cat-home/src/main/webapp/jsp/system/heartbeat/heartbeatRuleAdd.jsp new file mode 100644 index 000000000..7feeae7dd --- /dev/null +++ b/cat-home/src/main/webapp/jsp/system/heartbeat/heartbeatRuleAdd.jsp @@ -0,0 +1,13 @@ +<%@ page contentType="text/html; charset=utf-8" %> +<%@ taglib prefix="a" uri="/WEB-INF/app.tld"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib prefix="res" uri="http://www.unidal.org/webres"%> +<%@ taglib prefix="w" uri="http://www.unidal.org/web/core"%> +<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> + + + +
    + 规则ID: + ${model.content} +
    \ No newline at end of file -- GitLab