Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
64bece90
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,发现更多精彩内容 >>
提交
64bece90
编写于
10月 15, 2012
作者:
Y
youyong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
modify the notify
上级
4e5ef876
变更
39
隐藏空白更改
内联
并排
Showing
39 changed file
with
1440 addition
and
199 deletion
+1440
-199
cat-consumer/src/main/java/com/dianping/cat/consumer/matrix/MatrixAnalyzer.java
...java/com/dianping/cat/consumer/matrix/MatrixAnalyzer.java
+2
-2
cat-consumer/src/test/java/com/dianping/cat/consumer/AllTests.java
...mer/src/test/java/com/dianping/cat/consumer/AllTests.java
+11
-9
cat-home/pom.xml
cat-home/pom.xml
+192
-176
cat-home/src/main/java/com/dianping/cat/CatHomeModule.java
cat-home/src/main/java/com/dianping/cat/CatHomeModule.java
+6
-1
cat-home/src/main/java/com/dianping/cat/build/AlarmComponentConfigurator.java
...va/com/dianping/cat/build/AlarmComponentConfigurator.java
+16
-0
cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
...n/java/com/dianping/cat/build/ComponentsConfigurator.java
+6
-0
cat-home/src/main/java/com/dianping/cat/helper/TimeUtil.java
cat-home/src/main/java/com/dianping/cat/helper/TimeUtil.java
+14
-0
cat-home/src/main/java/com/dianping/cat/report/service/DailyReportService.java
...a/com/dianping/cat/report/service/DailyReportService.java
+37
-0
cat-home/src/main/java/com/dianping/cat/report/service/HourlyReportService.java
.../com/dianping/cat/report/service/HourlyReportService.java
+34
-0
cat-home/src/main/java/com/dianping/cat/report/service/MonthReportService.java
...a/com/dianping/cat/report/service/MonthReportService.java
+34
-0
cat-home/src/main/java/com/dianping/cat/report/service/impl/DailyReportServiceImpl.java
...nping/cat/report/service/impl/DailyReportServiceImpl.java
+294
-0
cat-home/src/main/java/com/dianping/cat/system/alarm/entity/RowData.java
...in/java/com/dianping/cat/system/alarm/entity/RowData.java
+26
-0
cat-home/src/main/java/com/dianping/cat/system/event/DefaultEventDispatcher.java
...com/dianping/cat/system/event/DefaultEventDispatcher.java
+30
-0
cat-home/src/main/java/com/dianping/cat/system/event/DefaultEventListenerRegistry.java
...anping/cat/system/event/DefaultEventListenerRegistry.java
+30
-0
cat-home/src/main/java/com/dianping/cat/system/event/Event.java
...me/src/main/java/com/dianping/cat/system/event/Event.java
+7
-0
cat-home/src/main/java/com/dianping/cat/system/event/EventDispatcher.java
...n/java/com/dianping/cat/system/event/EventDispatcher.java
+5
-0
cat-home/src/main/java/com/dianping/cat/system/event/EventListener.java
...ain/java/com/dianping/cat/system/event/EventListener.java
+7
-0
cat-home/src/main/java/com/dianping/cat/system/event/EventListenerRegistry.java
.../com/dianping/cat/system/event/EventListenerRegistry.java
+11
-0
cat-home/src/main/java/com/dianping/cat/system/event/EventQueue.java
...c/main/java/com/dianping/cat/system/event/EventQueue.java
+10
-0
cat-home/src/main/java/com/dianping/cat/system/event/EventType.java
...rc/main/java/com/dianping/cat/system/event/EventType.java
+11
-0
cat-home/src/main/java/com/dianping/cat/system/notify/ReportRender.java
...ain/java/com/dianping/cat/system/notify/ReportRender.java
+17
-0
cat-home/src/main/java/com/dianping/cat/system/notify/ScheduledTask.java
...in/java/com/dianping/cat/system/notify/ScheduledTask.java
+127
-0
cat-home/src/main/java/com/dianping/cat/system/notify/render/ReportRenderImpl.java
...m/dianping/cat/system/notify/render/ReportRenderImpl.java
+68
-0
cat-home/src/main/java/com/dianping/cat/system/notify/render/TransactionRender.java
.../dianping/cat/system/notify/render/TransactionRender.java
+101
-0
cat-home/src/main/java/com/dianping/cat/system/page/alarm/ScheduledManager.java
.../com/dianping/cat/system/page/alarm/ScheduledManager.java
+27
-0
cat-home/src/main/java/com/dianping/cat/system/tool/MailSMS.java
...e/src/main/java/com/dianping/cat/system/tool/MailSMS.java
+10
-0
cat-home/src/main/java/com/dianping/cat/system/tool/MailSMSImpl.java
...c/main/java/com/dianping/cat/system/tool/MailSMSImpl.java
+21
-0
cat-home/src/main/resources/META-INF/dal/jdbc/alarm-dal.xml
cat-home/src/main/resources/META-INF/dal/jdbc/alarm-dal.xml
+1
-1
cat-home/src/main/resources/META-INF/dal/jdbc/report-dal.xml
cat-home/src/main/resources/META-INF/dal/jdbc/report-dal.xml
+27
-0
cat-home/src/main/resources/META-INF/dal/model/threshold-template-codegen.xml
...sources/META-INF/dal/model/threshold-template-codegen.xml
+27
-0
cat-home/src/main/resources/META-INF/dal/model/threshold-template-manifest.xml
...ources/META-INF/dal/model/threshold-template-manifest.xml
+6
-0
cat-home/src/main/resources/META-INF/dal/model/threshold-template-model.xml
...resources/META-INF/dal/model/threshold-template-model.xml
+27
-0
cat-home/src/main/resources/META-INF/plexus/components.xml
cat-home/src/main/resources/META-INF/plexus/components.xml
+47
-9
cat-home/src/main/resources/freemaker/transaction.ftl
cat-home/src/main/resources/freemaker/transaction.ftl
+35
-0
cat-home/src/test/java/com/dianping/cat/AllTests.java
cat-home/src/test/java/com/dianping/cat/AllTests.java
+5
-1
cat-home/src/test/java/com/dianping/cat/system/notify/TransactionRenderTest.java
...com/dianping/cat/system/notify/TransactionRenderTest.java
+25
-0
cat-home/src/test/resources/com/dianping/cat/system/notify/Transaction.xml
.../resources/com/dianping/cat/system/notify/Transaction.xml
+22
-0
cat-home/src/test/resources/com/dianping/cat/system/notify/TransactionRender.txt
...rces/com/dianping/cat/system/notify/TransactionRender.txt
+44
-0
dog-home/src/main/webapp/template/event.vm
dog-home/src/main/webapp/template/event.vm
+20
-0
未找到文件。
cat-consumer/src/main/java/com/dianping/cat/consumer/matrix/MatrixAnalyzer.java
浏览文件 @
64bece90
...
@@ -115,7 +115,7 @@ public class MatrixAnalyzer extends AbstractMessageAnalyzer<MatrixReport> implem
...
@@ -115,7 +115,7 @@ public class MatrixAnalyzer extends AbstractMessageAnalyzer<MatrixReport> implem
if
(
shouldDiscard
((
Transaction
)
message
))
{
if
(
shouldDiscard
((
Transaction
)
message
))
{
return
;
return
;
}
}
if
(
messageType
.
equals
(
"URL"
)
||
messageType
.
equals
(
"Service"
))
{
if
(
messageType
.
equals
(
"URL"
)
||
messageType
.
equals
(
"Service"
)
||
messageType
.
equals
(
"PigeonService"
)
)
{
Matrix
matrix
=
report
.
findOrCreateMatrix
(
message
.
getName
());
Matrix
matrix
=
report
.
findOrCreateMatrix
(
message
.
getName
());
matrix
.
setType
(
message
.
getType
());
matrix
.
setType
(
message
.
getType
());
matrix
.
setName
(
message
.
getName
());
matrix
.
setName
(
message
.
getName
());
...
@@ -214,7 +214,7 @@ public class MatrixAnalyzer extends AbstractMessageAnalyzer<MatrixReport> implem
...
@@ -214,7 +214,7 @@ public class MatrixAnalyzer extends AbstractMessageAnalyzer<MatrixReport> implem
try
{
try
{
report
.
accept
(
new
MatrixReportFilter
(
50
));
report
.
accept
(
new
MatrixReportFilter
(
50
));
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
//ConcurrentModificationException
//
ConcurrentModificationException
report
.
accept
(
new
MatrixReportFilter
(
50
));
report
.
accept
(
new
MatrixReportFilter
(
50
));
}
}
Set
<
String
>
domainNames
=
report
.
getDomainNames
();
Set
<
String
>
domainNames
=
report
.
getDomainNames
();
...
...
cat-consumer/src/test/java/com/dianping/cat/consumer/AllTests.java
浏览文件 @
64bece90
...
@@ -7,29 +7,31 @@ import org.junit.runners.Suite.SuiteClasses;
...
@@ -7,29 +7,31 @@ import org.junit.runners.Suite.SuiteClasses;
import
com.dianping.cat.consumer.cross.ParseCrossInfoTest
;
import
com.dianping.cat.consumer.cross.ParseCrossInfoTest
;
import
com.dianping.cat.consumer.ip.IpReportTest
;
import
com.dianping.cat.consumer.ip.IpReportTest
;
import
com.dianping.cat.consumer.matrix.MatrixReportFilterTest
;
import
com.dianping.cat.consumer.matrix.MatrixReportFilterTest
;
import
com.dianping.cat.consumer.problem.model.ProblemReportTest
;
import
com.dianping.cat.consumer.transaction.FormatTest
;
import
com.dianping.cat.consumer.transaction.FormatTest
;
import
com.dianping.cat.consumer.transaction.GsonTest
;
import
com.dianping.cat.consumer.transaction.GsonTest
;
import
com.dianping.cat.consumer.transaction.NumberFormatTest
;
import
com.dianping.cat.consumer.transaction.NumberFormatTest
;
import
com.dianping.cat.consumer.transaction.TransactionAnalyzerTest
;
import
com.dianping.cat.consumer.transaction.TransactionReportFilterTest
;
import
com.dianping.cat.consumer.transaction.TransactionReportFilterTest
;
import
com.dianping.cat.consumer.transaction.TransactionReportMessageAnalyzerTest
;
import
com.dianping.cat.consumer.transaction.TransactionReportTest
;
@RunWith
(
Suite
.
class
)
@RunWith
(
Suite
.
class
)
@SuiteClasses
({
@SuiteClasses
({
/* .ip */
//OneAnalyzerTwoDurationTest.class,
IpReportTest
.
class
,
//
TransactionAnalyzer
Test.class,
//
ProblemReport
Test.class,
//TransactionReportMessageAnalyzerTest.class,
/* .ip */
IpReportTest
.
class
,
//TransactionReport
Test.class,
TransactionAnalyzer
Test
.
class
,
// Many
AnalyzerTest.class,
TransactionReportMessage
AnalyzerTest
.
class
,
// OneAnalyzerTwoDuration
Test.class,
TransactionReport
Test
.
class
,
ProblemReport
Test
.
class
,
ManyAnalyzer
Test
.
class
,
FormatTest
.
class
,
GsonTest
.
class
,
FormatTest
.
class
,
GsonTest
.
class
,
...
...
cat-home/pom.xml
浏览文件 @
64bece90
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
<parent>
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
>
<groupId>
com.dianping.cat
</groupId>
<parent>
<artifactId>
parent
</artifactId>
<groupId>
com.dianping.cat
</groupId>
<version>
0.4.2
</version>
<artifactId>
parent
</artifactId>
</parent>
<version>
0.4.2
</version>
<modelVersion>
4.0.0
</modelVersion>
</parent>
<artifactId>
cat-home
</artifactId>
<modelVersion>
4.0.0
</modelVersion>
<name>
CAT Home
</name>
<artifactId>
cat-home
</artifactId>
<packaging>
war
</packaging>
<name>
CAT Home
</name>
<dependencies>
<packaging>
war
</packaging>
<dependency>
<dependencies>
<groupId>
com.dianping.cat
</groupId>
<dependency>
<artifactId>
cat-consumer
</artifactId>
<groupId>
com.dianping.cat
</groupId>
</dependency>
<artifactId>
cat-consumer
</artifactId>
<dependency>
</dependency>
<groupId>
com.dianping.cat
</groupId>
<dependency>
<artifactId>
cat-job
</artifactId>
<groupId>
com.dianping.cat
</groupId>
</dependency>
<artifactId>
cat-job
</artifactId>
<dependency>
</dependency>
<groupId>
com.google.code.gson
</groupId>
<dependency>
<artifactId>
gson
</artifactId>
<groupId>
com.google.code.gson
</groupId>
<version>
1.6
</version>
<artifactId>
gson
</artifactId>
</dependency>
<version>
1.6
</version>
<dependency>
</dependency>
<groupId>
com.site.common
</groupId>
<dependency>
<artifactId>
web-framework
</artifactId>
<groupId>
com.site.common
</groupId>
</dependency>
<artifactId>
web-framework
</artifactId>
<dependency>
</dependency>
<groupId>
org.unidal.webres
</groupId>
<dependency>
<artifactId>
WebResServer
</artifactId>
<groupId>
org.unidal.webres
</groupId>
</dependency>
<artifactId>
WebResServer
</artifactId>
<dependency>
</dependency>
<groupId>
javax.servlet
</groupId>
<dependency>
<artifactId>
servlet-api
</artifactId>
<groupId>
javax.servlet
</groupId>
<version>
2.5
</version>
<artifactId>
servlet-api
</artifactId>
<scope>
provided
</scope>
<version>
2.5
</version>
</dependency>
<scope>
provided
</scope>
<dependency>
</dependency>
<groupId>
javax.servlet
</groupId>
<dependency>
<artifactId>
jstl
</artifactId>
<groupId>
javax.servlet
</groupId>
<version>
1.2
</version>
<artifactId>
jstl
</artifactId>
</dependency>
<version>
1.2
</version>
<dependency>
</dependency>
<groupId>
org.mortbay.jetty
</groupId>
<dependency>
<artifactId>
jsp-api-2.1
</artifactId>
<groupId>
org.mortbay.jetty
</groupId>
<version>
6.1.14
</version>
<artifactId>
jsp-api-2.1
</artifactId>
<scope>
provided
</scope>
<version>
6.1.14
</version>
</dependency>
<scope>
provided
</scope>
<dependency>
</dependency>
<groupId>
org.mortbay.jetty
</groupId>
<dependency>
<artifactId>
jsp-2.1
</artifactId>
<groupId>
org.mortbay.jetty
</groupId>
<version>
6.1.14
</version>
<artifactId>
jsp-2.1
</artifactId>
<scope>
provided
</scope>
<version>
6.1.14
</version>
</dependency>
<scope>
provided
</scope>
<dependency>
</dependency>
<groupId>
mysql
</groupId>
<dependency>
<artifactId>
mysql-connector-java
</artifactId>
<groupId>
mysql
</groupId>
<scope>
runtime
</scope>
<artifactId>
mysql-connector-java
</artifactId>
</dependency>
<scope>
runtime
</scope>
<dependency>
</dependency>
<groupId>
com.site.common
</groupId>
<dependency>
<artifactId>
test-framework
</artifactId>
<groupId>
com.site.common
</groupId>
<scope>
${test-framework.scope}
</scope>
<artifactId>
test-framework
</artifactId>
</dependency>
<scope>
${test-framework.scope}
</scope>
<dependency>
</dependency>
<groupId>
com.site.dal
</groupId>
<dependency>
<artifactId>
dal-jdbc
</artifactId>
<groupId>
com.site.dal
</groupId>
<version>
1.1.7
</version>
<artifactId>
dal-jdbc
</artifactId>
</dependency>
<version>
1.1.7
</version>
</dependencies>
</dependency>
<build>
<dependency>
<finalName>
cat
</finalName>
<groupId>
freemarker
</groupId>
<resources>
<artifactId>
freemarker
</artifactId>
<resource>
<version>
2.3.9
</version>
<directory>
${basedir}/src/main/resources
</directory>
</dependency>
<filtering>
true
</filtering>
</dependencies>
</resource>
<build>
</resources>
<finalName>
cat
</finalName>
<plugins>
<resources>
<plugin>
<resource>
<groupId>
org.apache.maven.plugins
</groupId>
<directory>
${basedir}/src/main/resources
</directory>
<artifactId>
maven-war-plugin
</artifactId>
<filtering>
true
</filtering>
<version>
2.1.1
</version>
</resource>
<configuration>
</resources>
<webResources>
<plugins>
<resource>
<plugin>
<directory>
src/main/resources
</directory>
<groupId>
org.apache.maven.plugins
</groupId>
<filtering>
false
</filtering>
<artifactId>
maven-war-plugin
</artifactId>
<targetPath>
WEB-INF/classes
</targetPath>
<version>
2.1.1
</version>
</resource>
<configuration>
<resource>
<webResources>
<directory>
src/main/webapp
</directory>
<resource>
<filtering>
false
</filtering>
<directory>
src/main/resources
</directory>
<includes>
<filtering>
false
</filtering>
<include>
WEB-INF/web.xml
</include>
<targetPath>
WEB-INF/classes
</targetPath>
</includes>
</resource>
</resource>
<resource>
</webResources>
<directory>
src/main/webapp
</directory>
</configuration>
<filtering>
false
</filtering>
</plugin>
<includes>
<plugin>
<include>
WEB-INF/web.xml
</include>
<groupId>
org.unidal.maven.plugins
</groupId>
</includes>
<artifactId>
codegen-maven-plugin
</artifactId>
</resource>
<version>
1.1.9
</version>
</webResources>
<executions>
</configuration>
<execution>
</plugin>
<id>
generate plexus component descriptor
</id>
<plugin>
<phase>
process-classes
</phase>
<groupId>
org.unidal.maven.plugins
</groupId>
<goals>
<artifactId>
codegen-maven-plugin
</artifactId>
<goal>
plexus
</goal>
<version>
1.1.9
</version>
</goals>
<executions>
<configuration>
<execution>
<className>
com.dianping.cat.build.ComponentsConfigurator
</className>
<id>
generate plexus component descriptor
</id>
<env>
dev
</env>
<phase>
process-classes
</phase>
</configuration>
<goals>
</execution>
<goal>
plexus
</goal>
<execution>
</goals>
<id>
generate dal jdbc model
</id>
<configuration>
<phase>
generate-sources
</phase>
<className>
com.dianping.cat.build.ComponentsConfigurator
</className>
<goals>
<env>
dev
</env>
<goal>
dal-jdbc
</goal>
</configuration>
</goals>
</execution>
<configuration>
<execution>
<manifest>
<![CDATA[
<id>
generate report models
</id>
<phase>
generate-sources
</phase>
<goals>
<goal>
dal-model
</goal>
</goals>
<configuration>
<manifest>
${basedir}/src/main/resources/META-INF/dal/model/threshold-template-manifest.xml,
</manifest>
</configuration>
</execution>
<execution>
<id>
generate dal jdbc model
</id>
<phase>
generate-sources
</phase>
<goals>
<goal>
dal-jdbc
</goal>
</goals>
<configuration>
<manifest>
<![CDATA[
${basedir}/src/main/resources/META-INF/dal/jdbc/report-manifest.xml,
${basedir}/src/main/resources/META-INF/dal/jdbc/report-manifest.xml,
${basedir}/src/main/resources/META-INF/dal/jdbc/alarm-manifest.xml,
${basedir}/src/main/resources/META-INF/dal/jdbc/alarm-manifest.xml,
${basedir}/src/main/resources/META-INF/dal/jdbc/notification-manifest.xml,
${basedir}/src/main/resources/META-INF/dal/jdbc/notification-manifest.xml,
${basedir}/src/main/resources/META-INF/dal/jdbc/user-manifest.xml,
${basedir}/src/main/resources/META-INF/dal/jdbc/user-manifest.xml,
]]>
</manifest>
]]>
</manifest>
</configuration>
</configuration>
</execution>
</execution>
</executions>
</executions>
</plugin>
</plugin>
<plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-jar-plugin
</artifactId>
<artifactId>
maven-jar-plugin
</artifactId>
<version>
2.4
</version>
<version>
2.4
</version>
<configuration>
<configuration>
<archive>
<archive>
<index>
true
</index>
<index>
true
</index>
<manifest>
<manifest>
<addClasspath>
true
</addClasspath>
<addClasspath>
true
</addClasspath>
<classpathPrefix>
lib/
</classpathPrefix>
<classpathPrefix>
lib/
</classpathPrefix>
<mainClass>
com.dianping.cat.Server
</mainClass>
<mainClass>
com.dianping.cat.Server
</mainClass>
</manifest>
</manifest>
</archive>
</archive>
</configuration>
</configuration>
</plugin>
</plugin>
</plugins>
</plugins>
<pluginManagement>
<pluginManagement>
<plugins>
<plugins>
<plugin>
<plugin>
<artifactId>
maven-compiler-plugin
</artifactId>
<artifactId>
maven-compiler-plugin
</artifactId>
<version>
2.3.2
</version>
<version>
2.3.2
</version>
<configuration>
<configuration>
<source>
1.6
</source>
<source>
1.6
</source>
<target>
1.6
</target>
<target>
1.6
</target>
</configuration>
</configuration>
</plugin>
</plugin>
<plugin>
<plugin>
<artifactId>
maven-eclipse-plugin
</artifactId>
<artifactId>
maven-eclipse-plugin
</artifactId>
<version>
2.8
</version>
<version>
2.8
</version>
<configuration>
<configuration>
<downloadSources>
true
</downloadSources>
<downloadSources>
true
</downloadSources>
<ajdtVersion>
none
</ajdtVersion>
<ajdtVersion>
none
</ajdtVersion>
<additionalConfig>
<additionalConfig>
<file>
<file>
<name>
.settings/org.eclipse.jdt.core.prefs
</name>
<name>
.settings/org.eclipse.jdt.core.prefs
</name>
<content>
<![CDATA[org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
<content>
<![CDATA[org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
eclipse.preferences.version=1
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.source=1.6
org.eclipse.jdt.core.compiler.source=1.6
org.eclipse.jdt.core.compiler.compliance=1.6]]>
</content>
org.eclipse.jdt.core.compiler.compliance=1.6]]>
</content>
</file>
</file>
</additionalConfig>
</additionalConfig>
</configuration>
</configuration>
</plugin>
</plugin>
</plugins>
</plugins>
</pluginManagement>
</pluginManagement>
</build>
</build>
<properties>
<properties>
<packaging>
war
</packaging>
<packaging>
war
</packaging>
<test-framework.scope>
test
</test-framework.scope>
<test-framework.scope>
test
</test-framework.scope>
</properties>
</properties>
</project>
</project>
cat-home/src/main/java/com/dianping/cat/CatHomeModule.java
浏览文件 @
64bece90
...
@@ -13,6 +13,7 @@ import com.dianping.cat.report.task.DailyTaskProducer;
...
@@ -13,6 +13,7 @@ import com.dianping.cat.report.task.DailyTaskProducer;
import
com.dianping.cat.report.task.TaskConsumer
;
import
com.dianping.cat.report.task.TaskConsumer
;
import
com.dianping.cat.report.task.monthreport.MonthReportBuilderTask
;
import
com.dianping.cat.report.task.monthreport.MonthReportBuilderTask
;
import
com.dianping.cat.system.alarm.DefaultAlarmCreator
;
import
com.dianping.cat.system.alarm.DefaultAlarmCreator
;
import
com.dianping.cat.system.notify.ScheduledTask
;
import
com.site.helper.Threads
;
import
com.site.helper.Threads
;
import
com.site.initialization.AbstractModule
;
import
com.site.initialization.AbstractModule
;
import
com.site.initialization.Module
;
import
com.site.initialization.Module
;
...
@@ -41,9 +42,13 @@ public class CatHomeModule extends AbstractModule {
...
@@ -41,9 +42,13 @@ public class CatHomeModule extends AbstractModule {
}
}
DefaultAlarmCreator
alarmCreator
=
ctx
.
lookup
(
DefaultAlarmCreator
.
class
);
DefaultAlarmCreator
alarmCreator
=
ctx
.
lookup
(
DefaultAlarmCreator
.
class
);
ScheduledTask
scheduledTask
=
ctx
.
lookup
(
ScheduledTask
.
class
);
if
(
serverConfigManager
.
isJobMachine
())
{
if
(
serverConfigManager
.
isJobMachine
())
{
Threads
.
forGroup
(
"Alarm"
).
start
(
alarmCreator
);
Threads
.
forGroup
(
"Cat-Alarm"
).
start
(
alarmCreator
);
Threads
.
forGroup
(
"Cat-Alarm"
).
start
(
scheduledTask
);
}
}
// OtherJobReport tuangouMonth = ctx.lookup(OtherJobReport.class);
// OtherJobReport tuangouMonth = ctx.lookup(OtherJobReport.class);
// Threads.forGroup("Cat").start(tuangouMonth);
// Threads.forGroup("Cat").start(tuangouMonth);
}
}
...
...
cat-home/src/main/java/com/dianping/cat/build/AlarmComponentConfigurator.java
浏览文件 @
64bece90
...
@@ -8,7 +8,14 @@ import com.dianping.cat.home.dal.alarm.AlarmRuleDao;
...
@@ -8,7 +8,14 @@ import com.dianping.cat.home.dal.alarm.AlarmRuleDao;
import
com.dianping.cat.home.dal.alarm.AlarmTemplateDao
;
import
com.dianping.cat.home.dal.alarm.AlarmTemplateDao
;
import
com.dianping.cat.home.dal.alarm.ScheduledReportDao
;
import
com.dianping.cat.home.dal.alarm.ScheduledReportDao
;
import
com.dianping.cat.report.page.model.spi.ModelService
;
import
com.dianping.cat.report.page.model.spi.ModelService
;
import
com.dianping.cat.report.service.DailyReportService
;
import
com.dianping.cat.system.alarm.DefaultAlarmCreator
;
import
com.dianping.cat.system.alarm.DefaultAlarmCreator
;
import
com.dianping.cat.system.notify.ReportRender
;
import
com.dianping.cat.system.notify.ScheduledTask
;
import
com.dianping.cat.system.notify.render.ReportRenderImpl
;
import
com.dianping.cat.system.page.alarm.ScheduledManager
;
import
com.dianping.cat.system.tool.MailSMS
;
import
com.dianping.cat.system.tool.MailSMSImpl
;
import
com.site.lookup.configuration.AbstractResourceConfigurator
;
import
com.site.lookup.configuration.AbstractResourceConfigurator
;
import
com.site.lookup.configuration.Component
;
import
com.site.lookup.configuration.Component
;
...
@@ -21,6 +28,15 @@ public class AlarmComponentConfigurator extends AbstractResourceConfigurator {
...
@@ -21,6 +28,15 @@ public class AlarmComponentConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
DefaultAlarmCreator
.
class
)
//
all
.
add
(
C
(
DefaultAlarmCreator
.
class
)
//
.
req
(
AlarmRuleDao
.
class
,
AlarmTemplateDao
.
class
,
ReportDao
.
class
,
ScheduledReportDao
.
class
)
//
.
req
(
AlarmRuleDao
.
class
,
AlarmTemplateDao
.
class
,
ReportDao
.
class
,
ScheduledReportDao
.
class
)
//
.
req
(
ModelService
.
class
,
"event"
));
.
req
(
ModelService
.
class
,
"event"
));
all
.
add
(
C
(
MailSMS
.
class
,
MailSMSImpl
.
class
));
all
.
add
(
C
(
ReportRender
.
class
,
ReportRenderImpl
.
class
));
all
.
add
(
C
(
ScheduledTask
.
class
).
//
req
(
ReportRender
.
class
,
MailSMS
.
class
)
//
.
req
(
DailyReportService
.
class
,
ScheduledManager
.
class
));
return
all
;
return
all
;
}
}
}
}
cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
浏览文件 @
64bece90
...
@@ -20,6 +20,8 @@ import com.dianping.cat.report.graph.GraphBuilder;
...
@@ -20,6 +20,8 @@ import com.dianping.cat.report.graph.GraphBuilder;
import
com.dianping.cat.report.graph.ValueTranslater
;
import
com.dianping.cat.report.graph.ValueTranslater
;
import
com.dianping.cat.report.page.cross.DomainManager
;
import
com.dianping.cat.report.page.cross.DomainManager
;
import
com.dianping.cat.report.page.health.HistoryGraphs
;
import
com.dianping.cat.report.page.health.HistoryGraphs
;
import
com.dianping.cat.report.service.impl.DailyReportServiceImpl
;
import
com.dianping.cat.report.service.DailyReportService
;
import
com.dianping.cat.report.task.DailyTaskProducer
;
import
com.dianping.cat.report.task.DailyTaskProducer
;
import
com.dianping.cat.report.task.DefaultTaskConsumer
;
import
com.dianping.cat.report.task.DefaultTaskConsumer
;
import
com.dianping.cat.report.task.TaskConsumer
;
import
com.dianping.cat.report.task.TaskConsumer
;
...
@@ -140,9 +142,13 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
...
@@ -140,9 +142,13 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
ModuleManager
.
class
,
DefaultModuleManager
.
class
)
//
all
.
add
(
C
(
ModuleManager
.
class
,
DefaultModuleManager
.
class
)
//
.
config
(
E
(
"topLevelModules"
).
value
(
CatHomeModule
.
ID
)));
.
config
(
E
(
"topLevelModules"
).
value
(
CatHomeModule
.
ID
)));
// TODO delete
all
.
add
(
C
(
OtherJobReport
.
class
).
//
all
.
add
(
C
(
OtherJobReport
.
class
).
//
req
(
DailyreportDao
.
class
,
DomainManager
.
class
));
req
(
DailyreportDao
.
class
,
DomainManager
.
class
));
all
.
add
(
C
(
DailyReportService
.
class
,
DailyReportServiceImpl
.
class
)
//
.
req
(
DailyreportDao
.
class
));
// model service
// model service
all
.
addAll
(
new
ServiceComponentConfigurator
().
defineComponents
());
all
.
addAll
(
new
ServiceComponentConfigurator
().
defineComponents
());
...
...
cat-home/src/main/java/com/dianping/cat/helper/TimeUtil.java
浏览文件 @
64bece90
package
com.dianping.cat.helper
;
package
com.dianping.cat.helper
;
import
java.util.Calendar
;
import
java.util.Date
;
public
class
TimeUtil
{
public
class
TimeUtil
{
public
static
final
long
ONE_MINUTE
=
60
*
1000L
;
public
static
final
long
ONE_MINUTE
=
60
*
1000L
;
...
@@ -9,4 +12,15 @@ public class TimeUtil {
...
@@ -9,4 +12,15 @@ public class TimeUtil {
public
static
final
long
ONE_DAY
=
24
*
ONE_HOUR
;
public
static
final
long
ONE_DAY
=
24
*
ONE_HOUR
;
public
static
final
long
ONE_WEEK
=
7
*
ONE_DAY
;
public
static
final
long
ONE_WEEK
=
7
*
ONE_DAY
;
public
static
Date
getCurrentDay
()
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
);
cal
.
set
(
Calendar
.
MINUTE
,
0
);
cal
.
set
(
Calendar
.
SECOND
,
0
);
cal
.
set
(
Calendar
.
MILLISECOND
,
0
);
return
cal
.
getTime
();
}
}
}
cat-home/src/main/java/com/dianping/cat/report/service/DailyReportService.java
0 → 100644
浏览文件 @
64bece90
package
com.dianping.cat.report.service
;
import
java.util.Date
;
import
com.dianping.cat.consumer.cross.model.entity.CrossReport
;
import
com.dianping.cat.consumer.database.model.entity.DatabaseReport
;
import
com.dianping.cat.consumer.event.model.entity.EventReport
;
import
com.dianping.cat.consumer.health.model.entity.HealthReport
;
import
com.dianping.cat.consumer.heartbeat.model.entity.HeartbeatReport
;
import
com.dianping.cat.consumer.matrix.model.entity.MatrixReport
;
import
com.dianping.cat.consumer.problem.model.entity.ProblemReport
;
import
com.dianping.cat.consumer.sql.model.entity.SqlReport
;
import
com.dianping.cat.consumer.transaction.model.entity.TransactionReport
;
public
interface
DailyReportService
{
//query many daily report
public
TransactionReport
queryTransactionReport
(
String
domain
,
Date
start
,
Date
end
);
public
EventReport
queryEventReport
(
String
domain
,
Date
start
,
Date
end
);
public
ProblemReport
queryProblemReport
(
String
domain
,
Date
start
,
Date
end
);
public
HeartbeatReport
queryHeartbeatReport
(
String
domain
,
Date
start
,
Date
end
);
public
MatrixReport
queryMatrixReport
(
String
domain
,
Date
start
,
Date
end
);
public
CrossReport
queryCrossReport
(
String
domain
,
Date
start
,
Date
end
);
public
SqlReport
querySqlReport
(
String
domain
,
Date
start
,
Date
end
);
public
DatabaseReport
queryDatabaseReport
(
String
database
,
Date
start
,
Date
end
);
public
HealthReport
queryHealthReport
(
String
domain
,
Date
start
,
Date
end
);
}
cat-home/src/main/java/com/dianping/cat/report/service/HourlyReportService.java
0 → 100644
浏览文件 @
64bece90
package
com.dianping.cat.report.service
;
import
java.util.Date
;
import
com.dianping.cat.consumer.cross.model.entity.CrossReport
;
import
com.dianping.cat.consumer.database.model.entity.DatabaseReport
;
import
com.dianping.cat.consumer.event.model.entity.EventReport
;
import
com.dianping.cat.consumer.health.model.entity.HealthReport
;
import
com.dianping.cat.consumer.heartbeat.model.entity.HeartbeatReport
;
import
com.dianping.cat.consumer.matrix.model.entity.MatrixReport
;
import
com.dianping.cat.consumer.problem.model.entity.ProblemReport
;
import
com.dianping.cat.consumer.sql.model.entity.SqlReport
;
import
com.dianping.cat.consumer.transaction.model.entity.TransactionReport
;
public
interface
HourlyReportService
{
public
TransactionReport
queryTransactionReport
(
String
domain
,
Date
start
,
Date
end
);
public
EventReport
queryEventReport
(
String
domain
,
Date
start
,
Date
end
);
public
ProblemReport
queryProblemReport
(
String
domain
,
Date
start
,
Date
end
);
public
HeartbeatReport
queryHeartbeatReport
(
String
domain
,
Date
start
,
Date
end
);
public
MatrixReport
queryMatrixReport
(
String
domain
,
Date
start
,
Date
end
);
public
CrossReport
queryCrossReport
(
String
domain
,
Date
start
,
Date
end
);
public
SqlReport
querySqlReport
(
String
domain
,
Date
start
,
Date
end
);
public
DatabaseReport
queryDatabaseReport
(
String
database
,
Date
start
,
Date
end
);
public
HealthReport
queryHealthReport
(
String
domain
,
Date
start
,
Date
end
);
}
cat-home/src/main/java/com/dianping/cat/report/service/MonthReportService.java
0 → 100644
浏览文件 @
64bece90
package
com.dianping.cat.report.service
;
import
java.util.Date
;
import
com.dianping.cat.consumer.cross.model.entity.CrossReport
;
import
com.dianping.cat.consumer.database.model.entity.DatabaseReport
;
import
com.dianping.cat.consumer.event.model.entity.EventReport
;
import
com.dianping.cat.consumer.health.model.entity.HealthReport
;
import
com.dianping.cat.consumer.heartbeat.model.entity.HeartbeatReport
;
import
com.dianping.cat.consumer.matrix.model.entity.MatrixReport
;
import
com.dianping.cat.consumer.problem.model.entity.ProblemReport
;
import
com.dianping.cat.consumer.sql.model.entity.SqlReport
;
import
com.dianping.cat.consumer.transaction.model.entity.TransactionReport
;
public
interface
MonthReportService
{
public
TransactionReport
queryTransactionReport
(
String
domain
,
Date
start
,
Date
end
);
public
EventReport
queryEventReport
(
String
domain
,
Date
start
,
Date
end
);
public
ProblemReport
queryProblemReport
(
String
domain
,
Date
start
,
Date
end
);
public
HeartbeatReport
queryHeartbeatReport
(
String
domain
,
Date
start
,
Date
end
);
public
MatrixReport
queryMatrixReport
(
String
domain
,
Date
start
,
Date
end
);
public
CrossReport
queryCrossReport
(
String
domain
,
Date
start
,
Date
end
);
public
SqlReport
querySqlReport
(
String
domain
,
Date
start
,
Date
end
);
public
DatabaseReport
queryDatabaseReport
(
String
database
,
Date
start
,
Date
end
);
public
HealthReport
queryHealthReport
(
String
domain
,
Date
start
,
Date
end
);
}
cat-home/src/main/java/com/dianping/cat/report/service/impl/DailyReportServiceImpl.java
0 → 100644
浏览文件 @
64bece90
package
com.dianping.cat.report.service.impl
;
import
java.util.Date
;
import
java.util.List
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.consumer.cross.model.entity.CrossReport
;
import
com.dianping.cat.consumer.database.model.entity.DatabaseReport
;
import
com.dianping.cat.consumer.event.model.entity.EventReport
;
import
com.dianping.cat.consumer.health.model.entity.HealthReport
;
import
com.dianping.cat.consumer.heartbeat.model.entity.HeartbeatReport
;
import
com.dianping.cat.consumer.matrix.model.entity.MatrixReport
;
import
com.dianping.cat.consumer.problem.model.entity.ProblemReport
;
import
com.dianping.cat.consumer.sql.model.entity.SqlReport
;
import
com.dianping.cat.consumer.transaction.model.entity.TransactionReport
;
import
com.dianping.cat.home.dal.report.Dailyreport
;
import
com.dianping.cat.home.dal.report.DailyreportDao
;
import
com.dianping.cat.home.dal.report.DailyreportEntity
;
import
com.dianping.cat.message.Event
;
import
com.dianping.cat.report.page.model.cross.CrossReportMerger
;
import
com.dianping.cat.report.page.model.database.DatabaseReportMerger
;
import
com.dianping.cat.report.page.model.event.EventReportMerger
;
import
com.dianping.cat.report.page.model.heartbeat.HeartbeatReportMerger
;
import
com.dianping.cat.report.page.model.matrix.MatrixReportMerger
;
import
com.dianping.cat.report.page.model.problem.ProblemReportMerger
;
import
com.dianping.cat.report.page.model.sql.SqlReportMerger
;
import
com.dianping.cat.report.page.model.transaction.TransactionReportMerger
;
import
com.dianping.cat.report.service.DailyReportService
;
import
com.dianping.cat.report.task.health.HealthReportMerger
;
import
com.site.lookup.annotation.Inject
;
public
class
DailyReportServiceImpl
implements
DailyReportService
{
@Inject
private
DailyreportDao
m_dailyreportDao
;
@Override
public
TransactionReport
queryTransactionReport
(
String
domain
,
Date
start
,
Date
end
)
{
TransactionReportMerger
merger
=
new
TransactionReportMerger
(
new
TransactionReport
(
domain
));
try
{
List
<
Dailyreport
>
reports
=
m_dailyreportDao
.
findAllByDomainNameDuration
(
start
,
end
,
domain
,
"transaction"
,
DailyreportEntity
.
READSET_FULL
);
for
(
Dailyreport
report
:
reports
)
{
String
xml
=
report
.
getContent
();
try
{
TransactionReport
reportModel
=
com
.
dianping
.
cat
.
consumer
.
transaction
.
model
.
transform
.
DefaultSaxParser
.
parse
(
xml
);
reportModel
.
accept
(
merger
);
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
Cat
.
getProducer
().
logEvent
(
"ErrorXML"
,
"transaction"
,
Event
.
SUCCESS
,
xml
);
}
}
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
TransactionReport
transactionReport
=
merger
.
getTransactionReport
();
transactionReport
.
setStartTime
(
start
);
transactionReport
.
setEndTime
(
end
);
return
transactionReport
;
}
@Override
public
EventReport
queryEventReport
(
String
domain
,
Date
start
,
Date
end
)
{
EventReportMerger
merger
=
new
EventReportMerger
(
new
EventReport
(
domain
));
try
{
List
<
Dailyreport
>
reports
=
m_dailyreportDao
.
findAllByDomainNameDuration
(
start
,
end
,
domain
,
"event"
,
DailyreportEntity
.
READSET_FULL
);
for
(
Dailyreport
report
:
reports
)
{
String
xml
=
report
.
getContent
();
try
{
EventReport
reportModel
=
com
.
dianping
.
cat
.
consumer
.
event
.
model
.
transform
.
DefaultSaxParser
.
parse
(
xml
);
reportModel
.
accept
(
merger
);
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
Cat
.
getProducer
().
logEvent
(
"ErrorXML"
,
"event"
,
Event
.
SUCCESS
,
xml
);
}
}
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
EventReport
eventReport
=
merger
.
getEventReport
();
eventReport
.
setStartTime
(
start
);
eventReport
.
setEndTime
(
end
);
return
eventReport
;
}
@Override
public
ProblemReport
queryProblemReport
(
String
domain
,
Date
start
,
Date
end
)
{
ProblemReportMerger
merger
=
new
ProblemReportMerger
(
new
ProblemReport
(
domain
));
try
{
List
<
Dailyreport
>
reports
=
m_dailyreportDao
.
findAllByDomainNameDuration
(
start
,
end
,
domain
,
"problem"
,
DailyreportEntity
.
READSET_FULL
);
for
(
Dailyreport
report
:
reports
)
{
String
xml
=
report
.
getContent
();
try
{
ProblemReport
reportModel
=
com
.
dianping
.
cat
.
consumer
.
problem
.
model
.
transform
.
DefaultSaxParser
.
parse
(
xml
);
reportModel
.
accept
(
merger
);
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
Cat
.
getProducer
().
logEvent
(
"ErrorXML"
,
"problem"
,
Event
.
SUCCESS
,
xml
);
}
}
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
ProblemReport
problemReport
=
merger
.
getProblemReport
();
problemReport
.
setStartTime
(
start
);
problemReport
.
setEndTime
(
end
);
return
problemReport
;
}
@Override
public
HeartbeatReport
queryHeartbeatReport
(
String
domain
,
Date
start
,
Date
end
)
{
HeartbeatReportMerger
merger
=
new
HeartbeatReportMerger
(
new
HeartbeatReport
(
domain
));
try
{
List
<
Dailyreport
>
reports
=
m_dailyreportDao
.
findAllByDomainNameDuration
(
start
,
end
,
domain
,
"heartbeat"
,
DailyreportEntity
.
READSET_FULL
);
for
(
Dailyreport
report
:
reports
)
{
String
xml
=
report
.
getContent
();
try
{
HeartbeatReport
reportModel
=
com
.
dianping
.
cat
.
consumer
.
heartbeat
.
model
.
transform
.
DefaultSaxParser
.
parse
(
xml
);
reportModel
.
accept
(
merger
);
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
Cat
.
getProducer
().
logHeartbeat
(
"ErrorXML"
,
"heartbeat"
,
Event
.
SUCCESS
,
xml
);
}
}
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
HeartbeatReport
heartbeatReport
=
merger
.
getHeartbeatReport
();
heartbeatReport
.
setStartTime
(
start
);
heartbeatReport
.
setEndTime
(
end
);
return
heartbeatReport
;
}
@Override
public
MatrixReport
queryMatrixReport
(
String
domain
,
Date
start
,
Date
end
)
{
MatrixReportMerger
merger
=
new
MatrixReportMerger
(
new
MatrixReport
(
domain
));
try
{
List
<
Dailyreport
>
reports
=
m_dailyreportDao
.
findAllByDomainNameDuration
(
start
,
end
,
domain
,
"matrix"
,
DailyreportEntity
.
READSET_FULL
);
for
(
Dailyreport
report
:
reports
)
{
String
xml
=
report
.
getContent
();
try
{
MatrixReport
reportModel
=
com
.
dianping
.
cat
.
consumer
.
matrix
.
model
.
transform
.
DefaultSaxParser
.
parse
(
xml
);
reportModel
.
accept
(
merger
);
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
Cat
.
getProducer
().
logEvent
(
"ErrorXML"
,
"matrix"
,
Event
.
SUCCESS
,
xml
);
}
}
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
MatrixReport
matrixReport
=
merger
.
getMatrixReport
();
matrixReport
.
setStartTime
(
start
);
matrixReport
.
setEndTime
(
end
);
return
matrixReport
;
}
@Override
public
CrossReport
queryCrossReport
(
String
domain
,
Date
start
,
Date
end
)
{
CrossReportMerger
merger
=
new
CrossReportMerger
(
new
CrossReport
(
domain
));
try
{
List
<
Dailyreport
>
reports
=
m_dailyreportDao
.
findAllByDomainNameDuration
(
start
,
end
,
domain
,
"cross"
,
DailyreportEntity
.
READSET_FULL
);
for
(
Dailyreport
report
:
reports
)
{
String
xml
=
report
.
getContent
();
try
{
CrossReport
reportModel
=
com
.
dianping
.
cat
.
consumer
.
cross
.
model
.
transform
.
DefaultSaxParser
.
parse
(
xml
);
reportModel
.
accept
(
merger
);
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
Cat
.
getProducer
().
logEvent
(
"ErrorXML"
,
"cross"
,
Event
.
SUCCESS
,
xml
);
}
}
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
CrossReport
crossReport
=
merger
.
getCrossReport
();
crossReport
.
setStartTime
(
start
);
crossReport
.
setEndTime
(
end
);
return
crossReport
;
}
@Override
public
SqlReport
querySqlReport
(
String
domain
,
Date
start
,
Date
end
)
{
SqlReportMerger
merger
=
new
SqlReportMerger
(
new
SqlReport
(
domain
));
try
{
List
<
Dailyreport
>
reports
=
m_dailyreportDao
.
findAllByDomainNameDuration
(
start
,
end
,
domain
,
"sql"
,
DailyreportEntity
.
READSET_FULL
);
for
(
Dailyreport
report
:
reports
)
{
String
xml
=
report
.
getContent
();
try
{
SqlReport
reportModel
=
com
.
dianping
.
cat
.
consumer
.
sql
.
model
.
transform
.
DefaultSaxParser
.
parse
(
xml
);
reportModel
.
accept
(
merger
);
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
Cat
.
getProducer
().
logEvent
(
"ErrorXML"
,
"sql"
,
Event
.
SUCCESS
,
xml
);
}
}
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
SqlReport
sqlReport
=
merger
.
getSqlReport
();
sqlReport
.
setStartTime
(
start
);
sqlReport
.
setEndTime
(
end
);
return
sqlReport
;
}
@Override
public
DatabaseReport
queryDatabaseReport
(
String
database
,
Date
start
,
Date
end
)
{
DatabaseReportMerger
merger
=
new
DatabaseReportMerger
(
new
DatabaseReport
(
database
));
try
{
List
<
Dailyreport
>
reports
=
m_dailyreportDao
.
findDatabaseAllByDomainNameDuration
(
start
,
end
,
database
,
"database"
,
DailyreportEntity
.
READSET_FULL
);
for
(
Dailyreport
report
:
reports
)
{
String
xml
=
report
.
getContent
();
try
{
DatabaseReport
reportModel
=
com
.
dianping
.
cat
.
consumer
.
database
.
model
.
transform
.
DefaultSaxParser
.
parse
(
xml
);
reportModel
.
accept
(
merger
);
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
Cat
.
getProducer
().
logEvent
(
"ErrorXML"
,
"database"
,
Event
.
SUCCESS
,
xml
);
}
}
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
DatabaseReport
databaseReport
=
merger
.
getDatabaseReport
();
databaseReport
.
setStartTime
(
start
);
databaseReport
.
setEndTime
(
end
);
return
databaseReport
;
}
@Override
public
HealthReport
queryHealthReport
(
String
domain
,
Date
start
,
Date
end
)
{
HealthReportMerger
merger
=
new
HealthReportMerger
(
new
HealthReport
(
domain
));
try
{
List
<
Dailyreport
>
reports
=
m_dailyreportDao
.
findAllByDomainNameDuration
(
start
,
end
,
domain
,
"health"
,
DailyreportEntity
.
READSET_FULL
);
for
(
Dailyreport
report
:
reports
)
{
String
xml
=
report
.
getContent
();
try
{
HealthReport
reportModel
=
com
.
dianping
.
cat
.
consumer
.
health
.
model
.
transform
.
DefaultSaxParser
.
parse
(
xml
);
reportModel
.
accept
(
merger
);
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
Cat
.
getProducer
().
logEvent
(
"ErrorXML"
,
"health"
,
Event
.
SUCCESS
,
xml
);
}
}
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
HealthReport
healthReport
=
merger
.
getHealthReport
();
healthReport
.
setStartTime
(
start
);
healthReport
.
setEndTime
(
end
);
return
healthReport
;
}
}
cat-home/src/main/java/com/dianping/cat/system/alarm/entity/RowData.java
0 → 100644
浏览文件 @
64bece90
package
com.dianping.cat.system.alarm.entity
;
import
java.util.Date
;
public
class
RowData
{
private
Date
m_date
;
private
long
m_count
;
public
Date
getDate
()
{
return
m_date
;
}
public
void
setDate
(
Date
date
)
{
m_date
=
date
;
}
public
long
getCount
()
{
return
m_count
;
}
public
void
setCount
(
long
count
)
{
m_count
=
count
;
}
}
cat-home/src/main/java/com/dianping/cat/system/event/DefaultEventDispatcher.java
0 → 100644
浏览文件 @
64bece90
package
com.dianping.cat.system.event
;
import
java.util.List
;
import
com.dianping.cat.Cat
;
import
com.site.lookup.annotation.Inject
;
public
class
DefaultEventDispatcher
implements
EventDispatcher
{
@Inject
private
EventListenerRegistry
m_registry
;
@Override
public
void
dispatch
(
Event
event
)
{
List
<
EventListener
>
listeners
=
m_registry
.
getListeners
();
if
(
listeners
!=
null
&&
!
listeners
.
isEmpty
())
{
for
(
EventListener
listener
:
listeners
)
{
try
{
if
(
listener
.
isEligible
(
event
))
{
listener
.
onEvent
(
event
);
}
}
catch
(
Exception
e
)
{
Cat
.
getProducer
().
logError
(
e
);
}
}
}
else
{
Cat
.
getProducer
().
logEvent
(
"UnhandledEvent"
,
event
.
getEventType
().
getClass
().
getName
(),
"0"
,
null
);
}
}
}
cat-home/src/main/java/com/dianping/cat/system/event/DefaultEventListenerRegistry.java
0 → 100644
浏览文件 @
64bece90
package
com.dianping.cat.system.event
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
DefaultEventListenerRegistry
implements
EventListenerRegistry
{
private
List
<
EventListener
>
m_listeners
=
new
ArrayList
<
EventListener
>();
@Override
public
List
<
EventListener
>
getListeners
()
{
List
<
EventListener
>
listeners
=
new
ArrayList
<
EventListener
>();
synchronized
(
m_listeners
)
{
for
(
EventListener
listener
:
m_listeners
)
{
listeners
.
add
(
listener
);
}
}
return
listeners
;
}
@Override
public
void
register
(
EventListener
listener
)
{
synchronized
(
m_listeners
)
{
if
(
m_listeners
==
null
)
{
m_listeners
=
new
ArrayList
<
EventListener
>();
}
m_listeners
.
add
((
EventListener
)
listener
);
}
}
}
cat-home/src/main/java/com/dianping/cat/system/event/Event.java
0 → 100644
浏览文件 @
64bece90
package
com.dianping.cat.system.event
;
public
interface
Event
{
public
EventType
getEventType
();
}
cat-home/src/main/java/com/dianping/cat/system/event/EventDispatcher.java
0 → 100644
浏览文件 @
64bece90
package
com.dianping.cat.system.event
;
public
interface
EventDispatcher
{
public
void
dispatch
(
Event
event
);
}
cat-home/src/main/java/com/dianping/cat/system/event/EventListener.java
0 → 100644
浏览文件 @
64bece90
package
com.dianping.cat.system.event
;
public
interface
EventListener
{
public
boolean
isEligible
(
Event
event
);
public
void
onEvent
(
Event
event
);
}
cat-home/src/main/java/com/dianping/cat/system/event/EventListenerRegistry.java
0 → 100644
浏览文件 @
64bece90
package
com.dianping.cat.system.event
;
import
java.util.List
;
public
interface
EventListenerRegistry
{
public
List
<
EventListener
>
getListeners
();
public
void
register
(
EventListener
listener
);
}
cat-home/src/main/java/com/dianping/cat/system/event/EventQueue.java
0 → 100644
浏览文件 @
64bece90
package
com.dianping.cat.system.event
;
public
interface
EventQueue
<
T
extends
Event
>
{
public
int
size
();
public
T
poll
();
public
boolean
offer
(
T
event
);
}
cat-home/src/main/java/com/dianping/cat/system/event/EventType.java
0 → 100644
浏览文件 @
64bece90
package
com.dianping.cat.system.event
;
public
enum
EventType
{
ProblemDataEvent
,
ProblemViolationEvent
,
ProblemAlarmEvent
,
}
cat-home/src/main/java/com/dianping/cat/system/notify/ReportRender.java
0 → 100644
浏览文件 @
64bece90
package
com.dianping.cat.system.notify
;
import
com.dianping.cat.consumer.event.model.entity.EventReport
;
import
com.dianping.cat.consumer.health.model.entity.HealthReport
;
import
com.dianping.cat.consumer.problem.model.entity.ProblemReport
;
import
com.dianping.cat.consumer.transaction.model.entity.TransactionReport
;
public
interface
ReportRender
{
public
String
renderReport
(
TransactionReport
report
);
public
String
renderReport
(
EventReport
report
);
public
String
renderReport
(
ProblemReport
report
);
public
String
renderReport
(
HealthReport
report
);
}
cat-home/src/main/java/com/dianping/cat/system/notify/ScheduledTask.java
0 → 100644
浏览文件 @
64bece90
package
com.dianping.cat.system.notify
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.List
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.consumer.event.model.entity.EventReport
;
import
com.dianping.cat.consumer.health.model.entity.HealthReport
;
import
com.dianping.cat.consumer.problem.model.entity.ProblemReport
;
import
com.dianping.cat.consumer.transaction.model.entity.TransactionReport
;
import
com.dianping.cat.helper.TimeUtil
;
import
com.dianping.cat.home.dal.alarm.ScheduledReport
;
import
com.dianping.cat.message.Event
;
import
com.dianping.cat.message.Transaction
;
import
com.dianping.cat.report.service.DailyReportService
;
import
com.dianping.cat.system.page.alarm.ScheduledManager
;
import
com.dianping.cat.system.tool.MailSMS
;
import
com.site.dal.jdbc.DalException
;
import
com.site.helper.Threads.Task
;
import
com.site.lookup.annotation.Inject
;
public
class
ScheduledTask
implements
Task
{
@Inject
private
MailSMS
m_mailSms
;
@Inject
private
ReportRender
m_render
;
@Inject
private
DailyReportService
m_dailyReportService
;
@Inject
private
ScheduledManager
m_scheduledManager
;
@Override
public
String
getName
()
{
return
"ScheduledDailyReport"
;
}
private
long
getSleepTime
()
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
add
(
Calendar
.
DAY_OF_MONTH
,
1
);
cal
.
set
(
Calendar
.
HOUR
,
1
);
cal
.
set
(
Calendar
.
MINUTE
,
0
);
cal
.
set
(
Calendar
.
SECOND
,
0
);
cal
.
set
(
Calendar
.
MILLISECOND
,
0
);
return
cal
.
getTimeInMillis
()
-
System
.
currentTimeMillis
();
}
private
String
renderContent
(
String
names
,
String
domain
)
{
int
healthFlag
=
names
.
indexOf
(
"health"
);
int
transactionFlag
=
names
.
indexOf
(
"transaction"
);
int
eventFlag
=
names
.
indexOf
(
"event"
);
int
problemFlag
=
names
.
indexOf
(
"problem"
);
Date
end
=
TimeUtil
.
getCurrentDay
();
Date
start
=
new
Date
(
end
.
getTime
()
-
TimeUtil
.
ONE_DAY
);
TransactionReport
transactionReport
=
m_dailyReportService
.
queryTransactionReport
(
domain
,
start
,
end
);
EventReport
eventReport
=
m_dailyReportService
.
queryEventReport
(
domain
,
start
,
end
);
ProblemReport
problemReport
=
m_dailyReportService
.
queryProblemReport
(
domain
,
start
,
end
);
HealthReport
heathReport
=
m_dailyReportService
.
queryHealthReport
(
domain
,
start
,
end
);
StringBuilder
sb
=
new
StringBuilder
(
10240
);
if
(
healthFlag
>
-
1
)
{
sb
.
append
(
m_render
.
renderReport
(
heathReport
)).
append
(
"</br>"
);
}
if
(
transactionFlag
>
-
1
)
{
sb
.
append
(
m_render
.
renderReport
(
transactionReport
)).
append
(
"</br>"
);
}
if
(
eventFlag
>
-
1
)
{
sb
.
append
(
m_render
.
renderReport
(
eventReport
)).
append
(
"</br>"
);
}
if
(
problemFlag
>
-
1
)
{
sb
.
append
(
m_render
.
renderReport
(
problemReport
)).
append
(
"</br>"
);
}
return
sb
.
toString
();
}
private
String
renderTitle
(
String
names
,
String
domain
)
{
return
"CAT Daily Report[ "
+
domain
+
" ]"
;
}
@Override
public
void
run
()
{
while
(
true
)
{
try
{
List
<
ScheduledReport
>
reports
=
m_scheduledManager
.
queryScheduledReports
();
for
(
ScheduledReport
report
:
reports
)
{
String
domain
=
report
.
getDomain
();
Transaction
t
=
Cat
.
newTransaction
(
"ScheduledReport"
,
domain
);
try
{
String
names
=
report
.
getNames
();
String
content
=
renderContent
(
names
,
domain
);
String
title
=
renderTitle
(
names
,
domain
);
List
<
String
>
emails
=
m_scheduledManager
.
queryEmailsBySchReportId
(
report
.
getId
());
m_mailSms
.
sendEmail
(
title
,
content
,
emails
);
t
.
setStatus
(
Transaction
.
SUCCESS
);
Cat
.
getProducer
().
logEvent
(
"ScheduledReport"
,
"Email"
,
Event
.
SUCCESS
,
emails
.
toString
());
}
catch
(
DalException
e
)
{
Cat
.
logError
(
e
);
t
.
setStatus
(
e
);
}
t
.
complete
();
break
;
}
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
try
{
Thread
.
sleep
(
getSleepTime
());
}
catch
(
Exception
e
)
{
// ignore;
}
}
}
@Override
public
void
shutdown
()
{
}
}
cat-home/src/main/java/com/dianping/cat/system/notify/render/ReportRenderImpl.java
0 → 100644
浏览文件 @
64bece90
package
com.dianping.cat.system.notify.render
;
import
java.io.StringWriter
;
import
java.util.Map
;
import
org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable
;
import
org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.consumer.event.model.entity.EventReport
;
import
com.dianping.cat.consumer.health.model.entity.HealthReport
;
import
com.dianping.cat.consumer.problem.model.entity.ProblemReport
;
import
com.dianping.cat.consumer.transaction.model.entity.TransactionReport
;
import
com.dianping.cat.system.notify.ReportRender
;
import
freemarker.template.Configuration
;
import
freemarker.template.Template
;
public
class
ReportRenderImpl
implements
ReportRender
,
Initializable
{
public
Configuration
m_configuration
;
@Override
public
String
renderReport
(
TransactionReport
report
)
{
TransactionRender
entity
=
new
TransactionRender
(
report
.
getStartTime
(),
report
.
getDomain
());
entity
.
visitTransactionReport
(
report
);
Map
<
Object
,
Object
>
root
=
entity
.
getRenderResult
();
StringWriter
sw
=
new
StringWriter
(
5000
);
try
{
Template
t
=
m_configuration
.
getTemplate
(
"transaction.ftl"
);
t
.
process
(
root
,
sw
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
Cat
.
logError
(
e
);
}
return
sw
.
toString
();
}
@Override
public
String
renderReport
(
EventReport
report
)
{
return
""
;
}
@Override
public
String
renderReport
(
ProblemReport
report
)
{
return
""
;
}
@Override
public
String
renderReport
(
HealthReport
report
)
{
return
""
;
}
@Override
public
void
initialize
()
throws
InitializationException
{
m_configuration
=
new
Configuration
();
m_configuration
.
setDefaultEncoding
(
"UTF-8"
);
try
{
m_configuration
.
setClassForTemplateLoading
(
ReportRenderImpl
.
class
,
"/freemaker"
);
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
}
}
cat-home/src/main/java/com/dianping/cat/system/notify/render/TransactionRender.java
0 → 100644
浏览文件 @
64bece90
package
com.dianping.cat.system.notify.render
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
com.dianping.cat.consumer.transaction.model.entity.TransactionReport
;
import
com.dianping.cat.consumer.transaction.model.entity.TransactionType
;
import
com.dianping.cat.consumer.transaction.model.transform.BaseVisitor
;
import
com.dianping.cat.helper.TimeUtil
;
public
class
TransactionRender
extends
BaseVisitor
{
private
String
m_domain
;
private
String
m_dateStr
;
private
Date
m_date
;
private
SimpleDateFormat
m_sdf
=
new
SimpleDateFormat
(
"yyyyMMddHH"
);
private
List
<
Type
>
m_types
=
new
ArrayList
<
Type
>();
private
String
m_transactionLink
=
"http://cat.dianpingoa.com/cat/r/t?op=history&domain=%s&date=%s&reportType=day"
;
private
String
m_typeGraphLink
=
"http://cat.dianpingoa.com/cat/r/t?op=historyGraph&domain=%s&date=%s&ip=All&reportType=day&type=%s"
;
private
Map
<
Object
,
Object
>
m_result
=
new
HashMap
<
Object
,
Object
>();
public
Map
<
Object
,
Object
>
getRenderResult
()
{
return
m_result
;
}
public
TransactionRender
(
Date
date
,
String
domain
)
{
m_domain
=
domain
;
m_date
=
date
;
m_dateStr
=
m_sdf
.
format
(
date
);
}
@Override
public
void
visitTransactionReport
(
TransactionReport
transactionReport
)
{
super
.
visitTransactionReport
(
transactionReport
);
Date
lastDay
=
new
Date
(
m_date
.
getTime
()
-
TimeUtil
.
ONE_DAY
);
Date
lastWeek
=
new
Date
(
m_date
.
getTime
()
-
7
*
TimeUtil
.
ONE_DAY
);
String
currentUrl
=
buildTransactionUrl
(
m_date
);
String
lastDayUrl
=
buildTransactionUrl
(
lastDay
);
String
lastWeekUrl
=
buildTransactionUrl
(
lastWeek
);
m_result
.
put
(
"current"
,
currentUrl
);
m_result
.
put
(
"lastDay"
,
lastDayUrl
);
m_result
.
put
(
"lastWeek"
,
lastWeekUrl
);
m_result
.
put
(
"types"
,
m_types
);
}
@Override
public
void
visitType
(
TransactionType
type
)
{
Type
temp
=
new
Type
();
type
.
setTps
(
type
.
getTotalCount
()
/
(
double
)
TimeUtil
.
ONE_DAY
);
temp
.
setType
(
type
);
temp
.
setUrl
(
buildGraphUrl
(
type
));
m_types
.
add
(
temp
);
}
private
String
buildTransactionUrl
(
Date
date
)
{
String
dateStr
=
m_sdf
.
format
(
m_date
);
return
String
.
format
(
m_transactionLink
,
m_domain
,
dateStr
);
}
private
String
buildGraphUrl
(
TransactionType
type
)
{
return
String
.
format
(
m_typeGraphLink
,
m_domain
,
m_dateStr
,
type
.
getId
());
}
public
static
class
Type
{
private
TransactionType
m_type
;
private
String
m_url
;
public
TransactionType
getType
()
{
return
m_type
;
}
public
void
setType
(
TransactionType
type
)
{
m_type
=
type
;
}
public
String
getUrl
()
{
return
m_url
;
}
public
void
setUrl
(
String
url
)
{
m_url
=
url
;
}
}
}
cat-home/src/main/java/com/dianping/cat/system/page/alarm/ScheduledManager.java
浏览文件 @
64bece90
...
@@ -3,6 +3,9 @@ package com.dianping.cat.system.page.alarm;
...
@@ -3,6 +3,9 @@ package com.dianping.cat.system.page.alarm;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
com.dainping.cat.home.dal.user.DpAdminLogin
;
import
com.dainping.cat.home.dal.user.DpAdminLoginDao
;
import
com.dainping.cat.home.dal.user.DpAdminLoginEntity
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.home.dal.alarm.ScheduledReport
;
import
com.dianping.cat.home.dal.alarm.ScheduledReport
;
import
com.dianping.cat.home.dal.alarm.ScheduledReportDao
;
import
com.dianping.cat.home.dal.alarm.ScheduledReportDao
;
...
@@ -22,6 +25,30 @@ public class ScheduledManager {
...
@@ -22,6 +25,30 @@ public class ScheduledManager {
@Inject
@Inject
private
ScheduledReportSubscriptionDao
m_scheduledReportSubscriptionDao
;
private
ScheduledReportSubscriptionDao
m_scheduledReportSubscriptionDao
;
@Inject
private
DpAdminLoginDao
m_loginDao
;
public
List
<
ScheduledReport
>
queryScheduledReports
()
throws
DalException
{
List
<
ScheduledReport
>
reports
=
m_scheduledReportDao
.
findAll
(
ScheduledReportEntity
.
READSET_FULL
);
return
reports
;
}
public
List
<
String
>
queryEmailsBySchReportId
(
int
scheduledReportId
)
throws
DalException
{
List
<
String
>
emails
=
new
ArrayList
<
String
>();
List
<
ScheduledReportSubscription
>
subscriptions
=
m_scheduledReportSubscriptionDao
.
findByScheduledReportId
(
scheduledReportId
,
ScheduledReportSubscriptionEntity
.
READSET_FULL
);
for
(
ScheduledReportSubscription
subscription
:
subscriptions
)
{
DpAdminLogin
login
=
m_loginDao
.
findByPK
(
subscription
.
getUserId
(),
DpAdminLoginEntity
.
READSET_FULL
);
emails
.
add
(
login
.
getEmail
());
}
if
(
emails
.
size
()
==
0
)
{
emails
.
add
(
"yong.you@dianping.com"
);
}
return
emails
;
}
public
void
queryScheduledReports
(
Model
model
,
int
userId
)
{
public
void
queryScheduledReports
(
Model
model
,
int
userId
)
{
List
<
UserReportSubState
>
userRules
=
new
ArrayList
<
UserReportSubState
>();
List
<
UserReportSubState
>
userRules
=
new
ArrayList
<
UserReportSubState
>();
try
{
try
{
...
...
cat-home/src/main/java/com/dianping/cat/system/tool/MailSMS.java
0 → 100644
浏览文件 @
64bece90
package
com.dianping.cat.system.tool
;
import
java.util.List
;
public
interface
MailSMS
{
public
boolean
sendEmail
(
String
title
,
String
content
,
List
<
String
>
emails
);
public
boolean
sendSMS
(
String
content
,
List
<
String
>
phones
);
}
cat-home/src/main/java/com/dianping/cat/system/tool/MailSMSImpl.java
0 → 100644
浏览文件 @
64bece90
package
com.dianping.cat.system.tool
;
import
java.util.List
;
public
class
MailSMSImpl
implements
MailSMS
{
@Override
public
boolean
sendEmail
(
String
title
,
String
content
,
List
<
String
>
emails
)
{
System
.
out
.
println
(
title
);
System
.
out
.
println
(
content
);
System
.
out
.
println
(
emails
);
return
false
;
}
@Override
public
boolean
sendSMS
(
String
content
,
List
<
String
>
phones
)
{
return
false
;
}
}
cat-home/src/main/resources/META-INF/dal/jdbc/alarm-dal.xml
浏览文件 @
64bece90
...
@@ -92,7 +92,7 @@
...
@@ -92,7 +92,7 @@
]]>
</statement>
]]>
</statement>
</query>
</query>
<query
name=
"find-by-scheduled-report-id"
type=
"SELECT"
multiple=
"true"
>
<query
name=
"find-by-scheduled-report-id"
type=
"SELECT"
multiple=
"true"
>
<param
name=
"
user
-id"
/>
<param
name=
"
scheduled-report
-id"
/>
<statement>
<![CDATA[
<statement>
<![CDATA[
SELECT <FIELDS/>
SELECT <FIELDS/>
FROM
<TABLE/>
FROM
<TABLE/>
...
...
cat-home/src/main/resources/META-INF/dal/jdbc/report-dal.xml
浏览文件 @
64bece90
...
@@ -23,6 +23,33 @@
...
@@ -23,6 +23,33 @@
(
<VALUES/>
)
(
<VALUES/>
)
]]>
</statement>
]]>
</statement>
</query>
</query>
<query
name=
"find-report-by-domain-name-period"
type=
"SELECT"
>
<param
name=
"start-date"
/>
<param
name=
"domain"
/>
<param
name=
"name"
/>
<statement>
<![CDATA[
SELECT <FIELDS/>
FROM
<TABLE/>
WHERE
<FIELD
name=
'period'
/>
== ${start-date}
AND
<FIELD
name=
'domain'
/>
= ${domain}
AND
<FIELD
name=
'name'
/>
= ${name}
]]>
</statement>
</query>
<query
name=
"find-all-by-domain-name-duration"
type=
"SELECT"
multiple=
"true"
>
<param
name=
"start-date"
/>
<param
name=
"end-date"
/>
<param
name=
"domain"
/>
<param
name=
"name"
/>
<statement>
<![CDATA[
SELECT <FIELDS/>
FROM
<TABLE/>
WHERE
<FIELD
name=
'period'
/>
>= ${start-date}
AND
<FIELD
name=
'period'
/>
<
${end-date}
AND
<FIELD
name=
'domain'
/>
= ${domain}
AND
<FIELD
name=
'name'
/>
= ${name}
AND type = 1
]]>
</statement>
</query>
<query
name=
"find-all-by-domain-name-duration"
type=
"SELECT"
multiple=
"true"
>
<query
name=
"find-all-by-domain-name-duration"
type=
"SELECT"
multiple=
"true"
>
<param
name=
"start-date"
/>
<param
name=
"start-date"
/>
<param
name=
"end-date"
/>
<param
name=
"end-date"
/>
...
...
cat-home/src/main/resources/META-INF/dal/model/threshold-template-codegen.xml
0 → 100644
浏览文件 @
64bece90
<?xml version="1.0" encoding="UTF-8"?>
<model>
<entity
name=
"threshold-template"
root=
"true"
>
<entity-ref
name=
"connection"
/>
<entity-ref
name=
"threshold"
/>
</entity>
<entity
name=
"connection"
>
<attribute
name=
"baseUrl"
value-type=
"String"
/>
<entity-ref
name=
"param"
type=
"list"
names=
"params"
/>
</entity>
<entity
name=
"param"
>
<attribute
name=
"type"
value-type=
"String"
key=
"true"
/>
<attribute
name=
"value"
value-type=
"String"
/>
</entity>
<entity
name=
"threshold"
>
<attribute
name=
"period"
value-type=
"int"
/>
<entity-ref
name=
"duration"
type=
"list"
names=
"durations"
/>
</entity>
<entity
name=
"duration"
>
<attribute
name=
"id"
value-type=
"String"
/>
<attribute
name=
"min"
value-type=
"int"
/>
<attribute
name=
"max"
value-type=
"int"
/>
<attribute
name=
"interval"
value-type=
"int"
/>
<attribute
name=
"alarm"
value-type=
"String"
/>
</entity>
</model>
cat-home/src/main/resources/META-INF/dal/model/threshold-template-manifest.xml
0 → 100644
浏览文件 @
64bece90
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<file
path=
"threshold-template-codegen.xml"
/>
<file
path=
"threshold-template-model.xml"
/>
</manifest>
cat-home/src/main/resources/META-INF/dal/model/threshold-template-model.xml
0 → 100644
浏览文件 @
64bece90
<?xml version="1.0" encoding="UTF-8"?>
<model
model-package=
"com.dianping.cat.home.template"
enable-merger=
"true"
enable-json-builder=
"true"
enable-xml-parser=
"true"
enable-sax-parser=
"true"
enable-json-parser=
"true"
enable-base-visitor=
"true"
>
<entity
name=
"threshold-template"
root=
"true"
>
<entity-ref
name=
"connection"
/>
<entity-ref
name=
"threshold"
/>
</entity>
<entity
name=
"connection"
>
<attribute
name=
"baseUrl"
value-type=
"String"
/>
<entity-ref
name=
"param"
type=
"map"
names=
"params"
method-find-or-create=
"true"
/>
</entity>
<entity
name=
"param"
>
<attribute
name=
"type"
value-type=
"String"
key=
"true"
/>
<attribute
name=
"value"
value-type=
"String"
/>
</entity>
<entity
name=
"threshold"
>
<attribute
name=
"period"
value-type=
"int"
/>
<entity-ref
name=
"duration"
type=
"map"
names=
"durations"
method-find-or-create=
"true"
/>
</entity>
<entity
name=
"duration"
>
<attribute
name=
"id"
value-type=
"String"
key=
"true"
/>
<attribute
name=
"min"
value-type=
"int"
/>
<attribute
name=
"max"
value-type=
"int"
/>
<attribute
name=
"interval"
value-type=
"int"
/>
</entity>
</model>
cat-home/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
64bece90
...
@@ -379,6 +379,15 @@
...
@@ -379,6 +379,15 @@
</requirement>
</requirement>
</requirements>
</requirements>
</component>
</component>
<component>
<role>
com.dianping.cat.report.service.DailyReportService
</role>
<implementation>
com.dianping.cat.report.service.impl.DailyReportServiceImpl
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.home.dal.report.DailyreportDao
</role>
</requirement>
</requirements>
</component>
<component>
<component>
<role>
com.dianping.cat.report.page.model.spi.ModelService
</role>
<role>
com.dianping.cat.report.page.model.spi.ModelService
</role>
<role-hint>
transaction-local
</role-hint>
<role-hint>
transaction-local
</role-hint>
...
@@ -2505,6 +2514,9 @@
...
@@ -2505,6 +2514,9 @@
<requirement>
<requirement>
<role>
com.dianping.cat.home.dal.alarm.ScheduledReportSubscriptionDao
</role>
<role>
com.dianping.cat.home.dal.alarm.ScheduledReportSubscriptionDao
</role>
</requirement>
</requirement>
<requirement>
<role>
com.dainping.cat.home.dal.user.DpAdminLoginDao
</role>
</requirement>
</requirements>
</requirements>
</component>
</component>
<component>
<component>
...
@@ -2516,6 +2528,15 @@
...
@@ -2516,6 +2528,15 @@
</requirement>
</requirement>
</requirements>
</requirements>
</component>
</component>
<component>
<role>
com.dainping.cat.home.dal.user.DpAdminLoginDao
</role>
<implementation>
com.dainping.cat.home.dal.user.DpAdminLoginDao
</implementation>
<requirements>
<requirement>
<role>
com.site.dal.jdbc.QueryEngine
</role>
</requirement>
</requirements>
</component>
<component>
<component>
<role>
com.dianping.cat.system.page.login.Handler
</role>
<role>
com.dianping.cat.system.page.login.Handler
</role>
<implementation>
com.dianping.cat.system.page.login.Handler
</implementation>
<implementation>
com.dianping.cat.system.page.login.Handler
</implementation>
...
@@ -2573,15 +2594,6 @@
...
@@ -2573,15 +2594,6 @@
</requirement>
</requirement>
</requirements>
</requirements>
</component>
</component>
<component>
<role>
com.dainping.cat.home.dal.user.DpAdminLoginDao
</role>
<implementation>
com.dainping.cat.home.dal.user.DpAdminLoginDao
</implementation>
<requirements>
<requirement>
<role>
com.site.dal.jdbc.QueryEngine
</role>
</requirement>
</requirements>
</component>
<component>
<component>
<role>
com.dianping.cat.system.alarm.DefaultAlarmCreator
</role>
<role>
com.dianping.cat.system.alarm.DefaultAlarmCreator
</role>
<implementation>
com.dianping.cat.system.alarm.DefaultAlarmCreator
</implementation>
<implementation>
com.dianping.cat.system.alarm.DefaultAlarmCreator
</implementation>
...
@@ -2604,5 +2616,31 @@
...
@@ -2604,5 +2616,31 @@
</requirement>
</requirement>
</requirements>
</requirements>
</component>
</component>
<component>
<role>
com.dianping.cat.system.tool.MailSMS
</role>
<implementation>
com.dianping.cat.system.tool.MailSMSImpl
</implementation>
</component>
<component>
<role>
com.dianping.cat.system.notify.ReportRender
</role>
<implementation>
com.dianping.cat.system.notify.render.ReportRenderImpl
</implementation>
</component>
<component>
<role>
com.dianping.cat.system.notify.ScheduledTask
</role>
<implementation>
com.dianping.cat.system.notify.ScheduledTask
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.system.notify.ReportRender
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.system.tool.MailSMS
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.service.DailyReportService
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.system.page.alarm.ScheduledManager
</role>
</requirement>
</requirements>
</component>
</components>
</components>
</plexus>
</plexus>
cat-home/src/main/resources/freemaker/transaction.ftl
0 → 100644
浏览文件 @
64bece90
<html>
<body>
<br/>
<h3><a
href=
"${current} target="
_blank
"
>
TransactionReport
</a></h3>
<table
rules=
"all"
>
<tr>
</tr>
<tr>
<td></td>
<td>
Type
</td>
<td>
Total Count
</td>
<td>
Failure Count
</td>
<td>
Failure%
</td>
<td>
Avg(ms)
</td>
<td>
TPS
</td>
<td>
Link
</td>
<td></td>
</tr>
<
#list
types
as
item
>
<tr>
<td></td>
<td>
${item.type.id}
</td>
<td>
${item.type.totalCount}
</td>
<td>
${item.type.failCount}
</td>
<td>
${item.type.failPercent?string("percent")}
</td>
<td>
${item.type.avg?string("0.00")}
</td>
<td>
${item.type.tps?string("0.00")}
</td>
<td><a
href=
"${item.url}"
>
Graph
</a></td>
</tr>
</
#
list>
<tr></tr>
</table>
</body>
</html>
cat-home/src/test/java/com/dianping/cat/AllTests.java
浏览文件 @
64bece90
...
@@ -32,6 +32,7 @@ import com.dianping.cat.report.task.problem.ProblemGraphCreatorTest;
...
@@ -32,6 +32,7 @@ import com.dianping.cat.report.task.problem.ProblemGraphCreatorTest;
import
com.dianping.cat.report.task.transaction.HistoryTransactionMergerTest
;
import
com.dianping.cat.report.task.transaction.HistoryTransactionMergerTest
;
import
com.dianping.cat.report.task.transaction.TransactionDailyGraphMergerTest
;
import
com.dianping.cat.report.task.transaction.TransactionDailyGraphMergerTest
;
import
com.dianping.cat.report.task.transaction.TransactionGraphCreatorTest
;
import
com.dianping.cat.report.task.transaction.TransactionGraphCreatorTest
;
import
com.dianping.cat.system.notify.TransactionRenderTest
;
@RunWith
(
Suite
.
class
)
@RunWith
(
Suite
.
class
)
@SuiteClasses
({
@SuiteClasses
({
...
@@ -89,6 +90,9 @@ import com.dianping.cat.report.task.transaction.TransactionGraphCreatorTest;
...
@@ -89,6 +90,9 @@ import com.dianping.cat.report.task.transaction.TransactionGraphCreatorTest;
TransactionGraphCreatorTest
.
class
,
EventGraphCreatorTest
.
class
,
EventDailyGraphMergerTest
.
class
,
TransactionGraphCreatorTest
.
class
,
EventGraphCreatorTest
.
class
,
EventDailyGraphMergerTest
.
class
,
TransactionDailyGraphMergerTest
.
class
,
ProblemDailyGraphMergerTest
.
class
})
TransactionDailyGraphMergerTest
.
class
,
ProblemDailyGraphMergerTest
.
class
,
/* .render*/
TransactionRenderTest
.
class
})
public
class
AllTests
{
public
class
AllTests
{
}
}
cat-home/src/test/java/com/dianping/cat/system/notify/TransactionRenderTest.java
0 → 100644
浏览文件 @
64bece90
package
com.dianping.cat.system.notify
;
import
junit.framework.Assert
;
import
org.junit.Test
;
import
org.unidal.webres.helper.Files
;
import
com.dianping.cat.consumer.transaction.model.entity.TransactionReport
;
import
com.dianping.cat.consumer.transaction.model.transform.DefaultDomParser
;
import
com.site.lookup.ComponentTestCase
;
public
class
TransactionRenderTest
extends
ComponentTestCase
{
@Test
public
void
test
()
throws
Exception
{
ReportRender
render
=
lookup
(
ReportRender
.
class
);
String
excepted
=
Files
.
forIO
().
readFrom
(
getClass
().
getResourceAsStream
(
"TransactionRender.txt"
),
"utf-8"
);
String
oldXml
=
Files
.
forIO
().
readFrom
(
getClass
().
getResourceAsStream
(
"Transaction.xml"
),
"utf-8"
);
TransactionReport
report
=
new
DefaultDomParser
().
parse
(
oldXml
);
String
result
=
render
.
renderReport
(
report
);
Assert
.
assertEquals
(
excepted
.
replaceAll
(
"\\s*"
,
""
),
result
.
replaceAll
(
"\\s*"
,
""
));
}
}
cat-home/src/test/resources/com/dianping/cat/system/notify/Transaction.xml
0 → 100755
浏览文件 @
64bece90
<transaction-report
domain=
"Cat"
startTime=
"2012-05-17 13:00:00"
endTime=
"2012-05-17 13:59:59"
>
<domain>
Cat
</domain>
<ip>
192.168.165.1
</ip>
<machine
ip=
"192.168.165.1"
>
<type
id=
"Task1"
totalCount=
"2"
failCount=
"0"
failPercent=
"0.00"
min=
"21.422"
max=
"28.35"
avg=
"24.955555555"
sum=
"49.8"
sum2=
"1262.6"
std=
"3.5"
tps=
"0.00"
line95Value=
"28.00"
line95Sum=
"28.00"
line95Count=
"1"
>
<successMessageUrl>
Cat-c0a8a501-1337230848968-0
</successMessageUrl>
<name
id=
"Status1"
totalCount=
"2"
failCount=
"0"
failPercent=
"0.00"
min=
"21.422"
max=
"28.35"
avg=
"24.9"
sum=
"49.8"
sum2=
"1262.6"
std=
"3.5"
tps=
"0.00"
line95Value=
"28.00"
line95Sum=
"28.00"
line95Count=
"1"
>
<successMessageUrl>
Cat-c0a8a501-1337230848968-0
</successMessageUrl>
<range
value=
"0"
count=
"2"
sum=
"49.772000000000006"
avg=
"24.9"
fails=
"0"
/>
<duration
value=
"32"
count=
"2"
/>
</name>
</type>
<type
id=
"URL"
totalCount=
"1"
failCount=
"0"
failPercent=
"0.00"
min=
"39780.276"
max=
"39780.276"
avg=
"39780.333333"
sum=
"39780.3"
sum2=
"1582470358.6"
std=
"0.0"
tps=
"0.00"
line95Value=
"39780.00"
line95Sum=
"39780.00"
line95Count=
"1"
>
<successMessageUrl>
Cat-c0a8a501-1337230896586-0
</successMessageUrl>
<name
id=
"model2"
totalCount=
"1"
failCount=
"0"
failPercent=
"0.00"
min=
"39780.276"
max=
"39780.276"
avg=
"39780.3"
sum=
"39780.3"
sum2=
"1582470358.6"
std=
"0.0"
tps=
"0.00"
line95Value=
"39780.00"
line95Sum=
"39780.00"
line95Count=
"1"
>
<successMessageUrl>
Cat-c0a8a501-1337230896586-0
</successMessageUrl>
<range
value=
"0"
count=
"1"
sum=
"39780.276"
avg=
"39780.3"
fails=
"0"
/>
<duration
value=
"65536"
count=
"1"
/>
</name>
</type>
</machine>
</transaction-report>
cat-home/src/test/resources/com/dianping/cat/system/notify/TransactionRender.txt
0 → 100644
浏览文件 @
64bece90
<html>
<body>
<br/>
<h3><a href="http://cat.dianpingoa.com/cat/r/t?op=history&domain=Cat&date=2012051713&reportType=day target="_blank">TransactionReport</a></h3>
<table rules="all">
<tr>
</tr>
<tr>
<td></td>
<td>Type</td>
<td>Total Count</td>
<td>Failure Count</td>
<td>Failure%</td>
<td>Avg(ms)</td>
<td>TPS</td>
<td>Link</td>
<td></td>
</tr>
<tr>
<td></td>
<td>Task1</td>
<td>2</td>
<td>0</td>
<td>0%</td>
<td>24.96</td>
<td>0.00</td>
<td><a href="http://cat.dianpingoa.com/cat/r/t?op=historyGraph&domain=Cat&date=2012051713&ip=All&reportType=day&type=Task1">Graph</a></td>
</tr>
<tr>
<td></td>
<td>URL</td>
<td>1</td>
<td>0</td>
<td>0%</td>
<td>39780.33</td>
<td>0.00</td>
<td><a href="http://cat.dianpingoa.com/cat/r/t?op=historyGraph&domain=Cat&date=2012051713&ip=All&reportType=day&type=URL">Graph</a></td>
</tr>
<tr></tr>
</table>
</body>
</html>
dog-home/src/main/webapp/template/event.vm
浏览文件 @
64bece90
...
@@ -19,6 +19,26 @@
...
@@ -19,6 +19,26 @@
<td
>
Link
</td>
<td
>
Link
</td>
<td
></td>
<td
></td>
</tr>
</tr>
<
#
list
type
as
typeList
>
<tr>
<td>
${
type
.
totalCount
}
</td>
<td>
${
type
.
failCount
}
</td>
<td>
${
type
.
failPercent
}
</td>
<td
a
href=
"
${
type
.
link
}
"
>
趋势图
</td>
<td>
${
service
.
avg
[0]}
</td>
<td>
${
service
.
count
[1]}
</td>
<td>
${
service
.
avg
[1]}
</td>
<td>
${
service
.
max
[1]}
</td>
<td>
${
service
.
count
[2]}
</td>
<td>
${
service
.
avg
[2]}
</td>
<td>
${
service
.
max
[2]}
</td>
<td>
${
service
.
count
[3]}
</td>
<td>
${
service
.
count
[4]}
</td>
<td>
${
service
.
avg
[4]}
</td>
<td>
${
service
.
max
[4]}
</td>
</tr>
</
#
list
>
#
foreach
(
$
type
in
$
typeList
)
#
foreach
(
$
type
in
$
typeList
)
<tr>
<tr>
<td
></td>
<td
></td>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录