Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
853e72c5
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,发现更多精彩内容 >>
提交
853e72c5
编写于
7月 29, 2014
作者:
Y
youyong205
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #422 from leonindy/master
refactor receiver, decorator module
上级
4e4ccdae
e0ecaf7e
变更
41
隐藏空白更改
内联
并排
Showing
41 changed file
with
1055 addition
and
485 deletion
+1055
-485
cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
...n/java/com/dianping/cat/build/ComponentsConfigurator.java
+65
-17
cat-home/src/main/java/com/dianping/cat/report/task/alert/business/BusinessAlert.java
...ianping/cat/report/task/alert/business/BusinessAlert.java
+2
-1
cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/ExceptionAlert.java
...nping/cat/report/task/alert/exception/ExceptionAlert.java
+2
-1
cat-home/src/main/java/com/dianping/cat/report/task/alert/network/NetworkAlert.java
.../dianping/cat/report/task/alert/network/NetworkAlert.java
+2
-1
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/AlertChannel.java
...m/dianping/cat/report/task/alert/sender/AlertChannel.java
+4
-4
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/AlertConstants.java
...dianping/cat/report/task/alert/sender/AlertConstants.java
+21
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/AlertManager.java
...m/dianping/cat/report/task/alert/sender/AlertManager.java
+12
-7
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/BusinessDecorator.java
...report/task/alert/sender/decorator/BusinessDecorator.java
+23
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/Decorator2.java
...ng/cat/report/task/alert/sender/decorator/Decorator2.java
+0
-14
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/DecoratorManager.java
.../report/task/alert/sender/decorator/DecoratorManager.java
+35
-18
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/DefaultDecorator.java
.../report/task/alert/sender/decorator/DefaultDecorator.java
+3
-75
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/ExceptionDecorator.java
...eport/task/alert/sender/decorator/ExceptionDecorator.java
+43
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/NetworkDecorator.java
.../report/task/alert/sender/decorator/NetworkDecorator.java
+23
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/SmsDecorator.java
.../cat/report/task/alert/sender/decorator/SmsDecorator.java
+0
-31
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/SplitProcessor.java
...at/report/task/alert/sender/decorator/SplitProcessor.java
+0
-9
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/SystemDecorator.java
...t/report/task/alert/sender/decorator/SystemDecorator.java
+23
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/ThirdpartyDecorator.java
...port/task/alert/sender/decorator/ThirdpartyDecorator.java
+43
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/WeixinDecorator.java
...t/report/task/alert/sender/decorator/WeixinDecorator.java
+0
-30
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/BusinessContactor.java
.../report/task/alert/sender/receiver/BusinessContactor.java
+14
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/Contactor.java
...ping/cat/report/task/alert/sender/receiver/Contactor.java
+6
-212
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/Contactor2.java
...ing/cat/report/task/alert/sender/receiver/Contactor2.java
+0
-14
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/ContactorManager.java
...t/report/task/alert/sender/receiver/ContactorManager.java
+77
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/DefaultContactor.java
...t/report/task/alert/sender/receiver/DefaultContactor.java
+47
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/ExceptionContactor.java
...report/task/alert/sender/receiver/ExceptionContactor.java
+14
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/NetworkContactor.java
...t/report/task/alert/sender/receiver/NetworkContactor.java
+14
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/ProductlineContactor.java
...port/task/alert/sender/receiver/ProductlineContactor.java
+79
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/ProjectContactor.java
...t/report/task/alert/sender/receiver/ProjectContactor.java
+77
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/SystemContactor.java
...at/report/task/alert/sender/receiver/SystemContactor.java
+14
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/ThirdpartyContactor.java
...eport/task/alert/sender/receiver/ThirdpartyContactor.java
+14
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/sender/MailSender.java
...nping/cat/report/task/alert/sender/sender/MailSender.java
+83
-13
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/sender/SmsSender.java
...anping/cat/report/task/alert/sender/sender/SmsSender.java
+2
-1
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/sender/WeixinSender.java
...ing/cat/report/task/alert/sender/sender/WeixinSender.java
+9
-3
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/spliter/MailSpliter.java
...ing/cat/report/task/alert/sender/spliter/MailSpliter.java
+19
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/spliter/SmsSpliter.java
...ping/cat/report/task/alert/sender/spliter/SmsSpliter.java
+19
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/spliter/Spliter.java
...ianping/cat/report/task/alert/sender/spliter/Spliter.java
+9
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/spliter/SpliterManager.java
.../cat/report/task/alert/sender/spliter/SpliterManager.java
+47
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/spliter/WeixinSpliter.java
...g/cat/report/task/alert/sender/spliter/WeixinSpliter.java
+19
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/system/SystemAlert.java
...om/dianping/cat/report/task/alert/system/SystemAlert.java
+2
-1
cat-home/src/main/java/com/dianping/cat/report/task/alert/thirdParty/ThirdPartyAlert.java
...ing/cat/report/task/alert/thirdParty/ThirdPartyAlert.java
+2
-1
cat-home/src/main/java/com/dianping/cat/system/config/AlertPolicyManager.java
...va/com/dianping/cat/system/config/AlertPolicyManager.java
+2
-2
cat-home/src/main/resources/META-INF/plexus/components.xml
cat-home/src/main/resources/META-INF/plexus/components.xml
+185
-30
未找到文件。
cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
浏览文件 @
853e72c5
...
...
@@ -67,17 +67,30 @@ import com.dianping.cat.report.task.alert.exception.ExceptionAlert;
import
com.dianping.cat.report.task.alert.manager.AlertEntityService
;
import
com.dianping.cat.report.task.alert.network.NetworkAlert
;
import
com.dianping.cat.report.task.alert.sender.AlertManager
;
import
com.dianping.cat.report.task.alert.sender.decorator.BusinessDecorator
;
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.decorator.ExceptionDecorator
;
import
com.dianping.cat.report.task.alert.sender.decorator.NetworkDecorator
;
import
com.dianping.cat.report.task.alert.sender.decorator.SystemDecorator
;
import
com.dianping.cat.report.task.alert.sender.decorator.ThirdpartyDecorator
;
import
com.dianping.cat.report.task.alert.sender.receiver.BusinessContactor
;
import
com.dianping.cat.report.task.alert.sender.receiver.Contactor
;
import
com.dianping.cat.report.task.alert.sender.receiver.ContactorManager
;
import
com.dianping.cat.report.task.alert.sender.receiver.ExceptionContactor
;
import
com.dianping.cat.report.task.alert.sender.receiver.NetworkContactor
;
import
com.dianping.cat.report.task.alert.sender.receiver.SystemContactor
;
import
com.dianping.cat.report.task.alert.sender.receiver.ThirdpartyContactor
;
import
com.dianping.cat.report.task.alert.sender.sender.MailSender
;
import
com.dianping.cat.report.task.alert.sender.sender.Sender
;
import
com.dianping.cat.report.task.alert.sender.sender.SenderManager
;
import
com.dianping.cat.report.task.alert.sender.sender.SmsSender
;
import
com.dianping.cat.report.task.alert.sender.sender.WeixinSender
;
import
com.dianping.cat.report.task.alert.sender.spliter.MailSpliter
;
import
com.dianping.cat.report.task.alert.sender.spliter.SmsSpliter
;
import
com.dianping.cat.report.task.alert.sender.spliter.Spliter
;
import
com.dianping.cat.report.task.alert.sender.spliter.SpliterManager
;
import
com.dianping.cat.report.task.alert.sender.spliter.WeixinSpliter
;
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
;
...
...
@@ -119,31 +132,65 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
DataChecker
.
class
,
DefaultDataChecker
.
class
));
all
.
add
(
C
(
RemoteMetricReportService
.
class
).
req
(
ServerConfigManager
.
class
));
all
.
add
(
C
(
Sender
.
class
,
MailSender
.
ID
,
MailSender
.
class
));
all
.
add
(
C
(
Contactor
.
class
,
BusinessContactor
.
ID
,
BusinessContactor
.
class
).
req
(
ProjectDao
.
class
,
AlertConfigManager
.
class
));
all
.
add
(
C
(
Sender
.
class
,
SmsSender
.
ID
,
SmsSender
.
class
));
all
.
add
(
C
(
Contactor
.
class
,
NetworkContactor
.
ID
,
NetworkContactor
.
class
).
req
(
ProjectDao
.
class
,
AlertConfigManager
.
class
));
all
.
add
(
C
(
Sender
.
class
,
WeixinSender
.
ID
,
WeixinSender
.
class
));
all
.
add
(
C
(
Contactor
.
class
,
SystemContactor
.
ID
,
SystemContactor
.
class
).
req
(
ProjectDao
.
class
,
AlertConfigManager
.
class
));
all
.
add
(
C
(
Contactor
.
class
,
ExceptionContactor
.
ID
,
ExceptionContactor
.
class
).
req
(
ProductLineConfigManager
.
class
,
AlertConfigManager
.
class
));
all
.
add
(
C
(
Contactor
.
class
,
ThirdpartyContactor
.
ID
,
ThirdpartyContactor
.
class
).
req
(
ProductLineConfigManager
.
class
,
AlertConfigManager
.
class
));
all
.
add
(
C
(
ContactorManager
.
class
).
req
(
Contactor
.
class
,
BusinessContactor
.
ID
,
"businessContactor"
)
.
req
(
Contactor
.
class
,
NetworkContactor
.
ID
,
"networkContactor"
)
.
req
(
Contactor
.
class
,
SystemContactor
.
ID
,
"exceptionContactor"
)
.
req
(
Contactor
.
class
,
ExceptionContactor
.
ID
,
"systemContactor"
)
.
req
(
Contactor
.
class
,
ThirdpartyContactor
.
ID
,
"thirdpartyContactor"
));
all
.
add
(
C
(
Decorator
.
class
,
BusinessDecorator
.
ID
,
BusinessDecorator
.
class
).
req
(
ProjectDao
.
class
));
all
.
add
(
C
(
Decorator
.
class
,
NetworkDecorator
.
ID
,
NetworkDecorator
.
class
).
req
(
ProjectDao
.
class
));
all
.
add
(
C
(
Decorator
.
class
,
ExceptionDecorator
.
ID
,
ExceptionDecorator
.
class
).
req
(
ProjectDao
.
class
));
all
.
add
(
C
(
Decorator
.
class
,
MailDecorator
.
ID
,
Mail
Decorator
.
class
).
req
(
ProjectDao
.
class
));
all
.
add
(
C
(
Decorator
.
class
,
SystemDecorator
.
ID
,
System
Decorator
.
class
).
req
(
ProjectDao
.
class
));
all
.
add
(
C
(
Decorator
.
class
,
SmsDecorator
.
ID
,
Sms
Decorator
.
class
).
req
(
ProjectDao
.
class
));
all
.
add
(
C
(
Decorator
.
class
,
ThirdpartyDecorator
.
ID
,
Thirdparty
Decorator
.
class
).
req
(
ProjectDao
.
class
));
all
.
add
(
C
(
Decorator
.
class
,
WeixinDecorator
.
ID
,
WeixinDecorator
.
class
).
req
(
ProjectDao
.
class
));
all
.
add
(
C
(
DecoratorManager
.
class
).
req
(
Decorator
.
class
,
BusinessDecorator
.
ID
,
"businessDecorator"
)
.
req
(
Decorator
.
class
,
NetworkDecorator
.
ID
,
"networkDecorator"
)
.
req
(
Decorator
.
class
,
ExceptionDecorator
.
ID
,
"exceptionDecorator"
)
.
req
(
Decorator
.
class
,
SystemDecorator
.
ID
,
"systemDecorator"
)
.
req
(
Decorator
.
class
,
ThirdpartyDecorator
.
ID
,
"thirdpartyDecorator"
));
all
.
add
(
C
(
AlertPolicyManager
.
class
).
req
(
ConfigDao
.
class
));
all
.
add
(
C
(
DecoratorManager
.
class
).
req
(
Decorator
.
class
,
MailDecorator
.
ID
,
"mailDecorator"
)
.
req
(
Decorator
.
class
,
SmsDecorator
.
ID
,
"smsDecorator"
)
.
req
(
Decorator
.
class
,
WeixinDecorator
.
ID
,
"weixinDecorator"
));
all
.
add
(
C
(
Spliter
.
class
,
MailSpliter
.
ID
,
MailSpliter
.
class
));
all
.
add
(
C
(
Contactor
.
class
).
req
(
ProjectDao
.
class
,
ProductLineConfigManager
.
class
,
AlertConfigManager
.
class
));
all
.
add
(
C
(
Spliter
.
class
,
SmsSpliter
.
ID
,
SmsSpliter
.
class
));
all
.
add
(
C
(
Spliter
.
class
,
WeixinSpliter
.
ID
,
WeixinSpliter
.
class
));
all
.
add
(
C
(
SpliterManager
.
class
).
req
(
Spliter
.
class
,
MailSpliter
.
ID
,
"mailSpliter"
)
.
req
(
Spliter
.
class
,
SmsSpliter
.
ID
,
"smsSpliter"
).
req
(
Spliter
.
class
,
WeixinSpliter
.
ID
,
"weixinSpliter"
));
all
.
add
(
C
(
Sender
.
class
,
MailSender
.
ID
,
MailSender
.
class
).
req
(
ServerConfigManager
.
class
));
all
.
add
(
C
(
Sender
.
class
,
SmsSender
.
ID
,
SmsSender
.
class
));
all
.
add
(
C
(
Sender
.
class
,
WeixinSender
.
ID
,
WeixinSender
.
class
));
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
(
AlertManager
.
class
).
req
(
AlertPolicyManager
.
class
,
DecoratorManager
.
class
,
Contactor
.
class
,
AlertEntityService
.
class
,
SenderManager
.
class
));
all
.
add
(
C
(
AlertManager
.
class
).
req
(
AlertPolicyManager
.
class
,
DecoratorManager
.
class
,
Contactor
Manager
.
class
,
AlertEntityService
.
class
,
S
pliterManager
.
class
,
S
enderManager
.
class
));
all
.
add
(
C
(
BusinessAlert
.
class
).
req
(
MetricConfigManager
.
class
,
ProductLineConfigManager
.
class
,
BaselineService
.
class
,
AlertInfo
.
class
).
req
(
RemoteMetricReportService
.
class
,
...
...
@@ -157,8 +204,9 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
AlertExceptionBuilder
.
class
).
req
(
ExceptionConfigManager
.
class
));
all
.
add
(
C
(
ExceptionAlert
.
class
).
req
(
ExceptionConfigManager
.
class
,
AlertExceptionBuilder
.
class
,
AlertManager
.
class
)
.
req
(
ModelService
.
class
,
TopAnalyzer
.
ID
));
all
.
add
(
C
(
ExceptionAlert
.
class
)
.
req
(
ExceptionConfigManager
.
class
,
AlertExceptionBuilder
.
class
,
AlertManager
.
class
).
req
(
ModelService
.
class
,
TopAnalyzer
.
ID
));
all
.
add
(
C
(
ThirdPartyAlert
.
class
).
req
(
AlertManager
.
class
));
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/business/BusinessAlert.java
浏览文件 @
853e72c5
...
...
@@ -18,12 +18,13 @@ import com.dianping.cat.message.Transaction;
import
com.dianping.cat.report.task.alert.AlertResultEntity
;
import
com.dianping.cat.report.task.alert.BaseAlert
;
import
com.dianping.cat.report.task.alert.MetricType
;
import
com.dianping.cat.report.task.alert.sender.AlertConstants
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity.AlertEntityBuilder
;
public
class
BusinessAlert
extends
BaseAlert
implements
Task
,
LogEnabled
{
public
static
String
ID
=
"business"
;
public
static
String
ID
=
AlertConstants
.
BUSINESS
;
@Inject
protected
MetricConfigManager
m_metricConfigManager
;
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/ExceptionAlert.java
浏览文件 @
853e72c5
...
...
@@ -21,6 +21,7 @@ import com.dianping.cat.report.page.model.spi.ModelService;
import
com.dianping.cat.report.page.top.TopMetric
;
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.AlertConstants
;
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.AlertManager
;
...
...
@@ -56,7 +57,7 @@ public class ExceptionAlert implements Task {
}
public
String
getName
()
{
return
"exception"
;
return
AlertConstants
.
EXCEPTION
;
}
private
TopReport
queryTopReport
(
Date
start
)
{
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/network/NetworkAlert.java
浏览文件 @
853e72c5
...
...
@@ -11,6 +11,7 @@ import com.dianping.cat.Cat;
import
com.dianping.cat.consumer.company.model.entity.ProductLine
;
import
com.dianping.cat.message.Transaction
;
import
com.dianping.cat.report.task.alert.BaseAlert
;
import
com.dianping.cat.report.task.alert.sender.AlertConstants
;
public
class
NetworkAlert
extends
BaseAlert
implements
Task
,
LogEnabled
{
...
...
@@ -21,7 +22,7 @@ public class NetworkAlert extends BaseAlert implements Task, LogEnabled {
@Override
public
String
getName
()
{
return
"network"
;
return
AlertConstants
.
NETWORK
;
}
@Override
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/AlertChannel.java
浏览文件 @
853e72c5
...
...
@@ -2,17 +2,17 @@ package com.dianping.cat.report.task.alert.sender;
public
enum
AlertChannel
{
MAIL
(
"mail"
),
MAIL
(
AlertConstants
.
MAIL
),
SMS
(
"sms"
),
SMS
(
AlertConstants
.
SMS
),
WEIXIN
(
"weixin"
);
WEIXIN
(
AlertConstants
.
WEIXIN
);
private
String
m_name
;
public
static
AlertChannel
findByName
(
String
name
)
{
for
(
AlertChannel
channel
:
values
())
{
if
(
channel
.
getName
().
equals
(
name
))
{
if
(
channel
.
getName
().
equals
(
name
))
{
return
channel
;
}
}
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/AlertConstants.java
0 → 100644
浏览文件 @
853e72c5
package
com.dianping.cat.report.task.alert.sender
;
public
class
AlertConstants
{
public
static
final
String
BUSINESS
=
"business"
;
public
static
final
String
EXCEPTION
=
"exception"
;
public
static
final
String
NETWORK
=
"network"
;
public
static
final
String
SYSTEM
=
"system"
;
public
static
final
String
THIRDPARTY
=
"thirdParty"
;
public
static
final
String
MAIL
=
"mail"
;
public
static
final
String
SMS
=
"sms"
;
public
static
final
String
WEIXIN
=
"weixin"
;
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/AlertManager.java
浏览文件 @
853e72c5
...
...
@@ -15,8 +15,9 @@ import org.unidal.tuple.Pair;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.report.task.alert.manager.AlertEntityService
;
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.receiver.Contactor
Manager
;
import
com.dianping.cat.report.task.alert.sender.sender.SenderManager
;
import
com.dianping.cat.report.task.alert.sender.spliter.SpliterManager
;
import
com.dianping.cat.system.config.AlertPolicyManager
;
public
class
AlertManager
implements
Initializable
{
...
...
@@ -28,15 +29,18 @@ public class AlertManager implements Initializable {
private
DecoratorManager
m_decoratorManager
;
@Inject
private
Contactor
m_contacto
r
;
private
Contactor
Manager
m_contactorManage
r
;
@Inject
protected
AlertEntityService
m_alertEntityService
;
@Inject
protected
SpliterManager
m_splitterManager
;
@Inject
protected
SenderManager
m_senderManager
;
private
BlockingQueue
<
AlertEntity
>
m_alerts
=
new
LinkedBlockingDeque
<
AlertEntity
>();
private
BlockingQueue
<
AlertEntity
>
m_alerts
=
new
LinkedBlockingDeque
<
AlertEntity
>(
10000
);
private
boolean
send
(
AlertEntity
alert
)
{
boolean
result
=
false
;
...
...
@@ -47,10 +51,11 @@ public class AlertManager implements Initializable {
for
(
AlertChannel
channel
:
channels
)
{
String
channelName
=
channel
.
getName
();
Pair
<
String
,
String
>
pair
=
m_decoratorManager
.
generateTitleAndContent
(
alert
,
channelName
);
List
<
String
>
receivers
=
m_contactor
.
queryReceivers
(
group
,
channel
,
type
);
String
content
=
pair
.
getValue
();
AlertMessageEntity
message
=
new
AlertMessageEntity
(
group
,
pair
.
getKey
(),
content
,
receivers
);
Pair
<
String
,
String
>
pair
=
m_decoratorManager
.
generateTitleAndContent
(
alert
);
String
title
=
pair
.
getKey
();
String
content
=
m_splitterManager
.
process
(
pair
.
getValue
(),
channelName
);
List
<
String
>
receivers
=
m_contactorManager
.
queryReceivers
(
group
,
channelName
,
type
);
AlertMessageEntity
message
=
new
AlertMessageEntity
(
group
,
title
,
content
,
receivers
);
m_alertEntityService
.
storeAlert
(
alert
,
message
);
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/
Mail
Decorator.java
→
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/
Business
Decorator.java
浏览文件 @
853e72c5
package
com.dianping.cat.report.task.alert.sender.decorator
;
import
com.dianping.cat.report.task.alert.sender.AlertConstants
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity
;
public
class
Mail
Decorator
extends
DefaultDecorator
{
public
class
Business
Decorator
extends
DefaultDecorator
{
public
static
final
String
ID
=
"mail"
;
public
static
final
String
ID
=
AlertConstants
.
BUSINESS
;
@Override
public
String
generateContent
(
AlertEntity
alert
)
{
String
content
;
if
(
"exception"
.
equals
(
alert
.
getType
()))
{
content
=
buildExceptionContent
(
alert
);
}
else
if
(
"thirdparty"
.
equals
(
alert
.
getType
()))
{
content
=
buildThirdPartyContent
(
alert
);
}
else
{
content
=
alert
.
getContent
();
}
return
content
+
buildContactInfo
(
alert
.
getGroup
());
public
String
getId
()
{
return
ID
;
}
@Override
public
String
getId
()
{
return
ID
;
public
String
generateTitle
(
AlertEntity
alert
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"[业务告警] [产品线 "
).
append
(
alert
.
getGroup
()).
append
(
"]"
);
sb
.
append
(
"[业务指标 "
).
append
(
alert
.
getMetric
()).
append
(
"]"
);
return
sb
.
toString
();
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/Decorator2.java
已删除
100644 → 0
浏览文件 @
4e4ccdae
package
com.dianping.cat.report.task.alert.sender.decorator
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity
;
public
interface
Decorator2
{
//return exeption,network,system...
public
String
getId
();
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
浏览文件 @
853e72c5
...
...
@@ -12,41 +12,58 @@ import com.dianping.cat.report.task.alert.sender.AlertEntity;
public
class
DecoratorManager
implements
Initializable
{
@Inject
(
type
=
Decorator
.
class
,
value
=
Mail
Decorator
.
ID
)
private
Decorator
m_
mail
Decorator
;
@Inject
(
type
=
Decorator
.
class
,
value
=
Business
Decorator
.
ID
)
private
Decorator
m_
business
Decorator
;
@Inject
(
type
=
Decorator
.
class
,
value
=
Weixin
Decorator
.
ID
)
private
Decorator
m_
weixin
Decorator
;
@Inject
(
type
=
Decorator
.
class
,
value
=
Network
Decorator
.
ID
)
private
Decorator
m_
network
Decorator
;
@Inject
(
type
=
Decorator
.
class
,
value
=
SmsDecorator
.
ID
)
private
Decorator
m_smsDecorator
;
@Inject
(
type
=
Decorator
.
class
,
value
=
ExceptionDecorator
.
ID
)
private
Decorator
m_exceptionDecorator
;
@Inject
(
type
=
Decorator
.
class
,
value
=
SystemDecorator
.
ID
)
private
Decorator
m_systemDecorator
;
@Inject
(
type
=
Decorator
.
class
,
value
=
ThirdpartyDecorator
.
ID
)
private
Decorator
m_thirdpartyDecorator
;
private
Map
<
String
,
Decorator
>
m_decorators
=
new
HashMap
<
String
,
Decorator
>();
public
Pair
<
String
,
String
>
generateTitleAndContent
(
AlertEntity
alert
,
String
channelName
)
{
Decorator
decorator
=
m_decorators
.
get
(
channelName
);
public
Pair
<
String
,
String
>
generateTitleAndContent
(
AlertEntity
alert
)
{
Decorator
decorator
=
m_decorators
.
get
(
alert
.
getType
()
);
String
title
=
decorator
.
generateTitle
(
alert
);
String
content
=
decorator
.
generateContent
(
alert
);
return
new
Pair
<
String
,
String
>(
title
,
content
);
}
@Override
public
void
initialize
()
throws
InitializationException
{
m_decorators
.
put
(
m_mailDecorator
.
getId
(),
m_mailDecorator
);
m_decorators
.
put
(
m_weixinDecorator
.
getId
(),
m_weixinDecorator
);
m_decorators
.
put
(
m_smsDecorator
.
getId
(),
m_smsDecorator
);
m_decorators
.
put
(
m_businessDecorator
.
getId
(),
m_businessDecorator
);
m_decorators
.
put
(
m_networkDecorator
.
getId
(),
m_networkDecorator
);
m_decorators
.
put
(
m_exceptionDecorator
.
getId
(),
m_exceptionDecorator
);
m_decorators
.
put
(
m_systemDecorator
.
getId
(),
m_systemDecorator
);
m_decorators
.
put
(
m_thirdpartyDecorator
.
getId
(),
m_thirdpartyDecorator
);
}
public
void
setBusinessDecorator
(
Decorator
decorator
)
{
m_businessDecorator
=
decorator
;
}
public
void
setNetworkDecorator
(
Decorator
decorator
)
{
m_networkDecorator
=
decorator
;
}
public
void
set
Mail
Decorator
(
Decorator
decorator
)
{
m_
mail
Decorator
=
decorator
;
public
void
set
Exception
Decorator
(
Decorator
decorator
)
{
m_
exception
Decorator
=
decorator
;
}
public
void
setS
ms
Decorator
(
Decorator
decorator
)
{
m_s
ms
Decorator
=
decorator
;
public
void
setS
ystem
Decorator
(
Decorator
decorator
)
{
m_s
ystem
Decorator
=
decorator
;
}
public
void
set
Weixin
Decorator
(
Decorator
decorator
)
{
m_
weixin
Decorator
=
decorator
;
public
void
set
Thirdparty
Decorator
(
Decorator
decorator
)
{
m_
thirdparty
Decorator
=
decorator
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/DefaultDecorator.java
浏览文件 @
853e72c5
...
...
@@ -2,7 +2,6 @@ package com.dianping.cat.report.task.alert.sender.decorator;
import
java.text.DateFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
org.unidal.lookup.annotation.Inject
;
...
...
@@ -18,7 +17,7 @@ public abstract class DefaultDecorator implements Decorator {
@Inject
protected
ProjectDao
m_projectDao
;
pr
ivate
DateFormat
m_fromat
=
new
SimpleDateFormat
(
"yyyyMMdd
"
);
pr
otected
DateFormat
m_format
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm
"
);
protected
String
buildContactInfo
(
String
domainName
)
{
try
{
...
...
@@ -48,79 +47,8 @@ public abstract class DefaultDecorator implements Decorator {
return
""
;
}
protected
String
buildExceptionContent
(
AlertEntity
alert
)
{
try
{
StringBuilder
sb
=
new
StringBuilder
();
String
domain
=
alert
.
getGroup
();
String
date
=
m_fromat
.
format
(
alert
.
getDate
());
sb
.
append
(
"[CAT异常告警] [项目: "
).
append
(
domain
).
append
(
"] : "
);
sb
.
append
(
alert
.
getContent
()).
append
(
"[时间: "
).
append
(
date
).
append
(
"]"
);
sb
.
append
(
" <a href='"
).
append
(
"http://cat.dianpingoa.com/cat/r/p?domain="
).
append
(
domain
).
append
(
"&date="
)
.
append
(
date
).
append
(
"'>点击此处查看详情</a>"
).
append
(
"<br/>"
);
return
sb
.
toString
();
}
catch
(
Exception
ex
)
{
Cat
.
logError
(
"build exception content error:"
+
alert
.
toString
(),
ex
);
return
null
;
}
}
protected
String
buildThirdPartyContent
(
AlertEntity
alert
)
{
try
{
StringBuilder
sb
=
new
StringBuilder
();
String
time
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm"
).
format
(
new
Date
());
sb
.
append
(
"[CAT第三方告警] [项目: "
).
append
(
alert
.
getGroup
()).
append
(
"] : "
);
sb
.
append
(
alert
.
getContent
()).
append
(
"[时间: "
).
append
(
time
).
append
(
"]"
);
return
sb
.
toString
();
}
catch
(
Exception
ex
)
{
Cat
.
logError
(
"build third party content error:"
+
alert
.
toString
(),
ex
);
return
null
;
}
}
public
String
generateTitle
(
AlertEntity
alert
)
{
String
type
=
alert
.
getType
();
String
group
=
alert
.
getGroup
();
if
(
"business"
.
equals
(
type
))
{
StringBuilder
sb
=
new
StringBuilder
();
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
(
group
).
append
(
"]"
);
sb
.
append
(
"[网络指标 "
).
append
(
alert
.
getMetric
()).
append
(
"]"
);
return
sb
.
toString
();
}
if
(
"system"
.
equals
(
type
))
{
StringBuilder
sb
=
new
StringBuilder
();
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
(
group
).
append
(
"]"
);
return
sb
.
toString
();
}
if
(
"thidparty"
.
equals
(
type
))
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"[CAT第三方告警] [项目: "
).
append
(
group
).
append
(
"]"
);
return
sb
.
toString
();
}
return
""
;
public
String
generateContent
(
AlertEntity
alert
)
{
return
alert
.
getContent
()
+
buildContactInfo
(
alert
.
getGroup
());
}
public
abstract
String
generateContent
(
AlertEntity
alert
);
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/ExceptionDecorator.java
0 → 100644
浏览文件 @
853e72c5
package
com.dianping.cat.report.task.alert.sender.decorator
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.report.task.alert.sender.AlertConstants
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity
;
public
class
ExceptionDecorator
extends
DefaultDecorator
{
public
static
final
String
ID
=
AlertConstants
.
EXCEPTION
;
@Override
public
String
getId
()
{
return
ID
;
}
@Override
public
String
generateTitle
(
AlertEntity
alert
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"[CAT异常告警] [项目: "
).
append
(
alert
.
getGroup
()).
append
(
"]"
);
return
sb
.
toString
();
}
@Override
public
String
generateContent
(
AlertEntity
alert
)
{
try
{
StringBuilder
sb
=
new
StringBuilder
();
String
domain
=
alert
.
getGroup
();
String
date
=
m_format
.
format
(
alert
.
getDate
());
sb
.
append
(
"[CAT异常告警] [项目: "
).
append
(
domain
).
append
(
"] : "
);
sb
.
append
(
alert
.
getContent
()).
append
(
"[时间: "
).
append
(
date
).
append
(
"]"
);
sb
.
append
(
" <a href='"
).
append
(
"http://cat.dianpingoa.com/cat/r/p?domain="
).
append
(
domain
).
append
(
"&date="
)
.
append
(
date
).
append
(
"'>点击此处查看详情</a>"
).
append
(
"<br/>"
);
sb
.
append
(
buildContactInfo
(
domain
));
return
sb
.
toString
();
}
catch
(
Exception
ex
)
{
Cat
.
logError
(
"build exception content error:"
+
alert
.
toString
(),
ex
);
return
null
;
}
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/NetworkDecorator.java
0 → 100644
浏览文件 @
853e72c5
package
com.dianping.cat.report.task.alert.sender.decorator
;
import
com.dianping.cat.report.task.alert.sender.AlertConstants
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity
;
public
class
NetworkDecorator
extends
DefaultDecorator
{
public
static
final
String
ID
=
AlertConstants
.
NETWORK
;
@Override
public
String
getId
()
{
return
ID
;
}
@Override
public
String
generateTitle
(
AlertEntity
alert
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"[网络告警] [产品线 "
).
append
(
alert
.
getGroup
()).
append
(
"]"
);
sb
.
append
(
"[网络指标 "
).
append
(
alert
.
getMetric
()).
append
(
"]"
);
return
sb
.
toString
();
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/SmsDecorator.java
已删除
100644 → 0
浏览文件 @
4e4ccdae
package
com.dianping.cat.report.task.alert.sender.decorator
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity
;
public
class
SmsDecorator
extends
DefaultDecorator
{
public
static
final
String
ID
=
"sms"
;
@Override
public
String
generateContent
(
AlertEntity
alert
)
{
String
content
;
if
(
"exception"
.
equals
(
alert
.
getType
()))
{
content
=
buildExceptionContent
(
alert
);
}
else
if
(
"thirdparty"
.
equals
(
alert
.
getType
()))
{
content
=
buildThirdPartyContent
(
alert
);
}
else
{
content
=
alert
.
getContent
();
}
content
=
content
+
buildContactInfo
(
alert
.
getGroup
());
return
content
.
replaceAll
(
"<br/>"
,
" "
);
}
@Override
public
String
getId
()
{
return
ID
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/SplitProcessor.java
已删除
100644 → 0
浏览文件 @
4e4ccdae
package
com.dianping.cat.report.task.alert.sender.decorator
;
import
com.dianping.cat.report.task.alert.sender.AlertChannel
;
public
interface
SplitProcessor
{
public
String
process
(
String
content
,
AlertChannel
channel
);
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/SystemDecorator.java
0 → 100644
浏览文件 @
853e72c5
package
com.dianping.cat.report.task.alert.sender.decorator
;
import
com.dianping.cat.report.task.alert.sender.AlertConstants
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity
;
public
class
SystemDecorator
extends
DefaultDecorator
{
public
static
final
String
ID
=
AlertConstants
.
SYSTEM
;
@Override
public
String
getId
()
{
return
ID
;
}
@Override
public
String
generateTitle
(
AlertEntity
alert
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"[系统告警] [产品线 "
).
append
(
alert
.
getGroup
()).
append
(
"]"
);
sb
.
append
(
"[系统指标 "
).
append
(
alert
.
getMetric
()).
append
(
"]"
);
return
sb
.
toString
();
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/ThirdpartyDecorator.java
0 → 100644
浏览文件 @
853e72c5
package
com.dianping.cat.report.task.alert.sender.decorator
;
import
java.util.Date
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.report.task.alert.sender.AlertConstants
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity
;
public
class
ThirdpartyDecorator
extends
DefaultDecorator
{
public
static
final
String
ID
=
AlertConstants
.
THIRDPARTY
;
@Override
public
String
getId
()
{
return
ID
;
}
@Override
public
String
generateTitle
(
AlertEntity
alert
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"[CAT第三方告警] [项目: "
).
append
(
alert
.
getGroup
()).
append
(
"]"
);
return
sb
.
toString
();
}
@Override
public
String
generateContent
(
AlertEntity
alert
)
{
try
{
StringBuilder
sb
=
new
StringBuilder
();
String
time
=
m_format
.
format
(
new
Date
());
String
group
=
alert
.
getGroup
();
sb
.
append
(
"[CAT第三方告警] [项目: "
).
append
(
group
).
append
(
"] : "
);
sb
.
append
(
alert
.
getContent
()).
append
(
"[时间: "
).
append
(
time
).
append
(
"]"
);
sb
.
append
(
"<br/>"
).
append
(
buildContactInfo
(
group
));
return
sb
.
toString
();
}
catch
(
Exception
ex
)
{
Cat
.
logError
(
"build third party content error:"
+
alert
.
toString
(),
ex
);
return
null
;
}
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/WeixinDecorator.java
已删除
100644 → 0
浏览文件 @
4e4ccdae
package
com.dianping.cat.report.task.alert.sender.decorator
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity
;
public
class
WeixinDecorator
extends
DefaultDecorator
{
public
static
final
String
ID
=
"weixin"
;
@Override
public
String
generateContent
(
AlertEntity
alert
)
{
String
content
;
if
(
"exception"
.
equals
(
alert
.
getType
()))
{
content
=
buildExceptionContent
(
alert
);
}
else
if
(
"thirdparty"
.
equals
(
alert
.
getType
()))
{
content
=
buildThirdPartyContent
(
alert
);
}
else
{
content
=
alert
.
getContent
();
}
content
=
content
+
buildContactInfo
(
alert
.
getGroup
());
return
content
.
replaceAll
(
"<br/>"
,
"\n"
);
}
@Override
public
String
getId
()
{
return
ID
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/BusinessContactor.java
0 → 100644
浏览文件 @
853e72c5
package
com.dianping.cat.report.task.alert.sender.receiver
;
import
com.dianping.cat.report.task.alert.sender.AlertConstants
;
public
class
BusinessContactor
extends
ProductlineContactor
{
public
static
final
String
ID
=
AlertConstants
.
BUSINESS
;
@Override
public
String
getId
()
{
return
ID
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/Contactor.java
浏览文件 @
853e72c5
package
com.dianping.cat.report.task.alert.sender.receiver
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.unidal.dal.jdbc.DalException
;
import
org.unidal.lookup.annotation.Inject
;
public
interface
Contactor
{
import
com.dianping.cat.Cat
;
import
com.dianping.cat.consumer.company.model.entity.ProductLine
;
import
com.dianping.cat.consumer.metric.ProductLineConfigManager
;
import
com.dianping.cat.core.dal.Project
;
import
com.dianping.cat.core.dal.ProjectDao
;
import
com.dianping.cat.core.dal.ProjectEntity
;
import
com.dianping.cat.home.alert.config.entity.Receiver
;
import
com.dianping.cat.report.task.alert.sender.AlertChannel
;
import
com.dianping.cat.system.config.AlertConfigManager
;
import
com.site.helper.Splitters
;
public
String
getId
();
public
class
Contactor
{
public
List
<
String
>
queryEmailContactors
();
@Inject
protected
ProjectDao
m_projectDao
;
public
List
<
String
>
queryWeiXinContactors
();
@Inject
protected
ProductLineConfigManager
m_productLineConfigManager
;
@Inject
protected
AlertConfigManager
m_configManager
;
public
List
<
String
>
queryReceivers
(
String
productlineName
,
AlertChannel
channel
,
String
alertType
)
{
if
(
"exception"
.
equals
(
alertType
)
||
"thirdparty"
.
equals
(
alertType
))
{
return
queryReceiversByDomain
(
productlineName
,
channel
,
alertType
);
}
else
{
return
queryReceiversByProductline
(
productlineName
,
channel
,
alertType
);
}
}
public
List
<
String
>
queryReceiversByProductline
(
String
productlineName
,
AlertChannel
channel
,
String
type
)
{
ProductLine
productline
=
m_productLineConfigManager
.
queryProductLine
(
productlineName
);
if
(
channel
==
AlertChannel
.
MAIL
)
{
return
buildMailReceivers
(
productline
,
type
);
}
if
(
channel
==
AlertChannel
.
WEIXIN
)
{
return
buildWeixinReceivers
(
productline
,
type
);
}
if
(
channel
==
AlertChannel
.
SMS
)
{
return
buildSMSReceivers
(
productline
,
type
);
}
return
new
ArrayList
<
String
>();
}
public
List
<
String
>
queryReceiversByDomain
(
String
domainName
,
AlertChannel
channel
,
String
type
)
{
try
{
Project
project
=
m_projectDao
.
findByDomain
(
domainName
,
ProjectEntity
.
READSET_FULL
);
if
(
channel
==
AlertChannel
.
MAIL
)
{
return
buildMailReceivers
(
project
,
type
);
}
if
(
channel
==
AlertChannel
.
WEIXIN
)
{
return
buildWeixinReceivers
(
project
,
type
);
}
if
(
channel
==
AlertChannel
.
SMS
)
{
return
buildSMSReceivers
(
project
,
type
);
}
}
catch
(
DalException
e
)
{
Cat
.
logError
(
"query receivers error:"
+
domainName
+
" "
+
channel
+
" "
+
type
,
e
);
}
return
new
ArrayList
<
String
>();
}
private
List
<
String
>
buildMailReceivers
(
ProductLine
productLine
,
String
type
)
{
List
<
String
>
mailReceivers
=
new
ArrayList
<
String
>();
Receiver
receiver
=
m_configManager
.
queryReceiverById
(
type
);
if
(
receiver
!=
null
&&
!
receiver
.
isEnable
())
{
return
mailReceivers
;
}
else
{
mailReceivers
.
addAll
(
buildDefaultMailReceivers
(
receiver
));
mailReceivers
.
addAll
(
buildProductlineMailReceivers
(
productLine
));
return
mailReceivers
;
}
}
private
List
<
String
>
buildMailReceivers
(
Project
project
,
String
type
)
{
List
<
String
>
mailReceivers
=
new
ArrayList
<
String
>();
Receiver
receiver
=
m_configManager
.
queryReceiverById
(
type
);
if
(
receiver
!=
null
&&
!
receiver
.
isEnable
())
{
return
mailReceivers
;
}
else
{
mailReceivers
.
addAll
(
buildDefaultMailReceivers
(
receiver
));
mailReceivers
.
addAll
(
buildProjectMailReceivers
(
project
));
return
mailReceivers
;
}
}
private
List
<
String
>
buildDefaultMailReceivers
(
Receiver
receiver
)
{
List
<
String
>
mailReceivers
=
new
ArrayList
<
String
>();
if
(
receiver
!=
null
)
{
mailReceivers
.
addAll
(
receiver
.
getEmails
());
}
return
mailReceivers
;
}
private
List
<
String
>
buildProductlineMailReceivers
(
ProductLine
productLine
)
{
return
split
(
productLine
.
getEmail
());
}
private
List
<
String
>
buildProjectMailReceivers
(
Project
project
)
{
return
split
(
project
.
getEmail
());
}
private
List
<
String
>
buildSMSReceivers
(
ProductLine
productLine
,
String
type
)
{
List
<
String
>
smsReceivers
=
new
ArrayList
<
String
>();
Receiver
receiver
=
m_configManager
.
queryReceiverById
(
type
);
if
(
receiver
!=
null
&&
!
receiver
.
isEnable
())
{
return
smsReceivers
;
}
else
{
smsReceivers
.
addAll
(
buildDefaultSMSReceivers
(
receiver
));
smsReceivers
.
addAll
(
buildProductlineSMSReceivers
(
productLine
));
return
smsReceivers
;
}
}
private
List
<
String
>
buildSMSReceivers
(
Project
project
,
String
type
)
{
List
<
String
>
smsReceivers
=
new
ArrayList
<
String
>();
Receiver
receiver
=
m_configManager
.
queryReceiverById
(
type
);
if
(
receiver
!=
null
&&
!
receiver
.
isEnable
())
{
return
smsReceivers
;
}
else
{
smsReceivers
.
addAll
(
buildDefaultSMSReceivers
(
receiver
));
smsReceivers
.
addAll
(
buildProjectSMSReceivers
(
project
));
return
smsReceivers
;
}
}
private
List
<
String
>
buildDefaultSMSReceivers
(
Receiver
receiver
)
{
List
<
String
>
smsReceivers
=
new
ArrayList
<
String
>();
if
(
receiver
!=
null
)
{
smsReceivers
.
addAll
(
receiver
.
getPhones
());
}
return
smsReceivers
;
}
private
List
<
String
>
buildProductlineSMSReceivers
(
ProductLine
productLine
)
{
return
split
(
productLine
.
getPhone
());
}
private
List
<
String
>
buildProjectSMSReceivers
(
Project
project
)
{
return
split
(
project
.
getPhone
());
}
private
List
<
String
>
buildWeixinReceivers
(
Project
project
,
String
type
)
{
List
<
String
>
weixinReceivers
=
new
ArrayList
<
String
>();
Receiver
receiver
=
m_configManager
.
queryReceiverById
(
type
);
if
(
receiver
!=
null
&&
!
receiver
.
isEnable
())
{
return
weixinReceivers
;
}
else
{
weixinReceivers
.
addAll
(
buildDefaultWeixinReceivers
(
receiver
));
weixinReceivers
.
addAll
(
buildProjectMailReceivers
(
project
));
return
weixinReceivers
;
}
}
private
List
<
String
>
buildWeixinReceivers
(
ProductLine
productLine
,
String
type
)
{
List
<
String
>
weixinReceivers
=
new
ArrayList
<
String
>();
Receiver
receiver
=
m_configManager
.
queryReceiverById
(
type
);
if
(
receiver
!=
null
&&
!
receiver
.
isEnable
())
{
return
weixinReceivers
;
}
else
{
weixinReceivers
.
addAll
(
buildDefaultWeixinReceivers
(
receiver
));
weixinReceivers
.
addAll
(
buildProductlineWeixinReceivers
(
productLine
));
return
weixinReceivers
;
}
}
private
List
<
String
>
buildDefaultWeixinReceivers
(
Receiver
receiver
)
{
List
<
String
>
weixinReceivers
=
new
ArrayList
<
String
>();
if
(
receiver
!=
null
)
{
weixinReceivers
.
addAll
(
receiver
.
getWeixins
());
}
return
weixinReceivers
;
}
private
List
<
String
>
buildProductlineWeixinReceivers
(
ProductLine
productLine
)
{
return
split
(
productLine
.
getEmail
());
}
private
List
<
String
>
split
(
String
str
)
{
List
<
String
>
result
=
new
ArrayList
<
String
>();
if
(
str
!=
null
)
{
result
.
addAll
(
Splitters
.
by
(
","
).
noEmptyItem
().
split
(
str
));
}
return
result
;
}
public
List
<
String
>
querySmsContactors
();
public
void
setModule
(
String
id
);
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/Contactor2.java
已删除
100644 → 0
浏览文件 @
4e4ccdae
package
com.dianping.cat.report.task.alert.sender.receiver
;
import
java.util.List
;
public
interface
Contactor2
{
public
String
getId
();
public
List
<
String
>
queryEmailContactors
(
String
id
);
public
List
<
String
>
queryWeiXinContactors
(
String
id
);
public
List
<
String
>
querySmsContactors
(
String
id
);
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/ContactorManager.java
0 → 100644
浏览文件 @
853e72c5
package
com.dianping.cat.report.task.alert.sender.receiver
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
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.AlertConstants
;
public
class
ContactorManager
implements
Initializable
{
@Inject
(
type
=
Contactor
.
class
,
value
=
BusinessContactor
.
ID
)
private
Contactor
m_businessContactor
;
@Inject
(
type
=
Contactor
.
class
,
value
=
NetworkContactor
.
ID
)
private
Contactor
m_networkContactor
;
@Inject
(
type
=
Contactor
.
class
,
value
=
ExceptionContactor
.
ID
)
private
Contactor
m_exceptionContactor
;
@Inject
(
type
=
Contactor
.
class
,
value
=
SystemContactor
.
ID
)
private
Contactor
m_systemContactor
;
@Inject
(
type
=
Contactor
.
class
,
value
=
ThirdpartyContactor
.
ID
)
private
Contactor
m_thirdpartyContactor
;
private
Map
<
String
,
Contactor
>
m_contactors
=
new
HashMap
<
String
,
Contactor
>();
public
List
<
String
>
queryReceivers
(
String
group
,
String
channel
,
String
type
)
{
Contactor
contactor
=
m_contactors
.
get
(
type
);
contactor
.
setModule
(
group
);
if
(
AlertConstants
.
MAIL
.
equals
(
channel
))
{
return
contactor
.
queryEmailContactors
();
}
else
if
(
AlertConstants
.
SMS
.
equals
(
channel
))
{
return
contactor
.
querySmsContactors
();
}
else
if
(
AlertConstants
.
WEIXIN
.
equals
(
channel
))
{
return
contactor
.
queryWeiXinContactors
();
}
return
new
ArrayList
<
String
>();
}
@Override
public
void
initialize
()
throws
InitializationException
{
m_contactors
.
put
(
m_businessContactor
.
getId
(),
m_businessContactor
);
m_contactors
.
put
(
m_networkContactor
.
getId
(),
m_networkContactor
);
m_contactors
.
put
(
m_exceptionContactor
.
getId
(),
m_exceptionContactor
);
m_contactors
.
put
(
m_systemContactor
.
getId
(),
m_systemContactor
);
m_contactors
.
put
(
m_thirdpartyContactor
.
getId
(),
m_thirdpartyContactor
);
}
public
void
setBusinessContactor
(
Contactor
contactor
)
{
m_businessContactor
=
contactor
;
}
public
void
setNetworkContactor
(
Contactor
networkContactor
)
{
m_networkContactor
=
networkContactor
;
}
public
void
setExceptionContactor
(
Contactor
exceptionContactor
)
{
m_exceptionContactor
=
exceptionContactor
;
}
public
void
setSystemContactor
(
Contactor
systemContactor
)
{
m_systemContactor
=
systemContactor
;
}
public
void
setThirdpartyContactor
(
Contactor
thirdpartyContactor
)
{
m_thirdpartyContactor
=
thirdpartyContactor
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/DefaultContactor.java
0 → 100644
浏览文件 @
853e72c5
package
com.dianping.cat.report.task.alert.sender.receiver
;
import
java.util.ArrayList
;
import
java.util.List
;
import
com.dianping.cat.home.alert.config.entity.Receiver
;
import
com.site.helper.Splitters
;
public
abstract
class
DefaultContactor
{
protected
List
<
String
>
buildDefaultMailReceivers
(
Receiver
receiver
)
{
List
<
String
>
mailReceivers
=
new
ArrayList
<
String
>();
if
(
receiver
!=
null
)
{
mailReceivers
.
addAll
(
receiver
.
getEmails
());
}
return
mailReceivers
;
}
protected
List
<
String
>
buildDefaultSMSReceivers
(
Receiver
receiver
)
{
List
<
String
>
smsReceivers
=
new
ArrayList
<
String
>();
if
(
receiver
!=
null
)
{
smsReceivers
.
addAll
(
receiver
.
getPhones
());
}
return
smsReceivers
;
}
protected
List
<
String
>
buildDefaultWeixinReceivers
(
Receiver
receiver
)
{
List
<
String
>
weixinReceivers
=
new
ArrayList
<
String
>();
if
(
receiver
!=
null
)
{
weixinReceivers
.
addAll
(
receiver
.
getWeixins
());
}
return
weixinReceivers
;
}
protected
List
<
String
>
split
(
String
str
)
{
List
<
String
>
result
=
new
ArrayList
<
String
>();
if
(
str
!=
null
)
{
result
.
addAll
(
Splitters
.
by
(
","
).
noEmptyItem
().
split
(
str
));
}
return
result
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/ExceptionContactor.java
0 → 100644
浏览文件 @
853e72c5
package
com.dianping.cat.report.task.alert.sender.receiver
;
import
com.dianping.cat.report.task.alert.sender.AlertConstants
;
public
class
ExceptionContactor
extends
ProjectContactor
{
public
static
final
String
ID
=
AlertConstants
.
EXCEPTION
;
@Override
public
String
getId
()
{
return
ID
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/NetworkContactor.java
0 → 100644
浏览文件 @
853e72c5
package
com.dianping.cat.report.task.alert.sender.receiver
;
import
com.dianping.cat.report.task.alert.sender.AlertConstants
;
public
class
NetworkContactor
extends
ProductlineContactor
{
public
static
final
String
ID
=
AlertConstants
.
NETWORK
;
@Override
public
String
getId
()
{
return
ID
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/ProductlineContactor.java
0 → 100644
浏览文件 @
853e72c5
package
com.dianping.cat.report.task.alert.sender.receiver
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.unidal.dal.jdbc.DalException
;
import
org.unidal.lookup.annotation.Inject
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.core.dal.Project
;
import
com.dianping.cat.core.dal.ProjectDao
;
import
com.dianping.cat.core.dal.ProjectEntity
;
import
com.dianping.cat.home.alert.config.entity.Receiver
;
import
com.dianping.cat.system.config.AlertConfigManager
;
public
abstract
class
ProductlineContactor
extends
DefaultContactor
implements
Contactor
{
@Inject
protected
ProjectDao
m_projectDao
;
@Inject
protected
AlertConfigManager
m_configManager
;
protected
Project
m_project
=
new
Project
();
@Override
public
List
<
String
>
queryEmailContactors
()
{
List
<
String
>
mailReceivers
=
new
ArrayList
<
String
>();
Receiver
receiver
=
m_configManager
.
queryReceiverById
(
getId
());
if
(
receiver
!=
null
&&
!
receiver
.
isEnable
())
{
return
mailReceivers
;
}
else
{
mailReceivers
.
addAll
(
buildDefaultMailReceivers
(
receiver
));
mailReceivers
.
addAll
(
split
(
m_project
.
getEmail
()));
return
mailReceivers
;
}
}
@Override
public
List
<
String
>
querySmsContactors
()
{
List
<
String
>
smsReceivers
=
new
ArrayList
<
String
>();
Receiver
receiver
=
m_configManager
.
queryReceiverById
(
getId
());
if
(
receiver
!=
null
&&
!
receiver
.
isEnable
())
{
return
smsReceivers
;
}
else
{
smsReceivers
.
addAll
(
buildDefaultSMSReceivers
(
receiver
));
smsReceivers
.
addAll
(
split
(
m_project
.
getPhone
()));
return
smsReceivers
;
}
}
@Override
public
List
<
String
>
queryWeiXinContactors
()
{
List
<
String
>
weixinReceivers
=
new
ArrayList
<
String
>();
Receiver
receiver
=
m_configManager
.
queryReceiverById
(
getId
());
if
(
receiver
!=
null
&&
!
receiver
.
isEnable
())
{
return
weixinReceivers
;
}
else
{
weixinReceivers
.
addAll
(
buildDefaultWeixinReceivers
(
receiver
));
weixinReceivers
.
addAll
(
split
(
m_project
.
getEmail
()));
return
weixinReceivers
;
}
}
public
void
setModule
(
String
domainName
)
{
try
{
m_project
=
m_projectDao
.
findByDomain
(
domainName
,
ProjectEntity
.
READSET_FULL
);
}
catch
(
DalException
e
)
{
Cat
.
logError
(
"query project error:"
+
domainName
,
e
);
}
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/ProjectContactor.java
0 → 100644
浏览文件 @
853e72c5
package
com.dianping.cat.report.task.alert.sender.receiver
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.unidal.lookup.annotation.Inject
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.consumer.company.model.entity.ProductLine
;
import
com.dianping.cat.consumer.metric.ProductLineConfigManager
;
import
com.dianping.cat.home.alert.config.entity.Receiver
;
import
com.dianping.cat.system.config.AlertConfigManager
;
public
abstract
class
ProjectContactor
extends
DefaultContactor
implements
Contactor
{
@Inject
protected
ProductLineConfigManager
m_productLineConfigManager
;
@Inject
protected
AlertConfigManager
m_configManager
;
protected
ProductLine
m_productline
=
new
ProductLine
();
@Override
public
List
<
String
>
queryEmailContactors
()
{
List
<
String
>
mailReceivers
=
new
ArrayList
<
String
>();
Receiver
receiver
=
m_configManager
.
queryReceiverById
(
getId
());
if
(
receiver
!=
null
&&
!
receiver
.
isEnable
())
{
return
mailReceivers
;
}
else
{
mailReceivers
.
addAll
(
buildDefaultMailReceivers
(
receiver
));
mailReceivers
.
addAll
(
split
(
m_productline
.
getEmail
()));
return
mailReceivers
;
}
}
@Override
public
List
<
String
>
querySmsContactors
()
{
List
<
String
>
smsReceivers
=
new
ArrayList
<
String
>();
Receiver
receiver
=
m_configManager
.
queryReceiverById
(
getId
());
if
(
receiver
!=
null
&&
!
receiver
.
isEnable
())
{
return
smsReceivers
;
}
else
{
smsReceivers
.
addAll
(
buildDefaultSMSReceivers
(
receiver
));
smsReceivers
.
addAll
(
split
(
m_productline
.
getPhone
()));
return
smsReceivers
;
}
}
@Override
public
List
<
String
>
queryWeiXinContactors
()
{
List
<
String
>
weixinReceivers
=
new
ArrayList
<
String
>();
Receiver
receiver
=
m_configManager
.
queryReceiverById
(
getId
());
if
(
receiver
!=
null
&&
!
receiver
.
isEnable
())
{
return
weixinReceivers
;
}
else
{
weixinReceivers
.
addAll
(
buildDefaultWeixinReceivers
(
receiver
));
weixinReceivers
.
addAll
(
split
(
m_productline
.
getEmail
()));
return
weixinReceivers
;
}
}
public
void
setModule
(
String
productlineName
)
{
try
{
m_productline
=
m_productLineConfigManager
.
queryProductLine
(
productlineName
);
}
catch
(
Exception
e
)
{
Cat
.
logError
(
"query productline error:"
+
productlineName
,
e
);
}
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/SystemContactor.java
0 → 100644
浏览文件 @
853e72c5
package
com.dianping.cat.report.task.alert.sender.receiver
;
import
com.dianping.cat.report.task.alert.sender.AlertConstants
;
public
class
SystemContactor
extends
ProductlineContactor
{
public
static
final
String
ID
=
AlertConstants
.
SYSTEM
;
@Override
public
String
getId
()
{
return
ID
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/ThirdpartyContactor.java
0 → 100644
浏览文件 @
853e72c5
package
com.dianping.cat.report.task.alert.sender.receiver
;
import
com.dianping.cat.report.task.alert.sender.AlertConstants
;
public
class
ThirdpartyContactor
extends
ProjectContactor
{
public
static
final
String
ID
=
AlertConstants
.
THIRDPARTY
;
@Override
public
String
getId
()
{
return
ID
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/sender/MailSender.java
浏览文件 @
853e72c5
...
...
@@ -7,29 +7,83 @@ import java.net.URL;
import
java.net.URLConnection
;
import
java.util.List
;
import
javax.mail.Authenticator
;
import
org.apache.commons.mail.DefaultAuthenticator
;
import
org.apache.commons.mail.EmailException
;
import
org.apache.commons.mail.HtmlEmail
;
import
org.codehaus.plexus.logging.LogEnabled
;
import
org.codehaus.plexus.logging.Logger
;
import
org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable
;
import
org.unidal.helper.Files
;
import
org.unidal.lookup.annotation.Inject
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.ServerConfigManager
;
import
com.dianping.cat.message.Event
;
import
com.dianping.cat.report.task.alert.sender.AlertConstants
;
import
com.dianping.cat.report.task.alert.sender.AlertMessageEntity
;
public
class
MailSender
implements
Sender
,
LogEnabled
{
public
class
MailSender
implements
Initializable
,
Sender
,
LogEnabled
{
@Inject
private
ServerConfigManager
m_manager
;
public
static
final
String
ID
=
AlertConstants
.
MAIL
;
private
String
m_name
;
private
String
m_password
;
p
ublic
static
final
String
ID
=
"mail"
;
p
rivate
Authenticator
m_authenticator
;
private
Logger
m_logger
;
private
HtmlEmail
createHtmlEmail
()
throws
EmailException
{
HtmlEmail
email
=
new
HtmlEmail
();
email
.
setHostName
(
"smtp.gmail.com"
);
email
.
setSmtpPort
(
465
);
email
.
setAuthenticator
(
m_authenticator
);
email
.
setSSL
(
true
);
email
.
setFrom
(
m_name
);
email
.
setCharset
(
"utf-8"
);
return
email
;
}
@Override
public
void
enableLogging
(
Logger
logger
)
{
m_logger
=
logger
;
}
@Override
public
String
getId
()
{
return
ID
;
}
@Override
public
void
initialize
()
{
m_name
=
m_manager
.
getEmailAccount
();
m_password
=
m_manager
.
getEmailPassword
();
m_authenticator
=
new
DefaultAuthenticator
(
m_name
,
m_password
);
}
@Override
public
boolean
send
(
AlertMessageEntity
message
,
String
type
)
{
try
{
String
messageStr
=
message
.
toString
();
if
(!
sendEmail
(
message
))
{
Cat
.
logEvent
(
"AlertMailError"
,
type
,
Event
.
SUCCESS
,
messageStr
);
m_logger
.
info
(
"AlertMailError "
+
messageStr
);
return
false
;
boolean
result
=
sendEmail
(
message
);
if
(!
result
)
{
Cat
.
logEvent
(
"InternalEmailSendError"
,
type
,
Event
.
SUCCESS
,
messageStr
);
boolean
gmail
=
sendEmailByGmail
(
message
);
if
(
gmail
==
false
)
{
Cat
.
logEvent
(
"AlertMailError"
,
type
,
Event
.
SUCCESS
,
messageStr
);
m_logger
.
info
(
"AlertMailError "
+
messageStr
);
return
false
;
}
}
Cat
.
logEvent
(
"AlertMail"
,
type
,
Event
.
SUCCESS
,
messageStr
);
...
...
@@ -91,14 +145,30 @@ public class MailSender implements Sender, LogEnabled {
}
}
@Override
public
String
getId
()
{
return
ID
;
}
private
boolean
sendEmailByGmail
(
AlertMessageEntity
message
)
{
try
{
String
title
=
message
.
getTitle
();
String
content
=
message
.
getContent
();
List
<
String
>
emails
=
message
.
getReceivers
();
HtmlEmail
email
=
createHtmlEmail
();
@Override
public
void
enableLogging
(
Logger
logger
)
{
m_logger
=
logger
;
email
.
setSubject
(
title
);
email
.
setFrom
(
"CAT@dianping.com"
);
if
(
content
!=
null
)
{
email
.
setHtmlMsg
(
content
);
}
if
(
emails
!=
null
&&
emails
.
size
()
>
0
)
{
for
(
String
to
:
emails
)
{
email
.
addTo
(
to
);
}
email
.
send
();
}
return
true
;
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
return
false
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/sender/SmsSender.java
浏览文件 @
853e72c5
...
...
@@ -13,11 +13,12 @@ import org.unidal.helper.Files;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.message.Event
;
import
com.dianping.cat.report.task.alert.sender.AlertConstants
;
import
com.dianping.cat.report.task.alert.sender.AlertMessageEntity
;
public
class
SmsSender
implements
Sender
,
LogEnabled
{
public
static
final
String
ID
=
"sms"
;
public
static
final
String
ID
=
AlertConstants
.
SMS
;
private
Logger
m_logger
;
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/sender/WeixinSender.java
浏览文件 @
853e72c5
...
...
@@ -13,6 +13,7 @@ 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.AlertConstants
;
import
com.dianping.cat.report.task.alert.sender.AlertMessageEntity
;
public
class
WeixinSender
implements
Sender
,
LogEnabled
{
...
...
@@ -21,7 +22,7 @@ public class WeixinSender implements Sender, LogEnabled {
private
static
final
String
SUCCESS_TEXT
=
"{\"success\":\"1\"}"
;
public
static
final
String
ID
=
"weixin"
;
public
static
final
String
ID
=
AlertConstants
.
WEIXIN
;
private
Logger
m_logger
;
...
...
@@ -50,6 +51,7 @@ public class WeixinSender implements Sender, LogEnabled {
String
title
=
message
.
getTitle
();
String
content
=
message
.
getContent
();
String
weixins
=
message
.
getReceiverString
();
StringBuilder
paraBuilder
=
new
StringBuilder
(
300
);
String
urlDomain
=
null
;
String
urlTitle
=
null
;
...
...
@@ -68,8 +70,12 @@ public class WeixinSender implements Sender, LogEnabled {
return
false
;
}
String
urlParameters
=
"domain="
+
urlDomain
+
"&email="
+
urlWeixins
+
"&title="
+
urlTitle
+
"&content="
+
urlContent
+
"&type="
+
urlType
;
paraBuilder
.
append
(
"domain="
).
append
(
urlDomain
);
paraBuilder
.
append
(
"&email="
).
append
(
urlWeixins
);
paraBuilder
.
append
(
"&title="
).
append
(
urlTitle
);
paraBuilder
.
append
(
"&content="
).
append
(
urlContent
);
paraBuilder
.
append
(
"&type="
).
append
(
urlType
);
String
urlParameters
=
paraBuilder
.
toString
();
try
{
HttpURLConnection
connection
=
(
HttpURLConnection
)
new
URL
(
WEIXIN_URL
).
openConnection
();
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/spliter/MailSpliter.java
0 → 100644
浏览文件 @
853e72c5
package
com.dianping.cat.report.task.alert.sender.spliter
;
import
com.dianping.cat.report.task.alert.sender.AlertConstants
;
public
class
MailSpliter
implements
Spliter
{
public
static
final
String
ID
=
AlertConstants
.
MAIL
;
@Override
public
String
process
(
String
content
)
{
return
content
;
}
@Override
public
String
getID
()
{
return
ID
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/spliter/SmsSpliter.java
0 → 100644
浏览文件 @
853e72c5
package
com.dianping.cat.report.task.alert.sender.spliter
;
import
com.dianping.cat.report.task.alert.sender.AlertConstants
;
public
class
SmsSpliter
implements
Spliter
{
public
static
final
String
ID
=
AlertConstants
.
SMS
;
@Override
public
String
process
(
String
content
)
{
return
content
.
replaceAll
(
"<br/>"
,
" "
);
}
@Override
public
String
getID
()
{
return
ID
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/spliter/Spliter.java
0 → 100644
浏览文件 @
853e72c5
package
com.dianping.cat.report.task.alert.sender.spliter
;
public
interface
Spliter
{
public
String
process
(
String
content
);
public
String
getID
();
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/spliter/SpliterManager.java
0 → 100644
浏览文件 @
853e72c5
package
com.dianping.cat.report.task.alert.sender.spliter
;
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
;
public
class
SpliterManager
implements
Initializable
{
@Inject
(
type
=
Spliter
.
class
,
value
=
MailSpliter
.
ID
)
private
Spliter
m_mailSpliter
;
@Inject
(
type
=
Spliter
.
class
,
value
=
SmsSpliter
.
ID
)
private
Spliter
m_smsSpliter
;
@Inject
(
type
=
Spliter
.
class
,
value
=
WeixinSpliter
.
ID
)
private
Spliter
m_weixinSpliter
;
private
Map
<
String
,
Spliter
>
m_spliters
=
new
HashMap
<
String
,
Spliter
>();
@Override
public
void
initialize
()
throws
InitializationException
{
m_spliters
.
put
(
m_mailSpliter
.
getID
(),
m_mailSpliter
);
m_spliters
.
put
(
m_smsSpliter
.
getID
(),
m_smsSpliter
);
m_spliters
.
put
(
m_weixinSpliter
.
getID
(),
m_weixinSpliter
);
}
public
String
process
(
String
content
,
String
channelName
)
{
Spliter
splitter
=
m_spliters
.
get
(
channelName
);
return
splitter
.
process
(
content
);
}
public
void
setMailSpliter
(
Spliter
mailSpliter
)
{
m_mailSpliter
=
mailSpliter
;
}
public
void
setSmsSpliter
(
Spliter
smsSpliter
)
{
m_smsSpliter
=
smsSpliter
;
}
public
void
setWeixinSpliter
(
Spliter
weixinSpliter
)
{
m_weixinSpliter
=
weixinSpliter
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/spliter/WeixinSpliter.java
0 → 100644
浏览文件 @
853e72c5
package
com.dianping.cat.report.task.alert.sender.spliter
;
import
com.dianping.cat.report.task.alert.sender.AlertConstants
;
public
class
WeixinSpliter
implements
Spliter
{
public
static
final
String
ID
=
AlertConstants
.
WEIXIN
;
@Override
public
String
process
(
String
content
)
{
return
content
.
replaceAll
(
"<br/>"
,
"\n"
);
}
@Override
public
String
getID
()
{
return
ID
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/system/SystemAlert.java
浏览文件 @
853e72c5
...
...
@@ -11,6 +11,7 @@ import com.dianping.cat.Cat;
import
com.dianping.cat.consumer.company.model.entity.ProductLine
;
import
com.dianping.cat.message.Transaction
;
import
com.dianping.cat.report.task.alert.BaseAlert
;
import
com.dianping.cat.report.task.alert.sender.AlertConstants
;
public
class
SystemAlert
extends
BaseAlert
implements
Task
,
LogEnabled
{
...
...
@@ -21,7 +22,7 @@ public class SystemAlert extends BaseAlert implements Task, LogEnabled {
@Override
public
String
getName
()
{
return
"system"
;
return
AlertConstants
.
SYSTEM
;
}
@Override
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/thirdParty/ThirdPartyAlert.java
浏览文件 @
853e72c5
...
...
@@ -17,6 +17,7 @@ import org.unidal.lookup.annotation.Inject;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.helper.TimeUtil
;
import
com.dianping.cat.message.Transaction
;
import
com.dianping.cat.report.task.alert.sender.AlertConstants
;
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.AlertManager
;
...
...
@@ -123,7 +124,7 @@ public class ThirdPartyAlert implements Task {
@Override
public
String
getName
()
{
return
"thirdParty"
;
return
AlertConstants
.
THIRDPARTY
;
}
@Override
...
...
cat-home/src/main/java/com/dianping/cat/system/config/AlertPolicyManager.java
浏览文件 @
853e72c5
...
...
@@ -31,7 +31,7 @@ public class AlertPolicyManager implements Initializable {
private
static
final
String
CONFIG_NAME
=
"alertPolicy"
;
private
static
final
String
DEFAULT_
TYPE
=
"default"
;
private
static
final
String
DEFAULT_
GROUP
=
"default"
;
public
AlertPolicy
getAlertPolicy
()
{
return
m_config
;
...
...
@@ -43,7 +43,7 @@ public class AlertPolicyManager implements Initializable {
Group
group
=
type
.
findGroup
(
groupName
);
if
(
group
==
null
)
{
group
=
type
.
findGroup
(
DEFAULT_
TYPE
);
group
=
type
.
findGroup
(
DEFAULT_
GROUP
);
}
Level
level
=
group
.
findLevel
(
levelName
);
...
...
cat-home/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
853e72c5
...
...
@@ -564,24 +564,105 @@
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.sender.Sender
</role>
<role-hint>
mail
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.sender.MailSender
</implementation>
<role>
com.dianping.cat.report.task.alert.sender.receiver.Contactor
</role>
<role-hint>
business
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.receiver.BusinessContactor
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.system.config.AlertConfigManager
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.sender.Sender
</role>
<role-hint>
sms
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.sender.SmsSender
</implementation>
<role>
com.dianping.cat.report.task.alert.sender.receiver.Contactor
</role>
<role-hint>
network
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.receiver.NetworkContactor
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.system.config.AlertConfigManager
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.sender.Sender
</role>
<role-hint>
weixin
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.sender.WeixinSender
</implementation>
<role>
com.dianping.cat.report.task.alert.sender.receiver.Contactor
</role>
<role-hint>
system
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.receiver.SystemContactor
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.system.config.AlertConfigManager
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.receiver.Contactor
</role>
<role-hint>
exception
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.receiver.ExceptionContactor
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.consumer.metric.ProductLineConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.system.config.AlertConfigManager
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.receiver.Contactor
</role>
<role-hint>
thirdParty
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.receiver.ThirdpartyContactor
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.consumer.metric.ProductLineConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.system.config.AlertConfigManager
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.receiver.ContactorManager
</role>
<implementation>
com.dianping.cat.report.task.alert.sender.receiver.ContactorManager
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.receiver.Contactor
</role>
<role-hint>
business
</role-hint>
<field-name>
businessContactor
</field-name>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.receiver.Contactor
</role>
<role-hint>
network
</role-hint>
<field-name>
networkContactor
</field-name>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.receiver.Contactor
</role>
<role-hint>
system
</role-hint>
<field-name>
exceptionContactor
</field-name>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.receiver.Contactor
</role>
<role-hint>
exception
</role-hint>
<field-name>
systemContactor
</field-name>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.receiver.Contactor
</role>
<role-hint>
thirdParty
</role-hint>
<field-name>
thirdpartyContactor
</field-name>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.decorator.Decorator
</role>
<role-hint>
mail
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.decorator.
Mail
Decorator
</implementation>
<role-hint>
business
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.decorator.
Business
Decorator
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
...
...
@@ -590,8 +671,8 @@
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.decorator.Decorator
</role>
<role-hint>
sms
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.decorator.
Sms
Decorator
</implementation>
<role-hint>
network
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.decorator.
Network
Decorator
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
...
...
@@ -600,8 +681,8 @@
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.decorator.Decorator
</role>
<role-hint>
weixi
n
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.decorator.
Weixi
nDecorator
</implementation>
<role-hint>
exceptio
n
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.decorator.
Exceptio
nDecorator
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
...
...
@@ -609,11 +690,22 @@
</requirements>
</component>
<component>
<role>
com.dianping.cat.system.config.AlertPolicyManager
</role>
<implementation>
com.dianping.cat.system.config.AlertPolicyManager
</implementation>
<role>
com.dianping.cat.report.task.alert.sender.decorator.Decorator
</role>
<role-hint>
system
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.decorator.SystemDecorator
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.core.config.ConfigDao
</role>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.decorator.Decorator
</role>
<role-hint>
thirdParty
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.decorator.ThirdpartyDecorator
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
</requirement>
</requirements>
</component>
...
...
@@ -623,36 +715,96 @@
<requirements>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.decorator.Decorator
</role>
<role-hint>
mail
</role-hint>
<field-name>
mail
Decorator
</field-name>
<role-hint>
business
</role-hint>
<field-name>
business
Decorator
</field-name>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.decorator.Decorator
</role>
<role-hint>
sms
</role-hint>
<field-name>
sms
Decorator
</field-name>
<role-hint>
network
</role-hint>
<field-name>
network
Decorator
</field-name>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.decorator.Decorator
</role>
<role-hint>
weixin
</role-hint>
<field-name>
weixinDecorator
</field-name>
<role-hint>
exception
</role-hint>
<field-name>
exceptionDecorator
</field-name>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.decorator.Decorator
</role>
<role-hint>
system
</role-hint>
<field-name>
systemDecorator
</field-name>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.decorator.Decorator
</role>
<role-hint>
thirdParty
</role-hint>
<field-name>
thirdpartyDecorator
</field-name>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.
report.task.alert.sender.receiver.Contacto
r
</role>
<implementation>
com.dianping.cat.
report.task.alert.sender.receiver.Contacto
r
</implementation>
<role>
com.dianping.cat.
system.config.AlertPolicyManage
r
</role>
<implementation>
com.dianping.cat.
system.config.AlertPolicyManage
r
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.core.
dal.Project
Dao
</role>
<role>
com.dianping.cat.core.
config.Config
Dao
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.spliter.Spliter
</role>
<role-hint>
mail
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.spliter.MailSpliter
</implementation>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.spliter.Spliter
</role>
<role-hint>
sms
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.spliter.SmsSpliter
</implementation>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.spliter.Spliter
</role>
<role-hint>
weixin
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.spliter.WeixinSpliter
</implementation>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.spliter.SpliterManager
</role>
<implementation>
com.dianping.cat.report.task.alert.sender.spliter.SpliterManager
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.consumer.metric.ProductLineConfigManager
</role>
<role>
com.dianping.cat.report.task.alert.sender.spliter.Spliter
</role>
<role-hint>
mail
</role-hint>
<field-name>
mailSpliter
</field-name>
</requirement>
<requirement>
<role>
com.dianping.cat.system.config.AlertConfigManager
</role>
<role>
com.dianping.cat.report.task.alert.sender.spliter.Spliter
</role>
<role-hint>
sms
</role-hint>
<field-name>
smsSpliter
</field-name>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.spliter.Spliter
</role>
<role-hint>
weixin
</role-hint>
<field-name>
weixinSpliter
</field-name>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.sender.Sender
</role>
<role-hint>
mail
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.sender.MailSender
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.ServerConfigManager
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.sender.Sender
</role>
<role-hint>
sms
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.sender.SmsSender
</implementation>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.sender.Sender
</role>
<role-hint>
weixin
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.sender.WeixinSender
</implementation>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.sender.SenderManager
</role>
<implementation>
com.dianping.cat.report.task.alert.sender.sender.SenderManager
</implementation>
...
...
@@ -685,11 +837,14 @@
<role>
com.dianping.cat.report.task.alert.sender.decorator.DecoratorManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.receiver.Contactor
</role>
<role>
com.dianping.cat.report.task.alert.sender.receiver.Contactor
Manager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.manager.AlertEntityService
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.spliter.SpliterManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.sender.SenderManager
</role>
</requirement>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录