Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
637c6644
C
cat
项目概览
梦中观雨
/
cat
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
cat
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
637c6644
编写于
6月 11, 2013
作者:
Y
yong.you
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
modify the cat dependency report builder
上级
077e273b
变更
15
隐藏空白更改
内联
并排
Showing
15 changed file
with
310 addition
and
27 deletion
+310
-27
cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/advanced/DependencyAnalyzer.java
...om/dianping/cat/consumer/advanced/DependencyAnalyzer.java
+17
-0
cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/build/ComponentsConfigurator.java
...m/dianping/cat/consumer/build/ComponentsConfigurator.java
+2
-1
cat-consumer-advanced/src/main/resources/META-INF/plexus/components.xml
...dvanced/src/main/resources/META-INF/plexus/components.xml
+3
-0
cat-core/src/main/java/com/dianping/cat/Cat.java
cat-core/src/main/java/com/dianping/cat/Cat.java
+15
-11
cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
...n/java/com/dianping/cat/build/ComponentsConfigurator.java
+13
-2
cat-home/src/main/java/com/dianping/cat/report/page/dependency/graph/TopologyGraphManager.java
...at/report/page/dependency/graph/TopologyGraphManager.java
+1
-0
cat-home/src/main/java/com/dianping/cat/report/task/dependency/DependencyReportBuilder.java
...g/cat/report/task/dependency/DependencyReportBuilder.java
+85
-0
cat-home/src/main/java/com/dianping/cat/report/task/spi/ReportFacade.java
...n/java/com/dianping/cat/report/task/spi/ReportFacade.java
+9
-4
cat-home/src/main/resources/META-INF/dal/jdbc/report-codegen.xml
...e/src/main/resources/META-INF/dal/jdbc/report-codegen.xml
+48
-8
cat-home/src/main/resources/META-INF/dal/jdbc/report-dal.xml
cat-home/src/main/resources/META-INF/dal/jdbc/report-dal.xml
+11
-0
cat-home/src/main/resources/META-INF/dal/model/topology-graph-model.xml
...ain/resources/META-INF/dal/model/topology-graph-model.xml
+2
-1
cat-home/src/main/resources/META-INF/plexus/components.xml
cat-home/src/main/resources/META-INF/plexus/components.xml
+83
-0
cat-home/src/main/resources/META-INF/wizard/jdbc/wizard.xml
cat-home/src/main/resources/META-INF/wizard/jdbc/wizard.xml
+1
-0
cat-home/src/test/java/com/dianping/cat/report/analyzer/OpDataCollectTest.java
...a/com/dianping/cat/report/analyzer/OpDataCollectTest.java
+9
-0
script/Cat.sql
script/Cat.sql
+11
-0
未找到文件。
cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/advanced/DependencyAnalyzer.java
浏览文件 @
637c6644
...
...
@@ -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
);
...
...
cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/build/ComponentsConfigurator.java
浏览文件 @
637c6644
...
...
@@ -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
));
...
...
cat-consumer-advanced/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
637c6644
...
...
@@ -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>
...
...
cat-core/src/main/java/com/dianping/cat/Cat.java
浏览文件 @
637c6644
...
...
@@ -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
);
}
p
ublic
static
void
recordMetric
(
String
name
,
double
valu
e
)
{
p
rivate
static
void
recordMetric
(
String
group
,
String
name
,
double
value
,
String
metricTyp
e
)
{
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
)
{
...
...
cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
浏览文件 @
637c6644
...
...
@@ -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
());
...
...
cat-home/src/main/java/com/dianping/cat/report/page/dependency/graph/TopologyGraphManager.java
浏览文件 @
637c6644
...
...
@@ -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
{
...
...
cat-home/src/main/java/com/dianping/cat/report/task/dependency/DependencyReportBuilder.java
0 → 100644
浏览文件 @
637c6644
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!"
);
}
}
cat-home/src/main/java/com/dianping/cat/report/task/spi/ReportFacade.java
浏览文件 @
637c6644
...
...
@@ -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
);
}
}
cat-home/src/main/resources/META-INF/dal/jdbc/report-codegen.xml
浏览文件 @
637c6644
...
...
@@ -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=
"20
0
"
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=
"
5
0"
nullable=
"false"
/>
<member
name=
"domain"
field=
"domain"
value-type=
"String"
length=
"
2
0"
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=
"20
0
"
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"
/>
...
...
cat-home/src/main/resources/META-INF/dal/jdbc/report-dal.xml
浏览文件 @
637c6644
...
...
@@ -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>
...
...
cat-home/src/main/resources/META-INF/dal/model/topology-graph-model.xml
浏览文件 @
637c6644
<?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"
/>
...
...
cat-home/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
637c6644
...
...
@@ -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>
...
...
cat-home/src/main/resources/META-INF/wizard/jdbc/wizard.xml
浏览文件 @
637c6644
...
...
@@ -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"
/>
...
...
cat-home/src/test/java/com/dianping/cat/report/analyzer/OpDataCollectTest.java
浏览文件 @
637c6644
...
...
@@ -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
);
...
...
script/Cat.sql
浏览文件 @
637c6644
...
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录