diff --git a/cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java b/cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java index df7dbd5e7af9ffc14afafff49e3f3d42720720d5..26850460d2cfd09a66f86a12bea27822115699fd 100755 --- a/cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java +++ b/cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java @@ -20,6 +20,7 @@ import com.dianping.cat.consumer.top.TopAnalyzer; import com.dianping.cat.core.config.ConfigDao; import com.dianping.cat.core.dal.HostinfoDao; import com.dianping.cat.core.dal.ProjectDao; +import com.dianping.cat.home.dal.report.AlertDao; import com.dianping.cat.home.dal.report.EventDao; import com.dianping.cat.home.dal.report.TopologyGraphDao; import com.dianping.cat.report.baseline.BaselineService; @@ -184,15 +185,15 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { all.add(C(DataChecker.class, DefaultDataChecker.class)); all.add(C(BusinessAlert.class).req(MetricConfigManager.class, ProductLineConfigManager.class, - BaselineService.class, MailSMS.class, BusinessAlertConfig.class, AlertInfo.class)// + BaselineService.class, MailSMS.class, BusinessAlertConfig.class, AlertInfo.class, AlertDao.class)// .req(RemoteMetricReportService.class, BusinessRuleConfigManager.class, DataChecker.class)); all.add(C(NetworkAlert.class).req(MetricConfigManager.class, ProductLineConfigManager.class, - BaselineService.class, MailSMS.class, NetworkAlertConfig.class, AlertInfo.class)// + BaselineService.class, MailSMS.class, NetworkAlertConfig.class, AlertInfo.class, AlertDao.class)// .req(RemoteMetricReportService.class, NetworkRuleConfigManager.class, DataChecker.class)); all.add(C(SystemAlert.class).req(MetricConfigManager.class, ProductLineConfigManager.class, - BaselineService.class, MailSMS.class, SystemAlertConfig.class, AlertInfo.class)// + BaselineService.class, MailSMS.class, SystemAlertConfig.class, AlertInfo.class, AlertDao.class)// .req(RemoteMetricReportService.class, SystemRuleConfigManager.class, DataChecker.class)); all.add(C(AlertExceptionBuilder.class).req(ExceptionConfigManager.class)); diff --git a/cat-home/src/main/java/com/dianping/cat/report/task/alert/AlertResultEntity.java b/cat-home/src/main/java/com/dianping/cat/report/task/alert/AlertResultEntity.java index ec94c4c53c589c776b353fe0306fa71a3d5936bf..5ad03c8e46b4f78b21417d753072915f816bda0d 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/task/alert/AlertResultEntity.java +++ b/cat-home/src/main/java/com/dianping/cat/report/task/alert/AlertResultEntity.java @@ -1,5 +1,7 @@ package com.dianping.cat.report.task.alert; +import java.util.Date; + public class AlertResultEntity { private boolean m_isTriggered; @@ -7,16 +9,24 @@ public class AlertResultEntity { private String m_alertType; + private Date m_alertTime; + public AlertResultEntity(){ this.m_isTriggered = false; this.m_content = ""; this.m_alertType = ""; + this.m_alertTime = new Date(); } public AlertResultEntity(boolean result, String content, String alertType){ this.m_isTriggered = result; this.m_content = content; this.m_alertType = alertType; + this.m_alertTime = new Date(); + } + + public Date getAlertTime() { + return m_alertTime; } public String getAlertType() { diff --git a/cat-home/src/main/java/com/dianping/cat/report/task/alert/BaseAlert.java b/cat-home/src/main/java/com/dianping/cat/report/task/alert/BaseAlert.java index e3e9826d883801561d73c5357f6e777c7c3a06a0..089140645a34ed76b676f3c4db40e67b32a85876 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/task/alert/BaseAlert.java +++ b/cat-home/src/main/java/com/dianping/cat/report/task/alert/BaseAlert.java @@ -9,6 +9,7 @@ import java.util.Map; import java.util.Map.Entry; import org.codehaus.plexus.logging.Logger; +import org.unidal.dal.jdbc.DalException; import org.unidal.lookup.annotation.Inject; import org.unidal.tuple.Pair; @@ -22,6 +23,8 @@ import com.dianping.cat.consumer.metric.model.entity.MetricItem; import com.dianping.cat.consumer.metric.model.entity.MetricReport; import com.dianping.cat.consumer.metric.model.entity.Segment; import com.dianping.cat.helper.TimeUtil; +import com.dianping.cat.home.dal.report.Alert; +import com.dianping.cat.home.dal.report.AlertDao; import com.dianping.cat.home.rule.entity.Condition; import com.dianping.cat.home.rule.entity.Config; import com.dianping.cat.report.baseline.BaselineService; @@ -38,6 +41,9 @@ public abstract class BaseAlert { @Inject protected MailSMS m_mailSms; + @Inject + protected AlertDao m_alertDao; + @Inject protected AlertInfo m_alertInfo; @@ -68,6 +74,19 @@ public abstract class BaseAlert { protected Map m_lastReports = new HashMap(); + private Alert buildAlert(String domainName, String metricTitle, String mailTitle, AlertResultEntity alertResult) { + Alert alert = new Alert(); + + alert.setDomain(domainName); + alert.setAlertTime(alertResult.getAlertTime()); + alert.setCategory(getName()); + alert.setType(alertResult.getAlertType()); + alert.setContent(mailTitle + "
" + alertResult.getContent()); + alert.setMetric(metricTitle); + + return alert; + } + private String buildMetricTitle(String metricKey) { try { return metricKey.split(":")[2]; @@ -86,8 +105,7 @@ public abstract class BaseAlert { return result; } - protected AlertResultEntity computeAlertInfo(int minute, String product, String metricKey, - MetricType type) { + protected AlertResultEntity computeAlertInfo(int minute, String product, String metricKey, MetricType type) { double[] value = null; double[] baseline = null; List configs = m_ruleConfigManager.queryConfigs(metricKey, type); @@ -220,13 +238,16 @@ public abstract class BaseAlert { private void processMetricItem(int minute, ProductLine productLine, String metricKey) { for (MetricType type : MetricType.values()) { - AlertResultEntity alert = computeAlertInfo(minute, productLine.getId(), metricKey, type); + String productlineName = productLine.getId(); + AlertResultEntity alertResult = computeAlertInfo(minute, productlineName, metricKey, type); - if (alert != null && alert.isTriggered()) { + if (alertResult != null && alertResult.isTriggered()) { String metricTitle = buildMetricTitle(metricKey); + String mailTitle = getAlertConfig().buildMailTitle(productLine.getTitle(), metricTitle); m_alertInfo.addAlertInfo(metricKey, new Date().getTime()); - sendAlertInfo(productLine, metricTitle, alert.getContent(), alert.getAlertType()); + storeAlert(productlineName, metricTitle, mailTitle, alertResult); + sendAlertInfo(productLine, mailTitle, alertResult.getContent(), alertResult.getAlertType()); } } } @@ -303,5 +324,23 @@ public abstract class BaseAlert { return result; } - protected abstract void sendAlertInfo(ProductLine productLine, String metricTitle, String content, String alertType); + protected void storeAlert(String domainName, String metricTitle, String mailTitle, AlertResultEntity alertResult) { + Alert alert = buildAlert(domainName, metricTitle, mailTitle, alertResult); + + try { + int count = m_alertDao.insert(alert); + + if (count != 1) { + Cat.logError("insert alert error: " + alert.toString(), new RuntimeException()); + } + } catch (DalException e) { + Cat.logError(e); + } + } + + protected abstract String getName(); + + protected abstract BaseAlertConfig getAlertConfig(); + + protected abstract void sendAlertInfo(ProductLine productLine, String mailTitle, String content, String alertType); } diff --git a/cat-home/src/main/java/com/dianping/cat/report/task/alert/BaseAlertConfig.java b/cat-home/src/main/java/com/dianping/cat/report/task/alert/BaseAlertConfig.java index 15b9bc2f8c7ff7af26ccdc14abb9312a4a76f287..b52c7c63dff17f423445e18bb7100083bf89b4db 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/task/alert/BaseAlertConfig.java +++ b/cat-home/src/main/java/com/dianping/cat/report/task/alert/BaseAlertConfig.java @@ -68,6 +68,8 @@ public abstract class BaseAlertConfig { return smsReceivers; } } + + protected abstract String buildMailTitle(String artifactName, String configTitle); public abstract String getId(); diff --git a/cat-home/src/main/java/com/dianping/cat/report/task/alert/business/BusinessAlert.java b/cat-home/src/main/java/com/dianping/cat/report/task/alert/business/BusinessAlert.java index c9570e32ad6cecaa8ec47fc6d9f247600799e8b4..e7fd4efd49a3610701d6c35a97aafdd758c643e5 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/task/alert/business/BusinessAlert.java +++ b/cat-home/src/main/java/com/dianping/cat/report/task/alert/business/BusinessAlert.java @@ -17,12 +17,13 @@ import com.dianping.cat.message.Event; import com.dianping.cat.message.Transaction; import com.dianping.cat.report.task.alert.AlertResultEntity; import com.dianping.cat.report.task.alert.BaseAlert; +import com.dianping.cat.report.task.alert.BaseAlertConfig; import com.dianping.cat.report.task.alert.MetricType; public class BusinessAlert extends BaseAlert implements Task, LogEnabled { @Inject - private BusinessAlertConfig m_alertConfig; + protected BusinessAlertConfig m_alertConfig; private Logger m_logger; @@ -35,6 +36,11 @@ public class BusinessAlert extends BaseAlert implements Task, LogEnabled { public String getName() { return "metric-alert"; } + + @Override + public BaseAlertConfig getAlertConfig() { + return m_alertConfig; + } public boolean needAlert(MetricItemConfig config) { if ((config.getAlarm() || config.isShowAvgDashboard() || config.isShowSumDashboard() || config @@ -48,24 +54,27 @@ public class BusinessAlert extends BaseAlert implements Task, LogEnabled { private void processMetricItemConfig(MetricItemConfig config, int minute, ProductLine productLine) { if (needAlert(config)) { String product = productLine.getId(); - String metricKey = m_metricConfigManager.buildMetricKey(config.getDomain(), config.getType(), - config.getMetricKey()); + String domain = config.getDomain(); + String metric = config.getMetricKey(); + String metricKey = m_metricConfigManager.buildMetricKey(domain, config.getType(), metric); - AlertResultEntity alert = null; + AlertResultEntity alertResult = null; if (config.isShowAvg()) { - alert = computeAlertInfo(minute, product, metricKey, MetricType.AVG); + alertResult = computeAlertInfo(minute, product, metricKey, MetricType.AVG); } if (config.isShowCount()) { - alert = computeAlertInfo(minute, product, metricKey, MetricType.COUNT); + alertResult = computeAlertInfo(minute, product, metricKey, MetricType.COUNT); } if (config.isShowSum()) { - alert = computeAlertInfo(minute, product, metricKey, MetricType.SUM); + alertResult = computeAlertInfo(minute, product, metricKey, MetricType.SUM); } - if (alert != null && alert.isTriggered()) { + if (alertResult != null && alertResult.isTriggered()) { + String mailTitle = m_alertConfig.buildMailTitle(productLine.getTitle(), config.getTitle()); m_alertInfo.addAlertInfo(metricKey, new Date().getTime()); - sendAlertInfo(productLine, config.getTitle(), alert.getContent(), alert.getAlertType()); + storeAlert(domain, metric, mailTitle, alertResult); + sendAlertInfo(productLine, mailTitle, alertResult.getContent(), alertResult.getAlertType()); } } } @@ -138,9 +147,8 @@ public class BusinessAlert extends BaseAlert implements Task, LogEnabled { } @Override - public void sendAlertInfo(ProductLine productLine, String metricTitle, String content, String alertType) { + public void sendAlertInfo(ProductLine productLine, String title, String content, String alertType) { List emails = m_alertConfig.buildMailReceivers(productLine); - String title = m_alertConfig.buildMailTitle(productLine, metricTitle); m_logger.info(title + " " + content + " " + emails); m_mailSms.sendEmail(title, content, emails); diff --git a/cat-home/src/main/java/com/dianping/cat/report/task/alert/business/BusinessAlertConfig.java b/cat-home/src/main/java/com/dianping/cat/report/task/alert/business/BusinessAlertConfig.java index ac362ca80c9e87b7b91bea922a2a5897cef8ebc5..dcd9487f2bc14eee33830fb1ba27daffb0b2b727 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/task/alert/business/BusinessAlertConfig.java +++ b/cat-home/src/main/java/com/dianping/cat/report/task/alert/business/BusinessAlertConfig.java @@ -1,16 +1,16 @@ package com.dianping.cat.report.task.alert.business; -import com.dianping.cat.consumer.company.model.entity.ProductLine; import com.dianping.cat.report.task.alert.BaseAlertConfig; public class BusinessAlertConfig extends BaseAlertConfig { private String m_id = "business"; - public String buildMailTitle(ProductLine productLine, String configTitle) { + @Override + public String buildMailTitle(String productlineName, String configTitle) { StringBuilder sb = new StringBuilder(); - sb.append("[业务告警] [产品线 ").append(productLine.getTitle()).append("]"); + sb.append("[业务告警] [产品线 ").append(productlineName).append("]"); sb.append("[业务指标 ").append(configTitle).append("]"); return sb.toString(); } diff --git a/cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/AlertExceptionBuilder.java b/cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/AlertExceptionBuilder.java index 5402364e8444baa917672c39fd7ed5584a1df5e1..bd4e1ad45c4f5cbdb20d105c5cf37f4fac4efd5c 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/AlertExceptionBuilder.java +++ b/cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/AlertExceptionBuilder.java @@ -125,13 +125,6 @@ public class AlertExceptionBuilder { return limits; } - public String buildMailTitle(String domain) { - StringBuilder sb = new StringBuilder(); - - sb.append("[CAT异常告警] [项目: ").append(domain).append("]"); - return sb.toString(); - } - public String buildMailContent(String exceptions, String domain) { String content = buildContent(exceptions, domain); String url = "http://cat.dianpingoa.com/cat/r/p?domain=" + domain; diff --git a/cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/ExceptionAlert.java b/cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/ExceptionAlert.java index f86e687b140619f0027c1610c3d14061f9690ad5..9a2cd81995b5864283fea34641459816253ed8c7 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/ExceptionAlert.java +++ b/cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/ExceptionAlert.java @@ -132,7 +132,7 @@ public class ExceptionAlert implements Task, LogEnabled { for (Entry> entry : alertExceptions.entrySet()) { try { - sendAlertForDomain(entry.getKey(), entry.getValue()); + sendAndStoreAlert(entry.getKey(), entry.getValue()); } catch (Exception e) { m_logger.error(e.getMessage()); } @@ -154,17 +154,19 @@ public class ExceptionAlert implements Task, LogEnabled { } } } - - private void sendAlertForDomain(String domain, List exceptions) { + + private void sendAndStoreAlert(String domain, List exceptions) { Project project = queryProjectByDomain(domain); List emails = m_alertConfig.buildMailReceivers(project); List phones = m_alertConfig.buildSMSReceivers(project); - String mailTitle = m_alertBuilder.buildMailTitle(domain); + String mailTitle = m_alertConfig.buildMailTitle(domain, null); String mailContent = m_alertBuilder.buildMailContent(exceptions.toString(), domain); m_mailSms.sendEmail(mailTitle, mailContent, emails); m_logger.info(mailTitle + " " + mailContent + " " + emails); Cat.logEvent("ExceptionAlert", domain, Event.SUCCESS, "[邮件告警] " + mailTitle + " " + mailContent); + + storeAlert(domain, exceptions, mailTitle+"
"+mailContent); List errorExceptions = m_alertBuilder.buildErrorException(exceptions); @@ -176,6 +178,10 @@ public class ExceptionAlert implements Task, LogEnabled { Cat.logEvent("ExceptionAlert", domain, Event.SUCCESS, "[短信告警] " + smsContent); } } + + private void storeAlert(String domain, List exceptions, String mailContent) { + + } @Override public void shutdown() { diff --git a/cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/ExceptionAlertConfig.java b/cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/ExceptionAlertConfig.java index 6730f63a8410ca7cdca62804dba12fcbf251ca2e..d5d713451bbfaa381c9b5a95a262a2f5d32e2611 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/ExceptionAlertConfig.java +++ b/cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/ExceptionAlertConfig.java @@ -25,10 +25,18 @@ public class ExceptionAlertConfig extends BaseAlertConfig { } } + @Override + public String buildMailTitle(String domain, String configTitle) { + StringBuilder sb = new StringBuilder(); + + sb.append("[CAT异常告警] [项目: ").append(domain).append("]"); + return sb.toString(); + } + private List buildProjectMailReceivers(Project project) { return split(project.getEmail()); } - + public List buildSMSReceivers(Project project) { List smsReceivers = new ArrayList(); Receiver receiver = m_manager.queryReceiverById(getId()); @@ -42,7 +50,7 @@ public class ExceptionAlertConfig extends BaseAlertConfig { return smsReceivers; } } - + private List buildProjectSMSReceivers(Project project) { return split(project.getPhone()); } diff --git a/cat-home/src/main/java/com/dianping/cat/report/task/alert/network/NetworkAlert.java b/cat-home/src/main/java/com/dianping/cat/report/task/alert/network/NetworkAlert.java index 594dfd1b98f874e984ac6960bff1271fd943799b..86e567a387ea2ff8b0c612c04b543df5e43583e2 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/task/alert/network/NetworkAlert.java +++ b/cat-home/src/main/java/com/dianping/cat/report/task/alert/network/NetworkAlert.java @@ -14,6 +14,7 @@ import com.dianping.cat.consumer.company.model.entity.ProductLine; import com.dianping.cat.message.Event; import com.dianping.cat.message.Transaction; import com.dianping.cat.report.task.alert.BaseAlert; +import com.dianping.cat.report.task.alert.BaseAlertConfig; public class NetworkAlert extends BaseAlert implements Task, LogEnabled { @@ -29,6 +30,11 @@ public class NetworkAlert extends BaseAlert implements Task, LogEnabled { public String getName() { return "network-alert"; } + + @Override + public BaseAlertConfig getAlertConfig() { + return m_alertConfig; + } @Override public void run() { @@ -82,9 +88,8 @@ public class NetworkAlert extends BaseAlert implements Task, LogEnabled { } @Override - protected void sendAlertInfo(ProductLine productLine, String metricTitle, String content, String alertType) { + protected void sendAlertInfo(ProductLine productLine, String title, String content, String alertType) { List emails = m_alertConfig.buildMailReceivers(productLine); - String title = m_alertConfig.buildMailTitle(productLine, metricTitle); m_logger.info(title + " " + content + " " + emails); m_mailSms.sendEmail(title, content, emails); diff --git a/cat-home/src/main/java/com/dianping/cat/report/task/alert/network/NetworkAlertConfig.java b/cat-home/src/main/java/com/dianping/cat/report/task/alert/network/NetworkAlertConfig.java index c189e8ca7b3303726b91f6ee68d54ec5243a9d67..0e8f35b84a8a09b8d2053a9987a38d86cf57bbc4 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/task/alert/network/NetworkAlertConfig.java +++ b/cat-home/src/main/java/com/dianping/cat/report/task/alert/network/NetworkAlertConfig.java @@ -1,16 +1,16 @@ package com.dianping.cat.report.task.alert.network; -import com.dianping.cat.consumer.company.model.entity.ProductLine; import com.dianping.cat.report.task.alert.BaseAlertConfig; public class NetworkAlertConfig extends BaseAlertConfig { private String m_id = "network"; - public String buildMailTitle(ProductLine productLine, String configTitle) { + @Override + public String buildMailTitle(String productlineName, String configTitle) { StringBuilder sb = new StringBuilder(); - sb.append("[网络告警] [产品线 ").append(productLine.getTitle()).append("]"); + sb.append("[网络告警] [产品线 ").append(productlineName).append("]"); sb.append("[网络指标 ").append(configTitle).append("]"); return sb.toString(); } diff --git a/cat-home/src/main/java/com/dianping/cat/report/task/alert/system/SystemAlert.java b/cat-home/src/main/java/com/dianping/cat/report/task/alert/system/SystemAlert.java index 1001f4bdf187e27a09f85f8908e3642c42989077..df0748fbfeececaa08b191d143ee159d714ebea7 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/task/alert/system/SystemAlert.java +++ b/cat-home/src/main/java/com/dianping/cat/report/task/alert/system/SystemAlert.java @@ -14,6 +14,7 @@ import com.dianping.cat.consumer.company.model.entity.ProductLine; import com.dianping.cat.message.Event; import com.dianping.cat.message.Transaction; import com.dianping.cat.report.task.alert.BaseAlert; +import com.dianping.cat.report.task.alert.BaseAlertConfig; public class SystemAlert extends BaseAlert implements Task, LogEnabled { @@ -29,6 +30,11 @@ public class SystemAlert extends BaseAlert implements Task, LogEnabled { public String getName() { return "system-alert"; } + + @Override + public BaseAlertConfig getAlertConfig() { + return m_alertConfig; + } @Override public void run() { @@ -82,9 +88,8 @@ public class SystemAlert extends BaseAlert implements Task, LogEnabled { } @Override - protected void sendAlertInfo(ProductLine productLine, String metricTitle, String content, String alertType) { + protected void sendAlertInfo(ProductLine productLine, String title, String content, String alertType) { List emails = m_alertConfig.buildMailReceivers(productLine); - String title = m_alertConfig.buildMailTitle(productLine, metricTitle); m_logger.info(title + " " + content + " " + emails); m_mailSms.sendEmail(title, content, emails); diff --git a/cat-home/src/main/java/com/dianping/cat/report/task/alert/system/SystemAlertConfig.java b/cat-home/src/main/java/com/dianping/cat/report/task/alert/system/SystemAlertConfig.java index 8241045193def92a345fa28972f1b12416464a52..b114b06110c99cdb1c20efea3c592aeb5f296e1a 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/task/alert/system/SystemAlertConfig.java +++ b/cat-home/src/main/java/com/dianping/cat/report/task/alert/system/SystemAlertConfig.java @@ -1,16 +1,16 @@ package com.dianping.cat.report.task.alert.system; -import com.dianping.cat.consumer.company.model.entity.ProductLine; import com.dianping.cat.report.task.alert.BaseAlertConfig; public class SystemAlertConfig extends BaseAlertConfig { private String m_id = "system"; - public String buildMailTitle(ProductLine productLine, String configTitle) { + @Override + public String buildMailTitle(String productlineName, String configTitle) { StringBuilder sb = new StringBuilder(); - sb.append("[系统告警] [产品线 ").append(productLine.getTitle()).append("]"); + sb.append("[系统告警] [产品线 ").append(productlineName).append("]"); sb.append("[系统指标 ").append(configTitle).append("]"); return sb.toString(); } diff --git a/cat-home/src/main/resources/META-INF/dal/jdbc/report-dal.xml b/cat-home/src/main/resources/META-INF/dal/jdbc/report-dal.xml index 81561cbffb67ff353a0899be08083bc193f19d62..a1526a63f3f48bd39c35eb561f4e64014ea3d557 100644 --- a/cat-home/src/main/resources/META-INF/dal/jdbc/report-dal.xml +++ b/cat-home/src/main/resources/META-INF/dal/jdbc/report-dal.xml @@ -1,5 +1,8 @@ + + + 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 35a2acb345b68500067e03258c975ec69876bea0..474eed041c7ec320fc9aee87695a2e58de57ffdc 100755 --- a/cat-home/src/main/resources/META-INF/plexus/components.xml +++ b/cat-home/src/main/resources/META-INF/plexus/components.xml @@ -1814,6 +1814,9 @@ com.dianping.cat.report.task.alert.AlertInfo + + com.dianping.cat.home.dal.report.AlertDao + com.dianping.cat.report.task.alert.RemoteMetricReportService @@ -1847,6 +1850,9 @@ com.dianping.cat.report.task.alert.AlertInfo + + com.dianping.cat.home.dal.report.AlertDao + com.dianping.cat.report.task.alert.RemoteMetricReportService @@ -1880,6 +1886,9 @@ com.dianping.cat.report.task.alert.AlertInfo + + com.dianping.cat.home.dal.report.AlertDao + com.dianping.cat.report.task.alert.RemoteMetricReportService @@ -1941,6 +1950,16 @@ /data/appdatas/cat/datasources.xml + + org.unidal.dal.jdbc.mapping.TableProvider + alert + org.unidal.dal.jdbc.mapping.SimpleTableProvider + + alert + alert + cat + + org.unidal.dal.jdbc.mapping.TableProvider alteration @@ -2021,6 +2040,15 @@ cat + + com.dianping.cat.home.dal.report.AlertDao + com.dianping.cat.home.dal.report.AlertDao + + + org.unidal.dal.jdbc.QueryEngine + + + com.dianping.cat.home.dal.report.AlterationDao com.dianping.cat.home.dal.report.AlterationDao diff --git a/script/Cat.sql b/script/Cat.sql index 43b8529b3fceb666b1886f0a9ac0ae47fe2a466a..5efbf7b15ad59061cb22ee321e6ebe343302e074 100644 --- a/script/Cat.sql +++ b/script/Cat.sql @@ -311,3 +311,14 @@ CREATE TABLE `alteration` ( KEY `ind_date_domain_host` (`date`,`domain`,`hostname`) ) ENGINE=InnoDB AUTO_INCREMENT=1241 DEFAULT CHARSET=utf8 COMMENT='变更表'; +CREATE TABLE `alert` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增长ID', + `domain` varchar(128) NOT NULL COMMENT '告警项目', + `alert_time` datetime NOT NULL COMMENT '告警时间', + `category` varchar(64) NOT NULL COMMENT '告警分类:network/business/system/exception -alert', + `type` varchar(64) NOT NULL COMMENT '告警类型:error/warning', + `content` text NOT NULL COMMENT '告警内容', + `metric` varchar(128) NOT NULL COMMENT '告警指标', + `creation_date` datetime NOT NULL COMMENT '数据插入时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='存储告警信息'; \ No newline at end of file