Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
e668733f
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,发现更多精彩内容 >>
提交
e668733f
编写于
7月 23, 2014
作者:
L
leon.li
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add postman and alert manager to ExceptionAlert
上级
e93d41ee
变更
10
显示空白变更内容
内联
并排
Showing
10 changed file
with
183 addition
and
190 deletion
+183
-190
cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
...n/java/com/dianping/cat/build/ComponentsConfigurator.java
+17
-9
cat-home/src/main/java/com/dianping/cat/report/task/alert/BaseAlert.java
...in/java/com/dianping/cat/report/task/alert/BaseAlert.java
+1
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/business/BusinessAlert.java
...ianping/cat/report/task/alert/business/BusinessAlert.java
+3
-8
cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/AlertExceptionBuilder.java
...at/report/task/alert/exception/AlertExceptionBuilder.java
+18
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/ExceptionAlert.java
...nping/cat/report/task/alert/exception/ExceptionAlert.java
+17
-127
cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/ExceptionAlertConfig.java
...cat/report/task/alert/exception/ExceptionAlertConfig.java
+5
-4
cat-home/src/main/java/com/dianping/cat/report/task/alert/manager/AlertManager.java
.../dianping/cat/report/task/alert/manager/AlertManager.java
+5
-3
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/ExceptionPostman.java
...anping/cat/report/task/alert/sender/ExceptionPostman.java
+75
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/Postman.java
...va/com/dianping/cat/report/task/alert/sender/Postman.java
+1
-1
cat-home/src/main/resources/META-INF/plexus/components.xml
cat-home/src/main/resources/META-INF/plexus/components.xml
+41
-38
未找到文件。
cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
浏览文件 @
e668733f
...
...
@@ -64,9 +64,12 @@ import com.dianping.cat.report.task.alert.business.BusinessAlertConfig;
import
com.dianping.cat.report.task.alert.exception.AlertExceptionBuilder
;
import
com.dianping.cat.report.task.alert.exception.ExceptionAlert
;
import
com.dianping.cat.report.task.alert.exception.ExceptionAlertConfig
;
import
com.dianping.cat.report.task.alert.manager.AlertManager
;
import
com.dianping.cat.report.task.alert.network.NetworkAlert
;
import
com.dianping.cat.report.task.alert.network.NetworkAlertConfig
;
import
com.dianping.cat.report.task.alert.sender.ExceptionPostman
;
import
com.dianping.cat.report.task.alert.sender.MailSender
;
import
com.dianping.cat.report.task.alert.sender.Postman
;
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
;
...
...
@@ -80,6 +83,7 @@ import com.dianping.cat.report.task.product.ProjectUpdateTask;
import
com.dianping.cat.report.view.DomainNavManager
;
import
com.dianping.cat.service.IpService
;
import
com.dianping.cat.system.config.AlertConfigManager
;
import
com.dianping.cat.system.config.AlertTypeManager
;
import
com.dianping.cat.system.config.BugConfigManager
;
import
com.dianping.cat.system.config.BusinessRuleConfigManager
;
import
com.dianping.cat.system.config.ConfigReloadTask
;
...
...
@@ -278,33 +282,37 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
WeixinSender
.
class
).
req
(
MailSMS
.
class
));
all
.
add
(
C
(
AlertManager
.
class
).
req
(
AlertDao
.
class
));
all
.
add
(
C
(
Postman
.
class
).
req
(
ProjectDao
.
class
,
MailSMS
.
class
,
MailSender
.
class
,
WeixinSender
.
class
,
SmsSender
.
class
,
AlertTypeManager
.
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
,
WeixinSend
er
.
class
));
.
req
(
RemoteMetricReportService
.
class
,
BusinessRuleConfigManager
.
class
,
DataChecker
.
class
)
.
req
(
Postman
.
class
,
AlertManag
er
.
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
,
WeixinSend
er
.
class
));
.
req
(
RemoteMetricReportService
.
class
,
NetworkRuleConfigManager
.
class
,
DataChecker
.
class
)
.
req
(
Postman
.
class
,
AlertManag
er
.
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
,
WeixinSend
er
.
class
));
.
req
(
RemoteMetricReportService
.
class
,
SystemRuleConfigManager
.
class
,
DataChecker
.
class
)
.
req
(
Postman
.
class
,
AlertManag
er
.
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
)
.
req
(
MailSender
.
class
,
SmsSender
.
class
,
WeixinSender
.
class
));
.
req
(
ExceptionAlertConfig
.
class
,
ExceptionConfigManager
.
class
,
AlertExceptionBuilder
.
class
)
.
req
(
ModelService
.
class
,
TopAnalyzer
.
ID
).
req
(
ExceptionPostman
.
class
,
AlertManager
.
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
浏览文件 @
e668733f
...
...
@@ -25,6 +25,7 @@ import com.dianping.cat.helper.TimeUtil;
import
com.dianping.cat.home.rule.entity.Condition
;
import
com.dianping.cat.home.rule.entity.Config
;
import
com.dianping.cat.report.baseline.BaselineService
;
import
com.dianping.cat.report.task.alert.manager.AlertManager
;
import
com.dianping.cat.report.task.alert.sender.Postman
;
import
com.dianping.cat.service.ModelPeriod
;
import
com.dianping.cat.service.ModelRequest
;
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/business/BusinessAlert.java
浏览文件 @
e668733f
...
...
@@ -13,7 +13,6 @@ import org.unidal.lookup.annotation.Inject;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.advanced.metric.config.entity.MetricItemConfig
;
import
com.dianping.cat.consumer.company.model.entity.ProductLine
;
import
com.dianping.cat.message.Event
;
import
com.dianping.cat.message.Transaction
;
import
com.dianping.cat.report.task.alert.AlertResultEntity
;
import
com.dianping.cat.report.task.alert.BaseAlert
;
...
...
@@ -68,17 +67,13 @@ public class BusinessAlert extends BaseAlert implements Task, LogEnabled {
}
for
(
AlertResultEntity
alertResult
:
alertResults
)
{
String
mailTitle
=
m_alertConfig
.
buildMailTitle
(
productLine
.
getTitle
(),
config
.
getTitle
());
String
contactInfo
=
buildContactInfo
(
domain
);
alertResult
.
setContent
(
alertResult
.
getContent
()
+
contactInfo
);
String
content
=
alertResult
.
getContent
();
m_alertInfo
.
addAlertInfo
(
product
,
metricKey
,
new
Date
().
getTime
());
storeAlert
(
domain
,
metric
,
mailTitle
,
alertResult
);
String
mailTitle
=
m_alertConfig
.
buildMailTitle
(
productLine
.
getTitle
(),
metric
);
m_alertManager
.
storeAlert
(
getName
(),
product
,
metric
,
mailTitle
,
alertResult
);
String
configId
=
getAlertConfig
().
getId
();
sendAllAlert
(
productLine
,
domain
,
mailTitle
,
content
,
alertResult
.
getAlertType
(),
configId
);
Cat
.
logEvent
(
configId
,
product
,
Event
.
SUCCESS
,
mailTitle
+
" "
+
content
);
m_postman
.
sendAlert
(
getAlertConfig
(),
alertResult
,
productLine
,
domain
,
mailTitle
,
configId
);
}
}
}
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/AlertExceptionBuilder.java
浏览文件 @
e668733f
...
...
@@ -133,6 +133,24 @@ public class AlertExceptionBuilder {
return
mailContent
;
}
public
String
buildDBContent
(
String
exceptions
,
String
domain
)
{
String
content
=
buildContent
(
exceptions
,
domain
);
String
url
=
"http://cat.dianpingoa.com/cat/r/p?domain="
+
domain
;
String
mailContent
=
content
+
"<br/>"
+
" <a href='"
+
url
+
"'>点击此处查看详情</a>"
;
return
mailContent
;
}
public
String
buildContent
(
String
exceptions
,
String
domain
)
{
StringBuilder
sb
=
new
StringBuilder
();
String
time
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm"
).
format
(
new
Date
());
sb
.
append
(
"[CAT异常告警] [项目: "
).
append
(
domain
).
append
(
"] : "
);
sb
.
append
(
exceptions
).
append
(
"[时间: "
).
append
(
time
).
append
(
"]"
);
return
sb
.
toString
();
}
public
String
buildContent
(
String
exceptions
,
String
domain
,
String
contactInfo
)
{
StringBuilder
sb
=
new
StringBuilder
();
String
time
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm"
).
format
(
new
Date
());
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/ExceptionAlert.java
浏览文件 @
e668733f
...
...
@@ -10,7 +10,6 @@ import java.util.Map.Entry;
import
org.codehaus.plexus.logging.LogEnabled
;
import
org.codehaus.plexus.logging.Logger
;
import
org.unidal.dal.jdbc.DalException
;
import
org.unidal.helper.Threads.Task
;
import
org.unidal.lookup.annotation.Inject
;
...
...
@@ -18,41 +17,24 @@ import com.dianping.cat.Cat;
import
com.dianping.cat.Constants
;
import
com.dianping.cat.consumer.top.TopAnalyzer
;
import
com.dianping.cat.consumer.top.model.entity.TopReport
;
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.helper.TimeUtil
;
import
com.dianping.cat.home.dal.report.Alert
;
import
com.dianping.cat.home.dal.report.AlertDao
;
import
com.dianping.cat.message.Event
;
import
com.dianping.cat.message.Transaction
;
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.AlertResultEntity
;
import
com.dianping.cat.report.task.alert.exception.AlertExceptionBuilder.AlertException
;
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.manager.AlertManager
;
import
com.dianping.cat.report.task.alert.sender.ExceptionPostman
;
import
com.dianping.cat.service.ModelRequest
;
import
com.dianping.cat.service.ModelResponse
;
import
com.dianping.cat.system.config.ExceptionConfigManager
;
import
com.dianping.cat.system.tool.MailSMS
;
import
com.site.lookup.util.StringUtils
;
public
class
ExceptionAlert
implements
Task
,
LogEnabled
{
@Inject
protected
AlertDao
m_alertDao
;
@Inject
private
ProjectDao
m_projectDao
;
@Inject
private
ExceptionAlertConfig
m_alertConfig
;
@Inject
private
MailSMS
m_mailSms
;
@Inject
private
ExceptionConfigManager
m_exceptionConfigManager
;
...
...
@@ -63,13 +45,10 @@ public class ExceptionAlert implements Task, LogEnabled {
private
ModelService
<
TopReport
>
m_topService
;
@Inject
protected
MailSender
m_mailSender
;
@Inject
protected
SmsSender
m_smsSender
;
protected
ExceptionPostman
m_postman
;
@Inject
protected
WeixinSender
m_weixinSend
er
;
protected
AlertManager
m_alertManag
er
;
private
static
final
long
DURATION
=
TimeUtil
.
ONE_MINUTE
;
...
...
@@ -77,19 +56,6 @@ public class ExceptionAlert implements Task, LogEnabled {
private
Logger
m_logger
;
private
Alert
buildAlert
(
String
domainName
,
AlertException
exception
,
String
mailContent
)
{
Alert
alert
=
new
Alert
();
alert
.
setDomain
(
domainName
);
alert
.
setAlertTime
(
new
Date
());
alert
.
setCategory
(
getName
());
alert
.
setType
(
exception
.
getType
());
alert
.
setContent
(
mailContent
);
alert
.
setMetric
(
exception
.
getName
());
return
alert
;
}
private
TopMetric
buildTopMetric
(
Date
date
)
{
TopReport
topReport
=
queryTopReport
(
date
);
TopMetric
topMetric
=
new
TopMetric
(
ALERT_PERIOD
,
Integer
.
MAX_VALUE
,
m_exceptionConfigManager
);
...
...
@@ -99,28 +65,6 @@ public class ExceptionAlert implements Task, LogEnabled {
return
topMetric
;
}
private
String
buildContactInfo
(
String
domainName
)
{
try
{
Project
project
=
m_projectDao
.
findByDomain
(
domainName
,
ProjectEntity
.
READSET_FULL
);
String
owners
=
project
.
getOwner
();
String
phones
=
project
.
getPhone
();
StringBuilder
builder
=
new
StringBuilder
();
if
(!
StringUtils
.
isEmpty
(
owners
))
{
builder
.
append
(
"[业务负责人: "
).
append
(
owners
).
append
(
" ]"
);
}
if
(!
StringUtils
.
isEmpty
(
phones
))
{
builder
.
append
(
"[负责人手机号码: "
).
append
(
phones
).
append
(
" ]"
);
}
return
builder
.
toString
();
}
catch
(
Exception
ex
)
{
Cat
.
logError
(
"build contact info error for doamin: "
+
domainName
,
ex
);
}
return
null
;
}
@Override
public
void
enableLogging
(
Logger
logger
)
{
m_logger
=
logger
;
...
...
@@ -130,16 +74,6 @@ public class ExceptionAlert implements Task, LogEnabled {
return
"exception-alert"
;
}
private
Project
queryProjectByDomain
(
String
projectName
)
{
Project
project
=
null
;
try
{
project
=
m_projectDao
.
findByDomain
(
projectName
,
ProjectEntity
.
READSET_FULL
);
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
return
project
;
}
private
TopReport
queryTopReport
(
Date
start
)
{
String
domain
=
Constants
.
CAT
;
String
date
=
String
.
valueOf
(
start
.
getTime
());
...
...
@@ -185,7 +119,18 @@ public class ExceptionAlert implements Task, LogEnabled {
for
(
Entry
<
String
,
List
<
AlertException
>>
entry
:
alertExceptions
.
entrySet
())
{
try
{
sendAndStoreAlert
(
entry
.
getKey
(),
entry
.
getValue
());
String
domain
=
entry
.
getKey
();
List
<
AlertException
>
exceptions
=
entry
.
getValue
();
m_postman
.
sendAlert
(
m_alertConfig
,
m_alertBuilder
,
domain
,
exceptions
);
String
mailTitle
=
m_alertConfig
.
buildMailTitle
(
domain
,
null
);
String
content
=
m_alertBuilder
.
buildDBContent
(
exceptions
.
toString
(),
domain
);
for
(
AlertException
exception
:
exceptions
)
{
AlertResultEntity
alertResult
=
new
AlertResultEntity
(
true
,
content
,
exception
.
getType
());
m_alertManager
.
storeAlert
(
getName
(),
domain
,
exception
.
getName
(),
mailTitle
,
alertResult
);
}
}
catch
(
Exception
e
)
{
m_logger
.
error
(
e
.
getMessage
());
}
...
...
@@ -208,61 +153,6 @@ public class ExceptionAlert implements Task, LogEnabled {
}
}
private
void
sendAndStoreAlert
(
String
domain
,
List
<
AlertException
>
exceptions
)
{
Project
project
=
queryProjectByDomain
(
domain
);
List
<
String
>
emails
=
m_alertConfig
.
buildMailReceivers
(
project
);
List
<
String
>
phones
=
m_alertConfig
.
buildSMSReceivers
(
project
);
String
weixins
=
m_alertConfig
.
buildWeiXinReceivers
(
project
);
String
mailTitle
=
m_alertConfig
.
buildMailTitle
(
domain
,
null
);
String
contactInfo
=
buildContactInfo
(
domain
);
String
mailContent
=
m_alertBuilder
.
buildMailContent
(
exceptions
.
toString
(),
domain
,
contactInfo
);
storeAlerts
(
domain
,
exceptions
,
mailTitle
+
"<br/>"
+
mailContent
);
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_weixinSender
.
sendAlert
(
emails
,
domain
,
mailTitle
,
weixinContent
,
"error"
);
Cat
.
logEvent
(
"ExceptionAlert"
,
domain
,
Event
.
SUCCESS
,
"[微信告警] "
+
mailTitle
+
" "
+
weixinContent
+
" "
+
domain
+
" "
+
weixins
);
}
List
<
AlertException
>
errorAndTriggeredExceptions
=
m_alertBuilder
.
buildErrorAndTriggeredException
(
exceptions
);
if
(!
errorAndTriggeredExceptions
.
isEmpty
())
{
String
smsContent
=
m_alertBuilder
.
buildContent
(
errorAndTriggeredExceptions
.
toString
(),
domain
,
contactInfo
);
m_smsSender
.
sendAlert
(
phones
,
domain
,
smsContent
,
smsContent
,
"error"
);
Cat
.
logEvent
(
"ExceptionAlert"
,
domain
,
Event
.
SUCCESS
,
"[短信告警] "
+
smsContent
);
m_mailSms
.
sendWeiXin
(
mailTitle
,
mailContent
,
domain
,
weixins
);
m_logger
.
info
(
mailTitle
+
" "
+
mailContent
+
" "
+
domain
+
" "
+
weixins
);
Cat
.
logEvent
(
"WeiXinAlert"
,
domain
,
Event
.
SUCCESS
,
"[微信告警] "
+
mailTitle
+
" "
+
mailContent
+
" "
+
domain
+
" "
+
weixins
);
}
}
private
void
storeAlerts
(
String
domain
,
List
<
AlertException
>
exceptions
,
String
mailContent
)
{
for
(
AlertException
exception
:
exceptions
)
{
storeAlert
(
domain
,
exception
,
mailContent
);
}
}
private
void
storeAlert
(
String
domainName
,
AlertException
exception
,
String
mailContent
)
{
Alert
alert
=
buildAlert
(
domainName
,
exception
,
mailContent
);
try
{
int
count
=
m_alertDao
.
insert
(
alert
);
if
(
count
!=
1
)
{
Cat
.
logError
(
"insert alert error: "
+
alert
.
toString
(),
new
RuntimeException
());
}
}
catch
(
DalException
e
)
{
Cat
.
logError
(
e
);
}
}
@Override
public
void
shutdown
()
{
}
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/ExceptionAlertConfig.java
浏览文件 @
e668733f
package
com.dianping.cat.report.task.alert.exception
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
com.dianping.cat.core.dal.Project
;
...
...
@@ -25,7 +26,7 @@ public class ExceptionAlertConfig extends BaseAlertConfig {
}
}
public
String
buildWeiXinReceivers
(
Project
project
)
{
public
List
<
String
>
buildWeiXinReceivers
(
Project
project
)
{
StringBuilder
builder
=
new
StringBuilder
();
Receiver
receiver
=
m_manager
.
queryReceiverById
(
getId
());
...
...
@@ -38,10 +39,10 @@ public class ExceptionAlertConfig extends BaseAlertConfig {
String
result
=
builder
.
toString
();
if
(
result
.
endsWith
(
","
))
{
return
result
.
substring
(
0
,
result
.
length
()
-
1
);
}
else
{
return
result
;
result
=
result
.
substring
(
0
,
result
.
length
()
-
1
);
}
return
Arrays
.
asList
(
result
.
split
(
","
));
}
}
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/AlertManager.java
→
cat-home/src/main/java/com/dianping/cat/report/task/alert/
manager/
AlertManager.java
浏览文件 @
e668733f
package
com.dianping.cat.report.task.alert
;
package
com.dianping.cat.report.task.alert
.manager
;
import
org.unidal.dal.jdbc.DalException
;
import
org.unidal.lookup.annotation.Inject
;
...
...
@@ -6,11 +6,12 @@ import org.unidal.lookup.annotation.Inject;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.home.dal.report.Alert
;
import
com.dianping.cat.home.dal.report.AlertDao
;
import
com.dianping.cat.report.task.alert.AlertResultEntity
;
public
class
AlertManager
{
@Inject
pr
otected
AlertDao
m_alertDao
;
pr
ivate
AlertDao
m_alertDao
;
private
Alert
buildAlert
(
String
categoryName
,
String
domainName
,
String
metricName
,
String
mailTitle
,
AlertResultEntity
alertResult
)
{
...
...
@@ -26,7 +27,7 @@ public class AlertManager {
return
alert
;
}
p
rotected
void
storeAlert
(
String
categoryName
,
String
domainName
,
String
metricName
,
String
mailTitle
,
p
ublic
void
storeAlert
(
String
categoryName
,
String
domainName
,
String
metricName
,
String
mailTitle
,
AlertResultEntity
alertResult
)
{
Alert
alert
=
buildAlert
(
categoryName
,
domainName
,
metricName
,
mailTitle
,
alertResult
);
...
...
@@ -40,4 +41,5 @@ public class AlertManager {
Cat
.
logError
(
e
);
}
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/ExceptionPostman.java
0 → 100644
浏览文件 @
e668733f
package
com.dianping.cat.report.task.alert.sender
;
import
java.util.List
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.core.dal.Project
;
import
com.dianping.cat.core.dal.ProjectEntity
;
import
com.dianping.cat.home.alert.type.entity.Type
;
import
com.dianping.cat.report.task.alert.exception.AlertExceptionBuilder
;
import
com.dianping.cat.report.task.alert.exception.AlertExceptionBuilder.AlertException
;
import
com.dianping.cat.report.task.alert.exception.ExceptionAlertConfig
;
public
class
ExceptionPostman
extends
Postman
{
private
Project
queryProjectByDomain
(
String
projectName
)
{
Project
project
=
null
;
try
{
project
=
m_projectDao
.
findByDomain
(
projectName
,
ProjectEntity
.
READSET_FULL
);
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
return
project
;
}
public
boolean
sendAlert
(
ExceptionAlertConfig
alertConfig
,
AlertExceptionBuilder
alertBuilder
,
String
domain
,
List
<
AlertException
>
exceptions
)
{
boolean
sendResult
=
true
;
Project
project
=
queryProjectByDomain
(
domain
);
String
mailTitle
=
alertConfig
.
buildMailTitle
(
domain
,
null
);
String
contactInfo
=
buildContactInfo
(
domain
);
Type
type
=
new
Type
();
for
(
AlertException
exception
:
exceptions
)
{
Type
tmpType
=
m_alertTypeManager
.
getType
(
alertConfig
.
getId
(),
domain
,
exception
.
getType
());
if
(
tmpType
.
isSendMail
())
{
type
.
setSendMail
(
true
);
}
if
(
tmpType
.
isSendWeixin
())
{
type
.
setSendWeixin
(
true
);
}
if
(
tmpType
.
isSendSms
())
{
type
.
setSendSms
(
true
);
}
}
if
(
type
.
isSendMail
())
{
List
<
String
>
emails
=
alertConfig
.
buildMailReceivers
(
project
);
String
mailContent
=
alertBuilder
.
buildMailContent
(
exceptions
.
toString
(),
domain
,
contactInfo
);
if
(!
m_mailSender
.
sendAlert
(
emails
,
domain
,
mailTitle
,
mailContent
))
{
sendResult
=
false
;
}
}
if
(
type
.
isSendWeixin
())
{
List
<
String
>
weixins
=
alertConfig
.
buildWeiXinReceivers
(
project
);
List
<
AlertException
>
errorExceptions
=
alertBuilder
.
buildErrorException
(
exceptions
);
String
weixinContent
=
alertBuilder
.
buildContent
(
errorExceptions
.
toString
(),
domain
,
contactInfo
);
if
(!
m_weixinSender
.
sendAlert
(
weixins
,
domain
,
mailTitle
,
weixinContent
))
{
sendResult
=
false
;
}
}
if
(
type
.
isSendSms
())
{
List
<
String
>
phones
=
alertConfig
.
buildSMSReceivers
(
project
);
List
<
AlertException
>
errorAndTriggeredExceptions
=
alertBuilder
.
buildErrorAndTriggeredException
(
exceptions
);
String
smsContent
=
alertBuilder
.
buildContent
(
errorAndTriggeredExceptions
.
toString
(),
domain
,
contactInfo
);
if
(!
m_smsSender
.
sendAlert
(
phones
,
domain
,
mailTitle
,
smsContent
))
{
sendResult
=
false
;
}
}
return
sendResult
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/Postman.java
浏览文件 @
e668733f
...
...
@@ -19,7 +19,7 @@ import com.site.lookup.util.StringUtils;
public
class
Postman
{
@Inject
pr
ivate
ProjectDao
m_projectDao
;
pr
otected
ProjectDao
m_projectDao
;
@Inject
protected
MailSender
m_mailSender
;
...
...
cat-home/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
e668733f
...
...
@@ -1864,6 +1864,39 @@
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.manager.AlertManager
</role>
<implementation>
com.dianping.cat.report.task.alert.manager.AlertManager
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.home.dal.report.AlertDao
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.Postman
</role>
<implementation>
com.dianping.cat.report.task.alert.sender.Postman
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.system.tool.MailSMS
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.MailSender
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.WeixinSender
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.SmsSender
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.system.config.AlertTypeManager
</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>
...
...
@@ -1899,16 +1932,10 @@
<role>
com.dianping.cat.report.task.alert.DataChecker
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.MailSender
</role>
<role>
com.dianping.cat.report.task.alert.sender.Postman
</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>
<role>
com.dianping.cat.report.task.alert.manager.AlertManager
</role>
</requirement>
</requirements>
</component>
...
...
@@ -1947,16 +1974,10 @@
<role>
com.dianping.cat.report.task.alert.DataChecker
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.
core.dal.ProjectDao
</role>
<role>
com.dianping.cat.
report.task.alert.sender.Postman
</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>
<role>
com.dianping.cat.report.task.alert.manager.AlertManager
</role>
</requirement>
</requirements>
</component>
...
...
@@ -1995,16 +2016,10 @@
<role>
com.dianping.cat.report.task.alert.DataChecker
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.MailSender
</role>
<role>
com.dianping.cat.report.task.alert.sender.Postman
</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>
<role>
com.dianping.cat.report.task.alert.manager.AlertManager
</role>
</requirement>
</requirements>
</component>
...
...
@@ -2021,36 +2036,24 @@
<role>
com.dianping.cat.report.task.alert.exception.ExceptionAlert
</role>
<implementation>
com.dianping.cat.report.task.alert.exception.ExceptionAlert
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.exception.ExceptionAlertConfig
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.system.tool.MailSMS
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.system.config.ExceptionConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.exception.AlertExceptionBuilder
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.home.dal.report.AlertDao
</role>
</requirement>
<requirement>
<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>
<role>
com.dianping.cat.report.task.alert.sender.ExceptionPostman
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.
sender.WeixinSend
er
</role>
<role>
com.dianping.cat.report.task.alert.
manager.AlertManag
er
</role>
</requirement>
</requirements>
</component>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录