提交 2d65df5e 编写于 作者: Y youyong205

Merge pull request #424 from youyong205/master

refactor alert module
......@@ -12,4 +12,3 @@ cat-client/src/main/resources/com/dianping/cat/configuration/client/config.xsd
cat-client/src/main/resources/com/dianping/cat/status/model/status.xsd
cat-client/src/test/java/com/dianping/cat/message/io/ChannelManagerTest.java
......@@ -14,7 +14,6 @@ import org.unidal.initialization.Module;
import org.unidal.initialization.ModuleContext;
import com.dianping.cat.configuration.ClientConfigManager;
import com.dianping.cat.configuration.client.entity.ClientConfig;
import com.dianping.cat.message.internal.MilliSecondTimer;
import com.dianping.cat.message.io.TransportManager;
import com.dianping.cat.status.StatusUpdateTask;
......@@ -53,8 +52,6 @@ public class CatClientModule extends AbstractModule {
Threads.forGroup("Cat").start(statusUpdateTask);
LockSupport.parkNanos(10 * 1000 * 1000L); // wait 10 ms
ClientConfig config = clientConfigManager.getClientConfig();
// MmapConsumerTask mmapReaderTask = ctx.lookup(MmapConsumerTask.class);
// Threads.forGroup("Cat").start(mmapReaderTask);
}
......
......@@ -13,7 +13,6 @@ import com.dianping.cat.consumer.matrix.MatrixAnalyzerTest;
import com.dianping.cat.consumer.matrix.MatrixModelTest;
import com.dianping.cat.consumer.matrix.MatrixReportMergerTest;
import com.dianping.cat.consumer.metric.MetricAnalyzerTest;
import com.dianping.cat.consumer.metric.MetricConfigManagerTest;
import com.dianping.cat.consumer.metric.ProductLineConfigManagerTest;
@RunWith(Suite.class)
......
......@@ -64,7 +64,6 @@ import com.dianping.cat.report.task.alert.RemoteMetricReportService;
import com.dianping.cat.report.task.alert.business.BusinessAlert;
import com.dianping.cat.report.task.alert.exception.AlertExceptionBuilder;
import com.dianping.cat.report.task.alert.exception.ExceptionAlert;
import com.dianping.cat.report.task.alert.manager.AlertEntityService;
import com.dianping.cat.report.task.alert.network.NetworkAlert;
import com.dianping.cat.report.task.alert.sender.AlertManager;
import com.dianping.cat.report.task.alert.sender.decorator.BusinessDecorator;
......@@ -91,6 +90,7 @@ import com.dianping.cat.report.task.alert.sender.spliter.SmsSpliter;
import com.dianping.cat.report.task.alert.sender.spliter.Spliter;
import com.dianping.cat.report.task.alert.sender.spliter.SpliterManager;
import com.dianping.cat.report.task.alert.sender.spliter.WeixinSpliter;
import com.dianping.cat.report.task.alert.service.AlertEntityService;
import com.dianping.cat.report.task.alert.summary.AlertSummaryDecorator;
import com.dianping.cat.report.task.alert.summary.AlertSummaryExecutor;
import com.dianping.cat.report.task.alert.summary.AlertSummaryFTLDecorator;
......
package com.dianping.cat.report.task.alert.sender;
package com.dianping.cat.report.task.alert;
public class AlertConstants {
......
......@@ -25,7 +25,6 @@ import com.dianping.cat.home.rule.entity.Condition;
import com.dianping.cat.home.rule.entity.Config;
import com.dianping.cat.report.baseline.BaselineService;
import com.dianping.cat.report.task.alert.sender.AlertEntity;
import com.dianping.cat.report.task.alert.sender.AlertEntity.AlertEntityBuilder;
import com.dianping.cat.report.task.alert.sender.AlertManager;
import com.dianping.cat.service.ModelPeriod;
import com.dianping.cat.service.ModelRequest;
......@@ -233,21 +232,12 @@ public abstract class BaseAlert {
m_alertInfo.addAlertInfo(productlineName, metricKey, new Date().getTime());
String metricName = buildMetricName(metricKey);
AlertEntityBuilder builder = new AlertEntity().new AlertEntityBuilder();
builder.buildDate(alertResult.getAlertTime()).buildContent(alertResult.getContent())
.buildLevel(alertResult.getAlertLevel());
builder.buildMetric(metricName).buildType(getName());
AlertEntity entity = new AlertEntity();
if ("network".equals(getName())) {
builder.buildGroup(productlineName);
} else {
String domain = extractDomain(metricKey);
builder.buildGroup(domain);
}
AlertEntity alertEntity = builder.getAlertEntity();
entity.setDate(alertResult.getAlertTime()).setContent(alertResult.getContent()).setLevel(alertResult.getAlertLevel());
entity.setMetric(metricName).setType(getName()).setGroup(productlineName);
m_sendManager.addAlert(alertEntity);
m_sendManager.addAlert(entity);
}
}
}
......
......@@ -15,12 +15,11 @@ import com.dianping.cat.advanced.metric.config.entity.MetricItemConfig;
import com.dianping.cat.consumer.company.model.entity.ProductLine;
import com.dianping.cat.consumer.metric.MetricConfigManager;
import com.dianping.cat.message.Transaction;
import com.dianping.cat.report.task.alert.AlertConstants;
import com.dianping.cat.report.task.alert.AlertResultEntity;
import com.dianping.cat.report.task.alert.BaseAlert;
import com.dianping.cat.report.task.alert.MetricType;
import com.dianping.cat.report.task.alert.sender.AlertConstants;
import com.dianping.cat.report.task.alert.sender.AlertEntity;
import com.dianping.cat.report.task.alert.sender.AlertEntity.AlertEntityBuilder;
public class BusinessAlert extends BaseAlert implements Task, LogEnabled {
......@@ -70,15 +69,12 @@ public class BusinessAlert extends BaseAlert implements Task, LogEnabled {
m_alertInfo.addAlertInfo(product, metricKey, new Date().getTime());
String metricName = buildMetricName(metricKey);
AlertEntityBuilder builder = new AlertEntity().new AlertEntityBuilder();
builder.buildDate(alertResult.getAlertTime()).buildContent(alertResult.getContent())
.buildLevel(alertResult.getAlertLevel());
builder.buildMetric(metricName).buildType(getName());
AlertEntity entity = new AlertEntity();
entity.setDate(alertResult.getAlertTime()).setContent(alertResult.getContent()).setLevel(alertResult.getAlertLevel());
entity.setMetric(metricName).setType(getName()).setGroup(product);
builder.buildGroup(domain);
AlertEntity alertEntity = builder.getAlertEntity();
m_sendManager.addAlert(alertEntity);
m_sendManager.addAlert(entity);
}
}
}
......
......@@ -20,10 +20,9 @@ import com.dianping.cat.message.Transaction;
import com.dianping.cat.report.page.model.spi.ModelService;
import com.dianping.cat.report.page.top.TopMetric;
import com.dianping.cat.report.page.top.TopMetric.Item;
import com.dianping.cat.report.task.alert.AlertConstants;
import com.dianping.cat.report.task.alert.exception.AlertExceptionBuilder.AlertException;
import com.dianping.cat.report.task.alert.sender.AlertConstants;
import com.dianping.cat.report.task.alert.sender.AlertEntity;
import com.dianping.cat.report.task.alert.sender.AlertEntity.AlertEntityBuilder;
import com.dianping.cat.report.task.alert.sender.AlertManager;
import com.dianping.cat.service.ModelRequest;
import com.dianping.cat.service.ModelResponse;
......@@ -110,13 +109,12 @@ public class ExceptionAlert implements Task {
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);
AlertEntityBuilder builder = new AlertEntity().new AlertEntityBuilder();
builder.buildDate(new Date()).buildLevel(exception.getType()).buildContent(exception.toString());
builder.buildMetric(metricName).buildType(getName()).buildGroup(domain);
AlertEntity alertEntity = builder.getAlertEntity();
m_sendManager.addAlert(alertEntity);
m_sendManager.addAlert(entity);
}
} catch (Exception e) {
Cat.logError(e);
......
......@@ -10,8 +10,8 @@ import org.unidal.helper.Threads.Task;
import com.dianping.cat.Cat;
import com.dianping.cat.consumer.company.model.entity.ProductLine;
import com.dianping.cat.message.Transaction;
import com.dianping.cat.report.task.alert.AlertConstants;
import com.dianping.cat.report.task.alert.BaseAlert;
import com.dianping.cat.report.task.alert.sender.AlertConstants;
public class NetworkAlert extends BaseAlert implements Task, LogEnabled {
......
package com.dianping.cat.report.task.alert.sender;
import com.dianping.cat.report.task.alert.AlertConstants;
public enum AlertChannel {
MAIL(AlertConstants.MAIL),
......
......@@ -48,71 +48,40 @@ public class AlertEntity {
return m_type;
}
public void setDate(Date alertDate) {
public AlertEntity setDate(Date alertDate) {
m_date = alertDate;
return this;
}
public void setContent(String content) {
public AlertEntity setContent(String content) {
m_content = content;
return this;
}
public void setGroup(String group) {
public AlertEntity setGroup(String group) {
m_group = group;
return this;
}
public void setLevel(String level) {
public AlertEntity setLevel(String level) {
m_level = level;
return this;
}
public void setMetric(String metricName) {
public AlertEntity setMetric(String metricName) {
m_metric = metricName;
return this;
}
public void setParas(Map<String, Object> paras) {
public AlertEntity setParas(Map<String, Object> paras) {
m_paras = paras;
return this;
}
public void setType(String type) {
public AlertEntity setType(String type) {
m_type = type;
return this;
}
public class AlertEntityBuilder {
private AlertEntity m_alertEntity = new AlertEntity();
public AlertEntityBuilder buildDate(Date date) {
m_alertEntity.setDate(date);
return this;
}
public AlertEntityBuilder buildType(String type) {
m_alertEntity.setType(type);
return this;
}
public AlertEntityBuilder buildGroup(String group) {
m_alertEntity.setGroup(group);
return this;
}
public AlertEntityBuilder buildLevel(String level) {
m_alertEntity.setLevel(level);
return this;
}
public AlertEntityBuilder buildMetric(String metric) {
m_alertEntity.setMetric(metric);
return this;
}
public AlertEntityBuilder buildContent(String content) {
m_alertEntity.setContent(content);
return this;
}
public AlertEntity getAlertEntity(){
return m_alertEntity;
}
}
}
......@@ -13,11 +13,11 @@ import org.unidal.lookup.annotation.Inject;
import org.unidal.tuple.Pair;
import com.dianping.cat.Cat;
import com.dianping.cat.report.task.alert.manager.AlertEntityService;
import com.dianping.cat.report.task.alert.sender.decorator.DecoratorManager;
import com.dianping.cat.report.task.alert.sender.receiver.ContactorManager;
import com.dianping.cat.report.task.alert.sender.sender.SenderManager;
import com.dianping.cat.report.task.alert.sender.spliter.SpliterManager;
import com.dianping.cat.report.task.alert.service.AlertEntityService;
import com.dianping.cat.system.config.AlertPolicyManager;
public class AlertManager implements Initializable {
......@@ -31,14 +31,14 @@ public class AlertManager implements Initializable {
@Inject
private ContactorManager m_contactorManager;
@Inject
protected AlertEntityService m_alertEntityService;
@Inject
protected SpliterManager m_splitterManager;
@Inject
protected SenderManager m_senderManager;
@Inject
protected AlertEntityService m_alertEntityService;
private BlockingQueue<AlertEntity> m_alerts = new LinkedBlockingDeque<AlertEntity>(10000);
......
package com.dianping.cat.report.task.alert.sender.decorator;
import com.dianping.cat.report.task.alert.sender.AlertConstants;
import com.dianping.cat.report.task.alert.AlertConstants;
import com.dianping.cat.report.task.alert.sender.AlertEntity;
public class BusinessDecorator extends DefaultDecorator {
......
......@@ -30,11 +30,17 @@ public class DecoratorManager implements Initializable {
private Map<String, Decorator> m_decorators = new HashMap<String, Decorator>();
public Pair<String, String> generateTitleAndContent(AlertEntity alert) {
Decorator decorator = m_decorators.get(alert.getType());
String title = decorator.generateTitle(alert);
String content = decorator.generateContent(alert);
String alertType = alert.getType();
Decorator decorator = m_decorators.get(alertType);
return new Pair<String, String>(title, content);
if (decorator != null) {
String title = decorator.generateTitle(alert);
String content = decorator.generateContent(alert);
return new Pair<String, String>(title, content);
} else {
throw new RuntimeException("error alert type:" + alert.getType());
}
}
@Override
......
package com.dianping.cat.report.task.alert.sender.decorator;
import com.dianping.cat.Cat;
import com.dianping.cat.report.task.alert.sender.AlertConstants;
import com.dianping.cat.report.task.alert.AlertConstants;
import com.dianping.cat.report.task.alert.sender.AlertEntity;
public class ExceptionDecorator extends DefaultDecorator {
......@@ -30,7 +30,7 @@ public class ExceptionDecorator extends DefaultDecorator {
sb.append("[CAT异常告警] [项目: ").append(domain).append("] : ");
sb.append(alert.getContent()).append("[时间: ").append(date).append("]");
sb.append(" <a href='").append("http://cat.dianpingoa.com/cat/r/p?domain=").append(domain).append("&date=")
.append(date).append("'>点击此处查看详情</a>").append("<br/>");
.append(date).append("'>点击此处查看详情[联系人修改请联系黄永,修改CMDB]</a>").append("<br/>");
sb.append(buildContactInfo(domain));
return sb.toString();
......
package com.dianping.cat.report.task.alert.sender.decorator;
import com.dianping.cat.report.task.alert.sender.AlertConstants;
import com.dianping.cat.report.task.alert.AlertConstants;
import com.dianping.cat.report.task.alert.sender.AlertEntity;
public class NetworkDecorator extends DefaultDecorator {
......
package com.dianping.cat.report.task.alert.sender.decorator;
import com.dianping.cat.report.task.alert.sender.AlertConstants;
import com.dianping.cat.report.task.alert.AlertConstants;
import com.dianping.cat.report.task.alert.sender.AlertEntity;
public class SystemDecorator extends DefaultDecorator {
......
......@@ -3,7 +3,7 @@ package com.dianping.cat.report.task.alert.sender.decorator;
import java.util.Date;
import com.dianping.cat.Cat;
import com.dianping.cat.report.task.alert.sender.AlertConstants;
import com.dianping.cat.report.task.alert.AlertConstants;
import com.dianping.cat.report.task.alert.sender.AlertEntity;
public class ThirdpartyDecorator extends DefaultDecorator {
......
package com.dianping.cat.report.task.alert.sender.receiver;
import com.dianping.cat.report.task.alert.sender.AlertConstants;
import com.dianping.cat.report.task.alert.AlertConstants;
public class BusinessContactor extends ProductlineContactor {
......
......@@ -9,7 +9,7 @@ import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
import org.unidal.lookup.annotation.Inject;
import com.dianping.cat.report.task.alert.sender.AlertConstants;
import com.dianping.cat.report.task.alert.AlertConstants;
public class ContactorManager implements Initializable {
......@@ -40,9 +40,9 @@ public class ContactorManager implements Initializable {
return contactor.querySmsContactors();
} else if (AlertConstants.WEIXIN.equals(channel)) {
return contactor.queryWeiXinContactors();
} else {
return new ArrayList<String>();
}
return new ArrayList<String>();
}
@Override
......
package com.dianping.cat.report.task.alert.sender.receiver;
import com.dianping.cat.report.task.alert.sender.AlertConstants;
import com.dianping.cat.report.task.alert.AlertConstants;
public class ExceptionContactor extends ProjectContactor {
......
package com.dianping.cat.report.task.alert.sender.receiver;
import com.dianping.cat.report.task.alert.sender.AlertConstants;
import com.dianping.cat.report.task.alert.AlertConstants;
public class NetworkContactor extends ProductlineContactor {
......
package com.dianping.cat.report.task.alert.sender.receiver;
import com.dianping.cat.report.task.alert.sender.AlertConstants;
import com.dianping.cat.report.task.alert.AlertConstants;
public class SystemContactor extends ProductlineContactor {
......
package com.dianping.cat.report.task.alert.sender.receiver;
import com.dianping.cat.report.task.alert.sender.AlertConstants;
import com.dianping.cat.report.task.alert.AlertConstants;
public class ThirdpartyContactor extends ProjectContactor {
......
......@@ -21,7 +21,7 @@ import org.unidal.lookup.annotation.Inject;
import com.dianping.cat.Cat;
import com.dianping.cat.ServerConfigManager;
import com.dianping.cat.message.Event;
import com.dianping.cat.report.task.alert.sender.AlertConstants;
import com.dianping.cat.report.task.alert.AlertConstants;
import com.dianping.cat.report.task.alert.sender.AlertMessageEntity;
public class MailSender implements Initializable, Sender, LogEnabled {
......
......@@ -13,7 +13,7 @@ import org.unidal.helper.Files;
import com.dianping.cat.Cat;
import com.dianping.cat.message.Event;
import com.dianping.cat.report.task.alert.sender.AlertConstants;
import com.dianping.cat.report.task.alert.AlertConstants;
import com.dianping.cat.report.task.alert.sender.AlertMessageEntity;
public class SmsSender implements Sender, LogEnabled {
......
......@@ -13,7 +13,7 @@ import org.codehaus.plexus.logging.Logger;
import com.dianping.cat.Cat;
import com.dianping.cat.message.Event;
import com.dianping.cat.report.task.alert.sender.AlertConstants;
import com.dianping.cat.report.task.alert.AlertConstants;
import com.dianping.cat.report.task.alert.sender.AlertMessageEntity;
public class WeixinSender implements Sender, LogEnabled {
......
package com.dianping.cat.report.task.alert.sender.spliter;
import com.dianping.cat.report.task.alert.sender.AlertConstants;
import com.dianping.cat.report.task.alert.AlertConstants;
public class MailSpliter implements Spliter {
......
package com.dianping.cat.report.task.alert.sender.spliter;
import com.dianping.cat.report.task.alert.sender.AlertConstants;
import com.dianping.cat.report.task.alert.AlertConstants;
public class SmsSpliter implements Spliter {
......
package com.dianping.cat.report.task.alert.sender.spliter;
import com.dianping.cat.report.task.alert.sender.AlertConstants;
import com.dianping.cat.report.task.alert.AlertConstants;
public class WeixinSpliter implements Spliter {
......
package com.dianping.cat.report.task.alert.manager;
package com.dianping.cat.report.task.alert.service;
import org.unidal.dal.jdbc.DalException;
import org.unidal.lookup.annotation.Inject;
......
......@@ -10,8 +10,8 @@ import org.unidal.helper.Threads.Task;
import com.dianping.cat.Cat;
import com.dianping.cat.consumer.company.model.entity.ProductLine;
import com.dianping.cat.message.Transaction;
import com.dianping.cat.report.task.alert.AlertConstants;
import com.dianping.cat.report.task.alert.BaseAlert;
import com.dianping.cat.report.task.alert.sender.AlertConstants;
public class SystemAlert extends BaseAlert implements Task, LogEnabled {
......
......@@ -17,9 +17,8 @@ import org.unidal.lookup.annotation.Inject;
import com.dianping.cat.Cat;
import com.dianping.cat.helper.TimeUtil;
import com.dianping.cat.message.Transaction;
import com.dianping.cat.report.task.alert.sender.AlertConstants;
import com.dianping.cat.report.task.alert.AlertConstants;
import com.dianping.cat.report.task.alert.sender.AlertEntity;
import com.dianping.cat.report.task.alert.sender.AlertEntity.AlertEntityBuilder;
import com.dianping.cat.report.task.alert.sender.AlertManager;
public class ThirdPartyAlert implements Task {
......@@ -78,13 +77,12 @@ public class ThirdPartyAlert implements Task {
for (Entry<String, List<ThirdPartyAlertEntity>> entry : domain2AlertMap.entrySet()) {
String domain = entry.getKey();
List<ThirdPartyAlertEntity> thirdPartyAlerts = entry.getValue();
AlertEntity entity = new AlertEntity();
entity.setDate(new Date()).setContent(thirdPartyAlerts.toString()).setLevel("warning");
entity.setMetric(getName()).setType(getName()).setGroup(domain);
AlertEntityBuilder builder = new AlertEntity().new AlertEntityBuilder();
builder.buildDate(new Date()).buildLevel("warning").buildContent(thirdPartyAlerts.toString());
builder.buildMetric(getName()).buildType(getName()).buildGroup(domain);
AlertEntity alertEntity = builder.getAlertEntity();
m_sendManager.addAlert(alertEntity);
m_sendManager.addAlert(entity);
}
t.setStatus(Transaction.SUCCESS);
} catch (Exception e) {
......
......@@ -471,8 +471,8 @@
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.manager.AlertEntityService</role>
<implementation>com.dianping.cat.report.task.alert.manager.AlertEntityService</implementation>
<role>com.dianping.cat.report.task.alert.service.AlertEntityService</role>
<implementation>com.dianping.cat.report.task.alert.service.AlertEntityService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.home.dal.report.AlertDao</role>
......@@ -840,7 +840,7 @@
<role>com.dianping.cat.report.task.alert.sender.receiver.ContactorManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.manager.AlertEntityService</role>
<role>com.dianping.cat.report.task.alert.service.AlertEntityService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.sender.spliter.SpliterManager</role>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册