Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
32fd8d42
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,发现更多精彩内容 >>
提交
32fd8d42
编写于
7月 21, 2014
作者:
L
leon.li
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor sender from enum to inherit
上级
6d32ca4d
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
283 addition
and
169 deletion
+283
-169
cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
...n/java/com/dianping/cat/build/ComponentsConfigurator.java
+31
-12
cat-home/src/main/java/com/dianping/cat/report/task/alert/BaseAlert.java
...in/java/com/dianping/cat/report/task/alert/BaseAlert.java
+31
-2
cat-home/src/main/java/com/dianping/cat/report/task/alert/BaseAlertConfig.java
...a/com/dianping/cat/report/task/alert/BaseAlertConfig.java
+13
-7
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
+13
-6
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/BaseSender.java
...com/dianping/cat/report/task/alert/sender/BaseSender.java
+10
-141
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/MailSender.java
...com/dianping/cat/report/task/alert/sender/MailSender.java
+33
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/SmsSender.java
.../com/dianping/cat/report/task/alert/sender/SmsSender.java
+37
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/WeixinSender.java
...m/dianping/cat/report/task/alert/sender/WeixinSender.java
+51
-0
cat-home/src/main/resources/META-INF/plexus/components.xml
cat-home/src/main/resources/META-INF/plexus/components.xml
+63
-0
未找到文件。
cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
浏览文件 @
32fd8d42
...
...
@@ -62,6 +62,9 @@ import com.dianping.cat.report.task.alert.exception.ExceptionAlert;
import
com.dianping.cat.report.task.alert.exception.ExceptionAlertConfig
;
import
com.dianping.cat.report.task.alert.network.NetworkAlert
;
import
com.dianping.cat.report.task.alert.network.NetworkAlertConfig
;
import
com.dianping.cat.report.task.alert.sender.MailSender
;
import
com.dianping.cat.report.task.alert.sender.SmsSender
;
import
com.dianping.cat.report.task.alert.sender.WeixinSender
;
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
;
...
...
@@ -190,23 +193,39 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
DataChecker
.
class
,
DefaultDataChecker
.
class
));
all
.
add
(
C
(
BusinessAlert
.
class
).
req
(
MetricConfigManager
.
class
,
ProductLineConfigManager
.
class
,
BaselineService
.
class
,
MailSMS
.
class
,
BusinessAlertConfig
.
class
,
AlertInfo
.
class
,
AlertDao
.
class
)
//
.
req
(
RemoteMetricReportService
.
class
,
BusinessRuleConfigManager
.
class
,
DataChecker
.
class
,
ProjectDao
.
class
));
all
.
add
(
C
(
MailSender
.
class
).
req
(
MailSMS
.
class
));
all
.
add
(
C
(
NetworkAlert
.
class
).
req
(
MetricConfigManager
.
class
,
ProductLineConfigManager
.
class
,
BaselineService
.
class
,
MailSMS
.
class
,
NetworkAlertConfig
.
class
,
AlertInfo
.
class
,
AlertDao
.
class
)
//
.
req
(
RemoteMetricReportService
.
class
,
NetworkRuleConfigManager
.
class
,
DataChecker
.
class
,
ProjectDao
.
class
));
all
.
add
(
C
(
SmsSender
.
class
).
req
(
MailSMS
.
class
));
all
.
add
(
C
(
SystemAlert
.
class
).
req
(
MetricConfigManager
.
class
,
ProductLineConfigManager
.
class
,
BaselineService
.
class
,
MailSMS
.
class
,
SystemAlertConfig
.
class
,
AlertInfo
.
class
,
AlertDao
.
class
)
//
.
req
(
RemoteMetricReportService
.
class
,
SystemRuleConfigManager
.
class
,
DataChecker
.
class
,
ProjectDao
.
class
));
all
.
add
(
C
(
WeixinSender
.
class
).
req
(
MailSMS
.
class
));
all
.
add
(
C
(
BusinessAlert
.
class
)
.
req
(
MetricConfigManager
.
class
,
ProductLineConfigManager
.
class
,
BaselineService
.
class
,
MailSMS
.
class
,
BusinessAlertConfig
.
class
,
AlertInfo
.
class
,
AlertDao
.
class
)
//
.
req
(
RemoteMetricReportService
.
class
,
BusinessRuleConfigManager
.
class
,
DataChecker
.
class
,
ProjectDao
.
class
)
.
req
(
MailSender
.
class
,
SmsSender
.
class
,
WeixinSender
.
class
));
all
.
add
(
C
(
NetworkAlert
.
class
)
.
req
(
MetricConfigManager
.
class
,
ProductLineConfigManager
.
class
,
BaselineService
.
class
,
MailSMS
.
class
,
NetworkAlertConfig
.
class
,
AlertInfo
.
class
,
AlertDao
.
class
)
//
.
req
(
RemoteMetricReportService
.
class
,
NetworkRuleConfigManager
.
class
,
DataChecker
.
class
,
ProjectDao
.
class
)
.
req
(
MailSender
.
class
,
SmsSender
.
class
,
WeixinSender
.
class
));
all
.
add
(
C
(
SystemAlert
.
class
)
.
req
(
MetricConfigManager
.
class
,
ProductLineConfigManager
.
class
,
BaselineService
.
class
,
MailSMS
.
class
,
SystemAlertConfig
.
class
,
AlertInfo
.
class
,
AlertDao
.
class
)
//
.
req
(
RemoteMetricReportService
.
class
,
SystemRuleConfigManager
.
class
,
DataChecker
.
class
,
ProjectDao
.
class
)
.
req
(
MailSender
.
class
,
SmsSender
.
class
,
WeixinSender
.
class
));
all
.
add
(
C
(
AlertExceptionBuilder
.
class
).
req
(
ExceptionConfigManager
.
class
));
all
.
add
(
C
(
ExceptionAlert
.
class
).
req
(
ProjectDao
.
class
,
ExceptionAlertConfig
.
class
,
MailSMS
.
class
,
ExceptionConfigManager
.
class
,
AlertExceptionBuilder
.
class
,
AlertDao
.
class
).
req
(
ModelService
.
class
,
TopAnalyzer
.
ID
));
all
.
add
(
C
(
ExceptionAlert
.
class
)
.
req
(
ProjectDao
.
class
,
ExceptionAlertConfig
.
class
,
MailSMS
.
class
,
ExceptionConfigManager
.
class
,
AlertExceptionBuilder
.
class
,
AlertDao
.
class
).
req
(
ModelService
.
class
,
TopAnalyzer
.
ID
)
.
req
(
MailSender
.
class
,
SmsSender
.
class
,
WeixinSender
.
class
));
all
.
add
(
C
(
AlertSummaryExecutor
.
class
).
req
(
AlertSummaryGenerator
.
class
,
AlertSummaryManager
.
class
,
MailSMS
.
class
)
.
req
(
AlertSummaryDecorator
.
class
,
AlertSummaryFTLDecorator
.
ID
));
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/BaseAlert.java
浏览文件 @
32fd8d42
...
...
@@ -33,6 +33,9 @@ import com.dianping.cat.home.rule.entity.Config;
import
com.dianping.cat.message.Event
;
import
com.dianping.cat.report.baseline.BaselineService
;
import
com.dianping.cat.report.task.alert.sender.BaseSender
;
import
com.dianping.cat.report.task.alert.sender.MailSender
;
import
com.dianping.cat.report.task.alert.sender.SmsSender
;
import
com.dianping.cat.report.task.alert.sender.WeixinSender
;
import
com.dianping.cat.service.ModelPeriod
;
import
com.dianping.cat.service.ModelRequest
;
import
com.dianping.cat.system.config.BaseRuleConfigManager
;
...
...
@@ -72,7 +75,13 @@ public abstract class BaseAlert {
private
ProjectDao
m_projectDao
;
@Inject
protected
BaseSender
m_baseSender
;
protected
MailSender
m_mailSender
;
@Inject
protected
SmsSender
m_smsSender
;
@Inject
protected
WeixinSender
m_weixinSender
;
protected
static
final
int
DATA_AREADY_MINUTE
=
1
;
...
...
@@ -295,7 +304,7 @@ public abstract class BaseAlert {
storeAlert
(
productlineName
,
metricTitle
,
mailTitle
,
alertResult
);
String
configId
=
getAlertConfig
().
getId
();
m_baseSender
.
sendAllAlert
(
productLine
,
domain
,
mailTitle
,
content
,
alertResult
.
getAlertType
(),
configId
);
sendAllAlert
(
productLine
,
domain
,
mailTitle
,
content
,
alertResult
.
getAlertType
(),
configId
);
Cat
.
logEvent
(
configId
,
productlineName
,
Event
.
SUCCESS
,
mailTitle
+
" "
+
content
);
}
}
...
...
@@ -316,6 +325,26 @@ public abstract class BaseAlert {
}
}
protected
boolean
sendAllAlert
(
ProductLine
productLine
,
String
domain
,
String
title
,
String
content
,
String
alertType
,
String
configId
)
{
boolean
sendResult
=
true
;
BaseSender
[]
senders
=
{
m_mailSender
,
m_weixinSender
};
List
<
String
>
receivers
=
getAlertConfig
().
buildMailReceivers
(
productLine
);
for
(
BaseSender
sender
:
senders
)
{
if
(!
sender
.
sendAlert
(
receivers
,
domain
,
title
,
content
,
alertType
))
{
sendResult
=
false
;
}
}
receivers
=
getAlertConfig
().
buildSMSReceivers
(
productLine
);
if
(!
m_smsSender
.
sendAlert
(
receivers
,
domain
,
title
,
content
,
alertType
))
{
sendResult
=
false
;
}
return
sendResult
;
}
private
double
[]
queryBaseLine
(
int
start
,
int
end
,
String
baseLineKey
,
Date
date
,
MetricType
type
)
{
double
[]
baseline
=
m_baselineService
.
queryHourlyBaseline
(
MetricAnalyzer
.
ID
,
baseLineKey
+
":"
+
type
,
date
);
int
length
=
end
-
start
+
1
;
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/BaseAlertConfig.java
浏览文件 @
32fd8d42
...
...
@@ -33,9 +33,9 @@ public abstract class BaseAlertConfig {
return
smsReceivers
;
}
public
List
<
String
>
buildMailReceivers
(
ProductLine
productLine
,
String
configId
)
{
public
List
<
String
>
buildMailReceivers
(
ProductLine
productLine
)
{
List
<
String
>
mailReceivers
=
new
ArrayList
<
String
>();
Receiver
receiver
=
m_manager
.
queryReceiverById
(
configId
);
Receiver
receiver
=
m_manager
.
queryReceiverById
(
getId
()
);
if
(
receiver
!=
null
&&
!
receiver
.
isEnable
())
{
return
mailReceivers
;
...
...
@@ -47,10 +47,6 @@ public abstract class BaseAlertConfig {
}
}
public
List
<
String
>
buildMailReceivers
(
ProductLine
productLine
)
{
return
buildMailReceivers
(
productLine
,
getId
());
}
private
List
<
String
>
buildProductlineMailReceivers
(
ProductLine
productLine
)
{
return
split
(
productLine
.
getEmail
());
}
...
...
@@ -74,7 +70,17 @@ public abstract class BaseAlertConfig {
}
public
List
<
String
>
buildSMSReceivers
(
ProductLine
productLine
)
{
return
buildSMSReceivers
(
productLine
,
getId
());
List
<
String
>
smsReceivers
=
new
ArrayList
<
String
>();
Receiver
receiver
=
m_manager
.
queryReceiverById
(
getId
());
if
(
receiver
!=
null
&&
!
receiver
.
isEnable
())
{
return
smsReceivers
;
}
else
{
smsReceivers
.
addAll
(
buildDefaultSMSReceivers
(
receiver
));
smsReceivers
.
addAll
(
buildProductlineSMSReceivers
(
productLine
));
return
smsReceivers
;
}
}
protected
abstract
String
buildMailTitle
(
String
artifactName
,
String
configTitle
);
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/business/BusinessAlert.java
浏览文件 @
32fd8d42
...
...
@@ -77,7 +77,7 @@ public class BusinessAlert extends BaseAlert implements Task, LogEnabled {
storeAlert
(
domain
,
metric
,
mailTitle
,
alertResult
);
String
configId
=
getAlertConfig
().
getId
();
m_baseSender
.
sendAllAlert
(
productLine
,
domain
,
mailTitle
,
content
,
alertResult
.
getAlertType
(),
configId
);
sendAllAlert
(
productLine
,
domain
,
mailTitle
,
content
,
alertResult
.
getAlertType
(),
configId
);
Cat
.
logEvent
(
configId
,
product
,
Event
.
SUCCESS
,
mailTitle
+
" "
+
content
);
}
}
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/ExceptionAlert.java
浏览文件 @
32fd8d42
...
...
@@ -30,7 +30,9 @@ 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.BaseSender
;
import
com.dianping.cat.report.task.alert.sender.MailSender
;
import
com.dianping.cat.report.task.alert.sender.SmsSender
;
import
com.dianping.cat.report.task.alert.sender.WeixinSender
;
import
com.dianping.cat.service.ModelRequest
;
import
com.dianping.cat.service.ModelResponse
;
import
com.dianping.cat.system.config.ExceptionConfigManager
;
...
...
@@ -61,7 +63,13 @@ public class ExceptionAlert implements Task, LogEnabled {
private
ModelService
<
TopReport
>
m_topService
;
@Inject
private
BaseSender
m_baseSender
;
protected
MailSender
m_mailSender
;
@Inject
protected
SmsSender
m_smsSender
;
@Inject
protected
WeixinSender
m_weixinSender
;
private
static
final
long
DURATION
=
TimeUtil
.
ONE_MINUTE
;
...
...
@@ -200,7 +208,6 @@ public class ExceptionAlert implements Task, LogEnabled {
}
}
@SuppressWarnings
(
"static-access"
)
private
void
sendAndStoreAlert
(
String
domain
,
List
<
AlertException
>
exceptions
)
{
Project
project
=
queryProjectByDomain
(
domain
);
List
<
String
>
emails
=
m_alertConfig
.
buildMailReceivers
(
project
);
...
...
@@ -212,13 +219,13 @@ public class ExceptionAlert implements Task, LogEnabled {
storeAlerts
(
domain
,
exceptions
,
mailTitle
+
"<br/>"
+
mailContent
);
m_
baseSender
.
MailSender
.
sendAlert
(
emails
,
domain
,
mailTitle
,
mailContent
,
"warning"
,
m_alertConfig
.
getId
()
);
m_
mailSender
.
sendAlert
(
emails
,
domain
,
mailTitle
,
mailContent
,
"warning"
);
Cat
.
logEvent
(
"ExceptionAlert"
,
domain
,
Event
.
SUCCESS
,
"[邮件告警] "
+
mailTitle
+
" "
+
mailContent
);
List
<
AlertException
>
errorExceptions
=
m_alertBuilder
.
buildErrorException
(
exceptions
);
if
(!
errorExceptions
.
isEmpty
())
{
String
weixinContent
=
m_alertBuilder
.
buildContent
(
errorExceptions
.
toString
(),
domain
,
contactInfo
);
m_
baseSender
.
WeixinSender
.
sendAlert
(
emails
,
domain
,
mailTitle
,
weixinContent
,
"error"
,
m_alertConfig
.
getId
()
);
m_
weixinSender
.
sendAlert
(
emails
,
domain
,
mailTitle
,
weixinContent
,
"error"
);
Cat
.
logEvent
(
"ExceptionAlert"
,
domain
,
Event
.
SUCCESS
,
"[微信告警] "
+
mailTitle
+
" "
+
weixinContent
+
" "
+
domain
+
" "
+
weixins
);
}
...
...
@@ -226,7 +233,7 @@ public class ExceptionAlert implements Task, LogEnabled {
List
<
AlertException
>
errorAndTriggeredExceptions
=
m_alertBuilder
.
buildErrorAndTriggeredException
(
exceptions
);
if
(!
errorAndTriggeredExceptions
.
isEmpty
())
{
String
smsContent
=
m_alertBuilder
.
buildContent
(
errorAndTriggeredExceptions
.
toString
(),
domain
,
contactInfo
);
m_
baseSender
.
SmsSender
.
sendAlert
(
phones
,
domain
,
smsContent
,
smsContent
,
"error"
,
m_alertConfig
.
getId
()
);
m_
smsSender
.
sendAlert
(
phones
,
domain
,
smsContent
,
smsContent
,
"error"
);
Cat
.
logEvent
(
"ExceptionAlert"
,
domain
,
Event
.
SUCCESS
,
"[短信告警] "
+
smsContent
);
}
}
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/BaseSender.java
浏览文件 @
32fd8d42
...
...
@@ -2,158 +2,27 @@ package com.dianping.cat.report.task.alert.sender;
import
java.util.List
;
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.consumer.company.model.entity.ProductLine
;
import
com.dianping.cat.report.task.alert.BaseAlertConfig
;
import
com.dianping.cat.system.tool.MailSMS
;
public
enum
BaseSender
{
public
abstract
class
BaseSender
implements
LogEnabled
{
MailSender
{
@Override
protected
void
sendLog
(
String
title
,
String
content
,
List
<
String
>
receivers
)
{
StringBuilder
builder
=
new
StringBuilder
();
builder
.
append
(
title
).
append
(
","
).
append
(
content
).
append
(
","
);
for
(
String
receiver
:
receivers
)
{
builder
.
append
(
receiver
).
append
(
" "
);
}
Cat
.
logEvent
(
"SendMail"
,
builder
.
toString
());
}
@Override
protected
List
<
String
>
queryReceivers
(
ProductLine
productLine
,
String
configId
)
{
return
m_alertConfig
.
buildMailReceivers
(
productLine
,
configId
);
}
@Override
public
boolean
sendAlert
(
List
<
String
>
receivers
,
String
domain
,
String
title
,
String
content
,
String
alertType
,
String
configId
)
{
try
{
m_mailSms
.
sendEmail
(
title
,
content
,
receivers
);
sendLog
(
title
,
content
,
receivers
);
return
true
;
}
catch
(
Exception
ex
)
{
Cat
.
logError
(
"send mail error"
+
" "
+
title
+
" "
+
content
,
ex
);
return
false
;
}
}
},
WeixinSender
{
@Override
protected
void
sendLog
(
String
title
,
String
content
,
List
<
String
>
receivers
)
{
StringBuilder
builder
=
new
StringBuilder
();
builder
.
append
(
title
).
append
(
" "
).
append
(
content
).
append
(
" "
);
for
(
String
receiver
:
receivers
)
{
builder
.
append
(
receiver
).
append
(
" "
);
}
Cat
.
logEvent
(
"SendWeixin"
,
builder
.
toString
());
}
@Override
protected
List
<
String
>
queryReceivers
(
ProductLine
productLine
,
String
configId
)
{
return
m_alertConfig
.
buildMailReceivers
(
productLine
,
configId
);
}
@Override
public
boolean
sendAlert
(
List
<
String
>
receivers
,
String
domain
,
String
title
,
String
content
,
String
alertType
,
String
configId
)
{
if
(
alertType
==
null
||
!
alertType
.
equals
(
"error"
))
{
return
true
;
}
try
{
m_mailSms
.
sendWeiXin
(
title
,
content
,
domain
,
mergeList
(
receivers
));
sendLog
(
title
,
content
,
receivers
);
return
true
;
}
catch
(
Exception
ex
)
{
Cat
.
logError
(
"send weixin error"
+
" "
+
title
+
" "
+
content
,
ex
);
return
false
;
}
}
private
String
mergeList
(
List
<
String
>
receivers
)
{
StringBuilder
builder
=
new
StringBuilder
();
for
(
String
receiver
:
receivers
)
{
builder
.
append
(
receiver
).
append
(
","
);
}
String
tmpResult
=
builder
.
toString
();
if
(
tmpResult
.
endsWith
(
","
))
{
return
tmpResult
.
substring
(
0
,
tmpResult
.
length
()
-
1
);
}
else
{
return
tmpResult
;
}
}
},
SmsSender
{
@Override
protected
void
sendLog
(
String
title
,
String
content
,
List
<
String
>
receivers
)
{
StringBuilder
builder
=
new
StringBuilder
();
builder
.
append
(
title
).
append
(
" "
).
append
(
content
).
append
(
" "
);
for
(
String
receiver
:
receivers
)
{
builder
.
append
(
receiver
).
append
(
" "
);
}
Cat
.
logEvent
(
"SendSms"
,
builder
.
toString
());
}
@Override
protected
List
<
String
>
queryReceivers
(
ProductLine
productLine
,
String
configId
)
{
return
m_alertConfig
.
buildSMSReceivers
(
productLine
,
configId
);
}
@Override
public
boolean
sendAlert
(
List
<
String
>
receivers
,
String
domain
,
String
title
,
String
content
,
String
alertType
,
String
configId
)
{
if
(
alertType
==
null
||
!
alertType
.
equals
(
"error"
))
{
return
true
;
}
try
{
m_mailSms
.
sendSms
(
title
,
content
,
receivers
);
sendLog
(
title
,
content
,
receivers
);
return
true
;
}
catch
(
Exception
ex
)
{
Cat
.
logError
(
"send sms error"
+
" "
+
title
+
" "
+
content
,
ex
);
return
false
;
}
}
};
@Inject
protected
BaseAlertConfig
m_alertConfig
;
protected
Logger
m_logger
;
@Inject
protected
MailSMS
m_mailSms
;
public
boolean
sendAllAlert
(
ProductLine
productLine
,
String
domain
,
String
title
,
String
content
,
String
alertType
,
String
configId
)
{
boolean
sendResult
=
true
;
for
(
BaseSender
sender
:
BaseSender
.
values
())
{
List
<
String
>
receivers
=
sender
.
queryReceivers
(
productLine
,
configId
);
if
(!
sender
.
sendAlert
(
receivers
,
domain
,
title
,
content
,
alertType
,
configId
))
{
sendResult
=
false
;
}
}
return
sendResult
;
}
protected
abstract
List
<
String
>
queryReceivers
(
ProductLine
productLine
,
String
configId
);
protected
abstract
void
sendLog
(
String
title
,
String
content
,
List
<
String
>
receivers
);
public
abstract
boolean
sendAlert
(
List
<
String
>
receivers
,
String
domain
,
String
title
,
String
content
,
String
alertType
,
String
configId
);
String
alertType
);
@Override
public
void
enableLogging
(
Logger
logger
)
{
m_logger
=
logger
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/MailSender.java
0 → 100644
浏览文件 @
32fd8d42
package
com.dianping.cat.report.task.alert.sender
;
import
java.util.List
;
import
com.dianping.cat.Cat
;
public
class
MailSender
extends
BaseSender
{
@Override
protected
void
sendLog
(
String
title
,
String
content
,
List
<
String
>
receivers
)
{
StringBuilder
builder
=
new
StringBuilder
();
builder
.
append
(
title
).
append
(
","
).
append
(
content
).
append
(
","
);
for
(
String
receiver
:
receivers
)
{
builder
.
append
(
receiver
).
append
(
" "
);
}
Cat
.
logEvent
(
"SendMail"
,
builder
.
toString
());
m_logger
.
info
(
"SendMail"
+
builder
.
toString
());
}
@Override
public
boolean
sendAlert
(
List
<
String
>
receivers
,
String
domain
,
String
title
,
String
content
,
String
alertType
)
{
try
{
m_mailSms
.
sendEmail
(
title
,
content
,
receivers
);
sendLog
(
title
,
content
,
receivers
);
return
true
;
}
catch
(
Exception
ex
)
{
Cat
.
logError
(
"send mail error"
+
" "
+
title
+
" "
+
content
,
ex
);
return
false
;
}
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/SmsSender.java
0 → 100644
浏览文件 @
32fd8d42
package
com.dianping.cat.report.task.alert.sender
;
import
java.util.List
;
import
com.dianping.cat.Cat
;
public
class
SmsSender
extends
BaseSender
{
@Override
protected
void
sendLog
(
String
title
,
String
content
,
List
<
String
>
receivers
)
{
StringBuilder
builder
=
new
StringBuilder
();
builder
.
append
(
title
).
append
(
" "
).
append
(
content
).
append
(
" "
);
for
(
String
receiver
:
receivers
)
{
builder
.
append
(
receiver
).
append
(
" "
);
}
Cat
.
logEvent
(
"SendSms"
,
builder
.
toString
());
m_logger
.
info
(
"SendSms"
+
builder
.
toString
());
}
@Override
public
boolean
sendAlert
(
List
<
String
>
receivers
,
String
domain
,
String
title
,
String
content
,
String
alertType
)
{
if
(
alertType
==
null
||
!
alertType
.
equals
(
"error"
))
{
return
true
;
}
try
{
m_mailSms
.
sendSms
(
title
,
content
,
receivers
);
sendLog
(
title
,
content
,
receivers
);
return
true
;
}
catch
(
Exception
ex
)
{
Cat
.
logError
(
"send sms error"
+
" "
+
title
+
" "
+
content
,
ex
);
return
false
;
}
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/WeixinSender.java
0 → 100644
浏览文件 @
32fd8d42
package
com.dianping.cat.report.task.alert.sender
;
import
java.util.List
;
import
com.dianping.cat.Cat
;
public
class
WeixinSender
extends
BaseSender
{
@Override
protected
void
sendLog
(
String
title
,
String
content
,
List
<
String
>
receivers
)
{
StringBuilder
builder
=
new
StringBuilder
();
builder
.
append
(
title
).
append
(
" "
).
append
(
content
).
append
(
" "
);
for
(
String
receiver
:
receivers
)
{
builder
.
append
(
receiver
).
append
(
" "
);
}
Cat
.
logEvent
(
"SendWeixin"
,
builder
.
toString
());
m_logger
.
info
(
"SendWeixin"
+
builder
.
toString
());
}
@Override
public
boolean
sendAlert
(
List
<
String
>
receivers
,
String
domain
,
String
title
,
String
content
,
String
alertType
)
{
if
(
alertType
==
null
||
!
alertType
.
equals
(
"error"
))
{
return
true
;
}
try
{
m_mailSms
.
sendWeiXin
(
title
,
content
,
domain
,
mergeList
(
receivers
));
sendLog
(
title
,
content
,
receivers
);
return
true
;
}
catch
(
Exception
ex
)
{
Cat
.
logError
(
"send weixin error"
+
" "
+
title
+
" "
+
content
,
ex
);
return
false
;
}
}
private
String
mergeList
(
List
<
String
>
receivers
)
{
StringBuilder
builder
=
new
StringBuilder
();
for
(
String
receiver
:
receivers
)
{
builder
.
append
(
receiver
).
append
(
","
);
}
String
tmpResult
=
builder
.
toString
();
if
(
tmpResult
.
endsWith
(
","
))
{
return
tmpResult
.
substring
(
0
,
tmpResult
.
length
()
-
1
);
}
else
{
return
tmpResult
;
}
}
}
cat-home/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
32fd8d42
...
...
@@ -1795,6 +1795,33 @@
<role>
com.dianping.cat.report.task.alert.DataChecker
</role>
<implementation>
com.dianping.cat.report.task.alert.DefaultDataChecker
</implementation>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.MailSender
</role>
<implementation>
com.dianping.cat.report.task.alert.sender.MailSender
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.system.tool.MailSMS
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.SmsSender
</role>
<implementation>
com.dianping.cat.report.task.alert.sender.SmsSender
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.system.tool.MailSMS
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.WeixinSender
</role>
<implementation>
com.dianping.cat.report.task.alert.sender.WeixinSender
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.system.tool.MailSMS
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.business.BusinessAlert
</role>
<implementation>
com.dianping.cat.report.task.alert.business.BusinessAlert
</implementation>
...
...
@@ -1832,6 +1859,15 @@
<requirement>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.MailSender
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.SmsSender
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.WeixinSender
</role>
</requirement>
</requirements>
</component>
<component>
...
...
@@ -1871,6 +1907,15 @@
<requirement>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.MailSender
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.SmsSender
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.WeixinSender
</role>
</requirement>
</requirements>
</component>
<component>
...
...
@@ -1910,6 +1955,15 @@
<requirement>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.MailSender
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.SmsSender
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.WeixinSender
</role>
</requirement>
</requirements>
</component>
<component>
...
...
@@ -1947,6 +2001,15 @@
<role>
com.dianping.cat.report.page.model.spi.ModelService
</role>
<role-hint>
top
</role-hint>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.MailSender
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.SmsSender
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.WeixinSender
</role>
</requirement>
</requirements>
</component>
<component>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录