diff --git a/cat-core/src/main/resources/META-INF/dal/model/aggreation-model.xml b/cat-core/src/main/resources/META-INF/dal/model/aggreation-model.xml index 376c25fb9940bccd6e4f1f046134d5c88ffb4c94..7963ad311b3900b8eb347e4ef1585d91b6ab94e5 100644 --- a/cat-core/src/main/resources/META-INF/dal/model/aggreation-model.xml +++ b/cat-core/src/main/resources/META-INF/dal/model/aggreation-model.xml @@ -7,7 +7,7 @@ - + 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 c4e851f23193a56c9070a0cb4d972be7749a64f3..3e1541d240907e6c8446d589552010b579b51491 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 @@ -71,6 +71,7 @@ import com.dianping.cat.report.task.alert.sender.decorator.BusinessDecorator; import com.dianping.cat.report.task.alert.sender.decorator.Decorator; import com.dianping.cat.report.task.alert.sender.decorator.DecoratorManager; import com.dianping.cat.report.task.alert.sender.decorator.ExceptionDecorator; +import com.dianping.cat.report.task.alert.sender.decorator.FrontEndExceptionDecorator; import com.dianping.cat.report.task.alert.sender.decorator.NetworkDecorator; import com.dianping.cat.report.task.alert.sender.decorator.SystemDecorator; import com.dianping.cat.report.task.alert.sender.decorator.ThirdpartyDecorator; @@ -78,6 +79,7 @@ import com.dianping.cat.report.task.alert.sender.receiver.BusinessContactor; import com.dianping.cat.report.task.alert.sender.receiver.Contactor; import com.dianping.cat.report.task.alert.sender.receiver.ContactorManager; import com.dianping.cat.report.task.alert.sender.receiver.ExceptionContactor; +import com.dianping.cat.report.task.alert.sender.receiver.FrontEndExceptionContactor; import com.dianping.cat.report.task.alert.sender.receiver.NetworkContactor; import com.dianping.cat.report.task.alert.sender.receiver.SystemContactor; import com.dianping.cat.report.task.alert.sender.receiver.ThirdpartyContactor; @@ -148,11 +150,15 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { all.add(C(Contactor.class, ThirdpartyContactor.ID, ThirdpartyContactor.class).req(ProjectDao.class, AlertConfigManager.class)); + all.add(C(Contactor.class, FrontEndExceptionContactor.ID, FrontEndExceptionContactor.class).req( + AggregationConfigManager.class)); + all.add(C(ContactorManager.class).req(Contactor.class, BusinessContactor.ID, "businessContactor") .req(Contactor.class, NetworkContactor.ID, "networkContactor") .req(Contactor.class, SystemContactor.ID, "exceptionContactor") .req(Contactor.class, ExceptionContactor.ID, "systemContactor") - .req(Contactor.class, ThirdpartyContactor.ID, "thirdpartyContactor")); + .req(Contactor.class, ThirdpartyContactor.ID, "thirdpartyContactor") + .req(Contactor.class, FrontEndExceptionContactor.ID, "frontEndExceptionContactor")); all.add(C(Decorator.class, BusinessDecorator.ID, BusinessDecorator.class).req(ProjectDao.class)); @@ -164,11 +170,14 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { all.add(C(Decorator.class, ThirdpartyDecorator.ID, ThirdpartyDecorator.class).req(ProjectDao.class)); + all.add(C(Decorator.class, FrontEndExceptionDecorator.ID, FrontEndExceptionDecorator.class)); + all.add(C(DecoratorManager.class).req(Decorator.class, BusinessDecorator.ID, "businessDecorator") .req(Decorator.class, NetworkDecorator.ID, "networkDecorator") .req(Decorator.class, ExceptionDecorator.ID, "exceptionDecorator") .req(Decorator.class, SystemDecorator.ID, "systemDecorator") - .req(Decorator.class, ThirdpartyDecorator.ID, "thirdpartyDecorator")); + .req(Decorator.class, ThirdpartyDecorator.ID, "thirdpartyDecorator") + .req(Decorator.class, FrontEndExceptionDecorator.ID, "frontEndExceptionDecorator")); all.add(C(AlertPolicyManager.class).req(ConfigDao.class)); diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/system/graph/SystemGraphCreator.java b/cat-home/src/main/java/com/dianping/cat/report/page/system/graph/SystemGraphCreator.java index ae0e68698a3f22643796b1735f0110f800ea6c8b..95c0b825c1ef2d077a1e67f75c8ed9058c1135d1 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/system/graph/SystemGraphCreator.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/system/graph/SystemGraphCreator.java @@ -36,15 +36,14 @@ public class SystemGraphCreator extends AbstractGraphCreator { "eth0-outFlow:sum", "eth0-dropped:sum", "eth0-errors:sum", "eth0-collisions:sum", "lo-inFlow:sum", "lo-outFlow:sum", "swapUsage:avg", "loadAvg1:avg", "loadAvg5:avg", "totalMem:avg", "usedMem:avg", "freeMem:avg", "sharedMem:avg", "buffersMem:avg", "cachedMem:avg", "totalProcess:avg", "runningProcess:avg", - "swapUsage:avg", "establishedTcp:avg", "loginUsers:avg", "uptime:avg", "md5Change:avg", "hostNameChange:avg", - "hostIpChange:avg"); + "swapUsage:avg", "establishedTcp:avg", "loginUsers:avg"); private static final List PAAS_SYSTEM_KEY_LIST = Arrays.asList("sysCpu:avg", "userCpu:avg", "cpuUsage:avg", "/-usage:avg", "/-freeInodes:avg", "/-read:sum", "/-write:sum", "eth0-inFlow:sum", "eth0-outFlow:sum", "eth0-dropped:sum", "eth0-errors:sum", "eth0-collisions:sum", "lo-inFlow:sum", "lo-outFlow:sum", "swapUsage:avg", "totalMem:avg", "usedMem:avg", "freeMem:avg", "sharedMem:avg", "buffersMem:avg", "cachedMem:avg", "totalProcess:avg", "runningProcess:avg", "swapUsage:avg", "establishedTcp:avg", - "loginUsers:avg", "uptime:avg", "md5Change:avg"); + "loginUsers:avg"); private static final List JVM_KEY_LIST = new ArrayList(Arrays.asList("edenUsage:avg", "oldUsage:avg", "permUsage:avg", "catalinaLogSize:sum")); diff --git a/cat-home/src/main/java/com/dianping/cat/report/task/alert/AlertConstants.java b/cat-home/src/main/java/com/dianping/cat/report/task/alert/AlertConstants.java index 74bf143235ee604fe333e6eff18405d6d121e18b..ee1adb409456a1eb53ab289213fa5fea33566c2f 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/task/alert/AlertConstants.java +++ b/cat-home/src/main/java/com/dianping/cat/report/task/alert/AlertConstants.java @@ -6,6 +6,8 @@ public class AlertConstants { public static final String EXCEPTION = "exception"; + public static final String FRONT_END_EXCEPTION = "frontEndException"; + public static final String NETWORK = "network"; public static final String SYSTEM = "system"; @@ -18,4 +20,8 @@ public class AlertConstants { public static final String WEIXIN = "weixin"; + public static final String WARNING_EXCEPTION = "warning"; + + public static final String ERROR_EXCEPTION = "error"; + } 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 1c856b00918997a7281a9f0fae2036c05c0fe0fb..7ba3fd9a7757d63baabab9293cfc2a6773dbf721 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 @@ -1,8 +1,6 @@ package com.dianping.cat.report.task.alert.exception; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Date; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -11,11 +9,12 @@ import java.util.Map.Entry; import org.unidal.lookup.annotation.Inject; import org.unidal.tuple.Pair; -import com.dianping.cat.Constants; import com.dianping.cat.config.aggregation.AggregationConfigManager; +import com.dianping.cat.configuration.aggreation.model.entity.AggregationRule; import com.dianping.cat.home.dependency.exception.entity.ExceptionExclude; import com.dianping.cat.home.dependency.exception.entity.ExceptionLimit; import com.dianping.cat.report.page.top.TopMetric.Item; +import com.dianping.cat.report.task.alert.AlertConstants; import com.dianping.cat.system.config.ExceptionConfigManager; public class AlertExceptionBuilder { @@ -30,29 +29,32 @@ public class AlertExceptionBuilder { Map> alertExceptions = new LinkedHashMap>(); for (Item item : items) { - String domain = item.getDomain(); + List domainAlertExceptions = buildDomainAlertExceptions(item); - if (Constants.FRONT_END.equalsIgnoreCase(domain)) { - List frontEndAlertExceptions = buildFrontEndAlertExceptions(item); - - if (!frontEndAlertExceptions.isEmpty()) { - alertExceptions.put(domain, frontEndAlertExceptions); - } - } else { - List domainAlertExceptions = buildDomainAlertExceptions(item); - - if (!domainAlertExceptions.isEmpty()) { - alertExceptions.put(domain, domainAlertExceptions); - } + if (!domainAlertExceptions.isEmpty()) { + alertExceptions.put(item.getDomain(), domainAlertExceptions); } } return alertExceptions; } - private List buildFrontEndAlertExceptions(Item item) { - String domain = item.getDomain(); + public List buildFrontEndAlertExceptions(Item frontEndItem) { List alertExceptions = new ArrayList(); - return null; + + for (Entry entry : frontEndItem.getException().entrySet()) { + String exception = entry.getKey(); + AggregationRule rule = m_aggregationConfigManager.queryAggration(exception); + + if (rule != null) { + int warn = rule.getWarn(); + double value = entry.getValue().doubleValue(); + + if (value >= warn) { + alertExceptions.add(new AlertException(exception, AlertConstants.WARNING_EXCEPTION, value)); + } + } + } + return alertExceptions; } private List buildDomainAlertExceptions(Item item) { @@ -75,19 +77,19 @@ public class AlertExceptionBuilder { totalException += value; if (errorLimit > 0 && value >= errorLimit) { - alertExceptions.add(new AlertException(exceptionName, AlertException.ERROR_EXCEPTION, value, + alertExceptions.add(new AlertException(exceptionName, AlertConstants.ERROR_EXCEPTION, value, needSendSms(domain, exceptionName))); } else if (warnLimit > 0 && value >= warnLimit) { - alertExceptions.add(new AlertException(exceptionName, AlertException.WARN_EXCEPTION, value)); + alertExceptions.add(new AlertException(exceptionName, AlertConstants.WARNING_EXCEPTION, value)); } } } if (totalErrorLimit > 0 && totalException >= totalErrorLimit) { - alertExceptions.add(new AlertException(ExceptionConfigManager.TOTAL_STRING, AlertException.ERROR_EXCEPTION, + alertExceptions.add(new AlertException(ExceptionConfigManager.TOTAL_STRING, AlertConstants.ERROR_EXCEPTION, totalException, needSendSms(domain, ExceptionConfigManager.TOTAL_STRING))); } else if (totalWarnLimit > 0 && totalException >= totalWarnLimit) { - alertExceptions.add(new AlertException(ExceptionConfigManager.TOTAL_STRING, AlertException.WARN_EXCEPTION, + alertExceptions.add(new AlertException(ExceptionConfigManager.TOTAL_STRING, AlertConstants.WARNING_EXCEPTION, totalException)); } @@ -146,72 +148,8 @@ public class AlertExceptionBuilder { return limits; } - public String buildMailContent(String exceptions, String domain, String contactInfo) { - String content = buildContent(exceptions, domain, contactInfo); - String date = new SimpleDateFormat("yyyyMMddHH").format(new Date()); - String url = "http://cat.dianpingoa.com/cat/r/p?domain=" + domain + "&date=" + date; - String mailContent = content + "
" + " 点击此处查看详情"; - - return mailContent; - } - - public String buildDBContent(String exceptions, String domain) { - String content = buildContent(exceptions, domain); - String url = "http://cat.dianpingoa.com/cat/r/p?domain=" + domain; - String mailContent = content + "
" + " 点击此处查看详情"; - - return mailContent; - } - - public String buildContent(String exceptions, String domain) { - StringBuilder sb = new StringBuilder(); - String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()); - - sb.append("[CAT异常告警] [项目: ").append(domain).append("] : "); - sb.append(exceptions).append("[时间: ").append(time).append("]"); - - return sb.toString(); - } - - public String buildContent(String exceptions, String domain, String contactInfo) { - StringBuilder sb = new StringBuilder(); - String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()); - - sb.append("[CAT异常告警] [项目: ").append(domain).append("] : "); - sb.append(exceptions).append("[时间: ").append(time).append("]").append("\n"); - sb.append(contactInfo); - - return sb.toString(); - } - - public List buildErrorException(List exceptions) { - List errorExceptions = new ArrayList(); - - for (AlertException alertException : exceptions) { - if (AlertException.ERROR_EXCEPTION.equals(alertException.getType())) { - errorExceptions.add(alertException); - } - } - return errorExceptions; - } - - public List buildErrorAndTriggeredException(List exceptions) { - List errorExceptions = new ArrayList(); - - for (AlertException alertException : exceptions) { - if (AlertException.ERROR_EXCEPTION.equals(alertException.getType()) && alertException.isTriggered()) { - errorExceptions.add(alertException); - } - } - return errorExceptions; - } - public class AlertException { - private static final String WARN_EXCEPTION = "warn"; - - private static final String ERROR_EXCEPTION = "error"; - private String m_name; private String m_type; 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 5904d41d8648704dce1b59be63bde81917cc1a4d..7468b8979ebf14f76f62e5b8c2d55d7d7a28ff62 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 @@ -94,31 +94,27 @@ public class ExceptionAlert implements Task { try { TopMetric topMetric = buildTopMetric(new Date(current - TimeUtil.ONE_MINUTE * 2)); - Collection> items = topMetric.getError().getResult().values(); - List item = new ArrayList(); + Collection> itemLists = topMetric.getError().getResult().values(); + List itemList = new ArrayList(); - if (!items.isEmpty()) { - item = items.iterator().next(); + if (!itemLists.isEmpty()) { + itemList = itemLists.iterator().next(); } - Map> alertExceptions = m_alertBuilder.buildAlertExceptions(item); - - for (Entry> entry : alertExceptions.entrySet()) { - try { - String domain = entry.getKey(); - List exceptions = entry.getValue(); - - for (AlertException exception : exceptions) { - String metricName = exception.getName(); - AlertEntity entity = new AlertEntity(); - - entity.setDate(new Date()).setContent(exception.toString()).setLevel(exception.getType()); - entity.setMetric(metricName).setType(getName()).setGroup(domain); - m_sendManager.addAlert(entity); - } - } catch (Exception e) { - Cat.logError(e); + Item frontEndItem = null; + List otherItemList = new ArrayList(); + + for (Item item : itemList) { + if (Constants.FRONT_END.equals(item.getDomain())) { + frontEndItem = item; + } else { + otherItemList.add(item); } } + if (frontEndItem != null) { + handleFrontEndException(frontEndItem); + } + handleGeneralExceptions(itemList); + t.setStatus(Transaction.SUCCESS); } catch (Exception e) { t.setStatus(e); @@ -137,6 +133,45 @@ public class ExceptionAlert implements Task { } } + private void handleGeneralExceptions(List itemList) { + Map> alertExceptions = m_alertBuilder.buildAlertExceptions(itemList); + + for (Entry> entry : alertExceptions.entrySet()) { + try { + String domain = entry.getKey(); + List exceptions = entry.getValue(); + + for (AlertException exception : exceptions) { + String metricName = exception.getName(); + AlertEntity entity = new AlertEntity(); + + entity.setDate(new Date()).setContent(exception.toString()).setLevel(exception.getType()); + entity.setMetric(metricName).setType(getName()).setGroup(domain); + m_sendManager.addAlert(entity); + } + } catch (Exception e) { + Cat.logError(e); + } + } + } + + private void handleFrontEndException(Item frontEndItem) { + List alertExceptions = m_alertBuilder.buildFrontEndAlertExceptions(frontEndItem); + + for (AlertException exception : alertExceptions) { + try { + String metricName = exception.getName(); + AlertEntity entity = new AlertEntity(); + + entity.setDate(new Date()).setContent(exception.toString()).setLevel(exception.getType()); + entity.setMetric(metricName).setType(AlertConstants.FRONT_END_EXCEPTION).setGroup(metricName); + m_sendManager.addAlert(entity); + } catch (Exception e) { + Cat.logError(e); + } + } + } + @Override public void shutdown() { } diff --git a/cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/DecoratorManager.java b/cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/DecoratorManager.java index e088f47c9bb1e82aa6bcc477d7c1b2e550f9b14b..602383a2356336b6a7ad9bc7453dd58378602d32 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/DecoratorManager.java +++ b/cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/DecoratorManager.java @@ -27,6 +27,9 @@ public class DecoratorManager implements Initializable { @Inject(type = Decorator.class, value = ThirdpartyDecorator.ID) private Decorator m_thirdpartyDecorator; + @Inject(type = Decorator.class, value = FrontEndExceptionDecorator.ID) + private Decorator m_frontEndExceptionDecorator; + private Map m_decorators = new HashMap(); public Pair generateTitleAndContent(AlertEntity alert) { @@ -50,6 +53,7 @@ public class DecoratorManager implements Initializable { m_decorators.put(m_exceptionDecorator.getId(), m_exceptionDecorator); m_decorators.put(m_systemDecorator.getId(), m_systemDecorator); m_decorators.put(m_thirdpartyDecorator.getId(), m_thirdpartyDecorator); + m_decorators.put(m_frontEndExceptionDecorator.getId(), m_frontEndExceptionDecorator); } public void setBusinessDecorator(Decorator decorator) { @@ -72,4 +76,8 @@ public class DecoratorManager implements Initializable { m_thirdpartyDecorator = decorator; } + public void setFrontEndExceptionDecorator(Decorator decorator) { + m_frontEndExceptionDecorator = decorator; + } + } diff --git a/cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/ExceptionDecorator.java b/cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/ExceptionDecorator.java index 2385c01594368f9d1bd7b7fe28bd99bb0ab804eb..3486bbe5fc6bf1c45b2a5b5819c186ae02a5df7c 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/ExceptionDecorator.java +++ b/cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/ExceptionDecorator.java @@ -23,7 +23,7 @@ public class ExceptionDecorator extends DefaultDecorator implements Initializabl public static final String ID = AlertConstants.EXCEPTION; - private DateFormat m_dateFormat = new SimpleDateFormat("yyyyMMddHH"); + protected DateFormat m_dateFormat = new SimpleDateFormat("yyyyMMddHH"); @Override public String getId() { @@ -51,7 +51,7 @@ public class ExceptionDecorator extends DefaultDecorator implements Initializabl return sw.toString(); } - private Map generateExceptionMap(AlertEntity alert) { + protected Map generateExceptionMap(AlertEntity alert) { String domain = alert.getGroup(); String contactInfo = buildContactInfo(domain); Map map = new HashMap(); diff --git a/cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/FrontEndExceptionDecorator.java b/cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/FrontEndExceptionDecorator.java new file mode 100644 index 0000000000000000000000000000000000000000..15f52cdc113171734217014cedd820d9c3ec8e0b --- /dev/null +++ b/cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/FrontEndExceptionDecorator.java @@ -0,0 +1,19 @@ +package com.dianping.cat.report.task.alert.sender.decorator; + +import com.dianping.cat.report.task.alert.AlertConstants; + +public class FrontEndExceptionDecorator extends ExceptionDecorator { + + public static final String ID = AlertConstants.FRONT_END_EXCEPTION; + + @Override + public String getId() { + return ID; + } + + @Override + protected String buildContactInfo(String domainName) { + return ""; + } + +} diff --git a/cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/ContactorManager.java b/cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/ContactorManager.java index 235ef603cb35d6fa498b55dfd61bc7db600710da..748336fe299000edb995106c3284dd86ea415563 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/ContactorManager.java +++ b/cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/ContactorManager.java @@ -28,6 +28,9 @@ public class ContactorManager implements Initializable { @Inject(type = Contactor.class, value = ThirdpartyContactor.ID) private Contactor m_thirdpartyContactor; + @Inject(type = Contactor.class, value = FrontEndExceptionContactor.ID) + private Contactor m_frontEndExceptionContactor; + private Map m_contactors = new HashMap(); public List queryReceivers(String group, String channel, String type) { @@ -51,6 +54,7 @@ public class ContactorManager implements Initializable { m_contactors.put(m_exceptionContactor.getId(), m_exceptionContactor); m_contactors.put(m_systemContactor.getId(), m_systemContactor); m_contactors.put(m_thirdpartyContactor.getId(), m_thirdpartyContactor); + m_contactors.put(m_frontEndExceptionContactor.getId(), m_frontEndExceptionContactor); } public void setBusinessContactor(Contactor contactor) { @@ -73,4 +77,8 @@ public class ContactorManager implements Initializable { m_thirdpartyContactor = thirdpartyContactor; } + public void setFrontEndExceptionContactor(Contactor frontEndExceptionContactor) { + m_frontEndExceptionContactor = frontEndExceptionContactor; + } + } diff --git a/cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/FrontEndExceptionContactor.java b/cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/FrontEndExceptionContactor.java new file mode 100644 index 0000000000000000000000000000000000000000..f5acdde8bb3e029f8b1959feb3241157d8a57ae3 --- /dev/null +++ b/cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/FrontEndExceptionContactor.java @@ -0,0 +1,49 @@ +package com.dianping.cat.report.task.alert.sender.receiver; + +import java.util.ArrayList; +import java.util.List; + +import org.unidal.helper.Splitters; +import org.unidal.lookup.annotation.Inject; + +import com.dianping.cat.config.aggregation.AggregationConfigManager; +import com.dianping.cat.configuration.aggreation.model.entity.AggregationRule; +import com.dianping.cat.report.task.alert.AlertConstants; + +public class FrontEndExceptionContactor implements Contactor { + + @Inject + private AggregationConfigManager m_configManager; + + public static final String ID = AlertConstants.FRONT_END_EXCEPTION; + + @Override + public String getId() { + return ID; + } + + @Override + public List queryEmailContactors(String id) { + AggregationRule rule = m_configManager.queryAggration(id); + + if (rule != null) { + String mails = rule.getMails(); + List receiver = Splitters.by(",").noEmptyItem().split(mails); + + return receiver; + } else { + return new ArrayList(); + } + } + + @Override + public List queryWeiXinContactors(String id) { + return null; + } + + @Override + public List querySmsContactors(String id) { + return null; + } + +} diff --git a/cat-home/src/main/resources/META-INF/cat/client.xml b/cat-home/src/main/resources/META-INF/cat/client.xml index 27d57cd8f6735026bcc5b75e1cfd5f98acea6b82..18f0324bdd5bfd2a509488fd4a060a470e5c2253 100755 --- a/cat-home/src/main/resources/META-INF/cat/client.xml +++ b/cat-home/src/main/resources/META-INF/cat/client.xml @@ -1,3 +1,3 @@ - + 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 5c1b3cf9ee1267163903f022d4efec1c35ce29f3..d10429363a862395a033c36be34c104508e55ea2 100755 --- a/cat-home/src/main/resources/META-INF/plexus/components.xml +++ b/cat-home/src/main/resources/META-INF/plexus/components.xml @@ -479,15 +479,6 @@ - - com.dianping.cat.report.task.alert.exception.AlertExceptionBuilder - com.dianping.cat.report.task.alert.exception.AlertExceptionBuilder - - - com.dianping.cat.system.config.ExceptionConfigManager - - - com.dianping.cat.report.task.alert.summary.AlertSummaryExecutor com.dianping.cat.report.task.alert.summary.AlertSummaryExecutor @@ -628,6 +619,16 @@ + + com.dianping.cat.report.task.alert.sender.receiver.Contactor + frontEndException + com.dianping.cat.report.task.alert.sender.receiver.FrontEndExceptionContactor + + + com.dianping.cat.config.aggregation.AggregationConfigManager + + + com.dianping.cat.report.task.alert.sender.receiver.ContactorManager com.dianping.cat.report.task.alert.sender.receiver.ContactorManager @@ -657,6 +658,11 @@ thirdParty thirdpartyContactor + + com.dianping.cat.report.task.alert.sender.receiver.Contactor + frontEndException + frontEndExceptionContactor + @@ -709,6 +715,11 @@ + + com.dianping.cat.report.task.alert.sender.decorator.Decorator + frontEndException + com.dianping.cat.report.task.alert.sender.decorator.FrontEndExceptionDecorator + com.dianping.cat.report.task.alert.sender.decorator.DecoratorManager com.dianping.cat.report.task.alert.sender.decorator.DecoratorManager @@ -738,6 +749,11 @@ thirdParty thirdpartyDecorator + + com.dianping.cat.report.task.alert.sender.decorator.Decorator + frontEndException + frontEndExceptionDecorator + @@ -941,6 +957,9 @@ com.dianping.cat.system.config.ExceptionConfigManager + + com.dianping.cat.config.aggregation.AggregationConfigManager + @@ -3591,6 +3610,9 @@ com.dianping.cat.system.config.ExceptionConfigManager + + com.dianping.cat.ServerConfigManager + diff --git a/cat-home/src/test/java/com/dianping/cat/report/task/alert/ExceptionBuilder.java b/cat-home/src/test/java/com/dianping/cat/report/task/alert/ExceptionBuilder.java deleted file mode 100644 index c6f0d1d9e9fe0da62ae12fbf215edf44d5f5beda..0000000000000000000000000000000000000000 --- a/cat-home/src/test/java/com/dianping/cat/report/task/alert/ExceptionBuilder.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.dianping.cat.report.task.alert; - -import com.dianping.cat.Cat; - -public class ExceptionBuilder { - public static void main(String args[]) { - while (true) { - Cat.logError(new RuntimeException("just test for FrontEnd")); - System.out.println("log error"); - try { - Thread.sleep(5000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } -}