Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
74dc0d75
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,发现更多精彩内容 >>
提交
74dc0d75
编写于
7月 28, 2014
作者:
Y
youyong205
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
modify the testcase
上级
72cb183b
变更
36
隐藏空白更改
内联
并排
Showing
36 changed file
with
343 addition
and
212 deletion
+343
-212
cat-broker/src/main/java/com/dianping/cat/broker/api/app/BucketHandler.java
...n/java/com/dianping/cat/broker/api/app/BucketHandler.java
+1
-1
cat-client/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
...n/java/com/dianping/cat/build/ComponentsConfigurator.java
+1
-0
cat-client/src/main/java/com/dianping/cat/configuration/ClientConfigManager.java
...a/com/dianping/cat/configuration/ClientConfigManager.java
+17
-7
cat-client/src/main/java/com/dianping/cat/message/io/ChannelManager.java
...main/java/com/dianping/cat/message/io/ChannelManager.java
+9
-29
cat-client/src/main/java/com/dianping/cat/message/io/TcpSocketSender.java
...ain/java/com/dianping/cat/message/io/TcpSocketSender.java
+5
-1
cat-client/src/main/resources/META-INF/plexus/components.xml
cat-client/src/main/resources/META-INF/plexus/components.xml
+3
-0
cat-core/src/main/java/com/dianping/cat/ServerConfigManager.java
...e/src/main/java/com/dianping/cat/ServerConfigManager.java
+1
-1
cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
...n/java/com/dianping/cat/build/ComponentsConfigurator.java
+10
-10
cat-home/src/main/java/com/dianping/cat/helper/TimeUtil.java
cat-home/src/main/java/com/dianping/cat/helper/TimeUtil.java
+12
-0
cat-home/src/main/java/com/dianping/cat/report/service/DefaultReportServiceManager.java
...nping/cat/report/service/DefaultReportServiceManager.java
+27
-19
cat-home/src/main/java/com/dianping/cat/report/service/ReportServiceManager.java
...com/dianping/cat/report/service/ReportServiceManager.java
+3
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/BaseAlert.java
...in/java/com/dianping/cat/report/task/alert/BaseAlert.java
+4
-3
cat-home/src/main/java/com/dianping/cat/report/task/alert/business/BusinessAlert.java
...ianping/cat/report/task/alert/business/BusinessAlert.java
+4
-2
cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/ExceptionAlert.java
...nping/cat/report/task/alert/exception/ExceptionAlert.java
+3
-3
cat-home/src/main/java/com/dianping/cat/report/task/alert/manager/AlertEntityService.java
...ing/cat/report/task/alert/manager/AlertEntityService.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/AlertChannel.java
...m/dianping/cat/report/task/alert/sender/AlertChannel.java
+9
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/AlertEntity.java
...om/dianping/cat/report/task/alert/sender/AlertEntity.java
+0
-25
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/AlertManager.java
...m/dianping/cat/report/task/alert/sender/AlertManager.java
+14
-17
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/AlertMessageEntity.java
...ping/cat/report/task/alert/sender/AlertMessageEntity.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/SplitProcessor.java
...dianping/cat/report/task/alert/sender/SplitProcessor.java
+8
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/Decorator.java
...ing/cat/report/task/alert/sender/decorator/Decorator.java
+4
-4
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/DecoratorManager.java
.../report/task/alert/sender/decorator/DecoratorManager.java
+4
-2
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/DefaultDecorator.java
.../report/task/alert/sender/decorator/DefaultDecorator.java
+7
-5
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/MailDecorator.java
...cat/report/task/alert/sender/decorator/MailDecorator.java
+0
-1
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/sender/Sender.java
.../dianping/cat/report/task/alert/sender/sender/Sender.java
+2
-2
cat-home/src/main/java/com/dianping/cat/report/task/alert/thirdParty/ThirdPartyAlert.java
...ing/cat/report/task/alert/thirdParty/ThirdPartyAlert.java
+3
-3
cat-home/src/main/java/com/dianping/cat/system/config/AlertPolicyManager.java
...va/com/dianping/cat/system/config/AlertPolicyManager.java
+22
-4
cat-home/src/main/java/com/dianping/cat/system/config/RouterConfigManager.java
...a/com/dianping/cat/system/config/RouterConfigManager.java
+20
-5
cat-home/src/main/java/com/dianping/cat/system/page/router/Handler.java
...ain/java/com/dianping/cat/system/page/router/Handler.java
+56
-7
cat-home/src/main/java/com/dianping/cat/system/page/router/JspFile.java
...ain/java/com/dianping/cat/system/page/router/JspFile.java
+3
-1
cat-home/src/main/java/com/dianping/cat/system/page/router/JspViewer.java
...n/java/com/dianping/cat/system/page/router/JspViewer.java
+1
-1
cat-home/src/main/java/com/dianping/cat/system/page/router/Model.java
.../main/java/com/dianping/cat/system/page/router/Model.java
+11
-0
cat-home/src/main/java/com/dianping/cat/system/page/router/Payload.java
...ain/java/com/dianping/cat/system/page/router/Payload.java
+58
-46
cat-home/src/main/resources/META-INF/dal/model/router-model.xml
...me/src/main/resources/META-INF/dal/model/router-model.xml
+0
-1
cat-home/src/main/resources/META-INF/plexus/components.xml
cat-home/src/main/resources/META-INF/plexus/components.xml
+16
-10
cat-home/src/main/webapp/jsp/system/router/router.jsp
cat-home/src/main/webapp/jsp/system/router/router.jsp
+3
-0
未找到文件。
cat-broker/src/main/java/com/dianping/cat/broker/api/app/BucketHandler.java
浏览文件 @
74dc0d75
...
...
@@ -44,7 +44,7 @@ public class BucketHandler implements Task {
for
(
Entry
<
Integer
,
HashMap
<
String
,
AppData
>>
outerEntry
:
m_mergedData
.
entrySet
())
{
HashMap
<
String
,
AppData
>
value
=
outerEntry
.
getValue
();
for
(
Entry
<
String
,
AppData
>
entry
:
value
.
entrySet
())
{
AppData
appData
=
entry
.
getValue
();
AppDataCommand
proto
=
new
AppDataCommand
();
...
...
cat-client/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
浏览文件 @
74dc0d75
...
...
@@ -43,6 +43,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
MessageSender
.
class
,
TcpSocketSender
.
ID
,
TcpSocketSender
.
class
)
//
.
is
(
PER_LOOKUP
)
//
.
req
(
ClientConfigManager
.
class
)
.
req
(
MessageStatistics
.
class
,
"default"
,
"m_statistics"
)
//
.
req
(
MessageCodec
.
class
,
PlainTextMessageCodec
.
ID
,
"m_codec"
));
all
.
add
(
C
(
TransportManager
.
class
,
DefaultTransportManager
.
class
)
//
...
...
cat-client/src/main/java/com/dianping/cat/configuration/ClientConfigManager.java
浏览文件 @
74dc0d75
...
...
@@ -58,8 +58,8 @@ public class ClientConfigManager implements LogEnabled {
}
/**
* Return the max total message node size for the whole message, children after this limit will be split into another
child
* message tree.
* Return the max total message node size for the whole message, children after this limit will be split into another
*
child
message tree.
*
* @return
*/
...
...
@@ -98,8 +98,8 @@ public class ClientConfigManager implements LogEnabled {
}
public
int
getTaggedTransactionCacheSize
()
{
return
1024
;
}
return
1024
;
}
public
void
initialize
(
File
configFile
)
throws
Exception
{
ClientConfig
globalConfig
=
null
;
...
...
@@ -149,9 +149,19 @@ public class ClientConfigManager implements LogEnabled {
m_config
=
clientConfig
;
}
public
String
getServerConfigUrl
(){
return
"http://server"
;
public
String
getServerConfigUrl
()
{
if
(
m_config
==
null
)
{
return
null
;
}
else
{
List
<
Server
>
servers
=
m_config
.
getServers
();
for
(
Server
server
:
servers
)
{
return
String
.
format
(
"http://%s:%d/cat/s/router?domain=%s"
,
server
.
getIp
(),
server
.
getPort
(),
getDomain
()
.
getId
());
}
}
return
null
;
}
public
boolean
isCatEnabled
()
{
...
...
cat-client/src/main/java/com/dianping/cat/message/io/ChannelManager.java
浏览文件 @
74dc0d75
...
...
@@ -26,12 +26,15 @@ import org.unidal.helper.Threads.Task;
import
org.unidal.helper.Urls
;
import
org.unidal.tuple.Pair
;
import
com.dianping.cat.configuration.ClientConfigManager
;
import
com.dianping.cat.message.spi.MessageQueue
;
import
com.site.helper.Splitters
;
public
class
ChannelManager
implements
Task
{
private
List
<
InetSocketAddress
>
m_serverAddresses
;
private
ClientConfigManager
m_configManager
;
private
ClientBootstrap
m_bootstrap
;
private
ChannelFuture
m_activeFuture
;
...
...
@@ -56,8 +59,6 @@ public class ChannelManager implements Task {
private
MessageQueue
m_queue
;
private
String
m_serverUrl
=
"http://10.1.6.128:8080/cat/r/router?op=api"
;
private
String
m_lastServers
;
private
List
<
InetSocketAddress
>
parse
(
String
content
)
{
...
...
@@ -72,38 +73,14 @@ public class ChannelManager implements Task {
return
address
;
}
int
count
=
0
;
private
String
getServerConfig
()
{
if
(
true
)
{
int
current
=
count
++;
if
(
current
%
2
==
0
)
{
return
"127.0.0.1:2280;192.168.213.115:2280;"
;
}
if
(
current
%
2
==
1
)
{
return
"192.168.213.115:2280;127.0.0.1:2280;"
;
}
}
try
{
InputStream
currentServer
=
Urls
.
forIO
().
readTimeout
(
3000
).
connectTimeout
(
1000
).
openStream
(
m_serverUrl
);
InputStream
currentServer
=
Urls
.
forIO
().
readTimeout
(
3000
).
connectTimeout
(
1000
)
.
openStream
(
m_configManager
.
getServerConfigUrl
());
String
content
=
Files
.
forIO
().
readFrom
(
currentServer
,
"utf-8"
);
return
content
.
trim
();
}
catch
(
Exception
e
)
{
long
current
=
System
.
currentTimeMillis
();
if
(
current
%
3
==
0
)
{
return
"10.1.6.127:2280;10.1.6.128:2280;10.1.6.129:2280;"
;
}
if
(
current
%
3
==
1
)
{
return
"10.1.6.121:2280;10.1.6.122:2280;10.1.6.123:2280;"
;
}
if
(
current
%
3
==
2
)
{
return
"10.1.6.124:2280;10.1.6.125:2280;10.1.6.126:2280;"
;
}
return
null
;
}
}
...
...
@@ -147,9 +124,11 @@ public class ChannelManager implements Task {
}
}
public
ChannelManager
(
Logger
logger
,
List
<
InetSocketAddress
>
serverAddresses
,
MessageQueue
queue
)
{
public
ChannelManager
(
Logger
logger
,
List
<
InetSocketAddress
>
serverAddresses
,
MessageQueue
queue
,
ClientConfigManager
configManager
)
{
m_logger
=
logger
;
m_queue
=
queue
;
m_configManager
=
configManager
;
ExecutorService
bossExecutor
=
Threads
.
forPool
().
getFixedThreadPool
(
"Cat-TcpSocketSender-Boss"
,
10
);
ExecutorService
workerExecutor
=
Threads
.
forPool
().
getFixedThreadPool
(
"Cat-TcpSocketSender-Worker"
,
10
);
...
...
@@ -333,4 +312,5 @@ public class ChannelManager implements Task {
}
}
}
}
\ No newline at end of file
cat-client/src/main/java/com/dianping/cat/message/io/TcpSocketSender.java
浏览文件 @
74dc0d75
...
...
@@ -13,6 +13,7 @@ import org.unidal.helper.Threads;
import
org.unidal.helper.Threads.Task
;
import
org.unidal.lookup.annotation.Inject
;
import
com.dianping.cat.configuration.ClientConfigManager
;
import
com.dianping.cat.message.spi.MessageCodec
;
import
com.dianping.cat.message.spi.MessageQueue
;
import
com.dianping.cat.message.spi.MessageStatistics
;
...
...
@@ -29,6 +30,9 @@ public class TcpSocketSender implements Task, MessageSender, LogEnabled {
@Inject
private
MessageStatistics
m_statistics
;
@Inject
private
ClientConfigManager
m_configManager
;
private
MessageQueue
m_queue
=
new
DefaultMessageQueue
(
SIZE
);
private
List
<
InetSocketAddress
>
m_serverAddresses
;
...
...
@@ -73,7 +77,7 @@ public class TcpSocketSender implements Task, MessageSender, LogEnabled {
@Override
public
void
initialize
()
{
m_manager
=
new
ChannelManager
(
m_logger
,
m_serverAddresses
,
m_queue
);
m_manager
=
new
ChannelManager
(
m_logger
,
m_serverAddresses
,
m_queue
,
m_configManager
);
Threads
.
forGroup
(
"Cat"
).
start
(
this
);
Threads
.
forGroup
(
"Cat"
).
start
(
m_manager
);
...
...
cat-client/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
74dc0d75
...
...
@@ -41,6 +41,9 @@
<implementation>
com.dianping.cat.message.io.TcpSocketSender
</implementation>
<instantiation-strategy>
per-lookup
</instantiation-strategy>
<requirements>
<requirement>
<role>
com.dianping.cat.configuration.ClientConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.message.spi.MessageStatistics
</role>
<field-name>
m_statistics
</field-name>
...
...
cat-core/src/main/java/com/dianping/cat/ServerConfigManager.java
浏览文件 @
74dc0d75
...
...
@@ -338,7 +338,7 @@ public class ServerConfigManager implements Initializable, LogEnabled {
return
defaultValue
;
}
}
public
boolean
validateDomain
(
String
domain
)
{
return
!
domain
.
equals
(
"PhoenixAgent"
)
&&
!
domain
.
equals
(
Constants
.
FRONT_END
)
&&
!
domain
.
equals
(
Constants
.
ALL
);
}
...
...
cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
浏览文件 @
74dc0d75
...
...
@@ -64,9 +64,9 @@ import com.dianping.cat.report.task.alert.RemoteMetricReportService;
import
com.dianping.cat.report.task.alert.business.BusinessAlert
;
import
com.dianping.cat.report.task.alert.exception.AlertExceptionBuilder
;
import
com.dianping.cat.report.task.alert.exception.ExceptionAlert
;
import
com.dianping.cat.report.task.alert.manager.Alert
Manager
;
import
com.dianping.cat.report.task.alert.manager.Alert
EntityService
;
import
com.dianping.cat.report.task.alert.network.NetworkAlert
;
import
com.dianping.cat.report.task.alert.sender.
Send
Manager
;
import
com.dianping.cat.report.task.alert.sender.
Alert
Manager
;
import
com.dianping.cat.report.task.alert.sender.decorator.Decorator
;
import
com.dianping.cat.report.task.alert.sender.decorator.DecoratorManager
;
import
com.dianping.cat.report.task.alert.sender.decorator.MailDecorator
;
...
...
@@ -142,25 +142,25 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
SenderManager
.
class
).
req
(
Sender
.
class
,
MailSender
.
ID
,
"mailSender"
)
.
req
(
Sender
.
class
,
WeixinSender
.
ID
,
"weixinSender"
).
req
(
Sender
.
class
,
SmsSender
.
ID
,
"smsSender"
));
all
.
add
(
C
(
Send
Manager
.
class
).
req
(
AlertPolicyManager
.
class
,
DecoratorManager
.
class
,
Contactor
.
class
,
Alert
Manager
.
class
,
SenderManager
.
class
));
all
.
add
(
C
(
Alert
Manager
.
class
).
req
(
AlertPolicyManager
.
class
,
DecoratorManager
.
class
,
Contactor
.
class
,
Alert
EntityService
.
class
,
SenderManager
.
class
));
all
.
add
(
C
(
BusinessAlert
.
class
).
req
(
MetricConfigManager
.
class
,
ProductLineConfigManager
.
class
,
BaselineService
.
class
,
AlertInfo
.
class
).
req
(
RemoteMetricReportService
.
class
,
BusinessRuleConfigManager
.
class
,
DataChecker
.
class
,
Send
Manager
.
class
));
BusinessRuleConfigManager
.
class
,
DataChecker
.
class
,
Alert
Manager
.
class
));
all
.
add
(
C
(
NetworkAlert
.
class
).
req
(
ProductLineConfigManager
.
class
,
BaselineService
.
class
,
AlertInfo
.
class
).
req
(
RemoteMetricReportService
.
class
,
NetworkRuleConfigManager
.
class
,
DataChecker
.
class
,
Send
Manager
.
class
));
RemoteMetricReportService
.
class
,
NetworkRuleConfigManager
.
class
,
DataChecker
.
class
,
Alert
Manager
.
class
));
all
.
add
(
C
(
SystemAlert
.
class
).
req
(
ProductLineConfigManager
.
class
,
BaselineService
.
class
,
AlertInfo
.
class
).
req
(
RemoteMetricReportService
.
class
,
SystemRuleConfigManager
.
class
,
DataChecker
.
class
,
Send
Manager
.
class
));
RemoteMetricReportService
.
class
,
SystemRuleConfigManager
.
class
,
DataChecker
.
class
,
Alert
Manager
.
class
));
all
.
add
(
C
(
AlertExceptionBuilder
.
class
).
req
(
ExceptionConfigManager
.
class
));
all
.
add
(
C
(
ExceptionAlert
.
class
).
req
(
ExceptionConfigManager
.
class
,
AlertExceptionBuilder
.
class
,
Send
Manager
.
class
)
all
.
add
(
C
(
ExceptionAlert
.
class
).
req
(
ExceptionConfigManager
.
class
,
AlertExceptionBuilder
.
class
,
Alert
Manager
.
class
)
.
req
(
ModelService
.
class
,
TopAnalyzer
.
ID
));
all
.
add
(
C
(
ThirdPartyAlert
.
class
).
req
(
Send
Manager
.
class
));
all
.
add
(
C
(
ThirdPartyAlert
.
class
).
req
(
Alert
Manager
.
class
));
all
.
add
(
C
(
HttpConnector
.
class
));
...
...
@@ -294,7 +294,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
NetGraphManager
.
class
).
req
(
ServerConfigManager
.
class
,
RemoteMetricReportService
.
class
).
req
(
ReportServiceManager
.
class
,
NetGraphBuilder
.
class
,
AlertInfo
.
class
,
NetGraphConfigManager
.
class
));
all
.
add
(
C
(
Alert
Manager
.
class
).
req
(
AlertDao
.
class
));
all
.
add
(
C
(
Alert
EntityService
.
class
).
req
(
AlertDao
.
class
));
all
.
add
(
C
(
AlertExceptionBuilder
.
class
).
req
(
ExceptionConfigManager
.
class
));
...
...
cat-home/src/main/java/com/dianping/cat/helper/TimeUtil.java
浏览文件 @
74dc0d75
...
...
@@ -24,6 +24,18 @@ public class TimeUtil {
return
cal
.
getTime
();
}
public
static
Date
getCurrentDay
(
int
index
)
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
);
cal
.
set
(
Calendar
.
MINUTE
,
0
);
cal
.
set
(
Calendar
.
SECOND
,
0
);
cal
.
set
(
Calendar
.
MILLISECOND
,
0
);
cal
.
add
(
Calendar
.
DAY_OF_MONTH
,
index
);
return
cal
.
getTime
();
}
public
static
Date
getCurrentHour
(
int
index
)
{
Calendar
cal
=
Calendar
.
getInstance
();
...
...
cat-home/src/main/java/com/dianping/cat/report/service/DefaultReportServiceManager.java
浏览文件 @
74dc0d75
...
...
@@ -54,6 +54,7 @@ import com.dianping.cat.home.dal.report.WeeklyReportContent;
import
com.dianping.cat.home.dal.report.WeeklyReportContentDao
;
import
com.dianping.cat.home.heavy.entity.HeavyReport
;
import
com.dianping.cat.home.nettopo.entity.NetGraphSet
;
import
com.dianping.cat.home.router.entity.RouterConfig
;
import
com.dianping.cat.home.service.entity.ServiceReport
;
import
com.dianping.cat.home.utilization.entity.UtilizationReport
;
...
...
@@ -86,6 +87,11 @@ public class DefaultReportServiceManager extends ContainerHolder implements Repo
private
Map
<
String
,
ReportService
>
m_reportServices
;
@Override
public
void
initialize
()
throws
InitializationException
{
m_reportServices
=
lookupMap
(
ReportService
.
class
);
}
@Override
public
boolean
insertDailyReport
(
DailyReport
report
,
byte
[]
content
)
{
try
{
...
...
@@ -193,6 +199,13 @@ public class DefaultReportServiceManager extends ContainerHolder implements Repo
}
}
@Override
public
AlertReport
queryAlertReport
(
String
domain
,
Date
start
,
Date
end
)
{
ReportService
<
AlertReport
>
reportService
=
m_reportServices
.
get
(
Constants
.
REPORT_ALERT
);
return
reportService
.
queryReport
(
domain
,
start
,
end
);
}
public
Set
<
String
>
queryAllDomainNames
(
Date
start
,
Date
end
,
String
name
)
{
ReportService
<
TransactionReport
>
reportService
=
m_reportServices
.
get
(
TransactionAnalyzer
.
ID
);
...
...
@@ -247,12 +260,26 @@ public class DefaultReportServiceManager extends ContainerHolder implements Repo
return
reportService
.
queryReport
(
domain
,
start
,
end
);
}
@Override
public
NetGraphSet
queryNetTopologyReport
(
String
domain
,
Date
start
,
Date
end
)
{
ReportService
<
NetGraphSet
>
reportService
=
m_reportServices
.
get
(
Constants
.
REPORT_NET_TOPOLOGY
);
return
reportService
.
queryReport
(
domain
,
start
,
end
);
}
public
ProblemReport
queryProblemReport
(
String
domain
,
Date
start
,
Date
end
)
{
ReportService
<
ProblemReport
>
reportService
=
m_reportServices
.
get
(
ProblemAnalyzer
.
ID
);
return
reportService
.
queryReport
(
domain
,
start
,
end
);
}
@Override
public
RouterConfig
queryRouterConfigReport
(
String
domain
,
Date
start
,
Date
end
)
{
ReportService
<
RouterConfig
>
reportService
=
m_reportServices
.
get
(
Constants
.
REPORT_ROUTER
);
return
reportService
.
queryReport
(
domain
,
start
,
end
);
}
public
ServiceReport
queryServiceReport
(
String
domain
,
Date
start
,
Date
end
)
{
ReportService
<
ServiceReport
>
reportService
=
m_reportServices
.
get
(
Constants
.
REPORT_SERVICE
);
...
...
@@ -284,23 +311,4 @@ public class DefaultReportServiceManager extends ContainerHolder implements Repo
return
reportService
.
queryReport
(
domain
,
start
,
end
);
}
@Override
public
NetGraphSet
queryNetTopologyReport
(
String
domain
,
Date
start
,
Date
end
)
{
ReportService
<
NetGraphSet
>
reportService
=
m_reportServices
.
get
(
Constants
.
REPORT_NET_TOPOLOGY
);
return
reportService
.
queryReport
(
domain
,
start
,
end
);
}
@Override
public
AlertReport
queryAlertReport
(
String
domain
,
Date
start
,
Date
end
)
{
ReportService
<
AlertReport
>
reportService
=
m_reportServices
.
get
(
Constants
.
REPORT_ALERT
);
return
reportService
.
queryReport
(
domain
,
start
,
end
);
}
@Override
public
void
initialize
()
throws
InitializationException
{
m_reportServices
=
lookupMap
(
ReportService
.
class
);
}
}
cat-home/src/main/java/com/dianping/cat/report/service/ReportServiceManager.java
浏览文件 @
74dc0d75
...
...
@@ -21,6 +21,7 @@ import com.dianping.cat.home.alert.report.entity.AlertReport;
import
com.dianping.cat.home.bug.entity.BugReport
;
import
com.dianping.cat.home.heavy.entity.HeavyReport
;
import
com.dianping.cat.home.nettopo.entity.NetGraphSet
;
import
com.dianping.cat.home.router.entity.RouterConfig
;
import
com.dianping.cat.home.service.entity.ServiceReport
;
import
com.dianping.cat.home.utilization.entity.UtilizationReport
;
...
...
@@ -67,5 +68,7 @@ public interface ReportServiceManager {
public
UtilizationReport
queryUtilizationReport
(
String
domain
,
Date
start
,
Date
end
);
public
NetGraphSet
queryNetTopologyReport
(
String
domain
,
Date
start
,
Date
end
);
public
RouterConfig
queryRouterConfigReport
(
String
domain
,
Date
start
,
Date
end
);
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/BaseAlert.java
浏览文件 @
74dc0d75
...
...
@@ -26,7 +26,7 @@ import com.dianping.cat.home.rule.entity.Config;
import
com.dianping.cat.report.baseline.BaselineService
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity.AlertEntityBuilder
;
import
com.dianping.cat.report.task.alert.sender.
Send
Manager
;
import
com.dianping.cat.report.task.alert.sender.
Alert
Manager
;
import
com.dianping.cat.service.ModelPeriod
;
import
com.dianping.cat.service.ModelRequest
;
import
com.dianping.cat.system.config.BaseRuleConfigManager
;
...
...
@@ -52,7 +52,7 @@ public abstract class BaseAlert {
protected
RemoteMetricReportService
m_service
;
@Inject
protected
Send
Manager
m_sendManager
;
protected
Alert
Manager
m_sendManager
;
protected
static
final
int
DATA_AREADY_MINUTE
=
1
;
...
...
@@ -237,7 +237,8 @@ public abstract class BaseAlert {
AlertEntityBuilder
builder
=
new
AlertEntity
().
new
AlertEntityBuilder
();
builder
.
buildDate
(
alertResult
.
getAlertTime
()).
buildContent
(
alertResult
.
getContent
())
.
buildLevel
(
alertResult
.
getAlertLevel
());
builder
.
buildMetric
(
metricName
).
buildProductline
(
productlineName
).
buildType
(
getName
());
builder
.
buildMetric
(
metricName
).
buildType
(
getName
());
if
(
"network"
.
equals
(
getName
()))
{
builder
.
buildGroup
(
productlineName
);
}
else
{
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/business/BusinessAlert.java
浏览文件 @
74dc0d75
...
...
@@ -23,6 +23,8 @@ import com.dianping.cat.report.task.alert.sender.AlertEntity.AlertEntityBuilder;
public
class
BusinessAlert
extends
BaseAlert
implements
Task
,
LogEnabled
{
public
static
String
ID
=
"business"
;
@Inject
protected
MetricConfigManager
m_metricConfigManager
;
...
...
@@ -33,7 +35,7 @@ public class BusinessAlert extends BaseAlert implements Task, LogEnabled {
@Override
public
String
getName
()
{
return
"business"
;
return
ID
;
}
public
boolean
needAlert
(
MetricItemConfig
config
)
{
...
...
@@ -70,7 +72,7 @@ public class BusinessAlert extends BaseAlert implements Task, LogEnabled {
AlertEntityBuilder
builder
=
new
AlertEntity
().
new
AlertEntityBuilder
();
builder
.
buildDate
(
alertResult
.
getAlertTime
()).
buildContent
(
alertResult
.
getContent
())
.
buildLevel
(
alertResult
.
getAlertLevel
());
builder
.
buildMetric
(
metricName
).
build
Productline
(
product
).
build
Type
(
getName
());
builder
.
buildMetric
(
metricName
).
buildType
(
getName
());
builder
.
buildGroup
(
domain
);
AlertEntity
alertEntity
=
builder
.
getAlertEntity
();
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/ExceptionAlert.java
浏览文件 @
74dc0d75
...
...
@@ -23,7 +23,7 @@ import com.dianping.cat.report.page.top.TopMetric.Item;
import
com.dianping.cat.report.task.alert.exception.AlertExceptionBuilder.AlertException
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity.AlertEntityBuilder
;
import
com.dianping.cat.report.task.alert.sender.
Send
Manager
;
import
com.dianping.cat.report.task.alert.sender.
Alert
Manager
;
import
com.dianping.cat.service.ModelRequest
;
import
com.dianping.cat.service.ModelResponse
;
import
com.dianping.cat.system.config.ExceptionConfigManager
;
...
...
@@ -40,7 +40,7 @@ public class ExceptionAlert implements Task {
private
ModelService
<
TopReport
>
m_topService
;
@Inject
protected
Send
Manager
m_sendManager
;
protected
Alert
Manager
m_sendManager
;
private
static
final
long
DURATION
=
TimeUtil
.
ONE_MINUTE
;
...
...
@@ -112,7 +112,7 @@ public class ExceptionAlert implements Task {
AlertEntityBuilder
builder
=
new
AlertEntity
().
new
AlertEntityBuilder
();
builder
.
buildDate
(
new
Date
()).
buildLevel
(
exception
.
getType
()).
buildContent
(
exception
.
toString
());
builder
.
buildMetric
(
metricName
).
build
Productline
(
domain
).
build
Type
(
getName
()).
buildGroup
(
domain
);
builder
.
buildMetric
(
metricName
).
buildType
(
getName
()).
buildGroup
(
domain
);
AlertEntity
alertEntity
=
builder
.
getAlertEntity
();
m_sendManager
.
addAlert
(
alertEntity
);
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/manager/Alert
Manager
.java
→
cat-home/src/main/java/com/dianping/cat/report/task/alert/manager/Alert
EntityService
.java
浏览文件 @
74dc0d75
...
...
@@ -9,7 +9,7 @@ import com.dianping.cat.home.dal.report.AlertDao;
import
com.dianping.cat.report.task.alert.sender.AlertEntity
;
import
com.dianping.cat.report.task.alert.sender.AlertMessageEntity
;
public
class
Alert
Manager
{
public
class
Alert
EntityService
{
@Inject
private
AlertDao
m_alertDao
;
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/AlertChannel.java
浏览文件 @
74dc0d75
...
...
@@ -10,6 +10,15 @@ public enum AlertChannel {
private
String
m_name
;
public
static
AlertChannel
findByName
(
String
name
)
{
for
(
AlertChannel
channel
:
values
())
{
if
(
channel
.
getName
().
equals
(
name
)){
return
channel
;
}
}
return
null
;
}
private
AlertChannel
(
String
name
)
{
m_name
=
name
;
}
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/AlertEntity.java
浏览文件 @
74dc0d75
...
...
@@ -6,8 +6,6 @@ import java.util.Map;
public
class
AlertEntity
{
private
String
m_id
;
private
Date
m_date
;
private
String
m_type
;
...
...
@@ -16,8 +14,6 @@ public class AlertEntity {
private
String
m_level
;
private
String
m_productline
;
private
String
m_metric
;
private
String
m_content
;
...
...
@@ -36,10 +32,6 @@ public class AlertEntity {
return
m_group
;
}
public
String
getId
()
{
return
m_id
;
}
public
String
getLevel
()
{
return
m_level
;
}
...
...
@@ -52,10 +44,6 @@ public class AlertEntity {
return
m_paras
;
}
public
String
getProductline
()
{
return
m_productline
;
}
public
String
getType
()
{
return
m_type
;
}
...
...
@@ -72,10 +60,6 @@ public class AlertEntity {
m_group
=
group
;
}
public
void
setId
(
String
id
)
{
m_id
=
id
;
}
public
void
setLevel
(
String
level
)
{
m_level
=
level
;
}
...
...
@@ -88,10 +72,6 @@ public class AlertEntity {
m_paras
=
paras
;
}
public
void
setProductline
(
String
productline
)
{
m_productline
=
productline
;
}
public
void
setType
(
String
type
)
{
m_type
=
type
;
}
...
...
@@ -120,11 +100,6 @@ public class AlertEntity {
return
this
;
}
public
AlertEntityBuilder
buildProductline
(
String
productline
)
{
m_alertEntity
.
setProductline
(
productline
);
return
this
;
}
public
AlertEntityBuilder
buildMetric
(
String
metric
)
{
m_alertEntity
.
setMetric
(
metric
);
return
this
;
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/
Send
Manager.java
→
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/
Alert
Manager.java
浏览文件 @
74dc0d75
...
...
@@ -13,13 +13,13 @@ import org.unidal.lookup.annotation.Inject;
import
org.unidal.tuple.Pair
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.report.task.alert.manager.Alert
Manager
;
import
com.dianping.cat.report.task.alert.manager.Alert
EntityService
;
import
com.dianping.cat.report.task.alert.sender.decorator.DecoratorManager
;
import
com.dianping.cat.report.task.alert.sender.receiver.Contactor
;
import
com.dianping.cat.report.task.alert.sender.sender.SenderManager
;
import
com.dianping.cat.system.config.AlertPolicyManager
;
public
class
Send
Manager
implements
Initializable
{
public
class
Alert
Manager
implements
Initializable
{
@Inject
private
AlertPolicyManager
m_policyManager
;
...
...
@@ -31,7 +31,7 @@ public class SendManager implements Initializable {
private
Contactor
m_contactor
;
@Inject
protected
Alert
Manager
m_alertManager
;
protected
Alert
EntityService
m_alertEntityService
;
@Inject
protected
SenderManager
m_senderManager
;
...
...
@@ -39,32 +39,29 @@ public class SendManager implements Initializable {
private
BlockingQueue
<
AlertEntity
>
m_alerts
=
new
LinkedBlockingDeque
<
AlertEntity
>();
private
boolean
send
(
AlertEntity
alert
)
{
boolean
result
=
tru
e
;
boolean
result
=
fals
e
;
String
type
=
alert
.
getType
();
String
group
=
alert
.
getGroup
();
String
level
=
alert
.
getLevel
();
List
<
AlertChannel
>
channels
=
m_policyManager
.
queryChannels
(
type
,
group
,
level
);
String
channels
=
m_policyManager
.
queryChannels
(
type
,
group
,
level
);
for
(
AlertChannel
channel
:
AlertChannel
.
values
())
{
for
(
AlertChannel
channel
:
channels
)
{
String
channelName
=
channel
.
getName
();
if
(
channels
.
contains
(
channelName
))
{
Pair
<
String
,
String
>
pair
=
m_decoratorManager
.
generateTitleAndContent
(
alert
,
channelNam
e
);
List
<
String
>
receivers
=
m_contactor
.
queryReceivers
(
alert
.
getProductline
(),
channel
,
type
);
AlertMessageEntity
message
=
new
AlertMessageEntity
(
group
,
pair
.
getKey
(),
pair
.
getValue
()
,
receivers
);
Pair
<
String
,
String
>
pair
=
m_decoratorManager
.
generateTitleAndContent
(
alert
,
channelName
);
List
<
String
>
receivers
=
m_contactor
.
queryReceivers
(
group
,
channel
,
typ
e
);
String
content
=
pair
.
getValue
(
);
AlertMessageEntity
message
=
new
AlertMessageEntity
(
group
,
pair
.
getKey
(),
content
,
receivers
);
m_alertManager
.
storeAlert
(
alert
,
message
);
m_alertEntityService
.
storeAlert
(
alert
,
message
);
if
(!
m_senderManager
.
sendAlert
(
channelName
,
type
,
message
))
{
result
=
false
;
}
if
(
m_senderManager
.
sendAlert
(
channelName
,
type
,
message
))
{
result
=
true
;
}
}
return
result
;
}
public
synchronized
boolean
addAlert
(
AlertEntity
alert
)
{
public
boolean
addAlert
(
AlertEntity
alert
)
{
return
m_alerts
.
offer
(
alert
);
}
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/AlertMessageEntity.java
浏览文件 @
74dc0d75
...
...
@@ -8,7 +8,7 @@ public class AlertMessageEntity {
private
String
m_title
;
private
String
m_content
;
private
List
<
String
>
m_receivers
;
public
AlertMessageEntity
(
String
group
,
String
title
,
String
content
,
List
<
String
>
receivers
)
{
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/SplitProcessor.java
0 → 100644
浏览文件 @
74dc0d75
package
com.dianping.cat.report.task.alert.sender
;
public
class
SplitProcessor
{
public
String
process
(
String
content
,
AlertChannel
channel
){
return
null
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/Decorator.java
浏览文件 @
74dc0d75
...
...
@@ -4,10 +4,10 @@ import com.dianping.cat.report.task.alert.sender.AlertEntity;
public
interface
Decorator
{
String
getId
();
public
String
getId
();
String
generateTitle
(
AlertEntity
alert
);
String
generateContent
(
AlertEntity
alert
);
public
String
generateTitle
(
AlertEntity
alert
);
public
String
generateContent
(
AlertEntity
alert
);
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/DecoratorManager.java
浏览文件 @
74dc0d75
...
...
@@ -25,8 +25,10 @@ public class DecoratorManager implements Initializable {
public
Pair
<
String
,
String
>
generateTitleAndContent
(
AlertEntity
alert
,
String
channelName
)
{
Decorator
decorator
=
m_decorators
.
get
(
channelName
);
return
new
Pair
<
String
,
String
>(
decorator
.
generateTitle
(
alert
),
decorator
.
generateContent
(
alert
));
String
title
=
decorator
.
generateTitle
(
alert
);
String
content
=
decorator
.
generateContent
(
alert
);
return
new
Pair
<
String
,
String
>(
title
,
content
);
}
@Override
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/DefaultDecorator.java
浏览文件 @
74dc0d75
...
...
@@ -83,36 +83,38 @@ public abstract class DefaultDecorator implements Decorator {
public
String
generateTitle
(
AlertEntity
alert
)
{
String
type
=
alert
.
getType
();
String
group
=
alert
.
getGroup
();
if
(
"business"
.
equals
(
type
))
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"[业务告警] [产品线 "
).
append
(
alert
.
getProductline
()
).
append
(
"]"
);
sb
.
append
(
"[业务告警] [产品线 "
).
append
(
group
).
append
(
"]"
);
sb
.
append
(
"[业务指标 "
).
append
(
alert
.
getMetric
()).
append
(
"]"
);
return
sb
.
toString
();
}
if
(
"network"
.
equals
(
type
))
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"[网络告警] [产品线 "
).
append
(
alert
.
getProductline
()
).
append
(
"]"
);
sb
.
append
(
"[网络告警] [产品线 "
).
append
(
group
).
append
(
"]"
);
sb
.
append
(
"[网络指标 "
).
append
(
alert
.
getMetric
()).
append
(
"]"
);
return
sb
.
toString
();
}
if
(
"system"
.
equals
(
type
))
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"[系统告警] [产品线 "
).
append
(
alert
.
getProductline
()
).
append
(
"]"
);
sb
.
append
(
"[系统告警] [产品线 "
).
append
(
group
).
append
(
"]"
);
sb
.
append
(
"[系统指标 "
).
append
(
alert
.
getMetric
()).
append
(
"]"
);
return
sb
.
toString
();
}
if
(
"exception"
.
equals
(
type
))
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"[CAT异常告警] [项目: "
).
append
(
alert
.
getGroup
()
).
append
(
"]"
);
sb
.
append
(
"[CAT异常告警] [项目: "
).
append
(
group
).
append
(
"]"
);
return
sb
.
toString
();
}
if
(
"thidparty"
.
equals
(
type
))
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"[CAT第三方告警] [项目: "
).
append
(
alert
.
getGroup
()
).
append
(
"]"
);
sb
.
append
(
"[CAT第三方告警] [项目: "
).
append
(
group
).
append
(
"]"
);
return
sb
.
toString
();
}
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/MailDecorator.java
浏览文件 @
74dc0d75
...
...
@@ -8,7 +8,6 @@ public class MailDecorator extends DefaultDecorator {
@Override
public
String
generateContent
(
AlertEntity
alert
)
{
String
content
;
if
(
"exception"
.
equals
(
alert
.
getType
()))
{
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/sender/Sender.java
浏览文件 @
74dc0d75
...
...
@@ -4,8 +4,8 @@ import com.dianping.cat.report.task.alert.sender.AlertMessageEntity;
public
interface
Sender
{
String
getId
();
public
String
getId
();
boolean
send
(
AlertMessageEntity
message
,
String
t
ype
);
public
boolean
send
(
AlertMessageEntity
message
,
String
alertT
ype
);
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/thirdParty/ThirdPartyAlert.java
浏览文件 @
74dc0d75
...
...
@@ -19,12 +19,12 @@ import com.dianping.cat.helper.TimeUtil;
import
com.dianping.cat.message.Transaction
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity.AlertEntityBuilder
;
import
com.dianping.cat.report.task.alert.sender.
Send
Manager
;
import
com.dianping.cat.report.task.alert.sender.
Alert
Manager
;
public
class
ThirdPartyAlert
implements
Task
{
@Inject
private
Send
Manager
m_sendManager
;
private
Alert
Manager
m_sendManager
;
private
static
final
long
DURATION
=
TimeUtil
.
ONE_MINUTE
;
...
...
@@ -80,7 +80,7 @@ public class ThirdPartyAlert implements Task {
AlertEntityBuilder
builder
=
new
AlertEntity
().
new
AlertEntityBuilder
();
builder
.
buildDate
(
new
Date
()).
buildLevel
(
"warning"
).
buildContent
(
thirdPartyAlerts
.
toString
());
builder
.
buildMetric
(
getName
()).
build
Productline
(
domain
).
build
Type
(
getName
()).
buildGroup
(
domain
);
builder
.
buildMetric
(
getName
()).
buildType
(
getName
()).
buildGroup
(
domain
);
AlertEntity
alertEntity
=
builder
.
getAlertEntity
();
m_sendManager
.
addAlert
(
alertEntity
);
...
...
cat-home/src/main/java/com/dianping/cat/system/config/AlertPolicyManager.java
浏览文件 @
74dc0d75
package
com.dianping.cat.system.config
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable
;
import
org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException
;
import
org.unidal.dal.jdbc.DalNotFoundException
;
...
...
@@ -15,6 +18,7 @@ import com.dianping.cat.home.alert.policy.entity.Group;
import
com.dianping.cat.home.alert.policy.entity.Level
;
import
com.dianping.cat.home.alert.policy.entity.Type
;
import
com.dianping.cat.home.alert.policy.transform.DefaultSaxParser
;
import
com.dianping.cat.report.task.alert.sender.AlertChannel
;
public
class
AlertPolicyManager
implements
Initializable
{
...
...
@@ -33,22 +37,36 @@ public class AlertPolicyManager implements Initializable {
return
m_config
;
}
public
String
queryChannels
(
String
typeName
,
String
groupName
,
String
levelName
)
{
public
List
<
AlertChannel
>
queryChannels
(
String
typeName
,
String
groupName
,
String
levelName
)
{
try
{
Type
type
=
m_config
.
findType
(
typeName
);
Group
group
=
type
.
findGroup
(
groupName
);
if
(
group
==
null
)
{
group
=
type
.
findGroup
(
DEFAULT_TYPE
);
}
Level
level
=
group
.
findLevel
(
levelName
);
if
(
level
==
null
)
{
return
""
;
return
new
ArrayList
<
AlertChannel
>();
}
else
{
String
send
=
level
.
getSend
();
String
[]
sends
=
send
.
split
(
","
);
List
<
AlertChannel
>
channels
=
new
ArrayList
<
AlertChannel
>();
for
(
String
str
:
sends
)
{
AlertChannel
channel
=
AlertChannel
.
findByName
(
str
);
if
(
channel
!=
null
)
{
channels
.
add
(
channel
);
}
}
return
channels
;
}
return
level
.
getSend
();
}
catch
(
Exception
ex
)
{
return
""
;
return
new
ArrayList
<
AlertChannel
>()
;
}
}
...
...
cat-home/src/main/java/com/dianping/cat/system/config/RouterConfigManager.java
浏览文件 @
74dc0d75
...
...
@@ -40,15 +40,29 @@ public class RouterConfigManager implements Initializable, LogEnabled {
public
RouterConfig
getRouterConfig
()
{
return
m_routerConfig
;
}
public
String
queryBackUpServer
(){
public
String
queryBackUpServer
()
{
return
m_routerConfig
.
getBackupServer
();
}
public
int
queryPort
(){
public
int
queryPort
()
{
return
m_routerConfig
.
getPort
();
}
public
List
<
String
>
queryRandomServers
()
{
List
<
String
>
servers
=
queryEnableServers
();
int
length
=
servers
.
size
();
int
index
=
(
int
)
(
Math
.
random
()
*
length
);
List
<
String
>
result
=
new
ArrayList
<
String
>();
for
(
int
i
=
0
;
i
<
2
;
i
++)
{
servers
.
add
(
servers
.
get
((
index
+
1
)
%
index
));
}
servers
.
add
(
queryBackUpServer
());
return
result
;
}
public
List
<
String
>
queryEnableServers
()
{
List
<
DefaultServer
>
servers
=
m_routerConfig
.
getDefaultServers
();
List
<
String
>
result
=
new
ArrayList
<
String
>();
...
...
@@ -61,6 +75,7 @@ public class RouterConfigManager implements Initializable, LogEnabled {
return
result
;
}
@Override
public
void
initialize
()
throws
InitializationException
{
try
{
...
...
@@ -96,7 +111,7 @@ public class RouterConfigManager implements Initializable, LogEnabled {
try
{
m_routerConfig
=
DefaultSaxParser
.
parse
(
xml
);
boolean
result
=
storeConfig
();
return
result
;
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
...
...
cat-home/src/main/java/com/dianping/cat/system/page/router/Handler.java
浏览文件 @
74dc0d75
package
com.dianping.cat.system.page.router
;
import
java.io.IOException
;
import
java.util.Date
;
import
java.util.List
;
import
javax.servlet.ServletException
;
import
com.dianping.cat.Constants
;
import
com.dianping.cat.helper.TimeUtil
;
import
com.dianping.cat.home.router.entity.Domain
;
import
com.dianping.cat.home.router.entity.RouterConfig
;
import
com.dianping.cat.home.router.entity.Server
;
import
com.dianping.cat.report.service.ReportServiceManager
;
import
com.dianping.cat.system.SystemPage
;
import
com.dianping.cat.system.config.RouterConfigManager
;
...
...
@@ -17,13 +24,13 @@ import org.unidal.web.mvc.annotation.PayloadMeta;
public
class
Handler
implements
PageHandler
<
Context
>
{
@Inject
private
JspViewer
m_jspViewer
;
@Inject
private
ReportServiceManager
m_reportService
;
@Inject
private
RouterConfigManager
m_configManager
;
@Override
@PayloadMeta
(
Payload
.
class
)
@InboundActionMeta
(
name
=
"router"
)
...
...
@@ -37,19 +44,61 @@ public class Handler implements PageHandler<Context> {
Model
model
=
new
Model
(
ctx
);
Payload
payload
=
ctx
.
getPayload
();
Action
action
=
payload
.
getAction
();
switch
(
action
){
Date
date
=
payload
.
getDate
();
Date
end
=
new
Date
(
date
.
getTime
()
+
TimeUtil
.
ONE_DAY
);
RouterConfig
report
=
m_reportService
.
queryRouterConfigReport
(
Constants
.
CAT
,
date
,
end
);
switch
(
action
)
{
case
API:
if
(
report
!=
null
)
{
Domain
domain
=
report
.
findDomain
(
payload
.
getDomain
());
String
str
=
null
;
if
(
domain
==
null
)
{
m_configManager
.
getRouterConfig
().
getDefaultServers
();
List
<
String
>
servers
=
m_configManager
.
queryRandomServers
();
str
=
buildServerStr
(
servers
,
m_configManager
.
queryPort
());
}
else
{
List
<
Server
>
servers
=
domain
.
getServers
();
str
=
buildServerStr
(
servers
);
}
model
.
setContent
(
str
);
}
else
{
model
.
setContent
(
""
);
}
break
;
case
MODEL:
if
(
report
!=
null
)
{
model
.
setContent
(
report
.
toString
());
}
break
;
}
model
.
setAction
(
Action
.
API
);
model
.
setPage
(
SystemPage
.
ROUTER
);
if
(!
ctx
.
isProcessStopped
())
{
m_jspViewer
.
view
(
ctx
,
model
);
m_jspViewer
.
view
(
ctx
,
model
);
}
}
private
String
buildServerStr
(
List
<
String
>
servers
,
int
port
)
{
StringBuilder
sb
=
new
StringBuilder
();
for
(
String
server
:
servers
)
{
sb
.
append
(
server
).
append
(
":"
).
append
(
port
).
append
(
";"
);
}
return
sb
.
toString
();
}
private
String
buildServerStr
(
List
<
Server
>
servers
)
{
StringBuilder
sb
=
new
StringBuilder
();
for
(
Server
server
:
servers
)
{
sb
.
append
(
server
.
getId
()).
append
(
":"
).
append
(
server
.
getPort
()).
append
(
";"
);
}
return
sb
.
toString
();
}
}
cat-home/src/main/java/com/dianping/cat/system/page/router/JspFile.java
浏览文件 @
74dc0d75
package
com.dianping.cat.system.page.router
;
public
enum
JspFile
{
API
(
"/jsp/system/router.jsp"
),
API
(
"/jsp/system/router/router.jsp"
),
MODEL
(
"/jsp/system/router/router.jsp"
),
;
...
...
cat-home/src/main/java/com/dianping/cat/system/page/router/JspViewer.java
浏览文件 @
74dc0d75
...
...
@@ -12,7 +12,7 @@ public class JspViewer extends BaseJspViewer<SystemPage, Action, Context, Model>
case
API:
return
JspFile
.
API
.
getPath
();
case
MODEL:
return
JspFile
.
API
.
getPath
();
return
JspFile
.
MODEL
.
getPath
();
}
throw
new
RuntimeException
(
"Unknown action: "
+
action
);
...
...
cat-home/src/main/java/com/dianping/cat/system/page/router/Model.java
浏览文件 @
74dc0d75
...
...
@@ -4,6 +4,17 @@ import com.dianping.cat.system.SystemPage;
import
org.unidal.web.mvc.ViewModel
;
public
class
Model
extends
ViewModel
<
SystemPage
,
Action
,
Context
>
{
private
String
m_content
;
public
String
getContent
()
{
return
m_content
;
}
public
void
setContent
(
String
content
)
{
m_content
=
content
;
}
public
Model
(
Context
ctx
)
{
super
(
ctx
);
}
...
...
cat-home/src/main/java/com/dianping/cat/system/page/router/Payload.java
浏览文件 @
74dc0d75
package
com.dianping.cat.system.page.router
;
import
com.dianping.cat.system.SystemPage
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
org.unidal.web.mvc.ActionContext
;
import
org.unidal.web.mvc.ActionPayload
;
import
org.unidal.web.mvc.payload.annotation.FieldMeta
;
import
com.dianping.cat.helper.TimeUtil
;
import
com.dianping.cat.system.SystemPage
;
public
class
Payload
implements
ActionPayload
<
SystemPage
,
Action
>
{
private
SystemPage
m_page
;
@FieldMeta
(
"op"
)
private
Action
m_action
;
@FieldMeta
(
"domain"
)
private
String
m_domain
;
@FieldMeta
(
"date"
)
private
String
m_date
;
public
String
getDomain
()
{
return
m_domain
;
}
private
SystemPage
m_page
;
@FieldMeta
(
"op"
)
private
Action
m_action
;
@FieldMeta
(
"domain"
)
private
String
m_domain
;
@FieldMeta
(
"date"
)
private
String
m_date
;
private
SimpleDateFormat
m_sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
public
String
getDomain
()
{
return
m_domain
;
}
public
void
setDomain
(
String
domain
)
{
m_domain
=
domain
;
}
m_domain
=
domain
;
}
public
String
getDate
()
{
return
m_date
;
}
public
Date
getDate
()
{
try
{
return
m_sdf
.
parse
(
m_date
);
}
catch
(
ParseException
e
)
{
return
TimeUtil
.
getCurrentDay
(-
1
);
}
}
public
void
setDate
(
String
date
)
{
m_date
=
date
;
}
m_date
=
date
;
}
public
void
setAction
(
String
action
)
{
m_action
=
Action
.
getByName
(
action
,
Action
.
API
);
}
@Override
public
Action
getAction
()
{
return
m_action
;
}
@Override
public
SystemPage
getPage
()
{
return
m_page
;
}
@Override
public
void
setPage
(
String
page
)
{
m_page
=
SystemPage
.
getByName
(
page
,
SystemPage
.
ROUTER
);
}
@Override
public
void
validate
(
ActionContext
<?>
ctx
)
{
if
(
m_action
==
null
)
{
m_action
=
Action
.
API
;
}
}
m_action
=
Action
.
getByName
(
action
,
Action
.
API
);
}
@Override
public
Action
getAction
()
{
return
m_action
;
}
@Override
public
SystemPage
getPage
()
{
return
m_page
;
}
@Override
public
void
setPage
(
String
page
)
{
m_page
=
SystemPage
.
getByName
(
page
,
SystemPage
.
ROUTER
);
}
@Override
public
void
validate
(
ActionContext
<?>
ctx
)
{
if
(
m_action
==
null
)
{
m_action
=
Action
.
API
;
}
}
}
cat-home/src/main/resources/META-INF/dal/model/router-model.xml
浏览文件 @
74dc0d75
...
...
@@ -16,6 +16,5 @@
</entity>
<entity
name=
"server"
>
<attribute
name=
"id"
value-type=
"String"
/>
<attribute
name=
"port"
value-type=
"int"
/>
</entity>
</model>
\ No newline at end of file
cat-home/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
74dc0d75
...
...
@@ -471,8 +471,8 @@
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.manager.Alert
Manager
</role>
<implementation>
com.dianping.cat.report.task.alert.manager.Alert
Manager
</implementation>
<role>
com.dianping.cat.report.task.alert.manager.Alert
EntityService
</role>
<implementation>
com.dianping.cat.report.task.alert.manager.Alert
EntityService
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.home.dal.report.AlertDao
</role>
...
...
@@ -675,8 +675,8 @@
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.
Send
Manager
</role>
<implementation>
com.dianping.cat.report.task.alert.sender.
Send
Manager
</implementation>
<role>
com.dianping.cat.report.task.alert.sender.
Alert
Manager
</role>
<implementation>
com.dianping.cat.report.task.alert.sender.
Alert
Manager
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.system.config.AlertPolicyManager
</role>
...
...
@@ -688,7 +688,7 @@
<role>
com.dianping.cat.report.task.alert.sender.receiver.Contactor
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.manager.Alert
Manager
</role>
<role>
com.dianping.cat.report.task.alert.manager.Alert
EntityService
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.sender.SenderManager
</role>
...
...
@@ -721,7 +721,7 @@
<role>
com.dianping.cat.report.task.alert.DataChecker
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.
Send
Manager
</role>
<role>
com.dianping.cat.report.task.alert.sender.
Alert
Manager
</role>
</requirement>
</requirements>
</component>
...
...
@@ -748,7 +748,7 @@
<role>
com.dianping.cat.report.task.alert.DataChecker
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.
Send
Manager
</role>
<role>
com.dianping.cat.report.task.alert.sender.
Alert
Manager
</role>
</requirement>
</requirements>
</component>
...
...
@@ -775,7 +775,7 @@
<role>
com.dianping.cat.report.task.alert.DataChecker
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.
Send
Manager
</role>
<role>
com.dianping.cat.report.task.alert.sender.
Alert
Manager
</role>
</requirement>
</requirements>
</component>
...
...
@@ -799,7 +799,7 @@
<role>
com.dianping.cat.report.task.alert.exception.AlertExceptionBuilder
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.
Send
Manager
</role>
<role>
com.dianping.cat.report.task.alert.sender.
Alert
Manager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.page.model.spi.ModelService
</role>
...
...
@@ -812,7 +812,7 @@
<implementation>
com.dianping.cat.report.task.alert.thirdParty.ThirdPartyAlert
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.
Send
Manager
</role>
<role>
com.dianping.cat.report.task.alert.sender.
Alert
Manager
</role>
</requirement>
</requirements>
</component>
...
...
@@ -4312,6 +4312,12 @@
<requirement>
<role>
com.dianping.cat.system.page.router.JspViewer
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.service.ReportServiceManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.system.config.RouterConfigManager
</role>
</requirement>
</requirements>
</component>
<component>
...
...
cat-home/src/main/webapp/jsp/system/router.jsp
→
cat-home/src/main/webapp/jsp/system/router
/router
.jsp
浏览文件 @
74dc0d75
<%@ page
contentType=
"text/html; charset=utf-8"
%>
<jsp:useBean
id=
"ctx"
type=
"com.dianping.cat.system.page.router.Context"
scope=
"request"
/>
<jsp:useBean
id=
"payload"
type=
"com.dianping.cat.system.page.router.Payload"
scope=
"request"
/>
<jsp:useBean
id=
"model"
type=
"com.dianping.cat.system.page.router.Model"
scope=
"request"
/>
View of router page under system
\ No newline at end of file
${model.content}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录