Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
3e40f3a9
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,发现更多精彩内容 >>
提交
3e40f3a9
编写于
8月 06, 2014
作者:
L
leon.li
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor DomainManager module
上级
5afdeab8
变更
26
隐藏空白更改
内联
并排
Showing
26 changed file
with
492 addition
and
477 deletion
+492
-477
cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/build/ComponentsConfigurator.java
...m/dianping/cat/consumer/build/ComponentsConfigurator.java
+10
-3
cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/dependency/DependencyAnalyzer.java
.../dianping/cat/consumer/dependency/DependencyAnalyzer.java
+8
-4
cat-consumer-advanced/src/main/resources/META-INF/plexus/components.xml
...dvanced/src/main/resources/META-INF/plexus/components.xml
+31
-1
cat-consumer-advanced/src/test/java/com/dianping/cat/consumer/dependency/Configurator.java
...va/com/dianping/cat/consumer/dependency/Configurator.java
+6
-6
cat-consumer/src/main/java/com/dianping/cat/consumer/build/ComponentsConfigurator.java
...m/dianping/cat/consumer/build/ComponentsConfigurator.java
+8
-3
cat-consumer/src/main/java/com/dianping/cat/consumer/state/StateAnalyzer.java
...n/java/com/dianping/cat/consumer/state/StateAnalyzer.java
+11
-7
cat-consumer/src/main/resources/META-INF/plexus/components.xml
...onsumer/src/main/resources/META-INF/plexus/components.xml
+31
-1
cat-core/src/main/java/com/dianping/cat/DomainManager.java
cat-core/src/main/java/com/dianping/cat/DomainManager.java
+0
-290
cat-core/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
...n/java/com/dianping/cat/build/ComponentsConfigurator.java
+2
-7
cat-core/src/main/java/com/dianping/cat/service/HostinfoService.java
...c/main/java/com/dianping/cat/service/HostinfoService.java
+225
-27
cat-core/src/main/java/com/dianping/cat/service/ProjectService.java
...rc/main/java/com/dianping/cat/service/ProjectService.java
+54
-3
cat-core/src/main/resources/META-INF/plexus/components.xml
cat-core/src/main/resources/META-INF/plexus/components.xml
+9
-15
cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
...n/java/com/dianping/cat/build/ComponentsConfigurator.java
+3
-3
cat-home/src/main/java/com/dianping/cat/build/TaskComponentConfigurator.java
...ava/com/dianping/cat/build/TaskComponentConfigurator.java
+3
-3
cat-home/src/main/java/com/dianping/cat/report/page/AbstractReportModel.java
...ava/com/dianping/cat/report/page/AbstractReportModel.java
+8
-7
cat-home/src/main/java/com/dianping/cat/report/page/cross/CrossMethodVisitor.java
...om/dianping/cat/report/page/cross/CrossMethodVisitor.java
+5
-5
cat-home/src/main/java/com/dianping/cat/report/page/cross/Handler.java
...main/java/com/dianping/cat/report/page/cross/Handler.java
+11
-11
cat-home/src/main/java/com/dianping/cat/report/page/cross/display/HostInfo.java
.../com/dianping/cat/report/page/cross/display/HostInfo.java
+5
-5
cat-home/src/main/java/com/dianping/cat/report/page/cross/display/MethodInfo.java
...om/dianping/cat/report/page/cross/display/MethodInfo.java
+5
-5
cat-home/src/main/java/com/dianping/cat/report/page/cross/display/ProjectInfo.java
...m/dianping/cat/report/page/cross/display/ProjectInfo.java
+5
-5
cat-home/src/main/java/com/dianping/cat/report/page/externalError/Handler.java
...a/com/dianping/cat/report/page/externalError/Handler.java
+3
-3
cat-home/src/main/java/com/dianping/cat/report/task/service/ServiceReportBuilder.java
...ianping/cat/report/task/service/ServiceReportBuilder.java
+4
-4
cat-home/src/main/java/com/dianping/cat/report/task/utilization/UtilizationReportBuilder.java
...cat/report/task/utilization/UtilizationReportBuilder.java
+7
-7
cat-home/src/main/resources/META-INF/plexus/components.xml
cat-home/src/main/resources/META-INF/plexus/components.xml
+20
-34
cat-home/src/test/java/com/dianping/cat/report/task/service/ServiceBuilderTest.java
.../dianping/cat/report/task/service/ServiceBuilderTest.java
+9
-9
cat-home/src/test/java/com/dianping/cat/report/task/utilization/UtilizationBuilderTest.java
...g/cat/report/task/utilization/UtilizationBuilderTest.java
+9
-9
未找到文件。
cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/build/ComponentsConfigurator.java
浏览文件 @
3e40f3a9
...
...
@@ -8,7 +8,6 @@ import org.unidal.initialization.Module;
import
org.unidal.lookup.configuration.AbstractResourceConfigurator
;
import
org.unidal.lookup.configuration.Component
;
import
com.dianping.cat.DomainManager
;
import
com.dianping.cat.ServerConfigManager
;
import
com.dianping.cat.analysis.MessageAnalyzer
;
import
com.dianping.cat.consumer.CatConsumerAdvancedModule
;
...
...
@@ -25,9 +24,13 @@ import com.dianping.cat.consumer.metric.MetricAnalyzer;
import
com.dianping.cat.consumer.metric.MetricConfigManager
;
import
com.dianping.cat.consumer.metric.ProductLineConfigManager
;
import
com.dianping.cat.core.config.ConfigDao
;
import
com.dianping.cat.core.dal.HostinfoDao
;
import
com.dianping.cat.core.dal.HourlyReportContentDao
;
import
com.dianping.cat.core.dal.HourlyReportDao
;
import
com.dianping.cat.core.dal.ProjectDao
;
import
com.dianping.cat.service.DefaultReportManager
;
import
com.dianping.cat.service.HostinfoService
;
import
com.dianping.cat.service.ProjectService
;
import
com.dianping.cat.service.ReportDelegate
;
import
com.dianping.cat.service.ReportManager
;
import
com.dianping.cat.storage.BucketManager
;
...
...
@@ -81,9 +84,13 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
final
List
<
Component
>
all
=
new
ArrayList
<
Component
>();
final
String
ID
=
DependencyAnalyzer
.
ID
;
all
.
add
(
C
(
ProjectService
.
class
).
req
(
ProjectDao
.
class
,
ServerConfigManager
.
class
));
all
.
add
(
C
(
HostinfoService
.
class
).
req
(
HostinfoDao
.
class
,
ProjectService
.
class
,
ServerConfigManager
.
class
));
all
.
add
(
C
(
DatabaseParser
.
class
));
all
.
add
(
C
(
MessageAnalyzer
.
class
,
ID
,
DependencyAnalyzer
.
class
).
is
(
PER_LOOKUP
)
//
.
req
(
ReportManager
.
class
,
ID
).
req
(
ServerConfigManager
.
class
,
DomainManager
.
class
,
DatabaseParser
.
class
));
all
.
add
(
C
(
MessageAnalyzer
.
class
,
ID
,
DependencyAnalyzer
.
class
).
is
(
PER_LOOKUP
)
//
.
req
(
ReportManager
.
class
,
ID
)
.
req
(
ServerConfigManager
.
class
,
HostinfoService
.
class
,
ProjectService
.
class
,
DatabaseParser
.
class
));
all
.
add
(
C
(
ReportManager
.
class
,
ID
,
DefaultReportManager
.
class
)
//
.
req
(
ReportDelegate
.
class
,
ID
)
//
.
req
(
BucketManager
.
class
,
HourlyReportDao
.
class
,
HourlyReportContentDao
.
class
)
//
...
...
cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/dependency/DependencyAnalyzer.java
浏览文件 @
3e40f3a9
...
...
@@ -9,7 +9,6 @@ import org.codehaus.plexus.logging.LogEnabled;
import
org.codehaus.plexus.logging.Logger
;
import
org.unidal.lookup.annotation.Inject
;
import
com.dianping.cat.DomainManager
;
import
com.dianping.cat.ServerConfigManager
;
import
com.dianping.cat.analysis.AbstractMessageAnalyzer
;
import
com.dianping.cat.consumer.dependency.model.entity.Dependency
;
...
...
@@ -21,6 +20,8 @@ import com.dianping.cat.message.Message;
import
com.dianping.cat.message.Transaction
;
import
com.dianping.cat.message.spi.MessageTree
;
import
com.dianping.cat.service.DefaultReportManager.StoragePolicy
;
import
com.dianping.cat.service.HostinfoService
;
import
com.dianping.cat.service.ProjectService
;
import
com.dianping.cat.service.ReportManager
;
public
class
DependencyAnalyzer
extends
AbstractMessageAnalyzer
<
DependencyReport
>
implements
LogEnabled
{
...
...
@@ -30,7 +31,10 @@ public class DependencyAnalyzer extends AbstractMessageAnalyzer<DependencyReport
private
ReportManager
<
DependencyReport
>
m_reportManager
;
@Inject
private
DomainManager
m_domainManager
;
private
HostinfoService
m_hostinfoService
;
@Inject
private
ProjectService
m_projectService
;
@Inject
private
DatabaseParser
m_parser
;
...
...
@@ -142,12 +146,12 @@ public class DependencyAnalyzer extends AbstractMessageAnalyzer<DependencyReport
if
(
"PigeonCall"
.
equals
(
type
)
||
"Call"
.
equals
(
type
))
{
String
ip
=
parseIpFromPigeonClientTransaction
(
t
,
tree
);
String
target
=
m_
domainManager
.
queryDomainByIp
(
ip
);
String
target
=
m_
hostinfoService
.
queryDomainByIp
(
ip
);
String
callType
=
"PigeonCall"
;
updateDependencyInfo
(
report
,
t
,
target
,
callType
);
if
(
m_
domainManager
.
containsDomainInCat
(
target
))
{
if
(
m_
projectService
.
containsDomainInCat
(
target
))
{
DependencyReport
serverReport
=
findOrCreateReport
(
target
);
updateDependencyInfo
(
serverReport
,
t
,
tree
.
getDomain
(),
"PigeonService"
);
...
...
cat-consumer-advanced/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
3e40f3a9
...
...
@@ -103,6 +103,33 @@
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.service.ProjectService
</role>
<implementation>
com.dianping.cat.service.ProjectService
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.ServerConfigManager
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.service.HostinfoService
</role>
<implementation>
com.dianping.cat.service.HostinfoService
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.core.dal.HostinfoDao
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.service.ProjectService
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.ServerConfigManager
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.consumer.dependency.DatabaseParser
</role>
<implementation>
com.dianping.cat.consumer.dependency.DatabaseParser
</implementation>
...
...
@@ -121,7 +148,10 @@
<role>
com.dianping.cat.ServerConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.DomainManager
</role>
<role>
com.dianping.cat.service.HostinfoService
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.service.ProjectService
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.consumer.dependency.DatabaseParser
</role>
...
...
cat-consumer-advanced/src/test/java/com/dianping/cat/consumer/dependency/Configurator.java
浏览文件 @
3e40f3a9
...
...
@@ -9,9 +9,9 @@ import org.unidal.lookup.configuration.AbstractResourceConfigurator;
import
org.unidal.lookup.configuration.Component
;
import
com.dianping.cat.Constants
;
import
com.dianping.cat.DomainManager
;
import
com.dianping.cat.consumer.MockReportManager
;
import
com.dianping.cat.consumer.dependency.model.entity.DependencyReport
;
import
com.dianping.cat.service.HostinfoService
;
import
com.dianping.cat.service.ReportDelegate
;
import
com.dianping.cat.service.ReportManager
;
...
...
@@ -33,7 +33,7 @@ public class Configurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
ReportManager
.
class
,
ID
,
MockDependencyReportManager
.
class
)
//
.
req
(
ReportDelegate
.
class
,
ID
));
all
.
add
(
C
(
ReportDelegate
.
class
,
ID
,
ExtendedDependencyDelegate
.
class
));
all
.
add
(
C
(
DomainManager
.
class
,
ExtendedDomainManager
.
class
));
all
.
add
(
C
(
HostinfoService
.
class
,
ExtendedHostinfoService
.
class
));
return
all
;
}
...
...
@@ -57,12 +57,12 @@ public class Configurator extends AbstractResourceConfigurator {
}
}
public
static
class
Extended
DomainManager
extends
DomainManager
{
public
static
class
Extended
HostinfoService
extends
HostinfoService
{
@Override
public
void
initialize
()
throws
InitializationException
{
public
void
initialize
()
throws
InitializationException
{
}
@Override
public
String
queryDomainByIp
(
String
ip
)
{
return
"Cat-CatTest"
;
...
...
cat-consumer/src/main/java/com/dianping/cat/consumer/build/ComponentsConfigurator.java
浏览文件 @
3e40f3a9
...
...
@@ -8,7 +8,6 @@ import org.unidal.initialization.Module;
import
org.unidal.lookup.configuration.AbstractResourceConfigurator
;
import
org.unidal.lookup.configuration.Component
;
import
com.dianping.cat.DomainManager
;
import
com.dianping.cat.ServerConfigManager
;
import
com.dianping.cat.analysis.MessageAnalyzer
;
import
com.dianping.cat.analysis.MessageAnalyzerManager
;
...
...
@@ -30,10 +29,14 @@ import com.dianping.cat.consumer.top.TopAnalyzer;
import
com.dianping.cat.consumer.top.TopDelegate
;
import
com.dianping.cat.consumer.transaction.TransactionAnalyzer
;
import
com.dianping.cat.consumer.transaction.TransactionDelegate
;
import
com.dianping.cat.core.dal.HostinfoDao
;
import
com.dianping.cat.core.dal.HourlyReportContentDao
;
import
com.dianping.cat.core.dal.HourlyReportDao
;
import
com.dianping.cat.core.dal.ProjectDao
;
import
com.dianping.cat.message.spi.core.MessageConsumer
;
import
com.dianping.cat.service.DefaultReportManager
;
import
com.dianping.cat.service.HostinfoService
;
import
com.dianping.cat.service.ProjectService
;
import
com.dianping.cat.service.ReportDelegate
;
import
com.dianping.cat.service.ReportManager
;
import
com.dianping.cat.statistic.ServerStatisticManager
;
...
...
@@ -124,7 +127,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
.
req
(
BucketManager
.
class
,
HourlyReportDao
.
class
,
HourlyReportContentDao
.
class
)
//
.
config
(
E
(
"name"
).
value
(
ID
)));
all
.
add
(
C
(
ReportDelegate
.
class
,
ID
,
ProblemDelegate
.
class
)
//
.
req
(
TaskManager
.
class
,
ServerConfigManager
.
class
));
.
req
(
TaskManager
.
class
,
ServerConfigManager
.
class
));
return
all
;
}
...
...
@@ -133,8 +136,10 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
final
List
<
Component
>
all
=
new
ArrayList
<
Component
>();
final
String
ID
=
StateAnalyzer
.
ID
;
all
.
add
(
C
(
ProjectService
.
class
).
req
(
ProjectDao
.
class
,
ServerConfigManager
.
class
));
all
.
add
(
C
(
HostinfoService
.
class
).
req
(
HostinfoDao
.
class
,
ProjectService
.
class
,
ServerConfigManager
.
class
));
all
.
add
(
C
(
MessageAnalyzer
.
class
,
ID
,
StateAnalyzer
.
class
).
is
(
PER_LOOKUP
).
req
(
ReportManager
.
class
,
ID
)
.
req
(
ServerConfigManager
.
class
,
DomainManager
.
class
,
ServerStatisticManager
.
class
));
.
req
(
ServerConfigManager
.
class
,
HostinfoService
.
class
,
ProjectService
.
class
,
ServerStatisticManager
.
class
));
all
.
add
(
C
(
ReportManager
.
class
,
ID
,
DefaultReportManager
.
class
)
//
.
req
(
ReportDelegate
.
class
,
ID
)
//
.
req
(
BucketManager
.
class
,
HourlyReportDao
.
class
,
HourlyReportContentDao
.
class
)
//
...
...
cat-consumer/src/main/java/com/dianping/cat/consumer/state/StateAnalyzer.java
浏览文件 @
3e40f3a9
...
...
@@ -10,7 +10,6 @@ import org.codehaus.plexus.logging.Logger;
import
org.unidal.lookup.annotation.Inject
;
import
com.dianping.cat.Constants
;
import
com.dianping.cat.DomainManager
;
import
com.dianping.cat.ServerConfigManager
;
import
com.dianping.cat.analysis.AbstractMessageAnalyzer
;
import
com.dianping.cat.configuration.NetworkInterfaceManager
;
...
...
@@ -22,6 +21,8 @@ import com.dianping.cat.consumer.state.model.entity.StateReport;
import
com.dianping.cat.core.dal.Hostinfo
;
import
com.dianping.cat.message.spi.MessageTree
;
import
com.dianping.cat.service.DefaultReportManager.StoragePolicy
;
import
com.dianping.cat.service.HostinfoService
;
import
com.dianping.cat.service.ProjectService
;
import
com.dianping.cat.service.ReportManager
;
import
com.dianping.cat.statistic.ServerStatistic.Statistic
;
import
com.dianping.cat.statistic.ServerStatisticManager
;
...
...
@@ -36,7 +37,10 @@ public class StateAnalyzer extends AbstractMessageAnalyzer<StateReport> implemen
private
ServerStatisticManager
m_serverStateManager
;
@Inject
private
DomainManager
m_domainManager
;
private
ProjectService
m_projectService
;
@Inject
private
HostinfoService
m_hostinfoService
;
@Inject
private
ServerConfigManager
m_serverConfigManager
;
...
...
@@ -200,17 +204,17 @@ public class StateAnalyzer extends AbstractMessageAnalyzer<StateReport> implemen
machine
.
findOrCreateProcessDomain
(
domain
).
addIp
(
ip
);
if
(
m_serverConfigManager
.
validateDomain
(
domain
))
{
if
(!
m_
domainManager
.
containsDomainInCat
(
domain
))
{
boolean
insert
=
m_
domainManager
.
insertDomain
(
domain
);
if
(!
m_
projectService
.
containsDomainInCat
(
domain
))
{
boolean
insert
=
m_
projectService
.
insertDomain
(
domain
);
if
(!
insert
)
{
m_logger
.
warn
(
String
.
format
(
"Error when insert domain %s info"
,
domain
));
}
}
Hostinfo
info
=
m_
domainManager
.
queryHostInfo
ByIp
(
ip
);
Hostinfo
info
=
m_
hostinfoService
.
find
ByIp
(
ip
);
if
(
info
==
null
)
{
m_
domainManager
.
insert
(
domain
,
ip
);
m_
hostinfoService
.
insert
(
domain
,
ip
);
}
else
{
String
oldDomain
=
info
.
getDomain
();
...
...
@@ -220,7 +224,7 @@ public class StateAnalyzer extends AbstractMessageAnalyzer<StateReport> implemen
Date
lastModifiedDate
=
info
.
getLastModifiedDate
();
if
(
lastModifiedDate
!=
null
&&
(
current
-
lastModifiedDate
.
getTime
())
>
ONE_HOUR
)
{
m_
domainManager
.
update
(
info
.
getId
(),
domain
,
ip
);
m_
hostinfoService
.
update
(
info
.
getId
(),
domain
,
ip
);
m_logger
.
info
(
String
.
format
(
"old domain is %s , change ip %s to %s"
,
oldDomain
,
ip
,
domain
));
}
}
...
...
cat-consumer/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
3e40f3a9
...
...
@@ -294,6 +294,33 @@
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.service.ProjectService
</role>
<implementation>
com.dianping.cat.service.ProjectService
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.ServerConfigManager
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.service.HostinfoService
</role>
<implementation>
com.dianping.cat.service.HostinfoService
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.core.dal.HostinfoDao
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.service.ProjectService
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.ServerConfigManager
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.analysis.MessageAnalyzer
</role>
<role-hint>
state
</role-hint>
...
...
@@ -308,7 +335,10 @@
<role>
com.dianping.cat.ServerConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.DomainManager
</role>
<role>
com.dianping.cat.service.HostinfoService
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.service.ProjectService
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.statistic.ServerStatisticManager
</role>
...
...
cat-core/src/main/java/com/dianping/cat/DomainManager.java
已删除
100644 → 0
浏览文件 @
5afdeab8
package
com.dianping.cat
;
import
java.io.InputStream
;
import
java.net.HttpURLConnection
;
import
java.net.URL
;
import
java.util.Date
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.regex.Pattern
;
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.DalException
;
import
org.unidal.helper.Files
;
import
org.unidal.helper.Threads
;
import
org.unidal.helper.Threads.Task
;
import
org.unidal.lookup.annotation.Inject
;
import
org.unidal.webres.json.JsonArray
;
import
org.unidal.webres.json.JsonObject
;
import
com.dianping.cat.core.dal.Hostinfo
;
import
com.dianping.cat.core.dal.Project
;
import
com.dianping.cat.service.HostinfoService
;
import
com.dianping.cat.service.ProjectService
;
import
com.site.lookup.util.StringUtils
;
public
class
DomainManager
implements
Initializable
,
LogEnabled
{
@Inject
private
HostinfoService
m_hostInfoService
;
@Inject
private
ProjectService
m_projectService
;
@Inject
private
ServerConfigManager
m_manager
;
private
Map
<
String
,
String
>
m_ipDomains
=
new
ConcurrentHashMap
<
String
,
String
>();
private
Map
<
String
,
String
>
m_unknownIps
=
new
ConcurrentHashMap
<
String
,
String
>();
private
Map
<
String
,
String
>
m_cmdbs
=
new
ConcurrentHashMap
<
String
,
String
>();
private
Set
<
String
>
m_domainsInCat
=
new
HashSet
<
String
>();
private
Map
<
String
,
Hostinfo
>
m_ipsInCat
=
new
ConcurrentHashMap
<
String
,
Hostinfo
>();
private
Logger
m_logger
;
private
static
final
String
UNKNOWN_IP
=
"UnknownIp"
;
private
static
final
String
UNKNOWN_PROJECT
=
"UnknownProject"
;
private
static
final
String
CMDB_URL
=
"http://cmdb.dp/cmdb/device/s?q=%s&fl=app&tidy=true"
;
public
boolean
containsDomainInCat
(
String
domain
)
{
return
m_domainsInCat
.
contains
(
domain
);
}
@Override
public
void
enableLogging
(
Logger
logger
)
{
m_logger
=
logger
;
}
@Override
public
void
initialize
()
throws
InitializationException
{
if
(!
m_manager
.
isLocalMode
())
{
try
{
m_ipDomains
.
put
(
UNKNOWN_IP
,
UNKNOWN_PROJECT
);
List
<
Hostinfo
>
infos
=
m_hostInfoService
.
findAll
();
for
(
Hostinfo
info
:
infos
)
{
m_ipDomains
.
put
(
info
.
getIp
(),
info
.
getDomain
());
m_ipsInCat
.
put
(
info
.
getIp
(),
info
);
}
List
<
Project
>
projects
=
m_projectService
.
findAll
();
for
(
Project
project
:
projects
)
{
m_domainsInCat
.
add
(
project
.
getDomain
());
}
}
catch
(
DalException
e
)
{
Cat
.
logError
(
e
);
}
Threads
.
forGroup
(
"Cat"
).
start
(
new
ReloadDomainTask
());
}
}
public
boolean
insert
(
String
domain
,
String
ip
)
{
try
{
Hostinfo
info
=
m_hostInfoService
.
createLocal
();
info
.
setDomain
(
domain
);
info
.
setIp
(
ip
);
m_hostInfoService
.
insert
(
info
);
m_domainsInCat
.
add
(
domain
);
m_ipsInCat
.
put
(
ip
,
info
);
return
true
;
}
catch
(
DalException
e
)
{
Cat
.
logError
(
e
);
}
return
false
;
}
public
boolean
insertDomain
(
String
domain
)
{
Project
project
=
m_projectService
.
createLocal
();
project
.
setDomain
(
domain
);
project
.
setProjectLine
(
"Default"
);
project
.
setDepartment
(
"Default"
);
try
{
m_projectService
.
insert
(
project
);
m_domainsInCat
.
add
(
domain
);
return
true
;
}
catch
(
Exception
ex
)
{
Cat
.
logError
(
ex
);
}
return
false
;
}
public
String
queryDomainByIp
(
String
ip
)
{
String
project
=
m_ipDomains
.
get
(
ip
);
if
(
project
==
null
)
{
project
=
m_cmdbs
.
get
(
ip
);
if
(
project
==
null
)
{
if
(!
m_unknownIps
.
containsKey
(
ip
))
{
m_unknownIps
.
put
(
ip
,
ip
);
}
return
UNKNOWN_PROJECT
;
}
}
return
project
;
}
public
Hostinfo
queryHostInfoByIp
(
String
ip
)
{
return
m_ipsInCat
.
get
(
ip
);
}
public
String
queryHostnameByIp
(
String
ip
)
{
try
{
if
(
validateIp
(
ip
))
{
Hostinfo
info
=
m_ipsInCat
.
get
(
ip
);
String
hostname
=
null
;
if
(
info
!=
null
)
{
hostname
=
info
.
getHostname
();
if
(
StringUtils
.
isNotEmpty
(
hostname
))
{
return
hostname
;
}
}
info
=
m_hostInfoService
.
findByIp
(
ip
);
if
(
info
!=
null
)
{
m_ipsInCat
.
put
(
ip
,
info
);
hostname
=
info
.
getHostname
();
}
return
hostname
;
}
else
{
return
null
;
}
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
return
null
;
}
public
boolean
update
(
int
id
,
String
domain
,
String
ip
)
{
Hostinfo
info
=
m_hostInfoService
.
createLocal
();
info
.
setId
(
id
);
info
.
setDomain
(
domain
);
info
.
setIp
(
ip
);
info
.
setLastModifiedDate
(
new
Date
());
m_hostInfoService
.
updateHostinfo
(
info
);
m_domainsInCat
.
add
(
domain
);
m_ipsInCat
.
put
(
ip
,
info
);
return
true
;
}
private
boolean
validateIp
(
String
str
)
{
Pattern
pattern
=
Pattern
.
compile
(
"^((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]|[*])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]|[*])$"
);
return
pattern
.
matcher
(
str
).
matches
();
}
public
class
ReloadDomainTask
implements
Task
{
private
int
m_count
;
@Override
public
String
getName
()
{
return
"Reload-CMDB-Ip-Domain-Info"
;
}
public
String
parseIp
(
String
content
)
throws
Exception
{
JsonObject
object
=
new
JsonObject
(
content
);
JsonArray
array
=
object
.
getJSONArray
(
"app"
);
if
(
array
.
length
()
>
0
)
{
return
array
.
getString
(
0
);
}
return
null
;
}
private
void
queryFromCMDB
()
{
Set
<
String
>
addedIps
=
new
HashSet
<
String
>();
for
(
String
ip
:
m_unknownIps
.
keySet
())
{
try
{
String
cmdb
=
String
.
format
(
CMDB_URL
,
ip
);
URL
url
=
new
URL
(
cmdb
);
HttpURLConnection
conn
=
(
HttpURLConnection
)
url
.
openConnection
();
int
nRc
=
conn
.
getResponseCode
();
if
(
nRc
==
HttpURLConnection
.
HTTP_OK
)
{
InputStream
input
=
conn
.
getInputStream
();
String
content
=
Files
.
forIO
().
readFrom
(
input
,
"utf-8"
);
String
domain
=
parseIp
(
content
.
trim
());
if
(
domain
!=
null
)
{
m_cmdbs
.
put
(
ip
,
domain
);
addedIps
.
add
(
ip
);
}
}
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
for
(
String
temp
:
addedIps
)
{
m_unknownIps
.
remove
(
temp
);
}
}
}
private
void
queryFromDatabase
()
{
Set
<
String
>
addIps
=
new
HashSet
<
String
>();
for
(
String
ip
:
m_unknownIps
.
keySet
())
{
try
{
Hostinfo
hostinfo
=
m_hostInfoService
.
findByIp
(
ip
);
addIps
.
add
(
hostinfo
.
getIp
());
m_ipDomains
.
put
(
hostinfo
.
getIp
(),
hostinfo
.
getDomain
());
m_domainsInCat
.
add
(
hostinfo
.
getDomain
());
}
catch
(
Exception
e
)
{
// ignore
}
}
for
(
String
ip
:
addIps
)
{
m_unknownIps
.
remove
(
ip
);
}
}
@Override
public
void
run
()
{
boolean
active
=
true
;
while
(
active
)
{
try
{
m_count
++;
queryFromDatabase
();
queryFromCMDB
();
if
(
m_count
%
1000
==
0
&&
m_unknownIps
.
size
()
>
0
)
{
m_logger
.
error
(
String
.
format
(
"can't get domain info from cmdb, ip: %s"
,
m_unknownIps
.
keySet
()
.
toString
()));
}
}
catch
(
Throwable
e
)
{
Cat
.
logError
(
e
);
}
try
{
Thread
.
sleep
(
2
*
60
*
1000
);
}
catch
(
InterruptedException
e
)
{
active
=
false
;
}
}
}
@Override
public
void
shutdown
()
{
}
}
}
cat-core/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
浏览文件 @
3e40f3a9
...
...
@@ -8,7 +8,6 @@ import org.unidal.lookup.configuration.AbstractResourceConfigurator;
import
org.unidal.lookup.configuration.Component
;
import
com.dianping.cat.CatCoreModule
;
import
com.dianping.cat.DomainManager
;
import
com.dianping.cat.ServerConfigManager
;
import
com.dianping.cat.analysis.DefaultMessageAnalyzerManager
;
import
com.dianping.cat.analysis.MessageAnalyzerManager
;
...
...
@@ -46,12 +45,8 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
public
List
<
Component
>
defineComponents
()
{
List
<
Component
>
all
=
new
ArrayList
<
Component
>();
all
.
add
(
C
(
DomainManager
.
class
)
//
.
req
(
ServerConfigManager
.
class
,
ProjectService
.
class
,
HostinfoService
.
class
));
all
.
add
(
C
(
ProjectService
.
class
).
req
(
ProjectDao
.
class
));
all
.
add
(
C
(
HostinfoService
.
class
).
req
(
HostinfoDao
.
class
));
all
.
add
(
C
(
ProjectService
.
class
).
req
(
ProjectDao
.
class
,
ServerConfigManager
.
class
));
all
.
add
(
C
(
HostinfoService
.
class
).
req
(
HostinfoDao
.
class
,
ProjectService
.
class
,
ServerConfigManager
.
class
));
all
.
add
(
C
(
TaskManager
.
class
).
req
(
TaskDao
.
class
));
all
.
add
(
C
(
ServerConfigManager
.
class
));
...
...
cat-core/src/main/java/com/dianping/cat/service/HostinfoService.java
浏览文件 @
3e40f3a9
package
com.dianping.cat.service
;
import
java.io.InputStream
;
import
java.net.HttpURLConnection
;
import
java.net.URL
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.HashSet
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
java.util.Set
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.
concurrent.TimeUnit
;
import
java.util.
regex.Pattern
;
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.DalException
;
import
org.unidal.helper.Files
;
import
org.unidal.helper.Threads
;
import
org.unidal.helper.Threads.Task
;
import
org.unidal.lookup.annotation.Inject
;
import
org.unidal.webres.json.JsonArray
;
import
org.unidal.webres.json.JsonObject
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.ServerConfigManager
;
import
com.dianping.cat.core.dal.Hostinfo
;
import
com.dianping.cat.core.dal.HostinfoDao
;
import
com.dianping.cat.core.dal.HostinfoEntity
;
import
com.site.lookup.util.StringUtils
;
public
class
HostinfoService
implements
Initializable
{
public
class
HostinfoService
implements
Initializable
,
LogEnabled
{
@Inject
private
HostinfoDao
m_hostinfoDao
;
@Inject
private
ServerConfigManager
m_manager
;
@Inject
private
ProjectService
m_projectService
;
private
Map
<
String
,
String
>
m_ipDomains
=
new
ConcurrentHashMap
<
String
,
String
>();
private
Map
<
String
,
String
>
m_unknownIps
=
new
ConcurrentHashMap
<
String
,
String
>();
private
Map
<
String
,
String
>
m_cmdbs
=
new
ConcurrentHashMap
<
String
,
String
>();
private
Map
<
String
,
Hostinfo
>
m_hostinfos
=
new
ConcurrentHashMap
<
String
,
Hostinfo
>();
private
static
final
String
UNKNOWN_IP
=
"UnknownIp"
;
private
static
final
String
UNKNOWN_PROJECT
=
"UnknownProject"
;
private
static
final
String
CMDB_URL
=
"http://cmdb.dp/cmdb/device/s?q=%s&fl=app&tidy=true"
;
private
Logger
m_logger
;
public
Hostinfo
createLocal
()
{
return
m_hostinfoDao
.
createLocal
();
}
...
...
@@ -55,12 +88,27 @@ public class HostinfoService implements Initializable {
}
}
@Override
public
void
enableLogging
(
Logger
logger
)
{
m_logger
=
logger
;
}
public
List
<
Hostinfo
>
findAll
()
throws
DalException
{
return
new
ArrayList
<
Hostinfo
>(
m_hostinfos
.
values
());
}
public
Hostinfo
findByIp
(
String
ip
)
{
return
m_hostinfos
.
get
(
ip
);
Hostinfo
hostinfo
=
m_hostinfos
.
get
(
ip
);
if
(
hostinfo
!=
null
)
{
return
hostinfo
;
}
else
{
try
{
return
m_hostinfoDao
.
findByIp
(
ip
,
HostinfoEntity
.
READSET_FULL
);
}
catch
(
DalException
e
)
{
return
new
Hostinfo
();
}
}
}
public
Hostinfo
findHostinfo
(
int
id
)
{
...
...
@@ -74,12 +122,91 @@ public class HostinfoService implements Initializable {
}
}
return
new
Hostinfo
();
try
{
return
m_hostinfoDao
.
findByPK
(
id
,
HostinfoEntity
.
READSET_FULL
);
}
catch
(
DalException
e
)
{
return
new
Hostinfo
();
}
}
@Override
public
void
initialize
()
throws
InitializationException
{
Threads
.
forGroup
(
"Cat"
).
start
(
new
HostinfoReloadTask
());
if
(!
m_manager
.
isLocalMode
())
{
m_ipDomains
.
put
(
UNKNOWN_IP
,
UNKNOWN_PROJECT
);
Threads
.
forGroup
(
"Cat"
).
start
(
new
ReloadDomainTask
());
}
}
public
boolean
insert
(
Hostinfo
hostinfo
)
throws
DalException
{
m_hostinfos
.
put
(
hostinfo
.
getIp
(),
hostinfo
);
int
result
=
m_hostinfoDao
.
insert
(
hostinfo
);
if
(
result
==
1
)
{
return
true
;
}
else
{
return
false
;
}
}
public
boolean
insert
(
String
domain
,
String
ip
)
{
try
{
Hostinfo
info
=
createLocal
();
info
.
setDomain
(
domain
);
info
.
setIp
(
ip
);
insert
(
info
);
m_hostinfos
.
put
(
ip
,
info
);
return
true
;
}
catch
(
DalException
e
)
{
Cat
.
logError
(
e
);
}
return
false
;
}
public
String
queryDomainByIp
(
String
ip
)
{
String
project
=
m_ipDomains
.
get
(
ip
);
if
(
project
==
null
)
{
project
=
m_cmdbs
.
get
(
ip
);
if
(
project
==
null
)
{
if
(!
m_unknownIps
.
containsKey
(
ip
))
{
m_unknownIps
.
put
(
ip
,
ip
);
}
return
UNKNOWN_PROJECT
;
}
}
return
project
;
}
public
String
queryHostnameByIp
(
String
ip
)
{
try
{
if
(
validateIp
(
ip
))
{
Hostinfo
info
=
m_hostinfos
.
get
(
ip
);
String
hostname
=
null
;
if
(
info
!=
null
)
{
hostname
=
info
.
getHostname
();
if
(
StringUtils
.
isNotEmpty
(
hostname
))
{
return
hostname
;
}
}
info
=
findByIp
(
ip
);
if
(
info
!=
null
)
{
m_hostinfos
.
put
(
ip
,
info
);
hostname
=
info
.
getHostname
();
}
return
hostname
;
}
else
{
return
null
;
}
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
return
null
;
}
public
void
refresh
()
{
...
...
@@ -89,6 +216,7 @@ public class HostinfoService implements Initializable {
synchronized
(
this
)
{
for
(
Hostinfo
hostinfo
:
hostinfos
)
{
m_hostinfos
.
put
(
hostinfo
.
getIp
(),
hostinfo
);
m_ipDomains
.
put
(
hostinfo
.
getIp
(),
hostinfo
.
getDomain
());
}
}
}
catch
(
DalException
e
)
{
...
...
@@ -96,15 +224,16 @@ public class HostinfoService implements Initializable {
}
}
public
boolean
insert
(
Hostinfo
hostinfo
)
throws
DalException
{
m_hostinfos
.
put
(
hostinfo
.
getIp
(),
hostinfo
);
public
boolean
update
(
int
id
,
String
domain
,
String
ip
)
{
Hostinfo
info
=
createLocal
(
);
int
result
=
m_hostinfoDao
.
insert
(
hostinfo
);
if
(
result
==
1
)
{
return
true
;
}
else
{
return
false
;
}
info
.
setId
(
id
);
info
.
setDomain
(
domain
);
info
.
setIp
(
ip
);
info
.
setLastModifiedDate
(
new
Date
());
updateHostinfo
(
info
);
m_hostinfos
.
put
(
ip
,
info
);
return
true
;
}
public
boolean
updateHostinfo
(
Hostinfo
hostinfo
)
{
...
...
@@ -119,7 +248,77 @@ public class HostinfoService implements Initializable {
}
}
public
class
HostinfoReloadTask
implements
Task
{
private
boolean
validateIp
(
String
str
)
{
Pattern
pattern
=
Pattern
.
compile
(
"^((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]|[*])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]|[*])$"
);
return
pattern
.
matcher
(
str
).
matches
();
}
public
class
ReloadDomainTask
implements
Task
{
private
int
m_count
;
@Override
public
String
getName
()
{
return
"Reload-CMDB-Ip-Domain-Info"
;
}
public
String
parseIp
(
String
content
)
throws
Exception
{
JsonObject
object
=
new
JsonObject
(
content
);
JsonArray
array
=
object
.
getJSONArray
(
"app"
);
if
(
array
.
length
()
>
0
)
{
return
array
.
getString
(
0
);
}
return
null
;
}
private
void
queryFromCMDB
()
{
Set
<
String
>
addedIps
=
new
HashSet
<
String
>();
for
(
String
ip
:
m_unknownIps
.
keySet
())
{
try
{
String
cmdb
=
String
.
format
(
CMDB_URL
,
ip
);
URL
url
=
new
URL
(
cmdb
);
HttpURLConnection
conn
=
(
HttpURLConnection
)
url
.
openConnection
();
int
nRc
=
conn
.
getResponseCode
();
if
(
nRc
==
HttpURLConnection
.
HTTP_OK
)
{
InputStream
input
=
conn
.
getInputStream
();
String
content
=
Files
.
forIO
().
readFrom
(
input
,
"utf-8"
);
String
domain
=
parseIp
(
content
.
trim
());
if
(
domain
!=
null
)
{
m_cmdbs
.
put
(
ip
,
domain
);
addedIps
.
add
(
ip
);
}
}
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
for
(
String
temp
:
addedIps
)
{
m_unknownIps
.
remove
(
temp
);
}
}
}
private
void
queryFromDatabase
()
{
Set
<
String
>
addIps
=
new
HashSet
<
String
>();
for
(
String
ip
:
m_unknownIps
.
keySet
())
{
try
{
Hostinfo
hostinfo
=
findByIp
(
ip
);
addIps
.
add
(
hostinfo
.
getIp
());
m_ipDomains
.
put
(
hostinfo
.
getIp
(),
hostinfo
.
getDomain
());
m_projectService
.
addDomain
(
hostinfo
.
getDomain
());
}
catch
(
Exception
e
)
{
// ignore
}
}
for
(
String
ip
:
addIps
)
{
m_unknownIps
.
remove
(
ip
);
}
}
@Override
public
void
run
()
{
...
...
@@ -127,30 +326,29 @@ public class HostinfoService implements Initializable {
while
(
active
)
{
try
{
m_count
++;
queryFromDatabase
();
queryFromCMDB
();
if
(
m_count
%
1000
==
0
&&
m_unknownIps
.
size
()
>
0
)
{
m_logger
.
error
(
String
.
format
(
"can't get domain info from cmdb, ip: %s"
,
m_unknownIps
.
keySet
()
.
toString
()));
}
refresh
();
}
catch
(
Exception
ex
)
{
Cat
.
logError
(
"reload hostinfo error"
,
ex
);
}
catch
(
Throwable
e
)
{
Cat
.
logError
(
e
);
}
try
{
TimeUnit
.
MINUTES
.
sleep
(
1
);
}
catch
(
InterruptedException
ex
)
{
Cat
.
logError
(
"reload hostinfo stop"
,
ex
);
Thread
.
sleep
(
2
*
60
*
1000
);
}
catch
(
InterruptedException
e
)
{
active
=
false
;
}
}
}
@Override
public
String
getName
()
{
return
"hostinfo-reload"
;
}
@Override
public
void
shutdown
()
{
}
}
}
cat-core/src/main/java/com/dianping/cat/service/ProjectService.java
浏览文件 @
3e40f3a9
package
com.dianping.cat.service
;
import
java.util.ArrayList
;
import
java.util.HashSet
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
java.util.Set
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.concurrent.TimeUnit
;
...
...
@@ -16,6 +18,7 @@ import org.unidal.helper.Threads.Task;
import
org.unidal.lookup.annotation.Inject
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.ServerConfigManager
;
import
com.dianping.cat.core.dal.Project
;
import
com.dianping.cat.core.dal.ProjectDao
;
import
com.dianping.cat.core.dal.ProjectEntity
;
...
...
@@ -25,12 +28,25 @@ public class ProjectService implements Initializable {
@Inject
private
ProjectDao
m_projectDao
;
@Inject
private
ServerConfigManager
m_manager
;
private
Map
<
String
,
Project
>
m_projects
=
new
ConcurrentHashMap
<
String
,
Project
>();
private
Set
<
String
>
m_domains
=
new
HashSet
<
String
>();
public
void
addDomain
(
String
domain
)
{
m_domains
.
add
(
domain
);
}
public
Project
createLocal
()
{
return
m_projectDao
.
createLocal
();
}
public
boolean
containsDomainInCat
(
String
domain
)
{
return
m_domains
.
contains
(
domain
);
}
public
boolean
deleteProject
(
Project
project
)
{
int
id
=
project
.
getId
();
Iterator
<
Entry
<
String
,
Project
>>
iterator
=
m_projects
.
entrySet
().
iterator
();
...
...
@@ -61,7 +77,17 @@ public class ProjectService implements Initializable {
}
public
Project
findByDomain
(
String
domainName
)
{
return
m_projects
.
get
(
domainName
);
Project
project
=
m_projects
.
get
(
domainName
);
if
(
project
!=
null
)
{
return
project
;
}
else
{
try
{
return
m_projectDao
.
findByDomain
(
domainName
,
ProjectEntity
.
READSET_FULL
);
}
catch
(
DalException
e
)
{
return
new
Project
();
}
}
}
public
Project
findProject
(
int
id
)
{
...
...
@@ -75,12 +101,19 @@ public class ProjectService implements Initializable {
return
pro
;
}
}
return
new
Project
();
try
{
return
m_projectDao
.
findByPK
(
id
,
ProjectEntity
.
READSET_FULL
);
}
catch
(
DalException
e
)
{
return
new
Project
();
}
}
@Override
public
void
initialize
()
throws
InitializationException
{
Threads
.
forGroup
(
"Cat"
).
start
(
new
ProjectReloadTask
());
if
(!
m_manager
.
isLocalMode
())
{
Threads
.
forGroup
(
"Cat"
).
start
(
new
ProjectReloadTask
());
}
}
public
void
refresh
()
{
...
...
@@ -89,6 +122,7 @@ public class ProjectService implements Initializable {
synchronized
(
this
)
{
for
(
Project
project
:
projects
)
{
m_domains
.
add
(
project
.
getDomain
());
m_projects
.
put
(
project
.
getDomain
(),
project
);
}
}
...
...
@@ -108,6 +142,23 @@ public class ProjectService implements Initializable {
}
}
public
boolean
insertDomain
(
String
domain
)
{
Project
project
=
createLocal
();
project
.
setDomain
(
domain
);
project
.
setProjectLine
(
"Default"
);
project
.
setDepartment
(
"Default"
);
try
{
insert
(
project
);
m_domains
.
add
(
domain
);
return
true
;
}
catch
(
Exception
ex
)
{
Cat
.
logError
(
ex
);
}
return
false
;
}
public
boolean
updateProject
(
Project
project
)
{
m_projects
.
put
(
project
.
getDomain
(),
project
);
...
...
cat-core/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
3e40f3a9
<plexus>
<components>
<component>
<role>
com.dianping.cat.DomainManager
</role>
<implementation>
com.dianping.cat.DomainManager
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.ServerConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.service.ProjectService
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.service.HostinfoService
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.service.ProjectService
</role>
<implementation>
com.dianping.cat.service.ProjectService
</implementation>
...
...
@@ -22,6 +7,9 @@
<requirement>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.ServerConfigManager
</role>
</requirement>
</requirements>
</component>
<component>
...
...
@@ -31,6 +19,12 @@
<requirement>
<role>
com.dianping.cat.core.dal.HostinfoDao
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.service.ProjectService
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.ServerConfigManager
</role>
</requirement>
</requirements>
</component>
<component>
...
...
cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
浏览文件 @
3e40f3a9
...
...
@@ -117,13 +117,13 @@ import com.dianping.cat.system.config.AlertPolicyManager;
import
com.dianping.cat.system.config.BugConfigManager
;
import
com.dianping.cat.system.config.BusinessRuleConfigManager
;
import
com.dianping.cat.system.config.ConfigReloadTask
;
import
com.dianping.cat.system.config.ScheduledJob
;
import
com.dianping.cat.system.config.DomainGroupConfigManager
;
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.ScheduledJob
;
import
com.dianping.cat.system.config.SystemRuleConfigManager
;
import
com.dianping.cat.system.config.ThirdPartyConfigManager
;
import
com.dianping.cat.system.tool.DefaultMailImpl
;
...
...
@@ -141,8 +141,8 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
DefaultMailImpl
.
class
).
req
(
ServerConfigManager
.
class
));
all
.
add
(
C
(
DataChecker
.
class
,
DefaultDataChecker
.
class
));
all
.
add
(
C
(
RemoteMetricReportService
.
class
).
req
(
ServerConfigManager
.
class
));
all
.
add
(
C
(
ProjectService
.
class
).
req
(
ProjectDao
.
class
));
all
.
add
(
C
(
HostinfoService
.
class
).
req
(
HostinfoDao
.
class
));
all
.
add
(
C
(
ProjectService
.
class
).
req
(
ProjectDao
.
class
,
ServerConfigManager
.
class
));
all
.
add
(
C
(
HostinfoService
.
class
).
req
(
HostinfoDao
.
class
,
ProjectService
.
class
,
ServerConfigManager
.
class
));
all
.
add
(
C
(
Contactor
.
class
,
BusinessContactor
.
ID
,
BusinessContactor
.
class
).
req
(
ProductLineConfigManager
.
class
,
AlertConfigManager
.
class
));
...
...
cat-home/src/main/java/com/dianping/cat/build/TaskComponentConfigurator.java
浏览文件 @
3e40f3a9
...
...
@@ -6,7 +6,6 @@ import java.util.List;
import
org.unidal.lookup.configuration.AbstractResourceConfigurator
;
import
org.unidal.lookup.configuration.Component
;
import
com.dianping.cat.DomainManager
;
import
com.dianping.cat.ServerConfigManager
;
import
com.dianping.cat.consumer.metric.MetricConfigManager
;
import
com.dianping.cat.consumer.metric.ProductLineConfigManager
;
...
...
@@ -51,6 +50,7 @@ import com.dianping.cat.report.task.transaction.TransactionGraphCreator;
import
com.dianping.cat.report.task.transaction.TransactionMerger
;
import
com.dianping.cat.report.task.transaction.TransactionReportBuilder
;
import
com.dianping.cat.report.task.utilization.UtilizationReportBuilder
;
import
com.dianping.cat.service.HostinfoService
;
import
com.dianping.cat.system.config.ExceptionConfigManager
;
import
com.dianping.cat.system.config.NetGraphConfigManager
;
import
com.dianping.cat.system.config.RouterConfigManager
;
...
...
@@ -101,7 +101,7 @@ public class TaskComponentConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
ReportTaskBuilder
.
class
,
BugReportBuilder
.
ID
,
BugReportBuilder
.
class
).
req
(
ReportServiceManager
.
class
));
all
.
add
(
C
(
ReportTaskBuilder
.
class
,
ServiceReportBuilder
.
ID
,
ServiceReportBuilder
.
class
).
req
(
ReportServiceManager
.
class
,
DomainManager
.
class
));
HostinfoService
.
class
));
all
.
add
(
C
(
ReportTaskBuilder
.
class
,
MatrixReportBuilder
.
ID
,
MatrixReportBuilder
.
class
).
req
(
ReportServiceManager
.
class
));
...
...
@@ -118,7 +118,7 @@ public class TaskComponentConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
ReportTaskBuilder
.
class
,
HeavyReportBuilder
.
ID
,
HeavyReportBuilder
.
class
).
req
(
ReportServiceManager
.
class
));
all
.
add
(
C
(
ReportTaskBuilder
.
class
,
UtilizationReportBuilder
.
ID
,
UtilizationReportBuilder
.
class
).
req
(
ReportServiceManager
.
class
,
TransactionMergeManager
.
class
,
ServerConfigManager
.
class
,
DomainManager
.
class
));
ReportServiceManager
.
class
,
TransactionMergeManager
.
class
,
ServerConfigManager
.
class
,
HostinfoService
.
class
));
all
.
add
(
C
(
ReportTaskBuilder
.
class
,
DependencyReportBuilder
.
ID
,
DependencyReportBuilder
.
class
).
req
(
ReportServiceManager
.
class
,
TopologyGraphBuilder
.
class
,
TopologyGraphDao
.
class
));
...
...
cat-home/src/main/java/com/dianping/cat/report/page/AbstractReportModel.java
浏览文件 @
3e40f3a9
...
...
@@ -15,16 +15,17 @@ import org.unidal.web.mvc.ActionContext;
import
org.unidal.web.mvc.ViewModel
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.DomainManager
;
import
com.dianping.cat.core.dal.Project
;
import
com.dianping.cat.report.ReportPage
;
import
com.dianping.cat.report.view.DomainNavManager
;
import
com.dianping.cat.report.view.DomainNavManager.Department
;
import
com.dianping.cat.report.view.HistoryNav
;
import
com.dianping.cat.report.view.UrlNav
;
import
com.dianping.cat.service.HostinfoService
;
public
abstract
class
AbstractReportModel
<
A
extends
Action
,
M
extends
ActionContext
<?>>
extends
ViewModel
<
ReportPage
,
A
,
M
>
{
private
Date
m_creatTime
;
private
String
m_customDate
;
...
...
@@ -45,13 +46,13 @@ public abstract class AbstractReportModel<A extends Action, M extends ActionCont
private
DomainNavManager
m_manager
;
private
DomainManager
m_domainManager
;
private
HostinfoService
m_hostinfoService
;
public
AbstractReportModel
(
M
ctx
)
{
super
(
ctx
);
try
{
m_manager
=
ContainerLoader
.
getDefaultContainer
().
lookup
(
DomainNavManager
.
class
);
m_
domainManager
=
ContainerLoader
.
getDefaultContainer
().
lookup
(
DomainManager
.
class
);
m_
hostinfoService
=
ContainerLoader
.
getDefaultContainer
().
lookup
(
HostinfoService
.
class
);
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
...
...
@@ -113,8 +114,8 @@ public abstract class AbstractReportModel<A extends Action, M extends ActionCont
return
Integer
.
toString
(
hour
);
}
}
public
String
getIpToHostnameStr
(){
public
String
getIpToHostnameStr
()
{
return
new
JsonBuilder
().
toJson
(
getIpToHostname
());
}
...
...
@@ -140,7 +141,7 @@ public abstract class AbstractReportModel<A extends Action, M extends ActionCont
public
String
getIpAddress
()
{
return
m_ipAddress
;
}
public
List
<
String
>
getIps
()
{
return
new
ArrayList
<
String
>();
};
...
...
@@ -150,7 +151,7 @@ public abstract class AbstractReportModel<A extends Action, M extends ActionCont
Map
<
String
,
String
>
ipToHostname
=
new
HashMap
<
String
,
String
>();
for
(
String
ip
:
ips
)
{
String
hostname
=
m_
domainManager
.
queryHostnameByIp
(
ip
);
String
hostname
=
m_
hostinfoService
.
queryHostnameByIp
(
ip
);
ipToHostname
.
put
(
ip
,
hostname
);
}
...
...
cat-home/src/main/java/com/dianping/cat/report/page/cross/CrossMethodVisitor.java
浏览文件 @
3e40f3a9
package
com.dianping.cat.report.page.cross
;
import
com.dianping.cat.DomainManager
;
import
com.dianping.cat.consumer.cross.model.entity.Name
;
import
com.dianping.cat.consumer.cross.model.entity.Remote
;
import
com.dianping.cat.consumer.cross.model.transform.BaseVisitor
;
import
com.dianping.cat.report.page.cross.display.MethodQueryInfo
;
import
com.dianping.cat.service.HostinfoService
;
public
class
CrossMethodVisitor
extends
BaseVisitor
{
...
...
@@ -16,15 +16,15 @@ public class CrossMethodVisitor extends BaseVisitor {
private
MethodQueryInfo
m_info
=
new
MethodQueryInfo
();
private
DomainManager
m_manager
;
private
HostinfoService
m_hostinfoService
;
public
CrossMethodVisitor
(
String
method
,
DomainManager
manager
)
{
public
CrossMethodVisitor
(
String
method
,
HostinfoService
hostinfoService
)
{
if
(
method
==
null
)
{
m_method
=
""
;
}
else
{
m_method
=
method
;
}
m_
manager
=
manager
;
m_
hostinfoService
=
hostinfoService
;
}
public
MethodQueryInfo
getInfo
()
{
...
...
@@ -34,7 +34,7 @@ public class CrossMethodVisitor extends BaseVisitor {
@Override
public
void
visitName
(
Name
name
)
{
String
methodName
=
name
.
getId
();
String
domain
=
m_
manager
.
queryDomainByIp
(
m_remoteIp
);
String
domain
=
m_
hostinfoService
.
queryDomainByIp
(
m_remoteIp
);
String
ip
=
m_remoteIp
;
if
(
ip
.
indexOf
(
":"
)
>
-
1
)
{
...
...
cat-home/src/main/java/com/dianping/cat/report/page/cross/Handler.java
浏览文件 @
3e40f3a9
...
...
@@ -15,7 +15,6 @@ import org.unidal.web.mvc.annotation.OutboundActionMeta;
import
org.unidal.web.mvc.annotation.PayloadMeta
;
import
com.dianping.cat.Constants
;
import
com.dianping.cat.DomainManager
;
import
com.dianping.cat.consumer.cross.CrossAnalyzer
;
import
com.dianping.cat.consumer.cross.model.entity.CrossReport
;
import
com.dianping.cat.helper.TimeUtil
;
...
...
@@ -27,6 +26,7 @@ import com.dianping.cat.report.page.cross.display.ProjectInfo;
import
com.dianping.cat.report.page.cross.display.TypeDetailInfo
;
import
com.dianping.cat.report.page.model.spi.ModelService
;
import
com.dianping.cat.report.service.ReportServiceManager
;
import
com.dianping.cat.service.HostinfoService
;
import
com.dianping.cat.service.ModelPeriod
;
import
com.dianping.cat.service.ModelRequest
;
import
com.dianping.cat.service.ModelResponse
;
...
...
@@ -42,7 +42,7 @@ public class Handler implements PageHandler<Context> {
private
PayloadNormalizer
m_normalizePayload
;
@Inject
private
DomainManager
m_domainManager
;
private
HostinfoService
m_hostinfoService
;
@Inject
(
type
=
ModelService
.
class
,
value
=
CrossAnalyzer
.
ID
)
private
ModelService
<
CrossReport
>
m_service
;
...
...
@@ -51,7 +51,7 @@ public class Handler implements PageHandler<Context> {
CrossReport
projectReport
=
getHourlyReport
(
domain
,
period
,
date
,
Constants
.
ALL
);
ProjectInfo
projectInfo
=
new
ProjectInfo
(
duration
);
projectInfo
.
set
DomainManager
(
m_domainManager
);
projectInfo
.
set
HostinfoService
(
m_hostinfoService
);
projectInfo
.
setClientIp
(
Constants
.
ALL
);
projectInfo
.
visitCrossReport
(
projectReport
);
...
...
@@ -62,7 +62,7 @@ public class Handler implements PageHandler<Context> {
CrossReport
projectReport
=
getSummarizeReport
(
domain
,
start
,
end
);
ProjectInfo
projectInfo
=
new
ProjectInfo
(
end
.
getTime
()
-
start
.
getTime
());
projectInfo
.
set
DomainManager
(
m_domainManager
);
projectInfo
.
set
HostinfoService
(
m_hostinfoService
);
projectInfo
.
setClientIp
(
Constants
.
ALL
);
projectInfo
.
visitCrossReport
(
projectReport
);
return
projectInfo
;
...
...
@@ -139,7 +139,7 @@ public class Handler implements PageHandler<Context> {
CrossReport
projectReport
=
getHourlyReport
(
payload
);
ProjectInfo
projectInfo
=
new
ProjectInfo
(
payload
.
getHourDuration
());
projectInfo
.
set
DomainManager
(
m_domainManager
);
projectInfo
.
set
HostinfoService
(
m_hostinfoService
);
projectInfo
.
setClientIp
(
model
.
getIpAddress
()).
setCallSortBy
(
model
.
getCallSort
())
.
setServiceSortBy
(
model
.
getServiceSort
());
projectInfo
.
visitCrossReport
(
projectReport
);
...
...
@@ -171,7 +171,7 @@ public class Handler implements PageHandler<Context> {
CrossReport
hostReport
=
getHourlyReport
(
payload
);
HostInfo
hostInfo
=
new
HostInfo
(
payload
.
getHourDuration
());
hostInfo
.
set
DomainManager
(
m_domainManager
);
hostInfo
.
set
HostinfoService
(
m_hostinfoService
);
hostInfo
.
setClientIp
(
model
.
getIpAddress
()).
setCallSortBy
(
model
.
getCallSort
())
.
setServiceSortBy
(
model
.
getServiceSort
());
hostInfo
.
setProjectName
(
payload
.
getProjectName
());
...
...
@@ -183,7 +183,7 @@ public class Handler implements PageHandler<Context> {
CrossReport
methodReport
=
getHourlyReport
(
payload
);
MethodInfo
methodInfo
=
new
MethodInfo
(
payload
.
getHourDuration
());
methodInfo
.
set
DomainManager
(
m_domainManager
);
methodInfo
.
set
HostinfoService
(
m_hostinfoService
);
methodInfo
.
setClientIp
(
model
.
getIpAddress
()).
setCallSortBy
(
model
.
getCallSort
())
.
setServiceSortBy
(
model
.
getServiceSort
()).
setRemoteProject
(
payload
.
getProjectName
());
methodInfo
.
setRemoteIp
(
payload
.
getRemoteIp
()).
setQuery
(
model
.
getQueryName
());
...
...
@@ -195,7 +195,7 @@ public class Handler implements PageHandler<Context> {
CrossReport
historyProjectReport
=
getSummarizeReport
(
payload
);
ProjectInfo
historyProjectInfo
=
new
ProjectInfo
(
historyTime
);
historyProjectInfo
.
set
DomainManager
(
m_domainManager
);
historyProjectInfo
.
set
HostinfoService
(
m_hostinfoService
);
historyProjectInfo
.
setClientIp
(
model
.
getIpAddress
()).
setCallSortBy
(
model
.
getCallSort
())
.
setServiceSortBy
(
model
.
getServiceSort
());
historyProjectInfo
.
visitCrossReport
(
historyProjectReport
);
...
...
@@ -228,7 +228,7 @@ public class Handler implements PageHandler<Context> {
CrossReport
historyHostReport
=
getSummarizeReport
(
payload
);
HostInfo
historyHostInfo
=
new
HostInfo
(
historyTime
);
historyHostInfo
.
set
DomainManager
(
m_domainManager
);
historyHostInfo
.
set
HostinfoService
(
m_hostinfoService
);
historyHostInfo
.
setClientIp
(
model
.
getIpAddress
()).
setCallSortBy
(
model
.
getCallSort
())
.
setServiceSortBy
(
model
.
getServiceSort
());
historyHostInfo
.
setProjectName
(
payload
.
getProjectName
());
...
...
@@ -240,7 +240,7 @@ public class Handler implements PageHandler<Context> {
CrossReport
historyMethodReport
=
getSummarizeReport
(
payload
);
MethodInfo
historyMethodInfo
=
new
MethodInfo
(
historyTime
);
historyMethodInfo
.
set
DomainManager
(
m_domainManager
);
historyMethodInfo
.
set
HostinfoService
(
m_hostinfoService
);
historyMethodInfo
.
setClientIp
(
model
.
getIpAddress
()).
setCallSortBy
(
model
.
getCallSort
())
.
setServiceSortBy
(
model
.
getServiceSort
()).
setRemoteProject
(
payload
.
getProjectName
());
historyMethodInfo
.
setRemoteIp
(
payload
.
getRemoteIp
()).
setQuery
(
model
.
getQueryName
());
...
...
@@ -251,7 +251,7 @@ public class Handler implements PageHandler<Context> {
case
METHOD_QUERY:
String
method
=
payload
.
getMethod
();
CrossMethodVisitor
info
=
new
CrossMethodVisitor
(
method
,
m_
domainManager
);
CrossMethodVisitor
info
=
new
CrossMethodVisitor
(
method
,
m_
hostinfoService
);
String
reportType
=
payload
.
getReportType
();
CrossReport
queryReport
=
null
;
...
...
cat-home/src/main/java/com/dianping/cat/report/page/cross/display/HostInfo.java
浏览文件 @
3e40f3a9
...
...
@@ -7,12 +7,12 @@ import java.util.LinkedHashMap;
import
java.util.List
;
import
java.util.Map
;
import
com.dianping.cat.DomainManager
;
import
com.dianping.cat.consumer.cross.model.entity.CrossReport
;
import
com.dianping.cat.consumer.cross.model.entity.Local
;
import
com.dianping.cat.consumer.cross.model.entity.Remote
;
import
com.dianping.cat.consumer.cross.model.entity.Type
;
import
com.dianping.cat.consumer.cross.model.transform.BaseVisitor
;
import
com.dianping.cat.service.HostinfoService
;
public
class
HostInfo
extends
BaseVisitor
{
...
...
@@ -34,7 +34,7 @@ public class HostInfo extends BaseVisitor {
private
String
m_serviceSortBy
=
"Avg"
;
private
DomainManager
m_domainManager
;
private
HostinfoService
m_hostinfoService
;
public
HostInfo
(
long
reportDuration
)
{
m_reportDuration
=
reportDuration
;
...
...
@@ -110,7 +110,7 @@ public class HostInfo extends BaseVisitor {
if
(
ip
.
indexOf
(
':'
)
>
0
)
{
ip
=
ip
.
substring
(
0
,
ip
.
indexOf
(
':'
));
}
String
domain
=
m_
domainManager
.
queryDomainByIp
(
ip
);
String
domain
=
m_
hostinfoService
.
queryDomainByIp
(
ip
);
if
(
projectName
.
equalsIgnoreCase
(
domain
))
{
return
true
;
}
else
{
...
...
@@ -128,8 +128,8 @@ public class HostInfo extends BaseVisitor {
return
this
;
}
public
void
set
DomainManager
(
DomainManager
domainManager
)
{
m_
domainManager
=
domainManager
;
public
void
set
HostinfoService
(
HostinfoService
hostinfoService
)
{
m_
hostinfoService
=
hostinfoService
;
}
public
HostInfo
setProjectName
(
String
projectName
)
{
...
...
cat-home/src/main/java/com/dianping/cat/report/page/cross/display/MethodInfo.java
浏览文件 @
3e40f3a9
...
...
@@ -9,12 +9,12 @@ import java.util.Map;
import
org.apache.commons.lang.StringUtils
;
import
com.dianping.cat.DomainManager
;
import
com.dianping.cat.consumer.cross.model.entity.Local
;
import
com.dianping.cat.consumer.cross.model.entity.Name
;
import
com.dianping.cat.consumer.cross.model.entity.Remote
;
import
com.dianping.cat.consumer.cross.model.entity.Type
;
import
com.dianping.cat.consumer.cross.model.transform.BaseVisitor
;
import
com.dianping.cat.service.HostinfoService
;
public
class
MethodInfo
extends
BaseVisitor
{
...
...
@@ -42,7 +42,7 @@ public class MethodInfo extends BaseVisitor {
private
String
m_serviceSortBy
=
"Avg"
;
private
DomainManager
m_domainManager
;
private
HostinfoService
m_hostinfoService
;
public
MethodInfo
(
long
reportDuration
)
{
m_reportDuration
=
reportDuration
;
...
...
@@ -129,7 +129,7 @@ public class MethodInfo extends BaseVisitor {
if
(
ip
.
indexOf
(
':'
)
>
0
)
{
ip
=
ip
.
substring
(
0
,
ip
.
indexOf
(
':'
));
}
String
domain
=
m_
domainManager
.
queryDomainByIp
(
ip
);
String
domain
=
m_
hostinfoService
.
queryDomainByIp
(
ip
);
if
(
projectName
.
equalsIgnoreCase
(
domain
))
{
return
true
;
...
...
@@ -150,8 +150,8 @@ public class MethodInfo extends BaseVisitor {
return
this
;
}
public
void
set
DomainManager
(
DomainManager
domainManager
)
{
m_
domainManager
=
domainManager
;
public
void
set
HostinfoService
(
HostinfoService
hostinfoService
)
{
m_
hostinfoService
=
hostinfoService
;
}
public
MethodInfo
setQuery
(
String
query
)
{
...
...
cat-home/src/main/java/com/dianping/cat/report/page/cross/display/ProjectInfo.java
浏览文件 @
3e40f3a9
...
...
@@ -9,12 +9,12 @@ import java.util.Map;
import
org.apache.commons.lang.StringUtils
;
import
com.dianping.cat.DomainManager
;
import
com.dianping.cat.consumer.cross.model.entity.CrossReport
;
import
com.dianping.cat.consumer.cross.model.entity.Local
;
import
com.dianping.cat.consumer.cross.model.entity.Remote
;
import
com.dianping.cat.consumer.cross.model.entity.Type
;
import
com.dianping.cat.consumer.cross.model.transform.BaseVisitor
;
import
com.dianping.cat.service.HostinfoService
;
public
class
ProjectInfo
extends
BaseVisitor
{
...
...
@@ -38,7 +38,7 @@ public class ProjectInfo extends BaseVisitor {
private
String
m_serviceSortBy
=
"Avg"
;
private
DomainManager
m_domainManager
;
private
HostinfoService
m_hostinfoService
;
public
ProjectInfo
(
long
reportDuration
)
{
m_reportDuration
=
reportDuration
;
...
...
@@ -113,7 +113,7 @@ public class ProjectInfo extends BaseVisitor {
if
(
ip
.
indexOf
(
':'
)
>
0
)
{
ip
=
ip
.
substring
(
0
,
ip
.
indexOf
(
':'
));
}
return
m_
domainManager
.
queryDomainByIp
(
ip
);
return
m_
hostinfoService
.
queryDomainByIp
(
ip
);
}
public
long
getReportDuration
()
{
...
...
@@ -136,8 +136,8 @@ public class ProjectInfo extends BaseVisitor {
return
this
;
}
public
void
set
DomainManager
(
DomainManager
domainManager
)
{
m_
domainManager
=
domainManager
;
public
void
set
HostinfoService
(
HostinfoService
hostinfoService
)
{
m_
hostinfoService
=
hostinfoService
;
}
public
ProjectInfo
setServiceSortBy
(
String
serviceSortBy
)
{
...
...
cat-home/src/main/java/com/dianping/cat/report/page/externalError/Handler.java
浏览文件 @
3e40f3a9
...
...
@@ -15,9 +15,9 @@ import org.unidal.web.mvc.annotation.OutboundActionMeta;
import
org.unidal.web.mvc.annotation.PayloadMeta
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.DomainManager
;
import
com.dianping.cat.home.dal.report.Event
;
import
com.dianping.cat.report.ReportPage
;
import
com.dianping.cat.service.HostinfoService
;
public
class
Handler
implements
PageHandler
<
Context
>
{
@Inject
...
...
@@ -27,7 +27,7 @@ public class Handler implements PageHandler<Context> {
private
EventCollectManager
m_errorCollectManager
;
@Inject
private
DomainManager
m_domainManager
;
private
HostinfoService
m_hostinfoService
;
private
SimpleDateFormat
m_sdf
=
new
SimpleDateFormat
(
"yyyyMMddHHmmss"
);
...
...
@@ -56,7 +56,7 @@ public class Handler implements PageHandler<Context> {
if
(
type
==
EventCollectManager
.
DB_ERROR
)
{
event
.
setDomain
(
payload
.
getDatabase
());
}
else
{
String
domain
=
m_
domainManager
.
queryDomainByIp
(
ip
);
String
domain
=
m_
hostinfoService
.
queryDomainByIp
(
ip
);
event
.
setDomain
(
domain
);
}
...
...
cat-home/src/main/java/com/dianping/cat/report/task/service/ServiceReportBuilder.java
浏览文件 @
3e40f3a9
...
...
@@ -10,7 +10,6 @@ import org.unidal.lookup.annotation.Inject;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.Constants
;
import
com.dianping.cat.DomainManager
;
import
com.dianping.cat.configuration.NetworkInterfaceManager
;
import
com.dianping.cat.consumer.cross.CrossAnalyzer
;
import
com.dianping.cat.consumer.cross.model.entity.CrossReport
;
...
...
@@ -27,16 +26,17 @@ import com.dianping.cat.report.page.cross.display.TypeDetailInfo;
import
com.dianping.cat.report.service.ReportServiceManager
;
import
com.dianping.cat.report.task.TaskHelper
;
import
com.dianping.cat.report.task.spi.ReportTaskBuilder
;
import
com.dianping.cat.service.HostinfoService
;
public
class
ServiceReportBuilder
implements
ReportTaskBuilder
{
public
static
final
String
ID
=
Constants
.
REPORT_SERVICE
;
@Inject
protected
ReportServiceManager
m_reportService
;
@Inject
private
DomainManager
m_domainManager
;
private
HostinfoService
m_hostinfoService
;
Map
<
String
,
Domain
>
stat
=
new
HashMap
<
String
,
Domain
>();
...
...
@@ -67,7 +67,7 @@ public class ServiceReportBuilder implements ReportTaskBuilder {
CrossReport
crossReport
=
m_reportService
.
queryCrossReport
(
domainName
,
start
,
end
);
ProjectInfo
projectInfo
=
new
ProjectInfo
(
TimeUtil
.
ONE_HOUR
);
projectInfo
.
set
DomainManager
(
m_domainManager
);
projectInfo
.
set
HostinfoService
(
m_hostinfoService
);
projectInfo
.
setClientIp
(
Constants
.
ALL
);
projectInfo
.
visitCrossReport
(
crossReport
);
Collection
<
TypeDetailInfo
>
callInfos
=
projectInfo
.
getCallProjectsInfo
();
...
...
cat-home/src/main/java/com/dianping/cat/report/task/utilization/UtilizationReportBuilder.java
浏览文件 @
3e40f3a9
...
...
@@ -8,7 +8,6 @@ import org.unidal.lookup.annotation.Inject;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.Constants
;
import
com.dianping.cat.DomainManager
;
import
com.dianping.cat.ServerConfigManager
;
import
com.dianping.cat.configuration.NetworkInterfaceManager
;
import
com.dianping.cat.consumer.cross.model.entity.CrossReport
;
...
...
@@ -30,9 +29,10 @@ import com.dianping.cat.report.page.transaction.TransactionMergeManager;
import
com.dianping.cat.report.service.ReportServiceManager
;
import
com.dianping.cat.report.task.TaskHelper
;
import
com.dianping.cat.report.task.spi.ReportTaskBuilder
;
import
com.dianping.cat.service.HostinfoService
;
public
class
UtilizationReportBuilder
implements
ReportTaskBuilder
{
public
static
final
String
ID
=
Constants
.
REPORT_UTILIZATION
;
@Inject
...
...
@@ -45,14 +45,14 @@ public class UtilizationReportBuilder implements ReportTaskBuilder {
private
ServerConfigManager
m_configManger
;
@Inject
private
DomainManager
m_domainManager
;
private
HostinfoService
m_hostinfoService
;
@Override
public
boolean
buildDailyTask
(
String
name
,
String
domain
,
Date
period
)
{
UtilizationReport
utilizationReport
=
queryHourlyReportsByDuration
(
name
,
domain
,
period
,
TaskHelper
.
tomorrowZero
(
period
));
DailyReport
report
=
new
DailyReport
();
report
.
setContent
(
""
);
report
.
setCreationDate
(
new
Date
());
report
.
setDomain
(
domain
);
...
...
@@ -78,7 +78,7 @@ public class UtilizationReportBuilder implements ReportTaskBuilder {
if
(
m_configManger
.
validateDomain
(
domainName
))
{
TransactionReport
transactionReport
=
m_reportService
.
queryTransactionReport
(
domainName
,
start
,
end
);
int
size
=
transactionReport
.
getMachines
().
size
();
utilizationReport
.
findOrCreateDomain
(
domainName
).
setMachineNumber
(
size
);
transactionReport
=
m_mergeManager
.
mergerAllIp
(
transactionReport
,
Constants
.
ALL
);
transactionVisitor
.
visitTransactionReport
(
transactionReport
);
...
...
@@ -98,7 +98,7 @@ public class UtilizationReportBuilder implements ReportTaskBuilder {
CrossReport
crossReport
=
m_reportService
.
queryCrossReport
(
domainName
,
start
,
end
);
ProjectInfo
projectInfo
=
new
ProjectInfo
(
TimeUtil
.
ONE_HOUR
);
projectInfo
.
set
DomainManager
(
m_domainManager
);
projectInfo
.
set
HostinfoService
(
m_hostinfoService
);
projectInfo
.
setClientIp
(
Constants
.
ALL
);
projectInfo
.
visitCrossReport
(
crossReport
);
Collection
<
TypeDetailInfo
>
callInfos
=
projectInfo
.
getCallProjectsInfo
();
...
...
@@ -113,7 +113,7 @@ public class UtilizationReportBuilder implements ReportTaskBuilder {
if
(
service
!=
null
)
{
service
.
setFailureCount
(
service
.
getFailureCount
()
+
failure
);
long
count
=
service
.
getCount
();
if
(
count
>
0
)
{
service
.
setFailurePercent
(
service
.
getFailureCount
()
*
1.0
/
count
);
...
...
cat-home/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
3e40f3a9
...
...
@@ -579,6 +579,9 @@
<requirement>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.ServerConfigManager
</role>
</requirement>
</requirements>
</component>
<component>
...
...
@@ -588,6 +591,12 @@
<requirement>
<role>
com.dianping.cat.core.dal.HostinfoDao
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.service.ProjectService
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.ServerConfigManager
</role>
</requirement>
</requirements>
</component>
<component>
...
...
@@ -1637,7 +1646,7 @@
<role>
com.dianping.cat.report.service.ReportServiceManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.
DomainManager
</role>
<role>
com.dianping.cat.
service.HostinfoService
</role>
</requirement>
</requirements>
</component>
...
...
@@ -1722,7 +1731,7 @@
<role>
com.dianping.cat.ServerConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.
DomainManager
</role>
<role>
com.dianping.cat.
service.HostinfoService
</role>
</requirement>
</requirements>
</component>
...
...
@@ -3196,7 +3205,7 @@
<role>
com.dianping.cat.report.page.PayloadNormalizer
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.
DomainManager
</role>
<role>
com.dianping.cat.
service.HostinfoService
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.page.model.spi.ModelService
</role>
...
...
@@ -3215,26 +3224,17 @@
</requirements>
</component>
<component>
<role>
com.dianping.cat.
DomainManager
</role>
<implementation>
com.dianping.cat.
DomainManager
</implementation>
<role>
com.dianping.cat.
service.HostinfoService
</role>
<implementation>
com.dianping.cat.
service.HostinfoService
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.service.HostinfoService
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.service.ProjectService
</role>
<role>
com.dianping.cat.core.dal.HostinfoDao
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.ServerConfigManager
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.service.HostinfoService
</role>
<implementation>
com.dianping.cat.service.HostinfoService
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.
core.dal.HostinfoDao
</role>
<role>
com.dianping.cat.
service.ProjectService
</role>
</requirement>
</requirements>
</component>
...
...
@@ -3254,6 +3254,9 @@
<requirement>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.ServerConfigManager
</role>
</requirement>
</requirements>
</component>
<component>
...
...
@@ -3634,7 +3637,7 @@
<role>
com.dianping.cat.report.page.externalError.EventCollectManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.
DomainManager
</role>
<role>
com.dianping.cat.
service.HostinfoService
</role>
</requirement>
</requirements>
</component>
...
...
@@ -4179,23 +4182,6 @@
<component>
<role>
com.dianping.cat.report.task.alert.sender.sender.SenderManager
</role>
<implementation>
com.dianping.cat.report.task.alert.sender.sender.SenderManager
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.sender.Sender
</role>
<role-hint>
mail
</role-hint>
<field-name>
m_mailSender
</field-name>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.sender.Sender
</role>
<role-hint>
weixin
</role-hint>
<field-name>
m_weixinSender
</field-name>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.sender.Sender
</role>
<role-hint>
sms
</role-hint>
<field-name>
m_smsSender
</field-name>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.system.SystemModule
</role>
...
...
cat-home/src/test/java/com/dianping/cat/report/task/service/ServiceBuilderTest.java
浏览文件 @
3e40f3a9
...
...
@@ -7,7 +7,7 @@ import org.unidal.lookup.ComponentTestCase;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.Constants
;
import
com.dianping.cat.
DomainManager
;
import
com.dianping.cat.
service.HostinfoService
;
public
class
ServiceBuilderTest
extends
ComponentTestCase
{
...
...
@@ -15,36 +15,36 @@ public class ServiceBuilderTest extends ComponentTestCase{
public
void
testHourlyReport
()
throws
Exception
{
Cat
.
initialize
(
"192.168.7.43"
);
ServiceReportBuilder
builder
=
lookup
(
ServiceReportBuilder
.
class
);
DomainManager
manager
=
lookup
(
DomainManager
.
class
);
HostinfoService
hostinfoService
=
lookup
(
HostinfoService
.
class
);
manager
.
initialize
();
hostinfoService
.
initialize
();
builder
.
buildHourlyTask
(
Constants
.
REPORT_SERVICE
,
"cat"
,
new
SimpleDateFormat
(
"yyyyMMddHH"
).
parse
(
"2013082011"
));
}
@Test
public
void
testDailyReport
()
throws
Exception
{
ServiceReportBuilder
builder
=
lookup
(
ServiceReportBuilder
.
class
);
DomainManager
manager
=
lookup
(
DomainManager
.
class
);
HostinfoService
hostinfoService
=
lookup
(
HostinfoService
.
class
);
manager
.
initialize
();
hostinfoService
.
initialize
();
builder
.
buildDailyTask
(
Constants
.
REPORT_SERVICE
,
"cat"
,
new
SimpleDateFormat
(
"yyyyMMdd"
).
parse
(
"20130712"
));
}
@Test
public
void
testWeeklyReport
()
throws
Exception
{
ServiceReportBuilder
builder
=
lookup
(
ServiceReportBuilder
.
class
);
DomainManager
manager
=
lookup
(
DomainManager
.
class
);
HostinfoService
hostinfoService
=
lookup
(
HostinfoService
.
class
);
manager
.
initialize
();
hostinfoService
.
initialize
();
builder
.
buildWeeklyTask
(
Constants
.
REPORT_SERVICE
,
"cat"
,
new
SimpleDateFormat
(
"yyyyMMdd"
).
parse
(
"20130710"
));
}
@Test
public
void
testMonthlyReport
()
throws
Exception
{
ServiceReportBuilder
builder
=
lookup
(
ServiceReportBuilder
.
class
);
DomainManager
manager
=
lookup
(
DomainManager
.
class
);
HostinfoService
hostinfoService
=
lookup
(
HostinfoService
.
class
);
manager
.
initialize
();
hostinfoService
.
initialize
();
builder
.
buildMonthlyTask
(
Constants
.
REPORT_SERVICE
,
"cat"
,
new
SimpleDateFormat
(
"yyyyMMdd"
).
parse
(
"20130701"
));
}
...
...
cat-home/src/test/java/com/dianping/cat/report/task/utilization/UtilizationBuilderTest.java
浏览文件 @
3e40f3a9
...
...
@@ -6,43 +6,43 @@ import org.junit.Test;
import
org.unidal.lookup.ComponentTestCase
;
import
com.dianping.cat.Constants
;
import
com.dianping.cat.
DomainManager
;
import
com.dianping.cat.
service.HostinfoService
;
public
class
UtilizationBuilderTest
extends
ComponentTestCase
{
@Test
public
void
testHourlyReport
()
throws
Exception
{
UtilizationReportBuilder
builder
=
lookup
(
UtilizationReportBuilder
.
class
);
DomainManager
manager
=
lookup
(
DomainManager
.
class
);
HostinfoService
hostinfoService
=
lookup
(
HostinfoService
.
class
);
manager
.
initialize
();
hostinfoService
.
initialize
();
builder
.
buildHourlyTask
(
Constants
.
REPORT_UTILIZATION
,
Constants
.
CAT
,
new
SimpleDateFormat
(
"yyyyMMddHH"
).
parse
(
"2013082617"
));
}
@Test
public
void
testDailyReport
()
throws
Exception
{
UtilizationReportBuilder
builder
=
lookup
(
UtilizationReportBuilder
.
class
);
DomainManager
manager
=
lookup
(
DomainManager
.
class
);
HostinfoService
hostinfoService
=
lookup
(
HostinfoService
.
class
);
manager
.
initialize
();
hostinfoService
.
initialize
();
builder
.
buildDailyTask
(
Constants
.
REPORT_UTILIZATION
,
Constants
.
CAT
,
new
SimpleDateFormat
(
"yyyyMMdd"
).
parse
(
"20130826"
));
}
@Test
public
void
testWeeklyReport
()
throws
Exception
{
UtilizationReportBuilder
builder
=
lookup
(
UtilizationReportBuilder
.
class
);
DomainManager
manager
=
lookup
(
DomainManager
.
class
);
HostinfoService
hostinfoService
=
lookup
(
HostinfoService
.
class
);
manager
.
initialize
();
hostinfoService
.
initialize
();
builder
.
buildWeeklyTask
(
Constants
.
REPORT_UTILIZATION
,
Constants
.
CAT
,
new
SimpleDateFormat
(
"yyyyMMdd"
).
parse
(
"20130717"
));
}
@Test
public
void
testMonthlyReport
()
throws
Exception
{
UtilizationReportBuilder
builder
=
lookup
(
UtilizationReportBuilder
.
class
);
DomainManager
manager
=
lookup
(
DomainManager
.
class
);
HostinfoService
hostinfoService
=
lookup
(
HostinfoService
.
class
);
manager
.
initialize
();
hostinfoService
.
initialize
();
builder
.
buildMonthlyTask
(
Constants
.
REPORT_UTILIZATION
,
Constants
.
CAT
,
new
SimpleDateFormat
(
"yyyyMMdd"
).
parse
(
"20130701"
));
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录