提交 637c6644 编写于 作者: Y yong.you

modify the cat dependency report builder

上级 077e273b
......@@ -18,6 +18,8 @@ import com.dianping.cat.consumer.AbstractMessageAnalyzer;
import com.dianping.cat.consumer.DomainManager;
import com.dianping.cat.consumer.core.dal.Report;
import com.dianping.cat.consumer.core.dal.ReportDao;
import com.dianping.cat.consumer.core.dal.Task;
import com.dianping.cat.consumer.core.dal.TaskDao;
import com.dianping.cat.consumer.dependency.model.entity.Dependency;
import com.dianping.cat.consumer.dependency.model.entity.DependencyReport;
import com.dianping.cat.consumer.dependency.model.entity.Index;
......@@ -40,6 +42,9 @@ public class DependencyAnalyzer extends AbstractMessageAnalyzer<DependencyReport
@Inject
private ReportDao m_reportDao;
@Inject
private TaskDao m_taskDao;
@Inject
private DomainManager m_domainManager;
......@@ -317,6 +322,18 @@ public class DependencyAnalyzer extends AbstractMessageAnalyzer<DependencyReport
r.setContent(xml);
m_reportDao.insert(r);
m_reportDao.insert(r);
Task task = m_taskDao.createLocal();
task.setCreationDate(new Date());
task.setProducer("");
task.setReportDomain(domain);
task.setReportName("dependency");
task.setReportPeriod(period);
task.setStatus(1); // status todo
task.setTaskType(0);
m_taskDao.insert(task);
} catch (Throwable e) {
t.setStatus(e);
Cat.getProducer().logError(e);
......
......@@ -24,6 +24,7 @@ import com.dianping.cat.consumer.advanced.dal.BusinessReportDao;
import com.dianping.cat.consumer.advanced.dal.SqltableDao;
import com.dianping.cat.consumer.core.dal.HostinfoDao;
import com.dianping.cat.consumer.core.dal.ReportDao;
import com.dianping.cat.consumer.core.dal.TaskDao;
import com.dianping.cat.consumer.sql.SqlParseManager;
import com.dianping.cat.storage.BucketManager;
......@@ -53,7 +54,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
.req(BucketManager.class, ReportDao.class));
all.add(C(MessageAnalyzer.class, DependencyAnalyzer.ID, DependencyAnalyzer.class).is(PER_LOOKUP) //
.req(BucketManager.class, ReportDao.class, DomainManager.class, DatabaseParser.class));
.req(BucketManager.class, ReportDao.class, TaskDao.class, DomainManager.class, DatabaseParser.class));
all.add(C(MessageAnalyzer.class, MetricAnalyzer.ID, MetricAnalyzer.class).is(PER_LOOKUP) //
.req(BucketManager.class, BusinessReportDao.class, BussinessConfigManager.class));
......
......@@ -109,6 +109,9 @@
<requirement>
<role>com.dianping.cat.consumer.core.dal.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.core.dal.TaskDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.DomainManager</role>
</requirement>
......
......@@ -29,7 +29,9 @@ public class Cat {
private static Cat s_instance = new Cat();
private static final String MetricType = "metricType";
public static final String MetricType = "_MetricType";
public static final String MetricGroup = "_MetricGroup";
private static void checkAndInitialize() {
synchronized (s_instance) {
......@@ -120,23 +122,25 @@ public class Cat {
Cat.getProducer().logHeartbeat(type, name, status, nameValuePairs);
}
public static void recordMetric(String name, double value) {
private static void recordMetric(String group, String name, double value, String metricType) {
StringBuilder sb = new StringBuilder();
sb.append(name).append("=").append(value).append("&").append(MetricType).append("=sum");
sb.append(name).append("=").append(value);
sb.append("&").append(MetricGroup).append("=").append(group);
sb.append("&").append(MetricType).append("=").append(metricType);
Cat.getProducer().logMetric("default", name, Message.SUCCESS, sb.toString());
}
public static void recordResponseTimeMetric(String name, double millis) {
StringBuilder sb = new StringBuilder();
sb.append(name).append("=").append(millis).append("&").append(MetricType).append("=avg");
Cat.getProducer().logMetric("default", name, Message.SUCCESS, sb.toString());
public static void recordMetric(String group, String name, double value) {
recordMetric(group, name, value, "SUM");
}
public static void incrementCounter(String name) {
StringBuilder sb = new StringBuilder();
public static void recordResponseTimeMetric(String group, String name, double millis) {
recordMetric(group, name, millis, "AVG");
}
sb.append(name).append("=").append(1).append("&").append(MetricType).append("=count");
Cat.getProducer().logMetric("default", name, Message.SUCCESS, sb.toString());
public static void recordCountMetric(String group, String name) {
recordMetric(group, name, 1, "SUM");
}
public static void logMetric(String name, Object... keyValues) {
......
......@@ -23,6 +23,7 @@ import com.dianping.cat.home.dal.report.DailyreportDao;
import com.dianping.cat.home.dal.report.EventDao;
import com.dianping.cat.home.dal.report.GraphDao;
import com.dianping.cat.home.dal.report.MonthreportDao;
import com.dianping.cat.home.dal.report.TopologyGraphDao;
import com.dianping.cat.home.dal.report.WeeklyreportDao;
import com.dianping.cat.message.spi.MessageConsumer;
import com.dianping.cat.message.spi.MessageConsumerRegistry;
......@@ -56,6 +57,7 @@ import com.dianping.cat.report.task.cross.CrossMerger;
import com.dianping.cat.report.task.cross.CrossReportBuilder;
import com.dianping.cat.report.task.database.DatabaseMerger;
import com.dianping.cat.report.task.database.DatabaseReportBuilder;
import com.dianping.cat.report.task.dependency.DependencyReportBuilder;
import com.dianping.cat.report.task.event.EventGraphCreator;
import com.dianping.cat.report.task.event.EventMerger;
import com.dianping.cat.report.task.event.EventReportBuilder;
......@@ -149,10 +151,19 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
.req(GraphDao.class, DailygraphDao.class, ReportDao.class, DailyreportDao.class, CrossMerger.class)//
.req(WeeklyreportDao.class, MonthreportDao.class));
all.add(C(CrossReportBuilder.class) //
.req(GraphDao.class, DailygraphDao.class, ReportDao.class, DailyreportDao.class, CrossMerger.class)//
.req(WeeklyreportDao.class, MonthreportDao.class));
all.add(C(StateReportBuilder.class) //
.req(GraphDao.class, DailygraphDao.class, ReportDao.class, DailyreportDao.class, StateMerger.class)//
.req(WeeklyreportDao.class, MonthreportDao.class));
all.add(C(DependencyReportBuilder.class) //
.req(GraphDao.class, DailygraphDao.class, ReportDao.class, DailyreportDao.class)//
.req(WeeklyreportDao.class, MonthreportDao.class)//
.req(ReportService.class,TopologyGraphBuilder.class,TopologyGraphDao.class));
all.add(C(TaskProducer.class, TaskProducer.class) //
.req(TaskDao.class, ReportDao.class));
......@@ -164,7 +175,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
.req(TransactionReportBuilder.class, EventReportBuilder.class, ProblemReportBuilder.class,//
HeartbeatReportBuilder.class, MatrixReportBuilder.class, CrossReportBuilder.class,//
DatabaseReportBuilder.class, SqlReportBuilder.class, HealthReportBuilder.class,//
StateReportBuilder.class));
StateReportBuilder.class,DependencyReportBuilder.class));
all.add(C(PayloadNormalizer.class).req(ServerConfigManager.class));
......@@ -211,7 +222,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all.add(C(TopologyGraphItemBuilder.class).req(TopologyGraphConfigManager.class));
all.add(C(TopologyGraphBuilder.class).req(TopologyGraphItemBuilder.class));
all.add(C(TopologyGraphBuilder.class).req(TopologyGraphItemBuilder.class).is(PER_LOOKUP));
// model service
all.addAll(new ServiceComponentConfigurator().defineComponents());
......
......@@ -34,6 +34,7 @@ import com.dianping.cat.report.page.model.spi.ModelPeriod;
import com.dianping.cat.report.page.model.spi.ModelRequest;
import com.dianping.cat.report.page.model.spi.ModelResponse;
import com.dianping.cat.report.page.model.spi.ModelService;
import com.dianping.cat.report.task.dependency.DependencyReportBuilder;
import com.dianping.cat.report.view.DomainNavManager;
public class TopologyGraphManager implements Initializable, LogEnabled {
......
package com.dianping.cat.report.task.dependency;
import java.util.Date;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.unidal.lookup.annotation.Inject;
import com.dianping.cat.Cat;
import com.dianping.cat.configuration.NetworkInterfaceManager;
import com.dianping.cat.consumer.dependency.model.entity.DependencyReport;
import com.dianping.cat.helper.TimeUtil;
import com.dianping.cat.home.dal.report.TopologyGraphDao;
import com.dianping.cat.home.dependency.graph.entity.TopologyGraph;
import com.dianping.cat.home.dependency.graph.transform.DefaultNativeBuilder;
import com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder;
import com.dianping.cat.report.service.ReportService;
import com.dianping.cat.report.task.spi.AbstractReportBuilder;
import com.dianping.cat.report.task.spi.ReportBuilder;
public class DependencyReportBuilder extends AbstractReportBuilder implements ReportBuilder {
@Inject
private ReportService m_reportService;
@Inject
private TopologyGraphBuilder m_graphBuilder;
@Inject
private TopologyGraphDao m_topologyGraphDao;
@Override
public boolean buildDailyReport(String reportName, String reportDomain, Date reportPeriod) {
throw new UnsupportedOperationException("no daily report builder for dependency!");
}
@Override
public boolean buildHourReport(String reportName, String reportDomain, Date reportPeriod) {
Date end = new Date(reportPeriod.getTime() + TimeUtil.ONE_HOUR);
Set<String> domains = getDomainsFromHourlyReport(reportPeriod, end);
boolean result = true;
m_graphBuilder.getGraphs().clear();
for (String domain : domains) {
DependencyReport report = m_reportService.queryDependencyReport(domain, reportPeriod, end);
m_graphBuilder.visitDependencyReport(report);
}
Map<Long, TopologyGraph> graphs = m_graphBuilder.getGraphs();
for (Entry<Long, TopologyGraph> entry : graphs.entrySet()) {
try {
Date date = new Date(entry.getKey());
TopologyGraph graph = entry.getValue();
com.dianping.cat.home.dal.report.TopologyGraph proto = m_topologyGraphDao.createLocal();
String ip = NetworkInterfaceManager.INSTANCE.getLocalHostAddress();
proto.setType(3);
proto.setPeriod(date);
proto.setCreationDate(new Date());
proto.setIp(ip);
proto.setContent(DefaultNativeBuilder.build(graph));
m_topologyGraphDao.insert(proto);
} catch (Exception e) {
result = false;
Cat.logError(e);
}
}
return result;
}
@Override
public boolean buildMonthReport(String reportName, String reportDomain, Date reportPeriod) {
throw new UnsupportedOperationException("no month report builder for dependency!");
}
@Override
public boolean buildWeeklyReport(String reportName, String reportDomain, Date reportPeriod) {
throw new UnsupportedOperationException("no week report builder for dependency!");
}
}
......@@ -14,6 +14,7 @@ import com.dianping.cat.Cat;
import com.dianping.cat.consumer.core.dal.Task;
import com.dianping.cat.report.task.cross.CrossReportBuilder;
import com.dianping.cat.report.task.database.DatabaseReportBuilder;
import com.dianping.cat.report.task.dependency.DependencyReportBuilder;
import com.dianping.cat.report.task.event.EventReportBuilder;
import com.dianping.cat.report.task.health.HealthReportBuilder;
import com.dianping.cat.report.task.heartbeat.HeartbeatReportBuilder;
......@@ -64,6 +65,9 @@ public class ReportFacade implements LogEnabled, Initializable {
@Inject
private StateReportBuilder m_stateReportBuilder;
@Inject
private DependencyReportBuilder m_dependendcyReportBuilder;
private Logger m_logger;
......@@ -89,11 +93,11 @@ public class ReportFacade implements LogEnabled, Initializable {
return false;
} else {
boolean result = false;
if (type == TYPE_DAILY) {
result = reportBuilder.buildDailyReport(reportName, reportDomain, reportPeriod);
} else if (type == TYPE_HOUR) {
if (type == TYPE_HOUR) {
result = reportBuilder.buildHourReport(reportName, reportDomain, reportPeriod);
} else if (type == TYPE_DAILY) {
result = reportBuilder.buildDailyReport(reportName, reportDomain, reportPeriod);
} else if (type == TYPE_WEEK) {
result = reportBuilder.buildWeeklyReport(reportName, reportDomain, reportPeriod);
} else if (type == TYPE_MONTH) {
......@@ -134,6 +138,7 @@ public class ReportFacade implements LogEnabled, Initializable {
m_reportBuilders.put("sql", m_sqlReportBuilder);
m_reportBuilders.put("health", m_healthReportBuilder);
m_reportBuilders.put("state", m_stateReportBuilder);
m_reportBuilders.put("dependency", m_dependendcyReportBuilder);
}
}
......@@ -5,7 +5,7 @@
<member name="type" field="type" value-type="int" length="10" nullable="false" />
<member name="domain" field="domain" value-type="String" length="50" nullable="false" />
<member name="pattern" field="pattern" value-type="String" length="200" nullable="false" />
<member name="display-name" field="display_name" value-type="String" length="200" nullable="false" />
<member name="display-name" field="display_name" value-type="String" length="200" />
<member name="sample" field="sample" value-type="String" length="200" />
<member name="create-date" field="create_date" value-type="Date" nullable="false" />
<member name="update-date" field="update_date" value-type="Date" nullable="false" />
......@@ -45,7 +45,7 @@
<member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" />
<member name="name" field="name" value-type="String" length="20" nullable="false" />
<member name="ip" field="ip" value-type="String" length="20" />
<member name="domain" field="domain" value-type="String" length="200" nullable="false" />
<member name="domain" field="domain" value-type="String" length="20" nullable="false" />
<member name="period" field="period" value-type="Date" nullable="false" />
<member name="type" field="type" value-type="int" length="3" nullable="false" />
<member name="detail-content" field="detail_content" value-type="String" length="16777215" nullable="false" />
......@@ -88,10 +88,10 @@
<member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" />
<member name="name" field="name" value-type="String" length="20" nullable="false" />
<member name="ip" field="ip" value-type="String" length="20" nullable="false" />
<member name="domain" field="domain" value-type="String" length="50" nullable="false" />
<member name="domain" field="domain" value-type="String" length="20" nullable="false" />
<member name="period" field="period" value-type="Date" nullable="false" />
<member name="type" field="type" value-type="int" length="3" nullable="false" />
<member name="content" field="content" value-type="String" length="2147483647" nullable="false" />
<member name="content" field="content" value-type="String" length="16777215" nullable="false" />
<member name="creation-date" field="creation_date" value-type="Date" nullable="false" />
<var name="key-id" value-type="int" key-member="id" />
<primary-key name="PRIMARY" members="id" />
......@@ -173,7 +173,7 @@
<member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" />
<member name="name" field="name" value-type="String" length="20" nullable="false" />
<member name="ip" field="ip" value-type="String" length="20" />
<member name="domain" field="domain" value-type="String" length="200" nullable="false" />
<member name="domain" field="domain" value-type="String" length="20" nullable="false" />
<member name="period" field="period" value-type="Date" nullable="false" />
<member name="type" field="type" value-type="int" length="3" nullable="false" />
<member name="detail-content" field="detail_content" value-type="String" length="16777215" nullable="false" />
......@@ -256,10 +256,10 @@
<member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" />
<member name="name" field="name" value-type="String" length="20" nullable="false" />
<member name="ip" field="ip" value-type="String" length="20" nullable="false" />
<member name="domain" field="domain" value-type="String" length="50" />
<member name="domain" field="domain" value-type="String" length="20" nullable="false" />
<member name="period" field="period" value-type="Date" nullable="false" />
<member name="type" field="type" value-type="int" length="3" nullable="false" />
<member name="content" field="content" value-type="String" length="2147483647" />
<member name="content" field="content" value-type="String" length="16777215" nullable="false" />
<member name="creation-date" field="creation_date" value-type="Date" nullable="false" />
<var name="key-id" value-type="int" key-member="id" />
<primary-key name="PRIMARY" members="id" />
......@@ -294,11 +294,51 @@
</query>
</query-defs>
</entity>
<entity name="topology-graph" table="topologyGraph" alias="t">
<member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" />
<member name="ip" field="ip" value-type="String" length="20" />
<member name="period" field="period" value-type="Date" nullable="false" />
<member name="type" field="type" value-type="int" length="3" nullable="false" />
<member name="content" field="content" value-type="byte[]" length="2147483647" />
<member name="creation-date" field="creation_date" value-type="Date" nullable="false" />
<var name="key-id" value-type="int" key-member="id" />
<primary-key name="PRIMARY" members="id" />
<index name="period" members="period ASC" />
<readsets>
<readset name="FULL" all="true" />
</readsets>
<updatesets>
<updateset name="FULL" all="true" />
</updatesets>
<query-defs>
<query name="find-by-PK" type="SELECT">
<param name="key-id" />
<statement><![CDATA[SELECT <FIELDS/>
FROM <TABLE/>
WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
<query name="insert" type="INSERT">
<statement><![CDATA[INSERT INTO <TABLE/>(<FIELDS/>)
VALUES(<VALUES/>)]]></statement>
</query>
<query name="update-by-PK" type="UPDATE">
<param name="key-id" />
<statement><![CDATA[UPDATE <TABLE/>
SET <FIELDS/>
WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
<query name="delete-by-PK" type="DELETE">
<param name="key-id" />
<statement><![CDATA[DELETE FROM <TABLE/>
WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
</query-defs>
</entity>
<entity name="weeklyreport" table="weeklyreport" alias="w">
<member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" />
<member name="name" field="name" value-type="String" length="20" nullable="false" />
<member name="ip" field="ip" value-type="String" length="20" nullable="false" />
<member name="domain" field="domain" value-type="String" length="50" />
<member name="domain" field="domain" value-type="String" length="20" nullable="false" />
<member name="period" field="period" value-type="Date" nullable="false" />
<member name="type" field="type" value-type="int" length="3" nullable="false" />
<member name="content" field="content" value-type="String" length="16777215" nullable="false" />
......
......@@ -475,6 +475,17 @@
</query>
</query-defs>
</entity>
<entity name="topology-graph" table="topologyGraph" alias="t">
<member name="creation-date" insert-expr="NOW()" />
<query-defs>
<query name="find-by-period" type="SELECT">
<param name="period" />
<statement><![CDATA[SELECT <FIELDS/>
FROM <TABLE/>
WHERE <FIELD name='period'/> = ${period}]]></statement>
</query>
</query-defs>
</entity>
</entities>
......
<?xml version="1.0" encoding="UTF-8"?>
<model model-package="com.dianping.cat.home.dependency.graph" enable-merger="true" enable-sax-parser="true"
enable-base-visitor="true" enable-json-parser="true" enable-json-builder="true">
enable-base-visitor="true" enable-json-parser="true" enable-json-builder="true"
enable-native-parser="true" enable-native-builder="true">
<entity name="topology-graph" root="true">
<attribute name="id" value-type="String" />
<attribute name="type" value-type="String" />
......
......@@ -318,6 +318,33 @@
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.cross.CrossReportBuilder</role>
<implementation>com.dianping.cat.report.task.cross.CrossReportBuilder</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.home.dal.report.GraphDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailygraphDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.core.dal.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyreportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.cross.CrossMerger</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.WeeklyreportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.MonthreportDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.state.StateReportBuilder</role>
<implementation>com.dianping.cat.report.task.state.StateReportBuilder</implementation>
......@@ -345,6 +372,39 @@
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.dependency.DependencyReportBuilder</role>
<implementation>com.dianping.cat.report.task.dependency.DependencyReportBuilder</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.home.dal.report.GraphDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailygraphDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.core.dal.ReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyreportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.WeeklyreportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.MonthreportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.TopologyGraphDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.thread.TaskProducer</role>
<implementation>com.dianping.cat.report.task.thread.TaskProducer</implementation>
......@@ -415,6 +475,9 @@
<requirement>
<role>com.dianping.cat.report.task.state.StateReportBuilder</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.dependency.DependencyReportBuilder</role>
</requirement>
</requirements>
</component>
<component>
......@@ -601,6 +664,7 @@
<component>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder</role>
<implementation>com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder</implementation>
<instantiation-strategy>per-lookup</instantiation-strategy>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphItemBuilder</role>
......@@ -1313,6 +1377,16 @@
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>topology-graph</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>topology-graph</logical-table-name>
<physical-table-name>topologyGraph</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>weeklyreport</role-hint>
......@@ -1386,6 +1460,15 @@
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.report.TopologyGraphDao</role>
<implementation>com.dianping.cat.home.dal.report.TopologyGraphDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.report.WeeklyreportDao</role>
<implementation>com.dianping.cat.home.dal.report.WeeklyreportDao</implementation>
......
......@@ -17,6 +17,7 @@
<table name="location"/>
<table name="aggregationRule"/>
<table name="event"/>
<table name="topologyGraph"/>
</group>
<group name="alarm" package="com.dianping.cat.home.dal.alarm">
<table name="alarmTemplate"/>
......
......@@ -20,6 +20,7 @@ import com.dianping.cat.helper.CatString;
import com.dianping.cat.helper.TimeUtil;
import com.dianping.cat.report.page.model.transaction.TransactionReportMerger;
import com.dianping.cat.report.service.HourlyReportService;
import com.dianping.cat.report.task.dependency.DependencyReportBuilder;
public class OpDataCollectTest extends ComponentTestCase {
......@@ -27,6 +28,14 @@ public class OpDataCollectTest extends ComponentTestCase {
private SimpleDateFormat m_sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
@Test
public void test1()throws Exception{
DependencyReportBuilder builder =(DependencyReportBuilder)lookup(DependencyReportBuilder.class);
System.out.println(builder.toString());
System.out.println(builder.buildHourReport("Cat", "Domain", new Date()));
}
@Test
public void test() throws Exception {
m_hourlyReportService = (HourlyReportService) lookup(HourlyReportService.class);
......
......@@ -262,6 +262,17 @@ CREATE TABLE `event` (
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='事件记录表';
CREATE TABLE `topologyGraph` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ip` varchar(20) NULL COMMENT '报表来自于哪台cat-client机器ip',
`period` datetime NOT NULL COMMENT '报表时间段,精确到分钟',
`type` tinyint(4) NOT NULL COMMENT '报表数据格式, 1/xml, 2/json, 3/binary',
`content` longblob COMMENT '用于存放报表的具体内容',
`creation_date` datetime NOT NULL COMMENT '报表创建时间',
PRIMARY KEY (`id`),
KEY `period` (`period`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用于存储历史的拓扑图曲线';
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册