Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
72cb183b
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,发现更多精彩内容 >>
提交
72cb183b
编写于
7月 28, 2014
作者:
Y
youyong205
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of github.com:dianping/cat
上级
1e1ab773
186ba62d
变更
17
隐藏空白更改
内联
并排
Showing
17 changed file
with
564 addition
and
134 deletion
+564
-134
cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
...n/java/com/dianping/cat/build/ComponentsConfigurator.java
+23
-23
cat-home/src/main/java/com/dianping/cat/report/task/alert/BaseAlert.java
...in/java/com/dianping/cat/report/task/alert/BaseAlert.java
+3
-3
cat-home/src/main/java/com/dianping/cat/report/task/alert/business/BusinessAlert.java
...ianping/cat/report/task/alert/business/BusinessAlert.java
+1
-1
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/AlertManager.java
.../dianping/cat/report/task/alert/manager/AlertManager.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/AlertEntity.java
...om/dianping/cat/report/task/alert/sender/AlertEntity.java
+6
-6
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/SendManager.java
...om/dianping/cat/report/task/alert/sender/SendManager.java
+106
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/DefaultDecorator.java
.../report/task/alert/sender/decorator/DefaultDecorator.java
+7
-1
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/dispatcher/WeixinDispatcher.java
...report/task/alert/sender/dispatcher/WeixinDispatcher.java
+0
-47
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/Contactor.java
...ping/cat/report/task/alert/sender/receiver/Contactor.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/sender/MailSender.java
...nping/cat/report/task/alert/sender/sender/MailSender.java
+104
-0
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/sender/sender/SenderManager.java
...ng/cat/report/task/alert/sender/sender/SenderManager.java
+49
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/sender/SmsSender.java
...anping/cat/report/task/alert/sender/sender/SmsSender.java
+87
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/sender/WeixinSender.java
...ing/cat/report/task/alert/sender/sender/WeixinSender.java
+131
-0
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/resources/META-INF/plexus/components.xml
cat-home/src/main/resources/META-INF/plexus/components.xml
+37
-43
未找到文件。
cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
浏览文件 @
72cb183b
...
...
@@ -66,17 +66,18 @@ 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.AlertManager
;
import
com.dianping.cat.report.task.alert.network.NetworkAlert
;
import
com.dianping.cat.report.task.alert.sender.SendManager
;
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
;
import
com.dianping.cat.report.task.alert.sender.decorator.SmsDecorator
;
import
com.dianping.cat.report.task.alert.sender.decorator.WeixinDecorator
;
import
com.dianping.cat.report.task.alert.sender.
dispatcher.Dispatche
r
;
import
com.dianping.cat.report.task.alert.sender.
dispatcher.DispatcherManag
er
;
import
com.dianping.cat.report.task.alert.sender.
dispatcher.MailDispatch
er
;
import
com.dianping.cat.report.task.alert.sender.
dispatcher.SmsDispatch
er
;
import
com.dianping.cat.report.task.alert.sender.
dispatcher.WeixinDispatch
er
;
import
com.dianping.cat.report.task.alert.sender.
receiver.Seek
er
;
import
com.dianping.cat.report.task.alert.sender.
receiver.Contacto
r
;
import
com.dianping.cat.report.task.alert.sender.
sender.MailSend
er
;
import
com.dianping.cat.report.task.alert.sender.
sender.Send
er
;
import
com.dianping.cat.report.task.alert.sender.
sender.SenderManag
er
;
import
com.dianping.cat.report.task.alert.sender.
sender.SmsSend
er
;
import
com.dianping.cat.report.task.alert.sender.
sender.WeixinSend
er
;
import
com.dianping.cat.report.task.alert.summary.AlertSummaryDecorator
;
import
com.dianping.cat.report.task.alert.summary.AlertSummaryExecutor
;
import
com.dianping.cat.report.task.alert.summary.AlertSummaryFTLDecorator
;
...
...
@@ -118,11 +119,11 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
DataChecker
.
class
,
DefaultDataChecker
.
class
));
all
.
add
(
C
(
RemoteMetricReportService
.
class
).
req
(
ServerConfigManager
.
class
));
all
.
add
(
C
(
Dispatcher
.
class
,
MailDispatcher
.
ID
,
MailDispatcher
.
class
).
req
(
MailSMS
.
class
));
all
.
add
(
C
(
Sender
.
class
,
MailSender
.
ID
,
MailSender
.
class
));
all
.
add
(
C
(
Dispatcher
.
class
,
SmsDispatcher
.
ID
,
SmsDispatcher
.
class
).
req
(
MailSMS
.
class
));
all
.
add
(
C
(
Sender
.
class
,
SmsSender
.
ID
,
SmsSender
.
class
));
all
.
add
(
C
(
Dispatcher
.
class
,
WeixinDispatcher
.
ID
,
WeixinDispatcher
.
class
).
req
(
MailSMS
.
class
));
all
.
add
(
C
(
Sender
.
class
,
WeixinSender
.
ID
,
WeixinSender
.
class
));
all
.
add
(
C
(
Decorator
.
class
,
MailDecorator
.
ID
,
MailDecorator
.
class
).
req
(
ProjectDao
.
class
));
...
...
@@ -136,31 +137,30 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
.
req
(
Decorator
.
class
,
SmsDecorator
.
ID
,
"smsDecorator"
)
.
req
(
Decorator
.
class
,
WeixinDecorator
.
ID
,
"weixinDecorator"
));
all
.
add
(
C
(
Seeke
r
.
class
).
req
(
ProjectDao
.
class
,
ProductLineConfigManager
.
class
,
AlertConfigManager
.
class
));
all
.
add
(
C
(
Contacto
r
.
class
).
req
(
ProjectDao
.
class
,
ProductLineConfigManager
.
class
,
AlertConfigManager
.
class
));
all
.
add
(
C
(
DispatcherManager
.
class
)
.
req
(
AlertPolicyManager
.
class
,
DecoratorManager
.
class
,
Seeker
.
class
,
AlertManager
.
class
)
.
req
(
Dispatcher
.
class
,
MailDispatcher
.
ID
,
"mailDispatcher"
)
.
req
(
Dispatcher
.
class
,
WeixinDispatcher
.
ID
,
"weixinDispatcher"
)
.
req
(
Dispatcher
.
class
,
SmsDispatcher
.
ID
,
"smsDispatcher"
));
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
(
SendManager
.
class
).
req
(
AlertPolicyManager
.
class
,
DecoratorManager
.
class
,
Contactor
.
class
,
AlertManager
.
class
,
SenderManager
.
class
));
all
.
add
(
C
(
BusinessAlert
.
class
).
req
(
MetricConfigManager
.
class
,
ProductLineConfigManager
.
class
,
BaselineService
.
class
,
AlertInfo
.
class
).
req
(
RemoteMetricReportService
.
class
,
BusinessRuleConfigManager
.
class
,
DataChecker
.
class
,
Dispatcher
Manager
.
class
));
BusinessRuleConfigManager
.
class
,
DataChecker
.
class
,
Send
Manager
.
class
));
all
.
add
(
C
(
NetworkAlert
.
class
).
req
(
ProductLineConfigManager
.
class
,
BaselineService
.
class
,
AlertInfo
.
class
)
.
req
(
RemoteMetricReportService
.
class
,
NetworkRuleConfigManager
.
class
,
DataChecker
.
class
,
DispatcherManager
.
class
));
all
.
add
(
C
(
NetworkAlert
.
class
).
req
(
ProductLineConfigManager
.
class
,
BaselineService
.
class
,
AlertInfo
.
class
).
req
(
RemoteMetricReportService
.
class
,
NetworkRuleConfigManager
.
class
,
DataChecker
.
class
,
SendManager
.
class
));
all
.
add
(
C
(
SystemAlert
.
class
).
req
(
ProductLineConfigManager
.
class
,
BaselineService
.
class
,
AlertInfo
.
class
).
req
(
RemoteMetricReportService
.
class
,
SystemRuleConfigManager
.
class
,
DataChecker
.
class
,
Dispatcher
Manager
.
class
));
RemoteMetricReportService
.
class
,
SystemRuleConfigManager
.
class
,
DataChecker
.
class
,
Send
Manager
.
class
));
all
.
add
(
C
(
AlertExceptionBuilder
.
class
).
req
(
ExceptionConfigManager
.
class
));
all
.
add
(
C
(
ExceptionAlert
.
class
).
req
(
ExceptionConfigManager
.
class
,
AlertExceptionBuilder
.
class
,
DispatcherManager
.
class
)
.
req
(
ModelService
.
class
,
TopAnalyzer
.
ID
));
all
.
add
(
C
(
ExceptionAlert
.
class
).
req
(
ExceptionConfigManager
.
class
,
AlertExceptionBuilder
.
class
,
SendManager
.
class
)
.
req
(
ModelService
.
class
,
TopAnalyzer
.
ID
));
all
.
add
(
C
(
ThirdPartyAlert
.
class
).
req
(
Dispatcher
Manager
.
class
));
all
.
add
(
C
(
ThirdPartyAlert
.
class
).
req
(
Send
Manager
.
class
));
all
.
add
(
C
(
HttpConnector
.
class
));
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/BaseAlert.java
浏览文件 @
72cb183b
...
...
@@ -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.
dispatcher.Dispatcher
Manager
;
import
com.dianping.cat.report.task.alert.sender.
Send
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
DispatcherManager
m_dispatcher
Manager
;
protected
SendManager
m_send
Manager
;
protected
static
final
int
DATA_AREADY_MINUTE
=
1
;
...
...
@@ -246,7 +246,7 @@ public abstract class BaseAlert {
}
AlertEntity
alertEntity
=
builder
.
getAlertEntity
();
m_
dispatcherManager
.
send
(
alertEntity
);
m_
sendManager
.
addAlert
(
alertEntity
);
}
}
}
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/business/BusinessAlert.java
浏览文件 @
72cb183b
...
...
@@ -75,7 +75,7 @@ public class BusinessAlert extends BaseAlert implements Task, LogEnabled {
builder
.
buildGroup
(
domain
);
AlertEntity
alertEntity
=
builder
.
getAlertEntity
();
m_
dispatcherManager
.
send
(
alertEntity
);
m_
sendManager
.
addAlert
(
alertEntity
);
}
}
}
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/ExceptionAlert.java
浏览文件 @
72cb183b
...
...
@@ -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.
dispatcher.Dispatcher
Manager
;
import
com.dianping.cat.report.task.alert.sender.
Send
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
DispatcherManager
m_dispatcher
Manager
;
protected
SendManager
m_send
Manager
;
private
static
final
long
DURATION
=
TimeUtil
.
ONE_MINUTE
;
...
...
@@ -115,7 +115,7 @@ public class ExceptionAlert implements Task {
builder
.
buildMetric
(
metricName
).
buildProductline
(
domain
).
buildType
(
getName
()).
buildGroup
(
domain
);
AlertEntity
alertEntity
=
builder
.
getAlertEntity
();
m_
dispatcherManager
.
send
(
alertEntity
);
m_
sendManager
.
addAlert
(
alertEntity
);
}
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/manager/AlertManager.java
浏览文件 @
72cb183b
...
...
@@ -18,7 +18,7 @@ public class AlertManager {
Alert
alert
=
new
Alert
();
alert
.
setDomain
(
alertEntity
.
getGroup
());
alert
.
setAlertTime
(
alertEntity
.
get
Alert
Date
());
alert
.
setAlertTime
(
alertEntity
.
getDate
());
alert
.
setCategory
(
alertEntity
.
getType
()
+
"-alert"
);
alert
.
setType
(
alertEntity
.
getLevel
());
alert
.
setContent
(
message
.
getTitle
()
+
"<br/>"
+
message
.
getContent
());
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/AlertEntity.java
浏览文件 @
72cb183b
...
...
@@ -8,7 +8,7 @@ public class AlertEntity {
private
String
m_id
;
private
Date
m_
alertD
ate
;
private
Date
m_
d
ate
;
private
String
m_type
;
...
...
@@ -24,8 +24,8 @@ public class AlertEntity {
private
Map
<
String
,
Object
>
m_paras
=
new
HashMap
<
String
,
Object
>();
public
Date
get
Alert
Date
()
{
return
m_
alertD
ate
;
public
Date
getDate
()
{
return
m_
d
ate
;
}
public
String
getContent
()
{
...
...
@@ -60,8 +60,8 @@ public class AlertEntity {
return
m_type
;
}
public
void
set
Alert
Date
(
Date
alertDate
)
{
m_
alertD
ate
=
alertDate
;
public
void
setDate
(
Date
alertDate
)
{
m_
d
ate
=
alertDate
;
}
public
void
setContent
(
String
content
)
{
...
...
@@ -101,7 +101,7 @@ public class AlertEntity {
private
AlertEntity
m_alertEntity
=
new
AlertEntity
();
public
AlertEntityBuilder
buildDate
(
Date
date
)
{
m_alertEntity
.
set
Alert
Date
(
date
);
m_alertEntity
.
setDate
(
date
);
return
this
;
}
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/
dispatcher/Dispatcher
Manager.java
→
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/
Send
Manager.java
浏览文件 @
72cb183b
package
com.dianping.cat.report.task.alert.sender
.dispatcher
;
package
com.dianping.cat.report.task.alert.sender
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.BlockingQueue
;
import
java.util.concurrent.LinkedBlockingDeque
;
import
java.util.concurrent.TimeUnit
;
import
org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable
;
import
org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException
;
import
org.unidal.helper.Threads
;
import
org.unidal.helper.Threads.Task
;
import
org.unidal.lookup.annotation.Inject
;
import
org.unidal.tuple.Pair
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.report.task.alert.manager.AlertManager
;
import
com.dianping.cat.report.task.alert.sender.AlertChannel
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity
;
import
com.dianping.cat.report.task.alert.sender.AlertMessageEntity
;
import
com.dianping.cat.report.task.alert.sender.decorator.DecoratorManager
;
import
com.dianping.cat.report.task.alert.sender.receiver.Seeker
;
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
Dispatcher
Manager
implements
Initializable
{
public
class
Send
Manager
implements
Initializable
{
@Inject
private
AlertPolicyManager
m_policyManager
;
...
...
@@ -26,30 +28,18 @@ public class DispatcherManager implements Initializable {
private
DecoratorManager
m_decoratorManager
;
@Inject
private
Seeker
m_seeke
r
;
private
Contactor
m_contacto
r
;
@Inject
protected
AlertManager
m_alertManager
;
@Inject
(
type
=
Dispatcher
.
class
,
value
=
MailDispatcher
.
ID
)
protected
Dispatcher
m_mailDispatcher
;
@Inject
(
type
=
Dispatcher
.
class
,
value
=
WeixinDispatcher
.
ID
)
protected
Dispatcher
m_weixinDispatcher
;
@Inject
(
type
=
Dispatcher
.
class
,
value
=
SmsDispatcher
.
ID
)
protected
Dispatcher
m_smsDispatcher
;
private
Map
<
String
,
Dispatcher
>
m_dispatchers
=
new
HashMap
<
String
,
Dispatcher
>();
@Inject
protected
SenderManager
m_senderManager
;
@Override
public
void
initialize
()
throws
InitializationException
{
m_dispatchers
.
put
(
m_mailDispatcher
.
getId
(),
m_mailDispatcher
);
m_dispatchers
.
put
(
m_weixinDispatcher
.
getId
(),
m_weixinDispatcher
);
m_dispatchers
.
put
(
m_smsDispatcher
.
getId
(),
m_smsDispatcher
);
}
private
BlockingQueue
<
AlertEntity
>
m_alerts
=
new
LinkedBlockingDeque
<
AlertEntity
>();
public
boolean
send
(
AlertEntity
alert
)
{
private
boolean
send
(
AlertEntity
alert
)
{
boolean
result
=
true
;
String
type
=
alert
.
getType
();
String
group
=
alert
.
getGroup
();
String
level
=
alert
.
getLevel
();
...
...
@@ -60,29 +50,57 @@ public class DispatcherManager implements Initializable {
String
channelName
=
channel
.
getName
();
if
(
channels
.
contains
(
channelName
))
{
Pair
<
String
,
String
>
pair
=
m_decoratorManager
.
generateTitleAndContent
(
alert
,
channelName
);
List
<
String
>
receivers
=
m_
seeke
r
.
queryReceivers
(
alert
.
getProductline
(),
channel
,
type
);
List
<
String
>
receivers
=
m_
contacto
r
.
queryReceivers
(
alert
.
getProductline
(),
channel
,
type
);
AlertMessageEntity
message
=
new
AlertMessageEntity
(
group
,
pair
.
getKey
(),
pair
.
getValue
(),
receivers
);
m_alertManager
.
storeAlert
(
alert
,
message
);
Dispatcher
dispatcher
=
m_dispatchers
.
get
(
channelName
);
dispatcher
.
send
(
message
,
type
);
if
(!
m_senderManager
.
sendAlert
(
channelName
,
type
,
message
))
{
result
=
false
;
}
}
}
return
false
;
return
result
;
}
public
void
setMailDispatcher
(
Dispatcher
dispatcher
)
{
m_mailDispatcher
=
dispatcher
;
public
synchronized
boolean
addAlert
(
AlertEntity
alert
)
{
return
m_alerts
.
offer
(
alert
)
;
}
public
void
setSmsDispatcher
(
Dispatcher
dispatcher
)
{
m_smsDispatcher
=
dispatcher
;
private
class
SendExecutor
implements
Task
{
@Override
public
void
run
()
{
boolean
active
=
true
;
while
(
active
)
{
try
{
AlertEntity
alert
=
m_alerts
.
poll
(
5
,
TimeUnit
.
MILLISECONDS
);
if
(
alert
!=
null
)
{
send
(
alert
);
}
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
break
;
}
}
}
@Override
public
String
getName
()
{
return
"send-executor"
;
}
@Override
public
void
shutdown
()
{
}
}
public
void
setWeixinDispatcher
(
Dispatcher
dispatcher
)
{
m_weixinDispatcher
=
dispatcher
;
@Override
public
void
initialize
()
throws
InitializationException
{
Threads
.
forGroup
(
"Cat"
).
start
(
new
SendExecutor
());
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/DefaultDecorator.java
浏览文件 @
72cb183b
...
...
@@ -22,6 +22,12 @@ public abstract class DefaultDecorator implements Decorator {
protected
String
buildContactInfo
(
String
domainName
)
{
try
{
if
(
domainName
.
startsWith
(
"f5-"
))
{
domainName
=
domainName
.
substring
(
3
);
}
else
if
(
domainName
.
startsWith
(
"switch-"
))
{
domainName
=
domainName
.
substring
(
7
);
}
Project
project
=
m_projectDao
.
findByDomain
(
domainName
,
ProjectEntity
.
READSET_FULL
);
String
owners
=
project
.
getOwner
();
String
phones
=
project
.
getPhone
();
...
...
@@ -46,7 +52,7 @@ public abstract class DefaultDecorator implements Decorator {
try
{
StringBuilder
sb
=
new
StringBuilder
();
String
domain
=
alert
.
getGroup
();
String
date
=
m_fromat
.
format
(
alert
.
get
Alert
Date
());
String
date
=
m_fromat
.
format
(
alert
.
getDate
());
sb
.
append
(
"[CAT异常告警] [项目: "
).
append
(
domain
).
append
(
"] : "
);
sb
.
append
(
alert
.
getContent
()).
append
(
"[时间: "
).
append
(
date
).
append
(
"]"
);
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/dispatcher/WeixinDispatcher.java
已删除
100644 → 0
浏览文件 @
1e1ab773
package
com.dianping.cat.report.task.alert.sender.dispatcher
;
import
org.codehaus.plexus.logging.LogEnabled
;
import
org.codehaus.plexus.logging.Logger
;
import
org.unidal.lookup.annotation.Inject
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.message.Event
;
import
com.dianping.cat.report.task.alert.sender.AlertMessageEntity
;
import
com.dianping.cat.system.tool.MailSMS
;
public
class
WeixinDispatcher
implements
Dispatcher
,
LogEnabled
{
@Inject
private
MailSMS
m_mailSms
;
public
static
final
String
ID
=
"weixin"
;
private
Logger
m_logger
;
@Override
public
boolean
send
(
AlertMessageEntity
message
,
String
type
)
{
try
{
m_mailSms
.
sendWeiXin
(
message
.
getTitle
(),
message
.
getContent
(),
message
.
getGroup
(),
message
.
getReceiverString
());
String
messageStr
=
message
.
toString
();
Cat
.
logEvent
(
"AlertWeiixin"
,
type
,
Event
.
SUCCESS
,
messageStr
);
m_logger
.
info
(
"AlertWeiixin "
+
messageStr
);
return
true
;
}
catch
(
Exception
ex
)
{
Cat
.
logError
(
"send weixin error "
+
message
.
toString
(),
ex
);
return
false
;
}
}
@Override
public
String
getId
()
{
return
ID
;
}
@Override
public
void
enableLogging
(
Logger
logger
)
{
m_logger
=
logger
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/
Seeke
r.java
→
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/
Contacto
r.java
浏览文件 @
72cb183b
...
...
@@ -17,7 +17,7 @@ import com.dianping.cat.report.task.alert.sender.AlertChannel;
import
com.dianping.cat.system.config.AlertConfigManager
;
import
com.site.helper.Splitters
;
public
class
Seeke
r
{
public
class
Contacto
r
{
@Inject
protected
ProjectDao
m_projectDao
;
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/
dispatcher/MailDispatch
er.java
→
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/
sender/MailSend
er.java
浏览文件 @
72cb183b
package
com.dianping.cat.report.task.alert.sender.dispatcher
;
package
com.dianping.cat.report.task.alert.sender.sender
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.OutputStreamWriter
;
import
java.net.URL
;
import
java.net.URLConnection
;
import
java.util.List
;
import
org.codehaus.plexus.logging.LogEnabled
;
import
org.codehaus.plexus.logging.Logger
;
import
org.unidal.
lookup.annotation.Inject
;
import
org.unidal.
helper.Files
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.message.Event
;
import
com.dianping.cat.report.task.alert.sender.AlertMessageEntity
;
import
com.dianping.cat.system.tool.MailSMS
;
public
class
MailDispatcher
implements
Dispatcher
,
LogEnabled
{
@Inject
private
MailSMS
m_mailSms
;
public
class
MailSender
implements
Sender
,
LogEnabled
{
public
static
final
String
ID
=
"mail"
;
...
...
@@ -21,9 +24,14 @@ public class MailDispatcher implements Dispatcher, LogEnabled {
@Override
public
boolean
send
(
AlertMessageEntity
message
,
String
type
)
{
try
{
m_mailSms
.
sendEmail
(
message
.
getTitle
(),
message
.
getContent
(),
message
.
getReceivers
());
String
messageStr
=
message
.
toString
();
if
(!
sendEmail
(
message
))
{
Cat
.
logEvent
(
"AlertMailError"
,
type
,
Event
.
SUCCESS
,
messageStr
);
m_logger
.
info
(
"AlertMailError "
+
messageStr
);
return
false
;
}
Cat
.
logEvent
(
"AlertMail"
,
type
,
Event
.
SUCCESS
,
messageStr
);
m_logger
.
info
(
"AlertMail "
+
messageStr
);
return
true
;
...
...
@@ -33,6 +41,56 @@ public class MailDispatcher implements Dispatcher, LogEnabled {
}
}
private
boolean
sendEmail
(
AlertMessageEntity
message
)
{
String
title
=
message
.
getTitle
();
String
content
=
message
.
getContent
();
List
<
String
>
emails
=
message
.
getReceivers
();
StringBuilder
sb
=
new
StringBuilder
();
for
(
String
email
:
emails
)
{
InputStream
in
=
null
;
OutputStreamWriter
writer
=
null
;
try
{
title
=
title
.
replaceAll
(
","
,
" "
);
content
=
content
.
replaceAll
(
","
,
" "
);
String
value
=
title
+
","
+
content
;
URL
url
=
new
URL
(
"http://10.1.1.51/mail.v?type=1500&key=title,body&re=yong.you@dianping.com&to="
+
email
);
URLConnection
conn
=
url
.
openConnection
();
conn
.
setDoOutput
(
true
);
conn
.
setDoInput
(
true
);
writer
=
new
OutputStreamWriter
(
conn
.
getOutputStream
());
writer
.
write
(
"&value="
+
value
);
writer
.
flush
();
in
=
conn
.
getInputStream
();
String
result
=
Files
.
forIO
().
readFrom
(
in
,
"utf-8"
);
sb
.
append
(
result
).
append
(
""
);
}
catch
(
Exception
e
)
{
m_logger
.
error
(
e
.
getMessage
(),
e
);
}
finally
{
try
{
if
(
in
!=
null
)
{
in
.
close
();
}
if
(
writer
!=
null
)
{
writer
.
close
();
}
}
catch
(
IOException
e
)
{
}
}
}
if
(
sb
.
indexOf
(
"200"
)
>
-
1
)
{
return
true
;
}
else
{
return
false
;
}
}
@Override
public
String
getId
()
{
return
ID
;
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/
dispatcher/Dispatch
er.java
→
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/
sender/Send
er.java
浏览文件 @
72cb183b
package
com.dianping.cat.report.task.alert.sender.
dispatch
er
;
package
com.dianping.cat.report.task.alert.sender.
send
er
;
import
com.dianping.cat.report.task.alert.sender.AlertMessageEntity
;
public
interface
Dispatch
er
{
public
interface
Send
er
{
String
getId
();
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/sender/SenderManager.java
0 → 100644
浏览文件 @
72cb183b
package
com.dianping.cat.report.task.alert.sender.sender
;
import
java.util.HashMap
;
import
java.util.Map
;
import
org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable
;
import
org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException
;
import
org.unidal.lookup.annotation.Inject
;
import
com.dianping.cat.report.task.alert.sender.AlertMessageEntity
;
public
class
SenderManager
implements
Initializable
{
@Inject
(
type
=
Sender
.
class
,
value
=
MailSender
.
ID
)
protected
Sender
m_mailSender
;
@Inject
(
type
=
Sender
.
class
,
value
=
WeixinSender
.
ID
)
protected
Sender
m_weixinSender
;
@Inject
(
type
=
Sender
.
class
,
value
=
SmsSender
.
ID
)
protected
Sender
m_smsSender
;
private
Map
<
String
,
Sender
>
m_senders
=
new
HashMap
<
String
,
Sender
>();
@Override
public
void
initialize
()
throws
InitializationException
{
m_senders
.
put
(
m_mailSender
.
getId
(),
m_mailSender
);
m_senders
.
put
(
m_weixinSender
.
getId
(),
m_weixinSender
);
m_senders
.
put
(
m_smsSender
.
getId
(),
m_smsSender
);
}
public
boolean
sendAlert
(
String
channelName
,
String
type
,
AlertMessageEntity
message
)
{
Sender
sender
=
m_senders
.
get
(
channelName
);
return
sender
.
send
(
message
,
type
);
}
public
void
setMailSender
(
Sender
sender
)
{
m_mailSender
=
sender
;
}
public
void
setSmsSender
(
Sender
sender
)
{
m_smsSender
=
sender
;
}
public
void
setWeixinSender
(
Sender
sender
)
{
m_weixinSender
=
sender
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/
dispatcher/SmsDispatch
er.java
→
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/
sender/SmsSend
er.java
浏览文件 @
72cb183b
package
com.dianping.cat.report.task.alert.sender.dispatcher
;
package
com.dianping.cat.report.task.alert.sender.sender
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.net.URL
;
import
java.net.URLConnection
;
import
java.net.URLEncoder
;
import
java.util.List
;
import
org.codehaus.plexus.logging.LogEnabled
;
import
org.codehaus.plexus.logging.Logger
;
import
org.unidal.
lookup.annotation.Inject
;
import
org.unidal.
helper.Files
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.message.Event
;
import
com.dianping.cat.report.task.alert.sender.AlertMessageEntity
;
import
com.dianping.cat.system.tool.MailSMS
;
public
class
SmsDispatcher
implements
Dispatcher
,
LogEnabled
{
@Inject
private
MailSMS
m_mailSms
;
public
class
SmsSender
implements
Sender
,
LogEnabled
{
public
static
final
String
ID
=
"sms"
;
...
...
@@ -21,9 +24,14 @@ public class SmsDispatcher implements Dispatcher, LogEnabled {
@Override
public
boolean
send
(
AlertMessageEntity
message
,
String
type
)
{
try
{
m_mailSms
.
sendSms
(
message
.
getTitle
()
+
message
.
getContent
(),
null
,
message
.
getReceivers
());
String
messageStr
=
message
.
toString
();
if
(!
sendSms
(
message
))
{
Cat
.
logEvent
(
"AlertSmsError"
,
type
,
Event
.
SUCCESS
,
messageStr
);
m_logger
.
info
(
"AlertSmsError "
+
messageStr
);
return
false
;
}
Cat
.
logEvent
(
"AlertSms"
,
type
,
Event
.
SUCCESS
,
messageStr
);
m_logger
.
info
(
"AlertSms "
+
messageStr
);
return
true
;
...
...
@@ -33,6 +41,39 @@ public class SmsDispatcher implements Dispatcher, LogEnabled {
}
}
private
boolean
sendSms
(
AlertMessageEntity
message
)
{
String
content
=
message
.
getTitle
()
+
" "
+
message
.
getContent
();
List
<
String
>
phones
=
message
.
getReceivers
();
StringBuilder
sb
=
new
StringBuilder
();
for
(
String
phone
:
phones
)
{
InputStream
in
=
null
;
try
{
String
format
=
"http://10.1.1.84/sms/send/json?jsonm={type:808,mobile:\"%s\",pair:{body=\"%s\"}}"
;
String
urlAddress
=
String
.
format
(
format
,
phone
,
URLEncoder
.
encode
(
content
,
"utf-8"
));
URL
url
=
new
URL
(
urlAddress
);
URLConnection
conn
=
url
.
openConnection
();
in
=
conn
.
getInputStream
();
sb
.
append
(
Files
.
forIO
().
readFrom
(
in
,
"utf-8"
)).
append
(
""
);
}
catch
(
Exception
e
)
{
m_logger
.
error
(
e
.
getMessage
(),
e
);
}
finally
{
try
{
if
(
in
!=
null
)
{
in
.
close
();
}
}
catch
(
IOException
e
)
{
}
}
}
if
(
sb
.
indexOf
(
"200"
)
>
-
1
)
{
return
true
;
}
else
{
return
false
;
}
}
@Override
public
String
getId
()
{
return
ID
;
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/sender/WeixinSender.java
0 → 100644
浏览文件 @
72cb183b
package
com.dianping.cat.report.task.alert.sender.sender
;
import
java.io.BufferedReader
;
import
java.io.DataOutputStream
;
import
java.io.InputStreamReader
;
import
java.io.UnsupportedEncodingException
;
import
java.net.HttpURLConnection
;
import
java.net.URL
;
import
java.net.URLEncoder
;
import
org.codehaus.plexus.logging.LogEnabled
;
import
org.codehaus.plexus.logging.Logger
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.message.Event
;
import
com.dianping.cat.report.task.alert.sender.AlertMessageEntity
;
public
class
WeixinSender
implements
Sender
,
LogEnabled
{
private
static
final
String
WEIXIN_URL
=
"http://dpoa.api.dianping.com/app/monitor/cat/push"
;
private
static
final
String
SUCCESS_TEXT
=
"{\"success\":\"1\"}"
;
public
static
final
String
ID
=
"weixin"
;
private
Logger
m_logger
;
@Override
public
boolean
send
(
AlertMessageEntity
message
,
String
type
)
{
try
{
String
messageStr
=
message
.
toString
();
if
(!
sendWeixin
(
message
,
type
))
{
Cat
.
logEvent
(
"AlertWeixinError"
,
type
,
Event
.
SUCCESS
,
messageStr
);
m_logger
.
info
(
"AlertWeixinError "
+
messageStr
);
return
false
;
}
Cat
.
logEvent
(
"AlertWeiixin"
,
type
,
Event
.
SUCCESS
,
messageStr
);
m_logger
.
info
(
"AlertWeiixin "
+
messageStr
);
return
true
;
}
catch
(
Exception
ex
)
{
Cat
.
logError
(
"send weixin error "
+
message
.
toString
(),
ex
);
return
false
;
}
}
private
boolean
sendWeixin
(
AlertMessageEntity
message
,
String
type
)
{
String
domain
=
message
.
getGroup
();
String
title
=
message
.
getTitle
();
String
content
=
message
.
getContent
();
String
weixins
=
message
.
getReceiverString
();
String
urlDomain
=
null
;
String
urlTitle
=
null
;
String
urlContent
=
null
;
String
urlWeixins
=
null
;
String
urlType
=
null
;
try
{
urlDomain
=
URLEncoder
.
encode
(
domain
,
"UTF-8"
);
urlTitle
=
URLEncoder
.
encode
(
title
,
"UTF-8"
);
urlContent
=
URLEncoder
.
encode
(
content
.
replaceAll
(
"<a href.*(?=</a>)</a>"
,
""
),
"UTF-8"
);
urlWeixins
=
URLEncoder
.
encode
(
weixins
,
"UTF-8"
);
urlType
=
URLEncoder
.
encode
(
type
,
"UTF-8"
);
}
catch
(
UnsupportedEncodingException
e
)
{
Cat
.
logError
(
"transfer weixin content error:"
+
title
+
" "
+
content
+
" "
+
domain
+
" "
+
weixins
,
e
);
return
false
;
}
String
urlParameters
=
"domain="
+
urlDomain
+
"&email="
+
urlWeixins
+
"&title="
+
urlTitle
+
"&content="
+
urlContent
+
"&type="
+
urlType
;
try
{
HttpURLConnection
connection
=
(
HttpURLConnection
)
new
URL
(
WEIXIN_URL
).
openConnection
();
connection
.
setRequestMethod
(
"POST"
);
connection
.
setDoOutput
(
true
);
connection
.
setDoInput
(
true
);
connection
.
setUseCaches
(
false
);
DataOutputStream
wr
=
new
DataOutputStream
(
connection
.
getOutputStream
());
wr
.
writeBytes
(
urlParameters
);
wr
.
flush
();
wr
.
close
();
if
(
connection
.
getResponseCode
()
==
HttpURLConnection
.
HTTP_OK
)
{
BufferedReader
reader
=
new
BufferedReader
(
new
InputStreamReader
(
connection
.
getInputStream
()));
String
inputLine
;
StringBuilder
builder
=
new
StringBuilder
();
while
((
inputLine
=
reader
.
readLine
())
!=
null
)
{
builder
.
append
(
inputLine
);
}
reader
.
close
();
String
responseText
=
builder
.
toString
();
if
(
responseText
.
equals
(
SUCCESS_TEXT
))
{
Cat
.
logEvent
(
"WeiXinSend"
,
"send_success"
,
Event
.
SUCCESS
,
"send success:"
+
domain
+
" "
+
title
+
" "
+
content
+
" "
+
weixins
+
" "
+
responseText
);
return
true
;
}
else
{
Cat
.
logEvent
(
"WeiXinSend"
,
"send_fail"
,
Event
.
SUCCESS
,
"send fail:"
+
domain
+
" "
+
title
+
" "
+
content
+
" "
+
weixins
+
" "
+
responseText
);
return
false
;
}
}
else
{
Cat
.
logEvent
(
"WeiXinSend"
,
"network_fail"
,
Event
.
SUCCESS
,
"network fail:"
+
domain
+
" "
+
title
+
" "
+
content
+
" "
+
weixins
);
return
false
;
}
}
catch
(
Exception
ex
)
{
Cat
.
logEvent
(
"WeiXinSend"
,
"error"
,
Event
.
SUCCESS
,
"error:"
+
domain
+
" "
+
title
+
" "
+
content
+
" "
+
weixins
);
Cat
.
logError
(
"send weixin error:"
+
domain
+
" "
+
title
+
" "
+
content
+
" "
+
weixins
,
ex
);
return
false
;
}
}
@Override
public
String
getId
()
{
return
ID
;
}
@Override
public
void
enableLogging
(
Logger
logger
)
{
m_logger
=
logger
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/thirdParty/ThirdPartyAlert.java
浏览文件 @
72cb183b
...
...
@@ -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.
dispatcher.Dispatcher
Manager
;
import
com.dianping.cat.report.task.alert.sender.
Send
Manager
;
public
class
ThirdPartyAlert
implements
Task
{
@Inject
private
DispatcherManager
m_dispatcher
Manager
;
private
SendManager
m_send
Manager
;
private
static
final
long
DURATION
=
TimeUtil
.
ONE_MINUTE
;
...
...
@@ -83,7 +83,7 @@ public class ThirdPartyAlert implements Task {
builder
.
buildMetric
(
getName
()).
buildProductline
(
domain
).
buildType
(
getName
()).
buildGroup
(
domain
);
AlertEntity
alertEntity
=
builder
.
getAlertEntity
();
m_
dispatcherManager
.
send
(
alertEntity
);
m_
sendManager
.
addAlert
(
alertEntity
);
}
t
.
setStatus
(
Transaction
.
SUCCESS
);
}
catch
(
Exception
e
)
{
...
...
cat-home/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
72cb183b
...
...
@@ -564,34 +564,19 @@
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.
dispatcher.Dispatch
er
</role>
<role>
com.dianping.cat.report.task.alert.sender.
sender.Send
er
</role>
<role-hint>
mail
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.dispatcher.MailDispatcher
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.system.tool.MailSMS
</role>
</requirement>
</requirements>
<implementation>
com.dianping.cat.report.task.alert.sender.sender.MailSender
</implementation>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.
dispatcher.Dispatch
er
</role>
<role>
com.dianping.cat.report.task.alert.sender.
sender.Send
er
</role>
<role-hint>
sms
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.dispatcher.SmsDispatcher
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.system.tool.MailSMS
</role>
</requirement>
</requirements>
<implementation>
com.dianping.cat.report.task.alert.sender.sender.SmsSender
</implementation>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.
dispatcher.Dispatch
er
</role>
<role>
com.dianping.cat.report.task.alert.sender.
sender.Send
er
</role>
<role-hint>
weixin
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.dispatcher.WeixinDispatcher
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.system.tool.MailSMS
</role>
</requirement>
</requirements>
<implementation>
com.dianping.cat.report.task.alert.sender.sender.WeixinSender
</implementation>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.decorator.Decorator
</role>
...
...
@@ -654,8 +639,8 @@
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.receiver.
Seeke
r
</role>
<implementation>
com.dianping.cat.report.task.alert.sender.receiver.
Seeke
r
</implementation>
<role>
com.dianping.cat.report.task.alert.sender.receiver.
Contacto
r
</role>
<implementation>
com.dianping.cat.report.task.alert.sender.receiver.
Contacto
r
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
...
...
@@ -669,35 +654,44 @@
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.
dispatcher.Dispatch
erManager
</role>
<implementation>
com.dianping.cat.report.task.alert.sender.
dispatcher.Dispatch
erManager
</implementation>
<role>
com.dianping.cat.report.task.alert.sender.
sender.Send
erManager
</role>
<implementation>
com.dianping.cat.report.task.alert.sender.
sender.Send
erManager
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.system.config.AlertPolicyManager
</role>
<role>
com.dianping.cat.report.task.alert.sender.sender.Sender
</role>
<role-hint>
mail
</role-hint>
<field-name>
mailSender
</field-name>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.decorator.DecoratorManager
</role>
<role>
com.dianping.cat.report.task.alert.sender.sender.Sender
</role>
<role-hint>
weixin
</role-hint>
<field-name>
weixinSender
</field-name>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.receiver.Seeker
</role>
<role>
com.dianping.cat.report.task.alert.sender.sender.Sender
</role>
<role-hint>
sms
</role-hint>
<field-name>
smsSender
</field-name>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.SendManager
</role>
<implementation>
com.dianping.cat.report.task.alert.sender.SendManager
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.
report.task.alert.manager.Alert
Manager
</role>
<role>
com.dianping.cat.
system.config.AlertPolicy
Manager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.dispatcher.Dispatcher
</role>
<role-hint>
mail
</role-hint>
<field-name>
mailDispatcher
</field-name>
<role>
com.dianping.cat.report.task.alert.sender.decorator.DecoratorManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.dispatcher.Dispatcher
</role>
<role-hint>
weixin
</role-hint>
<field-name>
weixinDispatcher
</field-name>
<role>
com.dianping.cat.report.task.alert.sender.receiver.Contactor
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.dispatcher.Dispatcher
</role>
<role-hint>
sms
</role-hint>
<field-name>
smsDispatcher
</field-name>
<role>
com.dianping.cat.report.task.alert.manager.AlertManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.sender.SenderManager
</role>
</requirement>
</requirements>
</component>
...
...
@@ -727,7 +721,7 @@
<role>
com.dianping.cat.report.task.alert.DataChecker
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.
dispatcher.Dispatcher
Manager
</role>
<role>
com.dianping.cat.report.task.alert.sender.
Send
Manager
</role>
</requirement>
</requirements>
</component>
...
...
@@ -754,7 +748,7 @@
<role>
com.dianping.cat.report.task.alert.DataChecker
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.
dispatcher.Dispatcher
Manager
</role>
<role>
com.dianping.cat.report.task.alert.sender.
Send
Manager
</role>
</requirement>
</requirements>
</component>
...
...
@@ -781,7 +775,7 @@
<role>
com.dianping.cat.report.task.alert.DataChecker
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.
dispatcher.Dispatcher
Manager
</role>
<role>
com.dianping.cat.report.task.alert.sender.
Send
Manager
</role>
</requirement>
</requirements>
</component>
...
...
@@ -805,7 +799,7 @@
<role>
com.dianping.cat.report.task.alert.exception.AlertExceptionBuilder
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.
dispatcher.Dispatcher
Manager
</role>
<role>
com.dianping.cat.report.task.alert.sender.
Send
Manager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.page.model.spi.ModelService
</role>
...
...
@@ -818,7 +812,7 @@
<implementation>
com.dianping.cat.report.task.alert.thirdParty.ThirdPartyAlert
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.
dispatcher.Dispatcher
Manager
</role>
<role>
com.dianping.cat.report.task.alert.sender.
Send
Manager
</role>
</requirement>
</requirements>
</component>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录