提交 33560f1b 编写于 作者: Y youyong205

modify the config

上级 c9154779
......@@ -69,7 +69,6 @@ import com.dianping.cat.report.task.alert.exception.ExceptionAlertConfig;
import com.dianping.cat.report.task.alert.manager.AlertManager;
import com.dianping.cat.report.task.alert.network.NetworkAlert;
import com.dianping.cat.report.task.alert.network.NetworkAlertConfig;
import com.dianping.cat.report.task.alert.sender.ExceptionPostman;
import com.dianping.cat.report.task.alert.sender.MailSender;
import com.dianping.cat.report.task.alert.sender.Postman;
import com.dianping.cat.report.task.alert.sender.SmsSender;
......@@ -97,6 +96,7 @@ import com.dianping.cat.system.config.ExceptionConfigManager;
import com.dianping.cat.system.config.MetricGroupConfigManager;
import com.dianping.cat.system.config.NetGraphConfigManager;
import com.dianping.cat.system.config.NetworkRuleConfigManager;
import com.dianping.cat.system.config.RouterConfigManager;
import com.dianping.cat.system.config.SystemRuleConfigManager;
import com.dianping.cat.system.config.ThirdPartyConfigManager;
import com.dianping.cat.system.tool.DefaultMailImpl;
......@@ -233,6 +233,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all.add(C(AlertConfigManager.class).req(ConfigDao.class));
all.add(C(NetGraphConfigManager.class).req(ConfigDao.class));
all.add(C(ThirdPartyConfigManager.class).req(ConfigDao.class));
all.add(C(RouterConfigManager.class).req(ConfigDao.class));
all.add(C(ConfigReloadTask.class).req(MetricConfigManager.class, ProductLineConfigManager.class));
return all;
......@@ -266,29 +267,9 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all.add(C(AppGraphCreator.class).req(AppDataService.class, CachedMetricReportService.class, DataExtractor.class,
MetricDataFetcher.class).req(BaselineService.class, MetricConfigManager.class,
ProductLineConfigManager.class, MetricGroupConfigManager.class, AlertInfo.class));
// report serivce
all.addAll(new ReportServiceComponentConfigurator().defineComponents());
// task
all.addAll(new TaskComponentConfigurator().defineComponents());
// model service
all.addAll(new ServiceComponentConfigurator().defineComponents());
all.add(C(RemoteMetricReportService.class).req(ServerConfigManager.class));
all.add(C(BusinessAlertConfig.class).req(AlertConfigManager.class));
all.add(C(NetworkAlertConfig.class).req(AlertConfigManager.class));
all.add(C(SystemAlertConfig.class).req(AlertConfigManager.class));
all.add(C(ExceptionAlertConfig.class).req(AlertConfigManager.class));
all.add(C(AlertInfo.class));
all.add(C(DefaultMailImpl.class).req(ServerConfigManager.class));
all.add(C(DataChecker.class, DefaultDataChecker.class));
all.add(C(NetGraphManager.class).req(ServerConfigManager.class, RemoteMetricReportService.class).req(
ReportService.class, NetGraphBuilder.class, AlertInfo.class, NetGraphConfigManager.class));
all.add(C(MailSender.class).req(MailSMS.class));
......@@ -301,33 +282,8 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all.add(C(Postman.class).req(ProjectDao.class, MailSMS.class, MailSender.class, WeixinSender.class,
SmsSender.class, AlertTypeManager.class));
all.add(C(BusinessAlert.class)
.req(MetricConfigManager.class, ProductLineConfigManager.class, BaselineService.class, MailSMS.class,
BusinessAlertConfig.class, AlertInfo.class, AlertDao.class)
//
.req(RemoteMetricReportService.class, BusinessRuleConfigManager.class, DataChecker.class)
.req(Postman.class, AlertManager.class));
all.add(C(NetworkAlert.class)
.req(MetricConfigManager.class, ProductLineConfigManager.class, BaselineService.class, MailSMS.class,
NetworkAlertConfig.class, AlertInfo.class, AlertDao.class)
//
.req(RemoteMetricReportService.class, NetworkRuleConfigManager.class, DataChecker.class)
.req(Postman.class, AlertManager.class));
all.add(C(SystemAlert.class)
.req(MetricConfigManager.class, ProductLineConfigManager.class, BaselineService.class, MailSMS.class,
SystemAlertConfig.class, AlertInfo.class, AlertDao.class)
//
.req(RemoteMetricReportService.class, SystemRuleConfigManager.class, DataChecker.class)
.req(Postman.class, AlertManager.class));
all.add(C(AlertExceptionBuilder.class).req(ExceptionConfigManager.class));
all.add(C(ExceptionAlert.class)
.req(ExceptionAlertConfig.class, ExceptionConfigManager.class, AlertExceptionBuilder.class)
.req(ModelService.class, TopAnalyzer.ID).req(ExceptionPostman.class, AlertManager.class));
all.add(C(AlertSummaryExecutor.class).req(AlertSummaryGenerator.class, AlertSummaryManager.class, MailSMS.class)
.req(AlertSummaryDecorator.class, AlertSummaryFTLDecorator.ID));
......@@ -337,29 +293,8 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all.add(C(AlertSummaryManager.class).req(AlertSummaryDao.class));
all.add(C(NetGraphConfigManager.class).req(ConfigDao.class));
all.add(C(NetGraphBuilder.class));
all.add(C(NetGraphManager.class).req(ServerConfigManager.class, RemoteMetricReportService.class).req(
ReportService.class, NetGraphBuilder.class, AlertInfo.class, NetGraphConfigManager.class));
// database
all.add(C(JdbcDataSourceDescriptorManager.class) //
.config(E("datasourceFile").value("/data/appdatas/cat/datasources.xml")));
all.addAll(new CatDatabaseConfigurator().defineComponents());
all.addAll(new UserDatabaseConfigurator().defineComponents());
// update project database
all.add(C(ProjectUpdateTask.class)//
.req(ProjectDao.class, HostinfoDao.class));
// web, please keep it last
all.addAll(new WebComponentConfigurator().defineComponents());
// for alarm module
all.addAll(new AlarmComponentConfigurator().defineComponents());
return all;
}
}
package com.dianping.cat.report.task.router;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import org.unidal.lookup.annotation.Inject;
import com.dianping.cat.Constants;
import com.dianping.cat.consumer.state.model.entity.ProcessDomain;
import com.dianping.cat.consumer.state.model.entity.StateReport;
import com.dianping.cat.consumer.state.model.transform.BaseVisitor;
import com.dianping.cat.helper.MapUtils;
import com.dianping.cat.helper.TimeUtil;
import com.dianping.cat.report.service.ReportService;
import com.dianping.cat.report.task.spi.ReportTaskBuilder;
public class RouterBuilder implements ReportTaskBuilder {
@Inject
private ReportService m_reportService;
@Override
public boolean buildDailyTask(String name, String domain, Date period) {
Date start = period;
Date end = new Date(start.getTime() + TimeUtil.ONE_DAY);
StateReport report = m_reportService.queryStateReport(Constants.CAT, start, end);
StateReportVisitor visitor = new StateReportVisitor();
visitor.visitStateReport(report);
Map<String, Long> numbers = visitor.getNumbers();
Comparator<Entry<String, Long>> compator = new Comparator<Map.Entry<String, Long>>() {
@Override
public int compare(Entry<String, Long> o1, Entry<String, Long> o2) {
return (int) (o1.getValue() - o2.getValue());
}
};
numbers = MapUtils.sortMap(numbers, compator);
return false;
}
public static class StateReportVisitor extends BaseVisitor {
private Map<String, Long> m_numbers = new HashMap<String, Long>();
@Override
public void visitProcessDomain(ProcessDomain processDomain) {
String domain = processDomain.getName();
long total = processDomain.getTotal();
Long count = m_numbers.get(domain);
if (count == null) {
m_numbers.put(domain, total);
} else {
m_numbers.put(domain, total + count);
}
}
public Map<String, Long> getNumbers() {
return m_numbers;
}
}
@Override
public boolean buildHourlyTask(String name, String domain, Date period) {
throw new RuntimeException("router builder don't support hourly task");
}
@Override
public boolean buildMonthlyTask(String name, String domain, Date period) {
throw new RuntimeException("router builder don't support monthly task");
}
@Override
public boolean buildWeeklyTask(String name, String domain, Date period) {
throw new RuntimeException("router builder don't support weekly task");
}
}
......@@ -76,8 +76,6 @@ public class ReportFacade extends ContainerHolder implements LogEnabled, Initial
@Override
public void initialize() throws InitializationException {
m_reportBuilders = lookupMap(ReportTaskBuilder.class);
System.out.println(m_reportBuilders.size());
}
}
package com.dianping.cat.system.config;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.codehaus.plexus.logging.LogEnabled;
import org.codehaus.plexus.logging.Logger;
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 org.unidal.lookup.annotation.Inject;
import com.dianping.cat.Cat;
import com.dianping.cat.core.config.Config;
import com.dianping.cat.core.config.ConfigDao;
import com.dianping.cat.core.config.ConfigEntity;
import com.dianping.cat.home.router.entity.RouterConfig;
import com.dianping.cat.home.router.transform.DefaultSaxParser;
public class RouterConfigManager implements Initializable, LogEnabled {
@Inject
private ConfigDao m_configDao;
private int m_configId;
private RouterConfig m_routerConfig;
private Logger m_logger;
private static final String CONFIG_NAME = "routerConfig";
private Map<String, Set<String>> m_configs = new HashMap<String, Set<String>>();
@Override
public void enableLogging(Logger logger) {
m_logger = logger;
}
public RouterConfig getRouterConfig() {
return m_routerConfig;
}
@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_routerConfig = DefaultSaxParser.parse(content);
} catch (DalNotFoundException e) {
try {
String content = Files.forIO().readFrom(
this.getClass().getResourceAsStream("/config/default-router-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_routerConfig = DefaultSaxParser.parse(content);
} catch (Exception ex) {
Cat.logError(ex);
}
} catch (Exception e) {
Cat.logError(e);
}
if (m_routerConfig == null) {
m_routerConfig = new RouterConfig();
}
}
public boolean insert(String xml) {
try {
m_routerConfig = DefaultSaxParser.parse(xml);
boolean result = storeConfig();
m_configs.clear();
return result;
} catch (Exception e) {
Cat.logError(e);
m_logger.error(e.getMessage(), e);
return false;
}
}
private boolean storeConfig() {
synchronized (this) {
try {
Config config = m_configDao.createLocal();
config.setId(m_configId);
config.setKeyId(m_configId);
config.setName(CONFIG_NAME);
config.setContent(m_routerConfig.toString());
m_configDao.updateByPK(config, ConfigEntity.UPDATESET_FULL);
} catch (Exception e) {
Cat.logError(e);
return false;
}
}
return true;
}
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<model>
<entity name="router-config" root="true">
<entity-ref name="default-server" type="list" names="default-servers" />
<entity-ref name="domain" type="list" names="domains" />
</entity>
<entity name="default-server">
<attribute name="id" value-type="String" />
<attribute name="weight" value-type="int" />
<attribute name="port" value-type="int" />
<attribute name="enable" value-type="boolean" />
</entity>
<entity name="domain">
<attribute name="id" value-type="String" />
<entity-ref name="server" type="list" names="servers" />
......
<router-config>
<default-server id="10.1.6.101" weight="1" port="2280" enable="true"/>
<default-server id="10.1.6.101" weight="1" port="2280" enable="false"/>
<default-server id="10.1.6.101" weight="1" port="2280" enable="true"/>
<domain id="Cat">
<server id="10.1.6.101" port="2280"></server>
<server id="10.1.6.102" port="2280"></server>
<server id="10.1.6.103" port="2280"></server>
<server id="10.1.6.101" port="2280"></server>
<server id="10.1.6.102" port="2280"></server>
<server id="10.1.6.103" port="2280"></server>
</domain>
<domain></domain>
</router-config>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册