Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
4df3cdb3
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,发现更多精彩内容 >>
提交
4df3cdb3
编写于
7月 28, 2014
作者:
Y
youyong205
浏览文件
操作
浏览文件
下载
差异文件
modify the broker-service
上级
5f6c516c
e8ef7e66
变更
63
隐藏空白更改
内联
并排
Showing
63 changed file
with
1433 addition
and
1034 deletion
+1433
-1034
cat-broker/src/main/java/com/dianping/cat/broker/api/page/batch/Handler.java
.../java/com/dianping/cat/broker/api/page/batch/Handler.java
+5
-5
cat-home/pom.xml
cat-home/pom.xml
+1
-1
cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
...n/java/com/dianping/cat/build/ComponentsConfigurator.java
+48
-34
cat-home/src/main/java/com/dianping/cat/report/task/alert/AlertResultEntity.java
...com/dianping/cat/report/task/alert/AlertResultEntity.java
+5
-5
cat-home/src/main/java/com/dianping/cat/report/task/alert/BaseAlert.java
...in/java/com/dianping/cat/report/task/alert/BaseAlert.java
+19
-23
cat-home/src/main/java/com/dianping/cat/report/task/alert/BaseAlertConfig.java
...a/com/dianping/cat/report/task/alert/BaseAlertConfig.java
+0
-99
cat-home/src/main/java/com/dianping/cat/report/task/alert/business/BusinessAlert.java
...ianping/cat/report/task/alert/business/BusinessAlert.java
+14
-12
cat-home/src/main/java/com/dianping/cat/report/task/alert/business/BusinessAlertConfig.java
...g/cat/report/task/alert/business/BusinessAlertConfig.java
+0
-22
cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/AlertExceptionBuilder.java
...at/report/task/alert/exception/AlertExceptionBuilder.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
+12
-17
cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/ExceptionAlertConfig.java
...cat/report/task/alert/exception/ExceptionAlertConfig.java
+0
-95
cat-home/src/main/java/com/dianping/cat/report/task/alert/manager/AlertManager.java
.../dianping/cat/report/task/alert/manager/AlertManager.java
+11
-12
cat-home/src/main/java/com/dianping/cat/report/task/alert/network/NetworkAlert.java
.../dianping/cat/report/task/alert/network/NetworkAlert.java
+1
-11
cat-home/src/main/java/com/dianping/cat/report/task/alert/network/NetworkAlertConfig.java
...ing/cat/report/task/alert/network/NetworkAlertConfig.java
+0
-22
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/AlertChannel.java
...m/dianping/cat/report/task/alert/sender/AlertChannel.java
+20
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/AlertEntity.java
...om/dianping/cat/report/task/alert/sender/AlertEntity.java
+143
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/AlertMessageEntity.java
...ping/cat/report/task/alert/sender/AlertMessageEntity.java
+57
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/BaseSender.java
...com/dianping/cat/report/task/alert/sender/BaseSender.java
+0
-27
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/ExceptionPostman.java
...anping/cat/report/task/alert/sender/ExceptionPostman.java
+0
-75
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/MailSender.java
...com/dianping/cat/report/task/alert/sender/MailSender.java
+0
-33
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/Postman.java
...va/com/dianping/cat/report/task/alert/sender/Postman.java
+0
-98
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/SmsSender.java
.../com/dianping/cat/report/task/alert/sender/SmsSender.java
+0
-33
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/WeixinSender.java
...m/dianping/cat/report/task/alert/sender/WeixinSender.java
+0
-48
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/Decorator.java
...ing/cat/report/task/alert/sender/decorator/Decorator.java
+13
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/DecoratorManager.java
.../report/task/alert/sender/decorator/DecoratorManager.java
+50
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/DefaultDecorator.java
.../report/task/alert/sender/decorator/DefaultDecorator.java
+118
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/MailDecorator.java
...cat/report/task/alert/sender/decorator/MailDecorator.java
+30
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/SmsDecorator.java
.../cat/report/task/alert/sender/decorator/SmsDecorator.java
+31
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/WeixinDecorator.java
...t/report/task/alert/sender/decorator/WeixinDecorator.java
+30
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/dispatcher/Dispatcher.java
...g/cat/report/task/alert/sender/dispatcher/Dispatcher.java
+11
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/dispatcher/DispatcherManager.java
...eport/task/alert/sender/dispatcher/DispatcherManager.java
+88
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/dispatcher/MailDispatcher.java
...t/report/task/alert/sender/dispatcher/MailDispatcher.java
+46
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/dispatcher/SmsDispatcher.java
...at/report/task/alert/sender/dispatcher/SmsDispatcher.java
+46
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/dispatcher/WeixinDispatcher.java
...report/task/alert/sender/dispatcher/WeixinDispatcher.java
+47
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/Seeker.java
...ianping/cat/report/task/alert/sender/receiver/Seeker.java
+222
-0
cat-home/src/main/java/com/dianping/cat/report/task/alert/system/SystemAlert.java
...om/dianping/cat/report/task/alert/system/SystemAlert.java
+1
-11
cat-home/src/main/java/com/dianping/cat/report/task/alert/system/SystemAlertConfig.java
...nping/cat/report/task/alert/system/SystemAlertConfig.java
+0
-22
cat-home/src/main/java/com/dianping/cat/report/task/alert/thirdParty/ThirdPartyAlert.java
...ing/cat/report/task/alert/thirdParty/ThirdPartyAlert.java
+15
-79
cat-home/src/main/java/com/dianping/cat/system/config/AlertPolicyManager.java
...va/com/dianping/cat/system/config/AlertPolicyManager.java
+21
-31
cat-home/src/main/java/com/dianping/cat/system/page/config/Action.java
...main/java/com/dianping/cat/system/page/config/Action.java
+1
-1
cat-home/src/main/java/com/dianping/cat/system/page/config/Handler.java
...ain/java/com/dianping/cat/system/page/config/Handler.java
+7
-7
cat-home/src/main/java/com/dianping/cat/system/page/config/JspFile.java
...ain/java/com/dianping/cat/system/page/config/JspFile.java
+1
-1
cat-home/src/main/java/com/dianping/cat/system/page/config/JspViewer.java
...n/java/com/dianping/cat/system/page/config/JspViewer.java
+2
-2
cat-home/src/main/java/com/dianping/cat/system/page/router/Action.java
...main/java/com/dianping/cat/system/page/router/Action.java
+3
-1
cat-home/src/main/java/com/dianping/cat/system/page/router/Handler.java
...ain/java/com/dianping/cat/system/page/router/Handler.java
+21
-3
cat-home/src/main/java/com/dianping/cat/system/page/router/JspFile.java
...ain/java/com/dianping/cat/system/page/router/JspFile.java
+1
-1
cat-home/src/main/java/com/dianping/cat/system/page/router/JspViewer.java
...n/java/com/dianping/cat/system/page/router/JspViewer.java
+4
-2
cat-home/src/main/java/com/dianping/cat/system/page/router/Model.java
.../main/java/com/dianping/cat/system/page/router/Model.java
+1
-1
cat-home/src/main/java/com/dianping/cat/system/page/router/Payload.java
...ain/java/com/dianping/cat/system/page/router/Payload.java
+25
-3
cat-home/src/main/resources/META-INF/dal/model/alert-policy-codegen.xml
...ain/resources/META-INF/dal/model/alert-policy-codegen.xml
+19
-0
cat-home/src/main/resources/META-INF/dal/model/alert-policy-manifest.xml
...in/resources/META-INF/dal/model/alert-policy-manifest.xml
+6
-0
cat-home/src/main/resources/META-INF/dal/model/alert-policy-model.xml
.../main/resources/META-INF/dal/model/alert-policy-model.xml
+10
-13
cat-home/src/main/resources/META-INF/plexus/components.xml
cat-home/src/main/resources/META-INF/plexus/components.xml
+152
-119
cat-home/src/main/resources/META-INF/wizard/model/wizard.xml
cat-home/src/main/resources/META-INF/wizard/model/wizard.xml
+2
-2
cat-home/src/main/resources/config/default-alert-policy.xml
cat-home/src/main/resources/config/default-alert-policy.xml
+31
-0
cat-home/src/main/resources/config/default-alert-type.xml
cat-home/src/main/resources/config/default-alert-type.xml
+0
-26
cat-home/src/main/webapp/jsp/system/alert/policy.jsp
cat-home/src/main/webapp/jsp/system/alert/policy.jsp
+3
-3
cat-home/src/main/webapp/jsp/system/configTree.jsp
cat-home/src/main/webapp/jsp/system/configTree.jsp
+1
-1
cat-home/src/test/java/com/dianping/cat/report/alert/RuleConfigTest.java
...st/java/com/dianping/cat/report/alert/RuleConfigTest.java
+1
-1
cat-home/src/test/java/com/dianping/cat/report/task/metric/AlertConfigTest.java
.../com/dianping/cat/report/task/metric/AlertConfigTest.java
+1
-1
cat-home/src/test/resources/config/alert-policy.xml
cat-home/src/test/resources/config/alert-policy.xml
+26
-0
cat-home/src/test/resources/config/alert-type.xml
cat-home/src/test/resources/config/alert-type.xml
+0
-26
cat-maven-plugin/src/main/java/com/dianping/cat/plugin/InstallMojo.java
...in/src/main/java/com/dianping/cat/plugin/InstallMojo.java
+9
-4
未找到文件。
cat-broker/src/main/java/com/dianping/cat/broker/api/page/batch/Handler.java
浏览文件 @
4df3cdb3
...
...
@@ -156,13 +156,13 @@ public class Handler implements PageHandler<Context>, LogEnabled {
try
{
appData
.
setTimestamp
(
Long
.
parseLong
(
items
[
0
]));
Integer
command
=
m_appConfigManager
.
getCommands
().
get
(
URLDecoder
.
decode
(
items
[
1
],
"utf-8"
));
Integer
command
=
m_appConfigManager
.
getCommands
().
get
(
URLDecoder
.
decode
(
items
[
4
],
"utf-8"
));
if
(
command
!=
null
)
{
appData
.
setCommand
(
command
);
appData
.
setNetwork
(
Integer
.
parseInt
(
items
[
2
]));
appData
.
setVersion
(
Integer
.
parseInt
(
items
[
3
]));
appData
.
setConnectType
(
Integer
.
parseInt
(
items
[
4
]));
appData
.
setNetwork
(
Integer
.
parseInt
(
items
[
1
]));
appData
.
setVersion
(
Integer
.
parseInt
(
items
[
2
]));
appData
.
setConnectType
(
Integer
.
parseInt
(
items
[
3
]));
appData
.
setCode
(
Integer
.
parseInt
(
items
[
5
]));
appData
.
setPlatform
(
Integer
.
parseInt
(
items
[
6
]));
appData
.
setRequestByte
(
Integer
.
parseInt
(
items
[
7
]));
...
...
@@ -175,7 +175,7 @@ public class Handler implements PageHandler<Context>, LogEnabled {
m_appDataConsumer
.
enqueue
(
appData
);
Cat
.
logEvent
(
"Command"
,
String
.
valueOf
(
command
),
Event
.
SUCCESS
,
null
);
}
else
{
Cat
.
logEvent
(
"CommandNotFound"
,
items
[
1
],
Event
.
SUCCESS
,
items
[
1
]);
Cat
.
logEvent
(
"CommandNotFound"
,
items
[
4
],
Event
.
SUCCESS
,
items
[
4
]);
}
}
catch
(
Exception
e
)
{
m_logger
.
error
(
e
.
getMessage
(),
e
);
...
...
cat-home/pom.xml
浏览文件 @
4df3cdb3
...
...
@@ -166,7 +166,7 @@
${basedir}/src/main/resources/META-INF/dal/model/monitor-rules-manifest.xml,
${basedir}/src/main/resources/META-INF/dal/model/alertconfig-manifest.xml,
${basedir}/src/main/resources/META-INF/dal/model/alertsummary-manifest.xml,
${basedir}/src/main/resources/META-INF/dal/model/alert-
type
-manifest.xml,
${basedir}/src/main/resources/META-INF/dal/model/alert-
policy
-manifest.xml,
${basedir}/src/main/resources/META-INF/dal/model/thirdParty-manifest.xml,
${basedir}/src/main/resources/META-INF/dal/model/router-manifest.xml,
</manifest>
...
...
cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
浏览文件 @
4df3cdb3
...
...
@@ -62,24 +62,27 @@ import com.dianping.cat.report.task.alert.DataChecker;
import
com.dianping.cat.report.task.alert.DefaultDataChecker
;
import
com.dianping.cat.report.task.alert.RemoteMetricReportService
;
import
com.dianping.cat.report.task.alert.business.BusinessAlert
;
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.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.sender.decorator.Decorator
;
import
com.dianping.cat.report.task.alert.sender.decorator.DecoratorManager
;
import
com.dianping.cat.report.task.alert.sender.decorator.MailDecorator
;
import
com.dianping.cat.report.task.alert.sender.decorator.SmsDecorator
;
import
com.dianping.cat.report.task.alert.sender.decorator.WeixinDecorator
;
import
com.dianping.cat.report.task.alert.sender.dispatcher.Dispatcher
;
import
com.dianping.cat.report.task.alert.sender.dispatcher.DispatcherManager
;
import
com.dianping.cat.report.task.alert.sender.dispatcher.MailDispatcher
;
import
com.dianping.cat.report.task.alert.sender.dispatcher.SmsDispatcher
;
import
com.dianping.cat.report.task.alert.sender.dispatcher.WeixinDispatcher
;
import
com.dianping.cat.report.task.alert.sender.receiver.Seeker
;
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
;
import
com.dianping.cat.report.task.alert.summary.AlertSummaryGenerator
;
import
com.dianping.cat.report.task.alert.summary.AlertSummaryManager
;
import
com.dianping.cat.report.task.alert.system.SystemAlert
;
import
com.dianping.cat.report.task.alert.system.SystemAlertConfig
;
import
com.dianping.cat.report.task.alert.thirdParty.HttpConnector
;
import
com.dianping.cat.report.task.alert.thirdParty.ThirdPartyAlert
;
import
com.dianping.cat.report.task.alert.thirdParty.ThirdPartyAlertBuilder
;
...
...
@@ -87,7 +90,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.Alert
Type
Manager
;
import
com.dianping.cat.system.config.Alert
Policy
Manager
;
import
com.dianping.cat.system.config.BugConfigManager
;
import
com.dianping.cat.system.config.BusinessRuleConfigManager
;
import
com.dianping.cat.system.config.ConfigReloadTask
;
...
...
@@ -110,34 +113,54 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
private
List
<
Component
>
defineAlertComponents
()
{
List
<
Component
>
all
=
new
ArrayList
<
Component
>();
all
.
add
(
C
(
BusinessAlertConfig
.
class
).
req
(
AlertConfigManager
.
class
));
all
.
add
(
C
(
NetworkAlertConfig
.
class
).
req
(
AlertConfigManager
.
class
));
all
.
add
(
C
(
SystemAlertConfig
.
class
).
req
(
AlertConfigManager
.
class
));
all
.
add
(
C
(
ExceptionAlertConfig
.
class
).
req
(
AlertConfigManager
.
class
));
all
.
add
(
C
(
AlertInfo
.
class
));
all
.
add
(
C
(
DefaultMailImpl
.
class
).
req
(
ServerConfigManager
.
class
));
all
.
add
(
C
(
DataChecker
.
class
,
DefaultDataChecker
.
class
));
all
.
add
(
C
(
RemoteMetricReportService
.
class
).
req
(
ServerConfigManager
.
class
));
all
.
add
(
C
(
Dispatcher
.
class
,
MailDispatcher
.
ID
,
MailDispatcher
.
class
).
req
(
MailSMS
.
class
));
all
.
add
(
C
(
Dispatcher
.
class
,
SmsDispatcher
.
ID
,
SmsDispatcher
.
class
).
req
(
MailSMS
.
class
));
all
.
add
(
C
(
Dispatcher
.
class
,
WeixinDispatcher
.
ID
,
WeixinDispatcher
.
class
).
req
(
MailSMS
.
class
));
all
.
add
(
C
(
Decorator
.
class
,
MailDecorator
.
ID
,
MailDecorator
.
class
).
req
(
ProjectDao
.
class
));
all
.
add
(
C
(
Decorator
.
class
,
SmsDecorator
.
ID
,
SmsDecorator
.
class
).
req
(
ProjectDao
.
class
));
all
.
add
(
C
(
Decorator
.
class
,
WeixinDecorator
.
ID
,
WeixinDecorator
.
class
).
req
(
ProjectDao
.
class
));
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
(
Seeker
.
class
).
req
(
ProjectDao
.
class
,
ProductLineConfigManager
.
class
,
AlertConfigManager
.
class
));
all
.
add
(
C
(
DispatcherManager
.
class
)
.
req
(
AlertPolicyManager
.
class
,
DecoratorManager
.
class
,
Seeker
.
class
,
AlertManager
.
class
)
.
req
(
Dispatcher
.
class
,
MailDispatcher
.
ID
,
"mailDispatcher"
)
.
req
(
Dispatcher
.
class
,
WeixinDispatcher
.
ID
,
"weixinDispatcher"
)
.
req
(
Dispatcher
.
class
,
SmsDispatcher
.
ID
,
"smsDispatcher"
));
all
.
add
(
C
(
BusinessAlert
.
class
).
req
(
MetricConfigManager
.
class
,
ProductLineConfigManager
.
class
,
BaselineService
.
class
,
MailSMS
.
class
,
BusinessAlertConfig
.
class
,
AlertInfo
.
class
,
AlertDao
.
class
)
//
.
req
(
RemoteMetricReportService
.
class
,
BusinessRuleConfigManager
.
class
,
DataCheck
er
.
class
));
BaselineService
.
class
,
AlertInfo
.
class
).
req
(
RemoteMetricReportService
.
class
,
BusinessRuleConfigManager
.
class
,
DataChecker
.
class
,
DispatcherManag
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
,
DataCheck
er
.
class
));
all
.
add
(
C
(
NetworkAlert
.
class
).
req
(
ProductLineConfigManager
.
class
,
BaselineService
.
class
,
AlertInfo
.
class
)
.
req
(
RemoteMetricReportService
.
class
,
NetworkRuleConfigManager
.
class
,
DataChecker
.
class
,
DispatcherManag
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
));
all
.
add
(
C
(
SystemAlert
.
class
).
req
(
ProductLineConfigManager
.
class
,
BaselineService
.
class
,
AlertInfo
.
class
).
req
(
RemoteMetricReportService
.
class
,
SystemRuleConfigManager
.
class
,
DataChecker
.
class
,
DispatcherManager
.
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
(
ExceptionConfigManager
.
class
,
AlertExceptionBuilder
.
class
,
DispatcherManager
.
class
).
req
(
ModelService
.
class
,
TopAnalyzer
.
ID
));
all
.
add
(
C
(
ThirdPartyAlert
.
class
).
req
(
ProjectDao
.
class
,
MailSend
er
.
class
));
all
.
add
(
C
(
ThirdPartyAlert
.
class
).
req
(
DispatcherManag
er
.
class
));
all
.
add
(
C
(
HttpConnector
.
class
));
...
...
@@ -271,17 +294,8 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
NetGraphManager
.
class
).
req
(
ServerConfigManager
.
class
,
RemoteMetricReportService
.
class
).
req
(
ReportServiceManager
.
class
,
NetGraphBuilder
.
class
,
AlertInfo
.
class
,
NetGraphConfigManager
.
class
));
all
.
add
(
C
(
MailSender
.
class
).
req
(
MailSMS
.
class
));
all
.
add
(
C
(
SmsSender
.
class
).
req
(
MailSMS
.
class
));
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
(
AlertExceptionBuilder
.
class
).
req
(
ExceptionConfigManager
.
class
));
all
.
add
(
C
(
AlertSummaryExecutor
.
class
).
req
(
AlertSummaryGenerator
.
class
,
AlertSummaryManager
.
class
,
MailSMS
.
class
)
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/AlertResultEntity.java
浏览文件 @
4df3cdb3
...
...
@@ -7,14 +7,14 @@ public class AlertResultEntity {
private
String
m_content
;
private
String
m_alert
Type
;
private
String
m_alert
Level
;
private
Date
m_alertTime
;
public
AlertResultEntity
(
boolean
result
,
String
content
,
String
alert
Type
)
{
public
AlertResultEntity
(
boolean
result
,
String
content
,
String
alert
Level
)
{
this
.
m_isTriggered
=
result
;
this
.
m_content
=
content
;
this
.
m_alert
Type
=
alertType
;
this
.
m_alert
Level
=
alertLevel
;
this
.
m_alertTime
=
new
Date
();
}
...
...
@@ -22,8 +22,8 @@ public class AlertResultEntity {
return
m_alertTime
;
}
public
String
getAlert
Type
()
{
return
m_alert
Type
;
public
String
getAlert
Level
()
{
return
m_alert
Level
;
}
public
String
getContent
()
{
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/BaseAlert.java
浏览文件 @
4df3cdb3
...
...
@@ -16,7 +16,6 @@ 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.consumer.metric.MetricAnalyzer
;
import
com.dianping.cat.consumer.metric.MetricConfigManager
;
import
com.dianping.cat.consumer.metric.ProductLineConfigManager
;
import
com.dianping.cat.consumer.metric.model.entity.MetricItem
;
import
com.dianping.cat.consumer.metric.model.entity.MetricReport
;
...
...
@@ -25,30 +24,24 @@ 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.report.task.alert.sender.AlertEntity
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity.AlertEntityBuilder
;
import
com.dianping.cat.report.task.alert.sender.dispatcher.DispatcherManager
;
import
com.dianping.cat.service.ModelPeriod
;
import
com.dianping.cat.service.ModelRequest
;
import
com.dianping.cat.system.config.BaseRuleConfigManager
;
import
com.dianping.cat.system.tool.MailSMS
;
public
abstract
class
BaseAlert
{
@Inject
protected
BaseRuleConfigManager
m_ruleConfigManager
;
@Inject
protected
MailSMS
m_mailSms
;
@Inject
protected
AlertInfo
m_alertInfo
;
@Inject
private
DataChecker
m_dataChecker
;
@Inject
protected
MetricConfigManager
m_metricConfigManager
;
@Inject
protected
ProductLineConfigManager
m_productLineConfigManager
;
...
...
@@ -59,10 +52,7 @@ public abstract class BaseAlert {
protected
RemoteMetricReportService
m_service
;
@Inject
protected
Postman
m_postman
;
@Inject
protected
AlertManager
m_alertManager
;
protected
DispatcherManager
m_dispatcherManager
;
protected
static
final
int
DATA_AREADY_MINUTE
=
1
;
...
...
@@ -76,7 +66,7 @@ public abstract class BaseAlert {
protected
Map
<
String
,
MetricReport
>
m_lastReports
=
new
HashMap
<
String
,
MetricReport
>();
pr
ivate
String
buildMetricName
(
String
metricKey
)
{
pr
otected
String
buildMetricName
(
String
metricKey
)
{
try
{
return
metricKey
.
split
(
":"
)[
2
];
}
catch
(
Exception
ex
)
{
...
...
@@ -85,7 +75,7 @@ public abstract class BaseAlert {
}
}
pr
ivate
String
extractDomain
(
String
metricKey
)
{
pr
otected
String
extractDomain
(
String
metricKey
)
{
try
{
return
metricKey
.
split
(
":"
)[
0
];
}
catch
(
Exception
ex
)
{
...
...
@@ -243,12 +233,20 @@ public abstract class BaseAlert {
m_alertInfo
.
addAlertInfo
(
productlineName
,
metricKey
,
new
Date
().
getTime
());
String
metricName
=
buildMetricName
(
metricKey
);
String
mailTitle
=
getAlertConfig
().
buildMailTitle
(
productLine
.
getTitle
(),
metricName
);
m_alertManager
.
storeAlert
(
getName
(),
productlineName
,
metricName
,
mailTitle
,
alertResult
);
String
domain
=
extractDomain
(
metricKey
);
String
configId
=
getAlertConfig
().
getId
();
m_postman
.
sendAlert
(
getAlertConfig
(),
alertResult
,
productLine
,
domain
,
mailTitle
,
configId
);
AlertEntityBuilder
builder
=
new
AlertEntity
().
new
AlertEntityBuilder
();
builder
.
buildDate
(
alertResult
.
getAlertTime
()).
buildContent
(
alertResult
.
getContent
())
.
buildLevel
(
alertResult
.
getAlertLevel
());
builder
.
buildMetric
(
metricName
).
buildProductline
(
productlineName
).
buildType
(
getName
());
if
(
"network"
.
equals
(
getName
()))
{
builder
.
buildGroup
(
productlineName
);
}
else
{
String
domain
=
extractDomain
(
metricKey
);
builder
.
buildGroup
(
domain
);
}
AlertEntity
alertEntity
=
builder
.
getAlertEntity
();
m_dispatcherManager
.
send
(
alertEntity
);
}
}
}
...
...
@@ -326,6 +324,4 @@ public abstract class BaseAlert {
}
protected
abstract
String
getName
();
protected
abstract
BaseAlertConfig
getAlertConfig
();
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/BaseAlertConfig.java
已删除
100644 → 0
浏览文件 @
5f6c516c
package
com.dianping.cat.report.task.alert
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.unidal.lookup.annotation.Inject
;
import
com.dianping.cat.consumer.company.model.entity.ProductLine
;
import
com.dianping.cat.home.alert.config.entity.Receiver
;
import
com.dianping.cat.system.config.AlertConfigManager
;
import
com.site.helper.Splitters
;
public
abstract
class
BaseAlertConfig
{
@Inject
protected
AlertConfigManager
m_manager
;
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
;
}
public
List
<
String
>
buildMailReceivers
(
ProductLine
productLine
)
{
List
<
String
>
mailReceivers
=
new
ArrayList
<
String
>();
Receiver
receiver
=
m_manager
.
queryReceiverById
(
getId
());
if
(
receiver
!=
null
&&
!
receiver
.
isEnable
())
{
return
mailReceivers
;
}
else
{
mailReceivers
.
addAll
(
buildDefaultMailReceivers
(
receiver
));
mailReceivers
.
addAll
(
buildProductlineMailReceivers
(
productLine
));
return
mailReceivers
;
}
}
private
List
<
String
>
buildProductlineMailReceivers
(
ProductLine
productLine
)
{
return
split
(
productLine
.
getEmail
());
}
private
List
<
String
>
buildProductlineSMSReceivers
(
ProductLine
productLine
)
{
return
split
(
productLine
.
getPhone
());
}
public
List
<
String
>
buildSMSReceivers
(
ProductLine
productLine
,
String
configId
)
{
List
<
String
>
smsReceivers
=
new
ArrayList
<
String
>();
Receiver
receiver
=
m_manager
.
queryReceiverById
(
configId
);
if
(
receiver
!=
null
&&
!
receiver
.
isEnable
())
{
return
smsReceivers
;
}
else
{
smsReceivers
.
addAll
(
buildDefaultSMSReceivers
(
receiver
));
smsReceivers
.
addAll
(
buildProductlineSMSReceivers
(
productLine
));
return
smsReceivers
;
}
}
public
List
<
String
>
buildSMSReceivers
(
ProductLine
productLine
)
{
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
;
}
}
public
abstract
String
buildMailTitle
(
String
artifactName
,
String
metricName
);
public
abstract
String
getId
();
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/business/BusinessAlert.java
浏览文件 @
4df3cdb3
...
...
@@ -13,16 +13,18 @@ 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.consumer.metric.MetricConfigManager
;
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.BaseAlertConfig
;
import
com.dianping.cat.report.task.alert.MetricType
;
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
{
@Inject
protected
BusinessAlertConfig
m_alertConfig
;
protected
MetricConfigManager
m_metricConfigManager
;
@Override
public
void
enableLogging
(
Logger
logger
)
{
...
...
@@ -31,12 +33,7 @@ public class BusinessAlert extends BaseAlert implements Task, LogEnabled {
@Override
public
String
getName
()
{
return
"business-alert"
;
}
@Override
public
BaseAlertConfig
getAlertConfig
()
{
return
m_alertConfig
;
return
"business"
;
}
public
boolean
needAlert
(
MetricItemConfig
config
)
{
...
...
@@ -68,12 +65,17 @@ public class BusinessAlert extends BaseAlert implements Task, LogEnabled {
for
(
AlertResultEntity
alertResult
:
alertResults
)
{
m_alertInfo
.
addAlertInfo
(
product
,
metricKey
,
new
Date
().
getTime
());
String
metricName
=
buildMetricName
(
metricKey
);
AlertEntityBuilder
builder
=
new
AlertEntity
().
new
AlertEntityBuilder
();
builder
.
buildDate
(
alertResult
.
getAlertTime
()).
buildContent
(
alertResult
.
getContent
())
.
buildLevel
(
alertResult
.
getAlertLevel
());
builder
.
buildMetric
(
metricName
).
buildProductline
(
product
).
buildType
(
getName
());
String
mailTitle
=
m_alertConfig
.
buildMailTitle
(
productLine
.
getTitle
(),
metric
);
m_alertManager
.
storeAlert
(
getName
(),
product
,
metric
,
mailTitle
,
alertResult
);
builder
.
buildGroup
(
domain
);
AlertEntity
alertEntity
=
builder
.
getAlertEntity
(
);
String
configId
=
getAlertConfig
().
getId
();
m_postman
.
sendAlert
(
getAlertConfig
(),
alertResult
,
productLine
,
domain
,
mailTitle
,
configId
);
m_dispatcherManager
.
send
(
alertEntity
);
}
}
}
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/business/BusinessAlertConfig.java
已删除
100644 → 0
浏览文件 @
5f6c516c
package
com.dianping.cat.report.task.alert.business
;
import
com.dianping.cat.report.task.alert.BaseAlertConfig
;
public
class
BusinessAlertConfig
extends
BaseAlertConfig
{
private
String
m_id
=
"business"
;
@Override
public
String
buildMailTitle
(
String
productlineName
,
String
metricName
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"[业务告警] [产品线 "
).
append
(
productlineName
).
append
(
"]"
);
sb
.
append
(
"[业务指标 "
).
append
(
metricName
).
append
(
"]"
);
return
sb
.
toString
();
}
public
String
getId
()
{
return
m_id
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/AlertExceptionBuilder.java
浏览文件 @
4df3cdb3
...
...
@@ -227,7 +227,7 @@ public class AlertExceptionBuilder {
@Override
public
String
toString
()
{
return
"
{exception_name="
+
m_name
+
", exception_count="
+
m_count
+
"}
"
;
return
"
[ 异常名称: "
+
m_name
+
" 异常数量:"
+
m_count
+
" ]
"
;
}
}
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/ExceptionAlert.java
浏览文件 @
4df3cdb3
...
...
@@ -20,19 +20,16 @@ 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.manager.AlertManager
;
import
com.dianping.cat.report.task.alert.sender.ExceptionPostman
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity.AlertEntityBuilder
;
import
com.dianping.cat.report.task.alert.sender.dispatcher.DispatcherManager
;
import
com.dianping.cat.service.ModelRequest
;
import
com.dianping.cat.service.ModelResponse
;
import
com.dianping.cat.system.config.ExceptionConfigManager
;
public
class
ExceptionAlert
implements
Task
{
@Inject
private
ExceptionAlertConfig
m_alertConfig
;
@Inject
private
ExceptionConfigManager
m_exceptionConfigManager
;
...
...
@@ -43,10 +40,7 @@ public class ExceptionAlert implements Task {
private
ModelService
<
TopReport
>
m_topService
;
@Inject
protected
ExceptionPostman
m_postman
;
@Inject
protected
AlertManager
m_alertManager
;
protected
DispatcherManager
m_dispatcherManager
;
private
static
final
long
DURATION
=
TimeUtil
.
ONE_MINUTE
;
...
...
@@ -62,7 +56,7 @@ public class ExceptionAlert implements Task {
}
public
String
getName
()
{
return
"exception
-alert
"
;
return
"exception"
;
}
private
TopReport
queryTopReport
(
Date
start
)
{
...
...
@@ -113,14 +107,15 @@ public class ExceptionAlert implements Task {
String
domain
=
entry
.
getKey
();
List
<
AlertException
>
exceptions
=
entry
.
getValue
();
m_postman
.
sendAlert
(
m_alertConfig
,
m_alertBuilder
,
domain
,
exceptions
);
for
(
AlertException
exception
:
exceptions
)
{
String
metricName
=
exception
.
getName
();
String
mailTitle
=
m_alertConfig
.
buildMailTitle
(
domain
,
null
);
String
content
=
m_alertBuilder
.
buildDBContent
(
exceptions
.
toString
(),
domain
);
AlertEntityBuilder
builder
=
new
AlertEntity
().
new
AlertEntityBuilder
();
builder
.
buildDate
(
new
Date
()).
buildLevel
(
exception
.
getType
()).
buildContent
(
exception
.
toString
());
builder
.
buildMetric
(
metricName
).
buildProductline
(
domain
).
buildType
(
getName
()).
buildGroup
(
domain
);
AlertEntity
alertEntity
=
builder
.
getAlertEntity
();
for
(
AlertException
exception
:
exceptions
)
{
AlertResultEntity
alertResult
=
new
AlertResultEntity
(
true
,
content
,
exception
.
getType
());
m_alertManager
.
storeAlert
(
getName
(),
domain
,
exception
.
getName
(),
mailTitle
,
alertResult
);
m_dispatcherManager
.
send
(
alertEntity
);
}
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/exception/ExceptionAlertConfig.java
已删除
100644 → 0
浏览文件 @
5f6c516c
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
;
import
com.dianping.cat.home.alert.config.entity.Receiver
;
import
com.dianping.cat.report.task.alert.BaseAlertConfig
;
public
class
ExceptionAlertConfig
extends
BaseAlertConfig
{
private
String
m_id
=
"exception"
;
public
List
<
String
>
buildMailReceivers
(
Project
project
)
{
List
<
String
>
mailReceivers
=
new
ArrayList
<
String
>();
Receiver
receiver
=
m_manager
.
queryReceiverById
(
getId
());
if
(
receiver
!=
null
&&
!
receiver
.
isEnable
())
{
return
mailReceivers
;
}
else
{
mailReceivers
.
addAll
(
buildDefaultMailReceivers
(
receiver
));
mailReceivers
.
addAll
(
buildProjectMailReceivers
(
project
));
return
mailReceivers
;
}
}
public
List
<
String
>
buildWeiXinReceivers
(
Project
project
)
{
StringBuilder
builder
=
new
StringBuilder
();
Receiver
receiver
=
m_manager
.
queryReceiverById
(
getId
());
if
(
receiver
!=
null
&&
!
receiver
.
isEnable
())
{
return
null
;
}
else
{
builder
.
append
(
buildDefaultWeixinReceivers
(
receiver
));
builder
.
append
(
project
.
getEmail
());
String
result
=
builder
.
toString
();
if
(
result
.
endsWith
(
","
))
{
result
=
result
.
substring
(
0
,
result
.
length
()
-
1
);
}
return
Arrays
.
asList
(
result
.
split
(
","
));
}
}
private
String
buildDefaultWeixinReceivers
(
Receiver
receiver
)
{
StringBuilder
builder
=
new
StringBuilder
();
if
(
receiver
!=
null
)
{
for
(
String
weixin
:
receiver
.
getWeixins
())
{
builder
.
append
(
weixin
+
","
);
}
}
return
builder
.
toString
();
}
@Override
public
String
buildMailTitle
(
String
domain
,
String
metricName
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"[CAT异常告警] [项目: "
).
append
(
domain
).
append
(
"]"
);
return
sb
.
toString
();
}
private
List
<
String
>
buildProjectMailReceivers
(
Project
project
)
{
return
split
(
project
.
getEmail
());
}
public
List
<
String
>
buildSMSReceivers
(
Project
project
)
{
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
(
buildProjectSMSReceivers
(
project
));
return
smsReceivers
;
}
}
private
List
<
String
>
buildProjectSMSReceivers
(
Project
project
)
{
return
split
(
project
.
getPhone
());
}
public
String
getId
()
{
return
m_id
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/manager/AlertManager.java
浏览文件 @
4df3cdb3
...
...
@@ -6,30 +6,29 @@ 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
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity
;
import
com.dianping.cat.report.task.alert.sender.AlertMessageEntity
;
public
class
AlertManager
{
@Inject
private
AlertDao
m_alertDao
;
private
Alert
buildAlert
(
String
categoryName
,
String
domainName
,
String
metricName
,
String
mailTitle
,
AlertResultEntity
alertResult
)
{
private
Alert
buildAlert
(
AlertEntity
alertEntity
,
AlertMessageEntity
message
)
{
Alert
alert
=
new
Alert
();
alert
.
setDomain
(
domainName
);
alert
.
setAlertTime
(
alert
Result
.
getAlertTim
e
());
alert
.
setCategory
(
categoryName
);
alert
.
setType
(
alert
Result
.
getAlertType
());
alert
.
setContent
(
m
ailTitle
+
"<br/>"
+
alertResult
.
getContent
());
alert
.
setMetric
(
metricName
);
alert
.
setDomain
(
alertEntity
.
getGroup
()
);
alert
.
setAlertTime
(
alert
Entity
.
getAlertDat
e
());
alert
.
setCategory
(
alertEntity
.
getType
()
+
"-alert"
);
alert
.
setType
(
alert
Entity
.
getLevel
());
alert
.
setContent
(
m
essage
.
getTitle
()
+
"<br/>"
+
message
.
getContent
());
alert
.
setMetric
(
alertEntity
.
getMetric
()
);
return
alert
;
}
public
void
storeAlert
(
String
categoryName
,
String
domainName
,
String
metricName
,
String
mailTitle
,
AlertResultEntity
alertResult
)
{
Alert
alert
=
buildAlert
(
categoryName
,
domainName
,
metricName
,
mailTitle
,
alertResult
);
public
void
storeAlert
(
AlertEntity
alertEntity
,
AlertMessageEntity
message
)
{
Alert
alert
=
buildAlert
(
alertEntity
,
message
);
try
{
int
count
=
m_alertDao
.
insert
(
alert
);
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/network/NetworkAlert.java
浏览文件 @
4df3cdb3
...
...
@@ -6,19 +6,14 @@ import java.util.Map;
import
org.codehaus.plexus.logging.LogEnabled
;
import
org.codehaus.plexus.logging.Logger
;
import
org.unidal.helper.Threads.Task
;
import
org.unidal.lookup.annotation.Inject
;
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.BaseAlertConfig
;
public
class
NetworkAlert
extends
BaseAlert
implements
Task
,
LogEnabled
{
@Inject
private
NetworkAlertConfig
m_alertConfig
;
@Override
public
void
enableLogging
(
Logger
logger
)
{
m_logger
=
logger
;
...
...
@@ -26,12 +21,7 @@ public class NetworkAlert extends BaseAlert implements Task, LogEnabled {
@Override
public
String
getName
()
{
return
"network-alert"
;
}
@Override
public
BaseAlertConfig
getAlertConfig
()
{
return
m_alertConfig
;
return
"network"
;
}
@Override
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/network/NetworkAlertConfig.java
已删除
100644 → 0
浏览文件 @
5f6c516c
package
com.dianping.cat.report.task.alert.network
;
import
com.dianping.cat.report.task.alert.BaseAlertConfig
;
public
class
NetworkAlertConfig
extends
BaseAlertConfig
{
private
String
m_id
=
"network"
;
@Override
public
String
buildMailTitle
(
String
productlineName
,
String
metricName
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"[网络告警] [产品线 "
).
append
(
productlineName
).
append
(
"]"
);
sb
.
append
(
"[网络指标 "
).
append
(
metricName
).
append
(
"]"
);
return
sb
.
toString
();
}
public
String
getId
()
{
return
m_id
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/AlertChannel.java
0 → 100644
浏览文件 @
4df3cdb3
package
com.dianping.cat.report.task.alert.sender
;
public
enum
AlertChannel
{
MAIL
(
"mail"
),
SMS
(
"sms"
),
WEIXIN
(
"weixin"
);
private
String
m_name
;
private
AlertChannel
(
String
name
)
{
m_name
=
name
;
}
public
String
getName
()
{
return
m_name
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/AlertEntity.java
0 → 100644
浏览文件 @
4df3cdb3
package
com.dianping.cat.report.task.alert.sender
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.Map
;
public
class
AlertEntity
{
private
String
m_id
;
private
Date
m_alertDate
;
private
String
m_type
;
private
String
m_group
;
private
String
m_level
;
private
String
m_productline
;
private
String
m_metric
;
private
String
m_content
;
private
Map
<
String
,
Object
>
m_paras
=
new
HashMap
<
String
,
Object
>();
public
Date
getAlertDate
()
{
return
m_alertDate
;
}
public
String
getContent
()
{
return
m_content
;
}
public
String
getGroup
()
{
return
m_group
;
}
public
String
getId
()
{
return
m_id
;
}
public
String
getLevel
()
{
return
m_level
;
}
public
String
getMetric
()
{
return
m_metric
;
}
public
Map
<
String
,
Object
>
getParas
()
{
return
m_paras
;
}
public
String
getProductline
()
{
return
m_productline
;
}
public
String
getType
()
{
return
m_type
;
}
public
void
setAlertDate
(
Date
alertDate
)
{
m_alertDate
=
alertDate
;
}
public
void
setContent
(
String
content
)
{
m_content
=
content
;
}
public
void
setGroup
(
String
group
)
{
m_group
=
group
;
}
public
void
setId
(
String
id
)
{
m_id
=
id
;
}
public
void
setLevel
(
String
level
)
{
m_level
=
level
;
}
public
void
setMetric
(
String
metricName
)
{
m_metric
=
metricName
;
}
public
void
setParas
(
Map
<
String
,
Object
>
paras
)
{
m_paras
=
paras
;
}
public
void
setProductline
(
String
productline
)
{
m_productline
=
productline
;
}
public
void
setType
(
String
type
)
{
m_type
=
type
;
}
public
class
AlertEntityBuilder
{
private
AlertEntity
m_alertEntity
=
new
AlertEntity
();
public
AlertEntityBuilder
buildDate
(
Date
date
)
{
m_alertEntity
.
setAlertDate
(
date
);
return
this
;
}
public
AlertEntityBuilder
buildType
(
String
type
)
{
m_alertEntity
.
setType
(
type
);
return
this
;
}
public
AlertEntityBuilder
buildGroup
(
String
group
)
{
m_alertEntity
.
setGroup
(
group
);
return
this
;
}
public
AlertEntityBuilder
buildLevel
(
String
level
)
{
m_alertEntity
.
setLevel
(
level
);
return
this
;
}
public
AlertEntityBuilder
buildProductline
(
String
productline
)
{
m_alertEntity
.
setProductline
(
productline
);
return
this
;
}
public
AlertEntityBuilder
buildMetric
(
String
metric
)
{
m_alertEntity
.
setMetric
(
metric
);
return
this
;
}
public
AlertEntityBuilder
buildContent
(
String
content
)
{
m_alertEntity
.
setContent
(
content
);
return
this
;
}
public
AlertEntity
getAlertEntity
(){
return
m_alertEntity
;
}
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/AlertMessageEntity.java
0 → 100644
浏览文件 @
4df3cdb3
package
com.dianping.cat.report.task.alert.sender
;
import
java.util.List
;
public
class
AlertMessageEntity
{
private
String
m_group
;
private
String
m_title
;
private
String
m_content
;
private
List
<
String
>
m_receivers
;
public
AlertMessageEntity
(
String
group
,
String
title
,
String
content
,
List
<
String
>
receivers
)
{
m_group
=
group
;
m_title
=
title
;
m_content
=
content
;
m_receivers
=
receivers
;
}
public
String
getContent
()
{
return
m_content
;
}
public
String
getGroup
()
{
return
m_group
;
}
public
List
<
String
>
getReceivers
()
{
return
m_receivers
;
}
public
String
getReceiverString
()
{
StringBuilder
builder
=
new
StringBuilder
(
100
);
for
(
String
receiver
:
m_receivers
)
{
builder
.
append
(
receiver
).
append
(
","
);
}
String
tmpResult
=
builder
.
toString
();
if
(
tmpResult
.
endsWith
(
","
))
{
return
tmpResult
.
substring
(
0
,
tmpResult
.
length
()
-
1
);
}
else
{
return
tmpResult
;
}
}
public
String
getTitle
()
{
return
m_title
;
}
@Override
public
String
toString
()
{
return
"title: "
+
m_title
+
" content: "
+
m_content
+
" receiver: "
+
getReceiverString
();
}
}
\ No newline at end of file
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/BaseSender.java
已删除
100644 → 0
浏览文件 @
5f6c516c
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.system.tool.MailSMS
;
public
abstract
class
BaseSender
implements
LogEnabled
{
protected
Logger
m_logger
;
@Inject
protected
MailSMS
m_mailSms
;
protected
abstract
void
sendLog
(
String
title
,
String
content
,
List
<
String
>
receivers
);
public
abstract
boolean
sendAlert
(
List
<
String
>
receivers
,
String
domain
,
String
title
,
String
content
);
@Override
public
void
enableLogging
(
Logger
logger
)
{
m_logger
=
logger
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/ExceptionPostman.java
已删除
100644 → 0
浏览文件 @
5f6c516c
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/MailSender.java
已删除
100644 → 0
浏览文件 @
5f6c516c
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
)
{
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/Postman.java
已删除
100644 → 0
浏览文件 @
5f6c516c
package
com.dianping.cat.report.task.alert.sender
;
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.core.dal.Project
;
import
com.dianping.cat.core.dal.ProjectDao
;
import
com.dianping.cat.core.dal.ProjectEntity
;
import
com.dianping.cat.home.alert.type.entity.Type
;
import
com.dianping.cat.message.Event
;
import
com.dianping.cat.report.task.alert.AlertResultEntity
;
import
com.dianping.cat.report.task.alert.BaseAlertConfig
;
import
com.dianping.cat.system.config.AlertTypeManager
;
import
com.site.lookup.util.StringUtils
;
public
class
Postman
{
@Inject
protected
ProjectDao
m_projectDao
;
@Inject
protected
MailSender
m_mailSender
;
@Inject
protected
SmsSender
m_smsSender
;
@Inject
protected
WeixinSender
m_weixinSender
;
@Inject
protected
AlertTypeManager
m_alertTypeManager
;
protected
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
;
}
protected
List
<
String
>
queryReceivers
()
{
return
null
;
}
public
boolean
sendAlert
(
BaseAlertConfig
alertConfig
,
AlertResultEntity
alertResult
,
ProductLine
productline
,
String
domain
,
String
mailTitle
,
String
configId
)
{
String
content
=
alertResult
.
getContent
();
String
contactInfo
=
buildContactInfo
(
domain
);
Type
type
=
m_alertTypeManager
.
getType
(
configId
,
domain
,
alertResult
.
getAlertType
());
boolean
sendResult
=
true
;
if
(
type
.
isSendMail
())
{
String
mailContent
=
content
+
"<br/>"
+
contactInfo
;
List
<
String
>
receivers
=
alertConfig
.
buildMailReceivers
(
productline
);
if
(!
m_mailSender
.
sendAlert
(
receivers
,
domain
,
mailTitle
,
mailContent
))
{
sendResult
=
false
;
}
}
if
(
type
.
isSendWeixin
())
{
String
weixinContent
=
content
+
"\n"
+
contactInfo
;
List
<
String
>
receivers
=
alertConfig
.
buildMailReceivers
(
productline
);
if
(!
m_weixinSender
.
sendAlert
(
receivers
,
domain
,
mailTitle
,
weixinContent
))
{
sendResult
=
false
;
}
}
if
(
type
.
isSendSms
())
{
String
smsContent
=
content
+
contactInfo
;
List
<
String
>
receivers
=
alertConfig
.
buildSMSReceivers
(
productline
);
if
(!
m_smsSender
.
sendAlert
(
receivers
,
domain
,
mailTitle
,
smsContent
))
{
sendResult
=
false
;
}
}
Cat
.
logEvent
(
configId
,
productline
.
getId
(),
Event
.
SUCCESS
,
mailTitle
+
" "
+
content
);
return
sendResult
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/SmsSender.java
已删除
100644 → 0
浏览文件 @
5f6c516c
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
)
{
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
已删除
100644 → 0
浏览文件 @
5f6c516c
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
)
{
try
{
content
=
content
.
replaceAll
(
"<br/>"
,
"\n"
);
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/java/com/dianping/cat/report/task/alert/sender/decorator/Decorator.java
0 → 100644
浏览文件 @
4df3cdb3
package
com.dianping.cat.report.task.alert.sender.decorator
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity
;
public
interface
Decorator
{
String
getId
();
String
generateTitle
(
AlertEntity
alert
);
String
generateContent
(
AlertEntity
alert
);
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/DecoratorManager.java
0 → 100644
浏览文件 @
4df3cdb3
package
com.dianping.cat.report.task.alert.sender.decorator
;
import
java.util.HashMap
;
import
java.util.Map
;
import
org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable
;
import
org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException
;
import
org.unidal.lookup.annotation.Inject
;
import
org.unidal.tuple.Pair
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity
;
public
class
DecoratorManager
implements
Initializable
{
@Inject
(
type
=
Decorator
.
class
,
value
=
MailDecorator
.
ID
)
private
Decorator
m_mailDecorator
;
@Inject
(
type
=
Decorator
.
class
,
value
=
WeixinDecorator
.
ID
)
private
Decorator
m_weixinDecorator
;
@Inject
(
type
=
Decorator
.
class
,
value
=
SmsDecorator
.
ID
)
private
Decorator
m_smsDecorator
;
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
);
return
new
Pair
<
String
,
String
>(
decorator
.
generateTitle
(
alert
),
decorator
.
generateContent
(
alert
));
}
@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
);
}
public
void
setMailDecorator
(
Decorator
decorator
)
{
m_mailDecorator
=
decorator
;
}
public
void
setSmsDecorator
(
Decorator
decorator
)
{
m_smsDecorator
=
decorator
;
}
public
void
setWeixinDecorator
(
Decorator
decorator
)
{
m_weixinDecorator
=
decorator
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/DefaultDecorator.java
0 → 100644
浏览文件 @
4df3cdb3
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
;
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.report.task.alert.sender.AlertEntity
;
import
com.site.lookup.util.StringUtils
;
public
abstract
class
DefaultDecorator
implements
Decorator
{
@Inject
protected
ProjectDao
m_projectDao
;
private
DateFormat
m_fromat
=
new
SimpleDateFormat
(
"yyyyMMdd"
);
protected
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
""
;
}
protected
String
buildExceptionContent
(
AlertEntity
alert
)
{
try
{
StringBuilder
sb
=
new
StringBuilder
();
String
domain
=
alert
.
getGroup
();
String
date
=
m_fromat
.
format
(
alert
.
getAlertDate
());
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
();
if
(
"business"
.
equals
(
type
))
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"[业务告警] [产品线 "
).
append
(
alert
.
getProductline
()).
append
(
"]"
);
sb
.
append
(
"[业务指标 "
).
append
(
alert
.
getMetric
()).
append
(
"]"
);
return
sb
.
toString
();
}
if
(
"network"
.
equals
(
type
))
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"[网络告警] [产品线 "
).
append
(
alert
.
getProductline
()).
append
(
"]"
);
sb
.
append
(
"[网络指标 "
).
append
(
alert
.
getMetric
()).
append
(
"]"
);
return
sb
.
toString
();
}
if
(
"system"
.
equals
(
type
))
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"[系统告警] [产品线 "
).
append
(
alert
.
getProductline
()).
append
(
"]"
);
sb
.
append
(
"[系统指标 "
).
append
(
alert
.
getMetric
()).
append
(
"]"
);
return
sb
.
toString
();
}
if
(
"exception"
.
equals
(
type
))
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"[CAT异常告警] [项目: "
).
append
(
alert
.
getGroup
()).
append
(
"]"
);
return
sb
.
toString
();
}
if
(
"thidparty"
.
equals
(
type
))
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"[CAT第三方告警] [项目: "
).
append
(
alert
.
getGroup
()).
append
(
"]"
);
return
sb
.
toString
();
}
return
""
;
}
public
abstract
String
generateContent
(
AlertEntity
alert
);
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/MailDecorator.java
0 → 100644
浏览文件 @
4df3cdb3
package
com.dianping.cat.report.task.alert.sender.decorator
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity
;
public
class
MailDecorator
extends
DefaultDecorator
{
public
static
final
String
ID
=
"mail"
;
@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
());
}
@Override
public
String
getId
()
{
return
ID
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/decorator/SmsDecorator.java
0 → 100644
浏览文件 @
4df3cdb3
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/WeixinDecorator.java
0 → 100644
浏览文件 @
4df3cdb3
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/dispatcher/Dispatcher.java
0 → 100644
浏览文件 @
4df3cdb3
package
com.dianping.cat.report.task.alert.sender.dispatcher
;
import
com.dianping.cat.report.task.alert.sender.AlertMessageEntity
;
public
interface
Dispatcher
{
String
getId
();
boolean
send
(
AlertMessageEntity
message
,
String
type
);
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/dispatcher/DispatcherManager.java
0 → 100644
浏览文件 @
4df3cdb3
package
com.dianping.cat.report.task.alert.sender.dispatcher
;
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
org.unidal.tuple.Pair
;
import
com.dianping.cat.report.task.alert.manager.AlertManager
;
import
com.dianping.cat.report.task.alert.sender.AlertChannel
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity
;
import
com.dianping.cat.report.task.alert.sender.AlertMessageEntity
;
import
com.dianping.cat.report.task.alert.sender.decorator.DecoratorManager
;
import
com.dianping.cat.report.task.alert.sender.receiver.Seeker
;
import
com.dianping.cat.system.config.AlertPolicyManager
;
public
class
DispatcherManager
implements
Initializable
{
@Inject
private
AlertPolicyManager
m_policyManager
;
@Inject
private
DecoratorManager
m_decoratorManager
;
@Inject
private
Seeker
m_seeker
;
@Inject
protected
AlertManager
m_alertManager
;
@Inject
(
type
=
Dispatcher
.
class
,
value
=
MailDispatcher
.
ID
)
protected
Dispatcher
m_mailDispatcher
;
@Inject
(
type
=
Dispatcher
.
class
,
value
=
WeixinDispatcher
.
ID
)
protected
Dispatcher
m_weixinDispatcher
;
@Inject
(
type
=
Dispatcher
.
class
,
value
=
SmsDispatcher
.
ID
)
protected
Dispatcher
m_smsDispatcher
;
private
Map
<
String
,
Dispatcher
>
m_dispatchers
=
new
HashMap
<
String
,
Dispatcher
>();
@Override
public
void
initialize
()
throws
InitializationException
{
m_dispatchers
.
put
(
m_mailDispatcher
.
getId
(),
m_mailDispatcher
);
m_dispatchers
.
put
(
m_weixinDispatcher
.
getId
(),
m_weixinDispatcher
);
m_dispatchers
.
put
(
m_smsDispatcher
.
getId
(),
m_smsDispatcher
);
}
public
boolean
send
(
AlertEntity
alert
)
{
String
type
=
alert
.
getType
();
String
group
=
alert
.
getGroup
();
String
level
=
alert
.
getLevel
();
String
channels
=
m_policyManager
.
queryChannels
(
type
,
group
,
level
);
for
(
AlertChannel
channel
:
AlertChannel
.
values
())
{
String
channelName
=
channel
.
getName
();
if
(
channels
.
contains
(
channelName
))
{
Pair
<
String
,
String
>
pair
=
m_decoratorManager
.
generateTitleAndContent
(
alert
,
channelName
);
List
<
String
>
receivers
=
m_seeker
.
queryReceivers
(
alert
.
getProductline
(),
channel
,
type
);
AlertMessageEntity
message
=
new
AlertMessageEntity
(
group
,
pair
.
getKey
(),
pair
.
getValue
(),
receivers
);
m_alertManager
.
storeAlert
(
alert
,
message
);
Dispatcher
dispatcher
=
m_dispatchers
.
get
(
channelName
);
dispatcher
.
send
(
message
,
type
);
}
}
return
false
;
}
public
void
setMailDispatcher
(
Dispatcher
dispatcher
)
{
m_mailDispatcher
=
dispatcher
;
}
public
void
setSmsDispatcher
(
Dispatcher
dispatcher
)
{
m_smsDispatcher
=
dispatcher
;
}
public
void
setWeixinDispatcher
(
Dispatcher
dispatcher
)
{
m_weixinDispatcher
=
dispatcher
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/dispatcher/MailDispatcher.java
0 → 100644
浏览文件 @
4df3cdb3
package
com.dianping.cat.report.task.alert.sender.dispatcher
;
import
org.codehaus.plexus.logging.LogEnabled
;
import
org.codehaus.plexus.logging.Logger
;
import
org.unidal.lookup.annotation.Inject
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.message.Event
;
import
com.dianping.cat.report.task.alert.sender.AlertMessageEntity
;
import
com.dianping.cat.system.tool.MailSMS
;
public
class
MailDispatcher
implements
Dispatcher
,
LogEnabled
{
@Inject
private
MailSMS
m_mailSms
;
public
static
final
String
ID
=
"mail"
;
private
Logger
m_logger
;
@Override
public
boolean
send
(
AlertMessageEntity
message
,
String
type
)
{
try
{
m_mailSms
.
sendEmail
(
message
.
getTitle
(),
message
.
getContent
(),
message
.
getReceivers
());
String
messageStr
=
message
.
toString
();
Cat
.
logEvent
(
"AlertMail"
,
type
,
Event
.
SUCCESS
,
messageStr
);
m_logger
.
info
(
"AlertMail "
+
messageStr
);
return
true
;
}
catch
(
Exception
ex
)
{
Cat
.
logError
(
"send mail error "
+
message
.
toString
(),
ex
);
return
false
;
}
}
@Override
public
String
getId
()
{
return
ID
;
}
@Override
public
void
enableLogging
(
Logger
logger
)
{
m_logger
=
logger
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/dispatcher/SmsDispatcher.java
0 → 100644
浏览文件 @
4df3cdb3
package
com.dianping.cat.report.task.alert.sender.dispatcher
;
import
org.codehaus.plexus.logging.LogEnabled
;
import
org.codehaus.plexus.logging.Logger
;
import
org.unidal.lookup.annotation.Inject
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.message.Event
;
import
com.dianping.cat.report.task.alert.sender.AlertMessageEntity
;
import
com.dianping.cat.system.tool.MailSMS
;
public
class
SmsDispatcher
implements
Dispatcher
,
LogEnabled
{
@Inject
private
MailSMS
m_mailSms
;
public
static
final
String
ID
=
"sms"
;
private
Logger
m_logger
;
@Override
public
boolean
send
(
AlertMessageEntity
message
,
String
type
)
{
try
{
m_mailSms
.
sendSms
(
message
.
getTitle
()
+
message
.
getContent
(),
null
,
message
.
getReceivers
());
String
messageStr
=
message
.
toString
();
Cat
.
logEvent
(
"AlertSms"
,
type
,
Event
.
SUCCESS
,
messageStr
);
m_logger
.
info
(
"AlertSms "
+
messageStr
);
return
true
;
}
catch
(
Exception
ex
)
{
Cat
.
logError
(
"send sms error "
+
message
.
toString
(),
ex
);
return
false
;
}
}
@Override
public
String
getId
()
{
return
ID
;
}
@Override
public
void
enableLogging
(
Logger
logger
)
{
m_logger
=
logger
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/dispatcher/WeixinDispatcher.java
0 → 100644
浏览文件 @
4df3cdb3
package
com.dianping.cat.report.task.alert.sender.dispatcher
;
import
org.codehaus.plexus.logging.LogEnabled
;
import
org.codehaus.plexus.logging.Logger
;
import
org.unidal.lookup.annotation.Inject
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.message.Event
;
import
com.dianping.cat.report.task.alert.sender.AlertMessageEntity
;
import
com.dianping.cat.system.tool.MailSMS
;
public
class
WeixinDispatcher
implements
Dispatcher
,
LogEnabled
{
@Inject
private
MailSMS
m_mailSms
;
public
static
final
String
ID
=
"weixin"
;
private
Logger
m_logger
;
@Override
public
boolean
send
(
AlertMessageEntity
message
,
String
type
)
{
try
{
m_mailSms
.
sendWeiXin
(
message
.
getTitle
(),
message
.
getContent
(),
message
.
getGroup
(),
message
.
getReceiverString
());
String
messageStr
=
message
.
toString
();
Cat
.
logEvent
(
"AlertWeiixin"
,
type
,
Event
.
SUCCESS
,
messageStr
);
m_logger
.
info
(
"AlertWeiixin "
+
messageStr
);
return
true
;
}
catch
(
Exception
ex
)
{
Cat
.
logError
(
"send weixin error "
+
message
.
toString
(),
ex
);
return
false
;
}
}
@Override
public
String
getId
()
{
return
ID
;
}
@Override
public
void
enableLogging
(
Logger
logger
)
{
m_logger
=
logger
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/sender/receiver/Seeker.java
0 → 100644
浏览文件 @
4df3cdb3
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.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
class
Seeker
{
@Inject
protected
ProjectDao
m_projectDao
;
@Inject
protected
ProductLineConfigManager
m_productLineConfigManager
;
@Inject
protected
AlertConfigManager
m_configManager
;
public
List
<
String
>
queryReceivers
(
String
productlineName
,
AlertChannel
channel
,
String
type
)
{
if
(
"exception"
.
equals
(
type
)
||
"thirdparty"
.
equals
(
type
))
{
return
queryReceiversByDomain
(
productlineName
,
channel
,
type
);
}
else
{
return
queryReceiversByProductline
(
productlineName
,
channel
,
type
);
}
}
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
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/system/SystemAlert.java
浏览文件 @
4df3cdb3
...
...
@@ -6,19 +6,14 @@ import java.util.Map;
import
org.codehaus.plexus.logging.LogEnabled
;
import
org.codehaus.plexus.logging.Logger
;
import
org.unidal.helper.Threads.Task
;
import
org.unidal.lookup.annotation.Inject
;
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.BaseAlertConfig
;
public
class
SystemAlert
extends
BaseAlert
implements
Task
,
LogEnabled
{
@Inject
private
SystemAlertConfig
m_alertConfig
;
@Override
public
void
enableLogging
(
Logger
logger
)
{
m_logger
=
logger
;
...
...
@@ -26,12 +21,7 @@ public class SystemAlert extends BaseAlert implements Task, LogEnabled {
@Override
public
String
getName
()
{
return
"system-alert"
;
}
@Override
public
BaseAlertConfig
getAlertConfig
()
{
return
m_alertConfig
;
return
"system"
;
}
@Override
...
...
cat-home/src/main/java/com/dianping/cat/report/task/alert/system/SystemAlertConfig.java
已删除
100644 → 0
浏览文件 @
5f6c516c
package
com.dianping.cat.report.task.alert.system
;
import
com.dianping.cat.report.task.alert.BaseAlertConfig
;
public
class
SystemAlertConfig
extends
BaseAlertConfig
{
private
String
m_id
=
"system"
;
@Override
public
String
buildMailTitle
(
String
productlineName
,
String
metricName
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"[系统告警] [产品线 "
).
append
(
productlineName
).
append
(
"]"
);
sb
.
append
(
"[系统指标 "
).
append
(
metricName
).
append
(
"]"
);
return
sb
.
toString
();
}
public
String
getId
()
{
return
m_id
;
}
}
cat-home/src/main/java/com/dianping/cat/report/task/alert/thirdParty/ThirdPartyAlert.java
浏览文件 @
4df3cdb3
package
com.dianping.cat.report.task.alert.thirdParty
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Calendar
;
import
java.util.Date
;
...
...
@@ -12,30 +11,20 @@ import java.util.concurrent.ArrayBlockingQueue;
import
java.util.concurrent.BlockingQueue
;
import
java.util.concurrent.TimeUnit
;
import
org.codehaus.plexus.logging.LogEnabled
;
import
org.codehaus.plexus.logging.Logger
;
import
org.unidal.helper.Threads.Task
;
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.helper.TimeUtil
;
import
com.dianping.cat.message.Event
;
import
com.dianping.cat.message.Transaction
;
import
com.dianping.cat.report.task.alert.sender.MailSender
;
import
com.site.helper.Splitters
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity
;
import
com.dianping.cat.report.task.alert.sender.AlertEntity.AlertEntityBuilder
;
import
com.dianping.cat.report.task.alert.sender.dispatcher.DispatcherManager
;
public
class
ThirdPartyAlert
implements
Task
,
LogEnabled
{
public
class
ThirdPartyAlert
implements
Task
{
@Inject
private
ProjectDao
m_projectDao
;
@Inject
protected
MailSender
m_mailSender
;
private
Logger
m_logger
;
private
DispatcherManager
m_dispatcherManager
;
private
static
final
long
DURATION
=
TimeUtil
.
ONE_MINUTE
;
...
...
@@ -86,7 +75,15 @@ public class ThirdPartyAlert implements Task, LogEnabled {
Map
<
String
,
List
<
ThirdPartyAlertEntity
>>
domain2AlertMap
=
buildDomain2AlertMap
(
alertEntities
);
for
(
Entry
<
String
,
List
<
ThirdPartyAlertEntity
>>
entry
:
domain2AlertMap
.
entrySet
())
{
sendAlert
(
entry
.
getKey
(),
entry
.
getValue
());
String
domain
=
entry
.
getKey
();
List
<
ThirdPartyAlertEntity
>
thirdPartyAlerts
=
entry
.
getValue
();
AlertEntityBuilder
builder
=
new
AlertEntity
().
new
AlertEntityBuilder
();
builder
.
buildDate
(
new
Date
()).
buildLevel
(
"warning"
).
buildContent
(
thirdPartyAlerts
.
toString
());
builder
.
buildMetric
(
getName
()).
buildProductline
(
domain
).
buildType
(
getName
()).
buildGroup
(
domain
);
AlertEntity
alertEntity
=
builder
.
getAlertEntity
();
m_dispatcherManager
.
send
(
alertEntity
);
}
t
.
setStatus
(
Transaction
.
SUCCESS
);
}
catch
(
Exception
e
)
{
...
...
@@ -124,70 +121,9 @@ public class ThirdPartyAlert implements Task, LogEnabled {
return
domain2AlertMap
;
}
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
String
buildMailContent
(
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
();
}
private
void
sendAlert
(
String
domain
,
List
<
ThirdPartyAlertEntity
>
entities
)
{
Project
project
=
queryProjectByDomain
(
domain
);
List
<
String
>
emails
=
buildMailReceivers
(
project
);
String
mailTitle
=
buildMailTitle
(
domain
);
String
mailContent
=
buildMailContent
(
entities
.
toString
(),
domain
);
m_mailSender
.
sendAlert
(
emails
,
domain
,
mailTitle
,
mailContent
);
m_logger
.
info
(
mailTitle
+
" "
+
mailContent
+
" "
+
emails
);
Cat
.
logEvent
(
"ExceptionAlert"
,
domain
,
Event
.
SUCCESS
,
"[邮件告警] "
+
mailTitle
+
" "
+
mailContent
);
}
private
String
buildMailTitle
(
String
domain
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"[CAT第三方告警] [项目: "
).
append
(
domain
).
append
(
"]"
);
return
sb
.
toString
();
}
private
List
<
String
>
buildMailReceivers
(
Project
project
)
{
List
<
String
>
mailReceivers
=
new
ArrayList
<
String
>();
mailReceivers
.
addAll
(
split
(
project
.
getEmail
()));
return
mailReceivers
;
}
private
List
<
String
>
split
(
String
str
)
{
List
<
String
>
result
=
new
ArrayList
<
String
>();
if
(
str
!=
null
)
{
result
.
addAll
(
Splitters
.
by
(
","
).
noEmptyItem
().
split
(
str
));
}
return
result
;
}
@Override
public
void
enableLogging
(
Logger
logger
)
{
m_logger
=
logger
;
}
@Override
public
String
getName
()
{
return
"thirdParty
-alert
"
;
return
"thirdParty"
;
}
@Override
...
...
cat-home/src/main/java/com/dianping/cat/system/config/Alert
Type
Manager.java
→
cat-home/src/main/java/com/dianping/cat/system/config/Alert
Policy
Manager.java
浏览文件 @
4df3cdb3
...
...
@@ -10,58 +10,48 @@ import com.dianping.cat.Cat;
import
com.dianping.cat.core.config.Config
;
import
com.dianping.cat.core.config.ConfigDao
;
import
com.dianping.cat.core.config.ConfigEntity
;
import
com.dianping.cat.home.alert.
type.entity.AlertType
;
import
com.dianping.cat.home.alert.
type.entity.Category
;
import
com.dianping.cat.home.alert.
type.entity.Domain
;
import
com.dianping.cat.home.alert.
type
.entity.Type
;
import
com.dianping.cat.home.alert.
type
.transform.DefaultSaxParser
;
import
com.dianping.cat.home.alert.
policy.entity.AlertPolicy
;
import
com.dianping.cat.home.alert.
policy.entity.Group
;
import
com.dianping.cat.home.alert.
policy.entity.Level
;
import
com.dianping.cat.home.alert.
policy
.entity.Type
;
import
com.dianping.cat.home.alert.
policy
.transform.DefaultSaxParser
;
public
class
Alert
Type
Manager
implements
Initializable
{
public
class
Alert
Policy
Manager
implements
Initializable
{
@Inject
private
ConfigDao
m_configDao
;
private
int
m_configId
;
private
Alert
Type
m_config
;
private
Alert
Policy
m_config
;
private
static
final
String
CONFIG_NAME
=
"alert
Type
"
;
private
static
final
String
CONFIG_NAME
=
"alert
Policy
"
;
private
static
final
String
DEFAULT_TYPE
=
"default"
;
public
Alert
Type
getAlertType
()
{
public
Alert
Policy
getAlertPolicy
()
{
return
m_config
;
}
public
Type
getType
(
String
categoryName
,
String
domainName
,
String
type
Name
)
{
public
String
queryChannels
(
String
typeName
,
String
groupName
,
String
level
Name
)
{
try
{
Category
category
=
m_config
.
findCategory
(
category
Name
);
Domain
domain
=
category
.
findDomain
(
domain
Name
);
if
(
domain
==
null
)
{
domain
=
category
.
findDomain
(
DEFAULT_TYPE
);
Type
type
=
m_config
.
findType
(
type
Name
);
Group
group
=
type
.
findGroup
(
group
Name
);
if
(
group
==
null
)
{
group
=
type
.
findGroup
(
DEFAULT_TYPE
);
}
Type
type
=
domain
.
findType
(
type
Name
);
if
(
type
==
null
)
{
type
=
generateDefaultType
()
;
Level
level
=
group
.
findLevel
(
level
Name
);
if
(
level
==
null
)
{
return
""
;
}
return
type
;
return
level
.
getSend
()
;
}
catch
(
Exception
ex
)
{
return
generateDefaultType
()
;
return
""
;
}
}
private
Type
generateDefaultType
()
{
Type
type
=
new
Type
();
type
.
setSendMail
(
true
);
type
.
setSendWeixin
(
true
);
type
.
setSendSms
(
false
);
return
type
;
}
@Override
public
void
initialize
()
throws
InitializationException
{
try
{
...
...
@@ -73,7 +63,7 @@ public class AlertTypeManager implements Initializable {
}
catch
(
DalNotFoundException
e
)
{
try
{
String
content
=
Files
.
forIO
().
readFrom
(
this
.
getClass
().
getResourceAsStream
(
"/config/default-alert-
type
.xml"
),
"utf-8"
);
this
.
getClass
().
getResourceAsStream
(
"/config/default-alert-
policy
.xml"
),
"utf-8"
);
Config
config
=
m_configDao
.
createLocal
();
config
.
setName
(
CONFIG_NAME
);
...
...
@@ -89,7 +79,7 @@ public class AlertTypeManager implements Initializable {
Cat
.
logError
(
e
);
}
if
(
m_config
==
null
)
{
m_config
=
new
Alert
Type
();
m_config
=
new
Alert
Policy
();
}
}
...
...
cat-home/src/main/java/com/dianping/cat/system/page/config/Action.java
浏览文件 @
4df3cdb3
...
...
@@ -69,7 +69,7 @@ public enum Action implements org.unidal.web.mvc.Action {
ALERT_DEFAULT_RECEIVERS
(
"alertDefaultReceivers"
),
ALERT_
TYPE
(
"alertTypes
"
),
ALERT_
POLICY
(
"alertPolicy
"
),
EXCEPTION
(
"exception"
),
...
...
cat-home/src/main/java/com/dianping/cat/system/page/config/Handler.java
浏览文件 @
4df3cdb3
...
...
@@ -47,7 +47,7 @@ import com.dianping.cat.report.service.ReportServiceManager;
import
com.dianping.cat.report.view.DomainNavManager
;
import
com.dianping.cat.system.SystemPage
;
import
com.dianping.cat.system.config.AlertConfigManager
;
import
com.dianping.cat.system.config.Alert
Type
Manager
;
import
com.dianping.cat.system.config.Alert
Policy
Manager
;
import
com.dianping.cat.system.config.BugConfigManager
;
import
com.dianping.cat.system.config.BusinessRuleConfigManager
;
import
com.dianping.cat.system.config.DomainGroupConfigManager
;
...
...
@@ -118,7 +118,7 @@ public class Handler implements PageHandler<Context> {
private
NetGraphConfigManager
m_netGraphConfigManager
;
@Inject
private
Alert
TypeManager
m_alertType
Manager
;
private
Alert
PolicyManager
m_alertPolicy
Manager
;
@Inject
private
ThirdPartyConfigManager
m_thirdPartyConfigManager
;
...
...
@@ -399,15 +399,15 @@ public class Handler implements PageHandler<Context> {
}
model
.
setContent
(
m_alertConfigManager
.
getAlertConfig
().
toString
());
break
;
case
ALERT_
TYPE
:
String
alert
Types
=
payload
.
getContent
();
case
ALERT_
POLICY
:
String
alert
Policy
=
payload
.
getContent
();
if
(!
StringUtils
.
isEmpty
(
alert
Types
))
{
model
.
setOpState
(
m_alert
TypeManager
.
insert
(
alertTypes
));
if
(!
StringUtils
.
isEmpty
(
alert
Policy
))
{
model
.
setOpState
(
m_alert
PolicyManager
.
insert
(
alertPolicy
));
}
else
{
model
.
setOpState
(
true
);
}
model
.
setContent
(
m_alert
TypeManager
.
getAlertType
().
toString
());
model
.
setContent
(
m_alert
PolicyManager
.
getAlertPolicy
().
toString
());
break
;
case
EXCEPTION:
loadExceptionConfig
(
model
);
...
...
cat-home/src/main/java/com/dianping/cat/system/page/config/JspFile.java
浏览文件 @
4df3cdb3
...
...
@@ -43,7 +43,7 @@ public enum JspFile {
ALERT_DEFAULT_RECEIVERS
(
"/jsp/system/defaultReceiver/alertDefaultReceivers.jsp"
),
ALERT_
TYPE
(
"/jsp/system/alert/types
.jsp"
),
ALERT_
POLICY
(
"/jsp/system/alert/policy
.jsp"
),
EXCEPTION_THRESHOLD
(
"/jsp/system/exception/exceptionThreshold.jsp"
),
...
...
cat-home/src/main/java/com/dianping/cat/system/page/config/JspViewer.java
浏览文件 @
4df3cdb3
...
...
@@ -82,8 +82,8 @@ public class JspViewer extends BaseJspViewer<SystemPage, Action, Context, Model>
return
JspFile
.
SYSTEM_RULE_CONFIG_UPDATE
.
getPath
();
case
ALERT_DEFAULT_RECEIVERS:
return
JspFile
.
ALERT_DEFAULT_RECEIVERS
.
getPath
();
case
ALERT_
TYPE
:
return
JspFile
.
ALERT_
TYPE
.
getPath
();
case
ALERT_
POLICY
:
return
JspFile
.
ALERT_
POLICY
.
getPath
();
// Excepton Config
case
EXCEPTION:
case
EXCEPTION_THRESHOLD_UPDATE_SUBMIT:
...
...
cat-home/src/main/java/com/dianping/cat/system/page/router/Action.java
浏览文件 @
4df3cdb3
package
com.dianping.cat.system.page.router
;
public
enum
Action
implements
org
.
unidal
.
web
.
mvc
.
Action
{
VIEW
(
"view"
);
API
(
"api"
),
MODEL
(
"model"
);
private
String
m_name
;
...
...
cat-home/src/main/java/com/dianping/cat/system/page/router/Handler.java
浏览文件 @
4df3cdb3
...
...
@@ -4,7 +4,10 @@ import java.io.IOException;
import
javax.servlet.ServletException
;
import
com.dianping.cat.report.service.ReportServiceManager
;
import
com.dianping.cat.system.SystemPage
;
import
com.dianping.cat.system.config.RouterConfigManager
;
import
org.unidal.lookup.annotation.Inject
;
import
org.unidal.web.mvc.PageHandler
;
import
org.unidal.web.mvc.annotation.InboundActionMeta
;
...
...
@@ -14,7 +17,13 @@ import org.unidal.web.mvc.annotation.PayloadMeta;
public
class
Handler
implements
PageHandler
<
Context
>
{
@Inject
private
JspViewer
m_jspViewer
;
@Inject
private
ReportServiceManager
m_reportService
;
@Inject
private
RouterConfigManager
m_configManager
;
@Override
@PayloadMeta
(
Payload
.
class
)
@InboundActionMeta
(
name
=
"router"
)
...
...
@@ -26,9 +35,18 @@ public class Handler implements PageHandler<Context> {
@OutboundActionMeta
(
name
=
"router"
)
public
void
handleOutbound
(
Context
ctx
)
throws
ServletException
,
IOException
{
Model
model
=
new
Model
(
ctx
);
model
.
setAction
(
Action
.
VIEW
);
Payload
payload
=
ctx
.
getPayload
();
Action
action
=
payload
.
getAction
();
switch
(
action
){
case
API:
break
;
case
MODEL:
break
;
}
model
.
setAction
(
Action
.
API
);
model
.
setPage
(
SystemPage
.
ROUTER
);
if
(!
ctx
.
isProcessStopped
())
{
m_jspViewer
.
view
(
ctx
,
model
);
...
...
cat-home/src/main/java/com/dianping/cat/system/page/router/JspFile.java
浏览文件 @
4df3cdb3
package
com.dianping.cat.system.page.router
;
public
enum
JspFile
{
VIEW
(
"/jsp/system/router.jsp"
),
API
(
"/jsp/system/router.jsp"
),
;
...
...
cat-home/src/main/java/com/dianping/cat/system/page/router/JspViewer.java
浏览文件 @
4df3cdb3
...
...
@@ -9,8 +9,10 @@ public class JspViewer extends BaseJspViewer<SystemPage, Action, Context, Model>
Action
action
=
model
.
getAction
();
switch
(
action
)
{
case
VIEW:
return
JspFile
.
VIEW
.
getPath
();
case
API:
return
JspFile
.
API
.
getPath
();
case
MODEL:
return
JspFile
.
API
.
getPath
();
}
throw
new
RuntimeException
(
"Unknown action: "
+
action
);
...
...
cat-home/src/main/java/com/dianping/cat/system/page/router/Model.java
浏览文件 @
4df3cdb3
...
...
@@ -10,6 +10,6 @@ public class Model extends ViewModel<SystemPage, Action, Context> {
@Override
public
Action
getDefaultAction
()
{
return
Action
.
VIEW
;
return
Action
.
API
;
}
}
cat-home/src/main/java/com/dianping/cat/system/page/router/Payload.java
浏览文件 @
4df3cdb3
...
...
@@ -10,9 +10,31 @@ public class Payload implements ActionPayload<SystemPage, Action> {
@FieldMeta
(
"op"
)
private
Action
m_action
;
@FieldMeta
(
"domain"
)
private
String
m_domain
;
@FieldMeta
(
"date"
)
private
String
m_date
;
public
String
getDomain
()
{
return
m_domain
;
}
public
void
setDomain
(
String
domain
)
{
m_domain
=
domain
;
}
public
String
getDate
()
{
return
m_date
;
}
public
void
setDate
(
String
date
)
{
m_date
=
date
;
}
public
void
setAction
(
String
action
)
{
m_action
=
Action
.
getByName
(
action
,
Action
.
VIEW
);
public
void
setAction
(
String
action
)
{
m_action
=
Action
.
getByName
(
action
,
Action
.
API
);
}
@Override
...
...
@@ -33,7 +55,7 @@ public class Payload implements ActionPayload<SystemPage, Action> {
@Override
public
void
validate
(
ActionContext
<?>
ctx
)
{
if
(
m_action
==
null
)
{
m_action
=
Action
.
VIEW
;
m_action
=
Action
.
API
;
}
}
}
cat-home/src/main/resources/META-INF/dal/model/alert-
type
-codegen.xml
→
cat-home/src/main/resources/META-INF/dal/model/alert-
policy
-codegen.xml
浏览文件 @
4df3cdb3
<?xml version="1.0" encoding="UTF-8"?>
<model>
<entity
name=
"alert-
type
"
root=
"true"
>
<entity-ref
name=
"
category"
type=
"list"
names=
"categori
es"
/>
<entity
name=
"alert-
policy
"
root=
"true"
>
<entity-ref
name=
"
type"
type=
"list"
names=
"typ
es"
/>
</entity>
<entity
name=
"
category
"
>
<entity
name=
"
type
"
>
<attribute
name=
"id"
value-type=
"String"
/>
<entity-ref
name=
"
domain"
type=
"list"
names=
"domain
s"
/>
<entity-ref
name=
"
group"
type=
"list"
names=
"group
s"
/>
</entity>
<entity
name=
"
domain
"
>
<entity
name=
"
group
"
>
<attribute
name=
"id"
value-type=
"String"
/>
<entity-ref
name=
"
type"
type=
"list"
names=
"type
s"
/>
<entity-ref
name=
"
level"
type=
"list"
names=
"level
s"
/>
</entity>
<entity
name=
"
type
"
>
<entity
name=
"
level
"
>
<attribute
name=
"id"
value-type=
"String"
/>
<attribute
name=
"sendSms"
value-type=
"boolean"
/>
<attribute
name=
"sendMail"
value-type=
"boolean"
/>
<attribute
name=
"sendWeixin"
value-type=
"boolean"
/>
<attribute
name=
"send"
value-type=
"String"
/>
</entity>
</model>
cat-home/src/main/resources/META-INF/dal/model/alert-
type
-manifest.xml
→
cat-home/src/main/resources/META-INF/dal/model/alert-
policy
-manifest.xml
浏览文件 @
4df3cdb3
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<file
path=
"alert-
type
-codegen.xml"
/>
<file
path=
"alert-
type
-model.xml"
/>
<file
path=
"alert-
policy
-codegen.xml"
/>
<file
path=
"alert-
policy
-model.xml"
/>
</manifest>
cat-home/src/main/resources/META-INF/dal/model/alert-
type
-model.xml
→
cat-home/src/main/resources/META-INF/dal/model/alert-
policy
-model.xml
浏览文件 @
4df3cdb3
<?xml version="1.0" encoding="UTF-8"?>
<model
model-package=
"com.dianping.cat.home.alert.
type
"
<model
model-package=
"com.dianping.cat.home.alert.
policy
"
enable-sax-parser=
"true"
enable-xml-parser=
"true"
enable-xml-builder=
"true"
>
<entity
name=
"alert-
type
"
root=
"true"
>
<entity-ref
name=
"
category"
type=
"map"
names=
"categori
es"
<entity
name=
"alert-
policy
"
root=
"true"
>
<entity-ref
name=
"
type"
type=
"map"
names=
"typ
es"
method-find-or-create=
'true'
/>
</entity>
<entity
name=
"
category
"
>
<entity
name=
"
type
"
>
<attribute
name=
"id"
value-type=
"String"
key=
"true"
/>
<entity-ref
name=
"
domain"
type=
"map"
names=
"domain
s"
<entity-ref
name=
"
group"
type=
"map"
names=
"group
s"
method-find-or-create=
'true'
/>
</entity>
<entity
name=
"
domain
"
>
<entity
name=
"
group
"
>
<attribute
name=
"id"
value-type=
"String"
key=
"true"
/>
<entity-ref
name=
"
type"
type=
"map"
names=
"type
s"
<entity-ref
name=
"
level"
type=
"map"
names=
"level
s"
method-find-or-create=
'true'
/>
</entity>
<entity
name=
"
type
"
>
<entity
name=
"
level
"
>
<attribute
name=
"id"
value-type=
"String"
key=
"true"
/>
<attribute
name=
"sendSms"
value-type=
"boolean"
/>
<attribute
name=
"sendMail"
value-type=
"boolean"
/>
<attribute
name=
"sendWeixin"
value-type=
"boolean"
/>
<attribute
name=
"send"
value-type=
"String"
/>
</entity>
</model>
</model>
\ No newline at end of file
cat-home/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
4df3cdb3
...
...
@@ -470,33 +470,6 @@
</requirement>
</requirements>
</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.manager.AlertManager
</role>
<implementation>
com.dianping.cat.report.task.alert.manager.AlertManager
</implementation>
...
...
@@ -506,30 +479,6 @@
</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.exception.AlertExceptionBuilder
</role>
<implementation>
com.dianping.cat.report.task.alert.exception.AlertExceptionBuilder
</implementation>
...
...
@@ -589,106 +538,172 @@
<implementation>
com.dianping.cat.report.page.network.nettopology.NetGraphBuilder
</implementation>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.business.BusinessAlertConfig
</role>
<implementation>
com.dianping.cat.report.task.alert.business.BusinessAlertConfig
</implementation>
<role>
com.dianping.cat.report.task.alert.AlertInfo
</role>
<implementation>
com.dianping.cat.report.task.alert.AlertInfo
</implementation>
</component>
<component>
<role>
com.dianping.cat.system.tool.DefaultMailImpl
</role>
<implementation>
com.dianping.cat.system.tool.DefaultMailImpl
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.
system.config.Alert
ConfigManager
</role>
<role>
com.dianping.cat.
Server
ConfigManager
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.network.NetworkAlertConfig
</role>
<implementation>
com.dianping.cat.report.task.alert.network.NetworkAlertConfig
</implementation>
<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.RemoteMetricReportService
</role>
<implementation>
com.dianping.cat.report.task.alert.RemoteMetricReportService
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.
system.config.Alert
ConfigManager
</role>
<role>
com.dianping.cat.
Server
ConfigManager
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.system.SystemAlertConfig
</role>
<implementation>
com.dianping.cat.report.task.alert.system.SystemAlertConfig
</implementation>
<role>
com.dianping.cat.report.task.alert.sender.dispatcher.Dispatcher
</role>
<role-hint>
mail
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.dispatcher.MailDispatcher
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.system.
config.AlertConfigManager
</role>
<role>
com.dianping.cat.system.
tool.MailSMS
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.exception.ExceptionAlertConfig
</role>
<implementation>
com.dianping.cat.report.task.alert.exception.ExceptionAlertConfig
</implementation>
<role>
com.dianping.cat.report.task.alert.sender.dispatcher.Dispatcher
</role>
<role-hint>
sms
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.dispatcher.SmsDispatcher
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.system.
config.AlertConfigManager
</role>
<role>
com.dianping.cat.system.
tool.MailSMS
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.AlertInfo
</role>
<implementation>
com.dianping.cat.report.task.alert.AlertInfo
</implementation>
<role>
com.dianping.cat.report.task.alert.sender.dispatcher.Dispatcher
</role>
<role-hint>
weixin
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.dispatcher.WeixinDispatcher
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.system.tool.MailSMS
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.system.tool.DefaultMailImpl
</role>
<implementation>
com.dianping.cat.system.tool.DefaultMailImpl
</implementation>
<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.MailDecorator
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.
ServerConfigManager
</role>
<role>
com.dianping.cat.
core.dal.ProjectDao
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.DataChecker
</role>
<implementation>
com.dianping.cat.report.task.alert.DefaultDataChecker
</implementation>
<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.SmsDecorator
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.RemoteMetricReportService
</role>
<implementation>
com.dianping.cat.report.task.alert.RemoteMetricReportService
</implementation>
<role>
com.dianping.cat.report.task.alert.sender.decorator.Decorator
</role>
<role-hint>
weixin
</role-hint>
<implementation>
com.dianping.cat.report.task.alert.sender.decorator.WeixinDecorator
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.
ServerConfigManager
</role>
<role>
com.dianping.cat.
core.dal.ProjectDao
</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>
<role>
com.dianping.cat.
system.config.AlertPolicyManager
</role>
<implementation>
com.dianping.cat.
system.config.AlertPolicyManager
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.consumer.metric.MetricConfigManager
</role>
<role>
com.dianping.cat.core.config.ConfigDao
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.decorator.DecoratorManager
</role>
<implementation>
com.dianping.cat.report.task.alert.sender.decorator.DecoratorManager
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.decorator.Decorator
</role>
<role-hint>
mail
</role-hint>
<field-name>
mailDecorator
</field-name>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.decorator.Decorator
</role>
<role-hint>
sms
</role-hint>
<field-name>
smsDecorator
</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>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.receiver.Seeker
</role>
<implementation>
com.dianping.cat.report.task.alert.sender.receiver.Seeker
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.consumer.metric.ProductLineConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.
report.baseline.BaselineService
</role>
<role>
com.dianping.cat.
system.config.AlertConfigManager
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.sender.dispatcher.DispatcherManager
</role>
<implementation>
com.dianping.cat.report.task.alert.sender.dispatcher.DispatcherManager
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.system.
tool.MailSMS
</role>
<role>
com.dianping.cat.system.
config.AlertPolicyManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.
business.BusinessAlertConfig
</role>
<role>
com.dianping.cat.report.task.alert.
sender.decorator.DecoratorManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.
AlertInfo
</role>
<role>
com.dianping.cat.report.task.alert.
sender.receiver.Seeker
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.
home.dal.report.AlertDao
</role>
<role>
com.dianping.cat.
report.task.alert.manager.AlertManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.RemoteMetricReportService
</role>
<role>
com.dianping.cat.report.task.alert.sender.dispatcher.Dispatcher
</role>
<role-hint>
mail
</role-hint>
<field-name>
mailDispatcher
</field-name>
</requirement>
<requirement>
<role>
com.dianping.cat.system.config.BusinessRuleConfigManager
</role>
<role>
com.dianping.cat.report.task.alert.sender.dispatcher.Dispatcher
</role>
<role-hint>
weixin
</role-hint>
<field-name>
weixinDispatcher
</field-name>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.DataChecker
</role>
<role>
com.dianping.cat.report.task.alert.sender.dispatcher.Dispatcher
</role>
<role-hint>
sms
</role-hint>
<field-name>
smsDispatcher
</field-name>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.
network.Network
Alert
</role>
<implementation>
com.dianping.cat.report.task.alert.
network.Network
Alert
</implementation>
<role>
com.dianping.cat.report.task.alert.
business.Business
Alert
</role>
<implementation>
com.dianping.cat.report.task.alert.
business.Business
Alert
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.consumer.metric.MetricConfigManager
</role>
...
...
@@ -700,16 +715,34 @@
<role>
com.dianping.cat.report.baseline.BaselineService
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.
system.tool.MailSMS
</role>
<role>
com.dianping.cat.
report.task.alert.AlertInfo
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.
network.NetworkAlertConfig
</role>
<role>
com.dianping.cat.report.task.alert.
RemoteMetricReportService
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.
report.task.alert.AlertInfo
</role>
<role>
com.dianping.cat.
system.config.BusinessRuleConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.home.dal.report.AlertDao
</role>
<role>
com.dianping.cat.report.task.alert.DataChecker
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.dispatcher.DispatcherManager
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.network.NetworkAlert
</role>
<implementation>
com.dianping.cat.report.task.alert.network.NetworkAlert
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.consumer.metric.ProductLineConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.baseline.BaselineService
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.AlertInfo
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.RemoteMetricReportService
</role>
...
...
@@ -720,33 +753,24 @@
<requirement>
<role>
com.dianping.cat.report.task.alert.DataChecker
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.dispatcher.DispatcherManager
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.task.alert.system.SystemAlert
</role>
<implementation>
com.dianping.cat.report.task.alert.system.SystemAlert
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.consumer.metric.MetricConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.consumer.metric.ProductLineConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.baseline.BaselineService
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.system.tool.MailSMS
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.system.SystemAlertConfig
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.AlertInfo
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.home.dal.report.AlertDao
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.RemoteMetricReportService
</role>
</requirement>
...
...
@@ -756,6 +780,9 @@
<requirement>
<role>
com.dianping.cat.report.task.alert.DataChecker
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.alert.sender.dispatcher.DispatcherManager
</role>
</requirement>
</requirements>
</component>
<component>
...
...
@@ -771,15 +798,6 @@
<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>
...
...
@@ -787,7 +805,7 @@
<role>
com.dianping.cat.report.task.alert.exception.AlertExceptionBuilder
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.
home.dal.report.AlertDao
</role>
<role>
com.dianping.cat.
report.task.alert.sender.dispatcher.DispatcherManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.page.model.spi.ModelService
</role>
...
...
@@ -800,10 +818,7 @@
<implementation>
com.dianping.cat.report.task.alert.thirdParty.ThirdPartyAlert
</implementation>
<requirements>
<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.dispatcher.DispatcherManager
</role>
</requirement>
</requirements>
</component>
...
...
@@ -4175,7 +4190,7 @@
<role>
com.dianping.cat.system.config.NetGraphConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.system.config.Alert
Type
Manager
</role>
<role>
com.dianping.cat.system.config.Alert
Policy
Manager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.system.config.ThirdPartyConfigManager
</role>
...
...
@@ -4252,8 +4267,8 @@
</requirements>
</component>
<component>
<role>
com.dianping.cat.system.config.Alert
Type
Manager
</role>
<implementation>
com.dianping.cat.system.config.Alert
Type
Manager
</implementation>
<role>
com.dianping.cat.system.config.Alert
Policy
Manager
</role>
<implementation>
com.dianping.cat.system.config.Alert
Policy
Manager
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.core.config.ConfigDao
</role>
...
...
@@ -4296,6 +4311,24 @@
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.system.page.router.Handler
</role>
<implementation>
com.dianping.cat.system.page.router.Handler
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.system.page.router.JspViewer
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.system.page.router.JspViewer
</role>
<implementation>
com.dianping.cat.system.page.router.JspViewer
</implementation>
<requirements>
<requirement>
<role>
org.unidal.web.mvc.view.model.ModelHandler
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.system.tool.MailSMS
</role>
<implementation>
com.dianping.cat.system.tool.DefaultMailImpl
</implementation>
...
...
cat-home/src/main/resources/META-INF/wizard/model/wizard.xml
浏览文件 @
4df3cdb3
...
...
@@ -54,8 +54,8 @@
<model
package=
"com.dianping.cat.home.alertsummary"
name=
"alertsummary"
>
<sample-model>
/Users/leon/Desktop/AlertSummary.xml
</sample-model>
</model>
<model
package=
"com.dianping.cat.home.alert.
type"
name=
"alert-type
"
>
<sample-model>
src/test/resources/config/alert-
type
.xml
</sample-model>
<model
package=
"com.dianping.cat.home.alert.
policy"
name=
"alert-policy
"
>
<sample-model>
src/test/resources/config/alert-
policy
.xml
</sample-model>
</model>
<model
package=
"com.dianping.cat.home.alert.thirdParty"
name=
"thirdParty"
>
<sample-model>
src/test/resources/config/thirdParty-config.xml
</sample-model>
...
...
cat-home/src/main/resources/config/default-alert-policy.xml
0 → 100644
浏览文件 @
4df3cdb3
<alert-policy>
<type
id=
"network"
>
<group
id=
"default"
>
<level
id=
"error"
send=
"mail,weixin,sms"
/>
<level
id=
"warning"
send=
"mail,weixin"
/>
</group>
</type>
<type
id=
"exception"
>
<group
id=
"default"
>
<level
id=
"error"
send=
"mail,weixin,sms"
/>
<level
id=
"warning"
send=
"mail,weixin"
/>
</group>
</type>
<type
id=
"business"
>
<group
id=
"default"
>
<level
id=
"error"
send=
"mail,weixin,sms"
/>
<level
id=
"warning"
send=
"mail,weixin"
/>
</group>
</type>
<type
id=
"system"
>
<group
id=
"default"
>
<level
id=
"error"
send=
"mail,weixin,sms"
/>
<level
id=
"warning"
send=
"mail,weixin"
/>
</group>
</type>
<type
id=
"thirdparty"
>
<group
id=
"default"
>
<level
id=
"warning"
send=
"mail"
/>
</group>
</type>
</alert-policy>
\ No newline at end of file
cat-home/src/main/resources/config/default-alert-type.xml
已删除
100644 → 0
浏览文件 @
5f6c516c
<alert-type>
<category
id=
"network"
>
<domain
id=
"default"
>
<type
id=
"error"
sendSms=
"true"
sendMail=
"true"
sendWeixin=
"true"
/>
<type
id=
"warning"
sendSms=
"false"
sendMail=
"true"
sendWeixin=
"true"
/>
</domain>
</category>
<category
id=
"exception"
>
<domain
id=
"default"
>
<type
id=
"error"
sendSms=
"true"
sendMail=
"true"
sendWeixin=
"true"
/>
<type
id=
"warning"
sendSms=
"false"
sendMail=
"true"
sendWeixin=
"true"
/>
</domain>
</category>
<category
id=
"business"
>
<domain
id=
"default"
>
<type
id=
"error"
sendSms=
"true"
sendMail=
"true"
sendWeixin=
"true"
/>
<type
id=
"warning"
sendSms=
"false"
sendMail=
"true"
sendWeixin=
"true"
/>
</domain>
</category>
<category
id=
"system"
>
<domain
id=
"default"
>
<type
id=
"error"
sendSms=
"true"
sendMail=
"true"
sendWeixin=
"true"
/>
<type
id=
"warning"
sendSms=
"false"
sendMail=
"true"
sendWeixin=
"true"
/>
</domain>
</category>
</alert-type>
\ No newline at end of file
cat-home/src/main/webapp/jsp/system/alert/
types
.jsp
→
cat-home/src/main/webapp/jsp/system/alert/
policy
.jsp
浏览文件 @
4df3cdb3
...
...
@@ -18,8 +18,8 @@
<%@include
file=
"../configTree.jsp"
%>
</div>
<div
class=
"span10"
>
<form
name=
"alert
Types
"
id=
"form"
method=
"post"
action=
"${model.pageUri}?op=alert
Types
"
<form
name=
"alert
Policy
"
id=
"form"
method=
"post"
action=
"${model.pageUri}?op=alert
Policy
"
onsubmit=
"return validate_form(this)"
>
<h4
class=
"text-center text-error"
id=
"state"
>
</h4>
<h4
class=
"text-center text-error"
>
告警类型
</h4>
...
...
@@ -40,7 +40,7 @@
</a:body>
<script
type=
"text/javascript"
>
$
(
document
).
ready
(
function
()
{
$
(
'
#
types
'
).
addClass
(
'
active
'
);
$
(
'
#
policy
'
).
addClass
(
'
active
'
);
var
state
=
'
${model.opState}
'
;
if
(
state
==
'
Success
'
)
{
$
(
'
#state
'
).
html
(
'
操作成功
'
);
...
...
cat-home/src/main/webapp/jsp/system/configTree.jsp
浏览文件 @
4df3cdb3
...
...
@@ -22,7 +22,7 @@
<li
class=
'nav-header'
><h4>
监控告警配置
</h4></li>
<li
class=
"text-right"
id=
"systemRuleConfigUpdate"
><a
href=
"?op=systemRuleConfigUpdate"
><strong>
系统告警配置
</strong></a></li>
<li
class=
"text-right"
id=
"alertDefaultReceivers"
><a
href=
"?op=alertDefaultReceivers"
><strong>
默认告警配置
</strong></a></li>
<li
class=
"text-right"
id=
"
types"
><a
href=
"?op=alertTypes
"
><strong>
告警类型设置
</strong></a></li>
<li
class=
"text-right"
id=
"
policy"
><a
href=
"?op=alertPolicy
"
><strong>
告警类型设置
</strong></a></li>
<li
class=
"text-right"
id=
"bugConfigUpdate"
><a
href=
"?op=bugConfigUpdate"
><strong>
异常类型配置
</strong></a></li>
<li
class=
'nav-header'
><h4>
其他监控配置
</h4></li>
<li
class=
"text-right"
id=
"domainGroupConfigUpdate"
><a
href=
"?op=domainGroupConfigUpdate"
><strong>
机器分组配置
</strong></a></li>
...
...
cat-home/src/test/java/com/dianping/cat/report/alert/RuleConfigTest.java
浏览文件 @
4df3cdb3
...
...
@@ -115,7 +115,7 @@ public class RuleConfigTest {
}
for
(
AlertResultEntity
alertResult
:
alertResults
)
{
if
(
alertResult
.
getAlert
Type
().
equals
(
"error"
))
{
if
(
alertResult
.
getAlert
Level
().
equals
(
"error"
))
{
return
alertResult
;
}
}
...
...
cat-home/src/test/java/com/dianping/cat/report/task/metric/AlertConfigTest.java
浏览文件 @
4df3cdb3
...
...
@@ -222,7 +222,7 @@ public class AlertConfigTest {
}
for
(
AlertResultEntity
alertResult
:
alertResults
)
{
if
(
alertResult
.
getAlert
Type
().
equals
(
"error"
))
{
if
(
alertResult
.
getAlert
Level
().
equals
(
"error"
))
{
return
alertResult
;
}
}
...
...
cat-home/src/test/resources/config/alert-policy.xml
0 → 100644
浏览文件 @
4df3cdb3
<alert-policy>
<type
id=
"network"
>
<group
id=
"cat"
>
<level
id=
"error"
send=
"mail,weixin,sms"
/>
<level
id=
"warning"
send=
"mail,weixin,sms"
/>
<level
id=
"error"
send=
"mail,weixin,sms"
/>
</group>
<group
id=
"unipay"
>
<level
id=
"error"
send=
"mail,weixin,sms"
/>
<level
id=
"warning"
send=
"mail,weixin,sms"
/>
<level
id=
"error"
send=
"mail,weixin,sms"
/>
</group>
<group
id=
"cat"
>
<level
id=
"error"
send=
"mail,weixin,sms"
/>
<level
id=
"warning"
send=
"mail,weixin,sms"
/>
<level
id=
"error"
send=
"mail,weixin,sms"
/>
</group>
</type>
<type
id=
"exception"
>
<group
id=
"cat"
>
<level
id=
"error"
send=
"mail,weixin,sms"
/>
<level
id=
"warning"
send=
"mail,weixin,sms"
/>
<level
id=
"error"
send=
"mail,weixin,sms"
/>
</group>
</type>
</alert-policy>
\ No newline at end of file
cat-home/src/test/resources/config/alert-type.xml
已删除
100644 → 0
浏览文件 @
5f6c516c
<alert-type>
<category
id=
"network"
>
<domain
id=
"cat"
>
<type
id=
"error"
sendSms=
"true"
sendMail=
"true"
sendWeixin=
"true"
/>
<type
id=
"warning"
sendSms=
"true"
sendMail=
"true"
sendWeixin=
"true"
/>
<type
id=
"error"
sendSms=
"true"
sendMail=
"true"
sendWeixin=
"true"
/>
</domain>
<domain
id=
"cat"
>
<type
id=
"error"
sendSms=
"true"
sendMail=
"true"
sendWeixin=
"true"
/>
<type
id=
"error"
sendSms=
"true"
sendMail=
"true"
sendWeixin=
"true"
/>
<type
id=
"error"
sendSms=
"true"
sendMail=
"true"
sendWeixin=
"true"
/>
</domain>
<domain
id=
"cat"
>
<type
id=
"error"
sendSms=
"true"
sendMail=
"true"
sendWeixin=
"true"
/>
<type
id=
"error"
sendSms=
"true"
sendMail=
"true"
sendWeixin=
"true"
/>
<type
id=
"error"
sendSms=
"true"
sendMail=
"true"
sendWeixin=
"true"
/>
</domain>
</category>
<category
id=
"exception"
>
<domain
id=
"cat"
>
<type
id=
"error"
sendSms=
"true"
sendMail=
"true"
sendWeixin=
"true"
/>
<type
id=
"error"
sendSms=
"true"
sendMail=
"true"
sendWeixin=
"true"
/>
<type
id=
"error"
sendSms=
"true"
sendMail=
"true"
sendWeixin=
"true"
/>
</domain>
</category>
</alert-type>
\ No newline at end of file
cat-maven-plugin/src/main/java/com/dianping/cat/plugin/InstallMojo.java
浏览文件 @
4df3cdb3
...
...
@@ -5,6 +5,7 @@ import java.io.FileOutputStream;
import
java.io.IOException
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
java.sql.Statement
;
import
java.util.regex.Pattern
;
...
...
@@ -54,9 +55,12 @@ public class InstallMojo extends AbstractMojo {
private
boolean
m_verbose
=
false
;
private
void
createDatabase
(
Statement
stmt
)
throws
SQLException
{
ResultSet
result
=
null
;
try
{
stmt
.
executeUpdate
(
"create database cat"
);
result
=
stmt
.
executeQuery
(
"SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'cat'"
);
if
(!
result
.
next
())
{
stmt
.
executeUpdate
(
"create database cat"
);
}
}
catch
(
SQLException
e
)
{
if
(
e
.
getErrorCode
()
==
1007
)
{
getLog
().
info
(
"Database 'cat' already exists, drop it first..."
);
...
...
@@ -67,6 +71,8 @@ public class InstallMojo extends AbstractMojo {
}
else
{
throw
e
;
}
}
finally
{
result
.
close
();
}
}
...
...
@@ -217,7 +223,6 @@ public class InstallMojo extends AbstractMojo {
}
});
m_user
=
PropertyProviders
.
fromConsole
().
forString
(
"jdbc.user"
,
"Please input username:"
,
null
,
null
,
null
);
m_password
=
PropertyProviders
.
fromConsole
().
forString
(
"jdbc.password"
,
"Please input password:"
,
null
,
""
,
null
);
m_password
=
PropertyProviders
.
fromConsole
().
forString
(
"jdbc.password"
,
"Please input password:"
,
null
,
""
,
null
);
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录