Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
49b1fb81
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,发现更多精彩内容 >>
提交
49b1fb81
编写于
7月 10, 2013
作者:
S
sunryuan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor
上级
eae51786
变更
8
显示空白变更内容
内联
并排
Showing
8 changed file
with
119 addition
and
74 deletion
+119
-74
cat-home/src/main/java/com/dianping/cat/build/TaskComponentConfigurator.java
...ava/com/dianping/cat/build/TaskComponentConfigurator.java
+20
-19
cat-home/src/main/java/com/dianping/cat/report/baseline/impl/DefaultBaselineService.java
...ping/cat/report/baseline/impl/DefaultBaselineService.java
+31
-2
cat-home/src/main/java/com/dianping/cat/report/task/metric/MetricAlert.java
...java/com/dianping/cat/report/task/metric/MetricAlert.java
+21
-26
cat-home/src/main/java/com/dianping/cat/report/task/metric/MetricBaselineReportBuilder.java
...g/cat/report/task/metric/MetricBaselineReportBuilder.java
+16
-4
cat-home/src/main/java/com/dianping/cat/report/task/metric/MetricPointParser.java
...om/dianping/cat/report/task/metric/MetricPointParser.java
+3
-3
cat-home/src/main/resources/META-INF/plexus/components.xml
cat-home/src/main/resources/META-INF/plexus/components.xml
+10
-0
cat-home/src/test/java/com/dianping/cat/report/task/metric/MetricAlertTest.java
.../com/dianping/cat/report/task/metric/MetricAlertTest.java
+15
-19
cat-home/src/test/java/com/dianping/cat/report/task/metric/MetricBaselineReportBuilderTest.java
...t/report/task/metric/MetricBaselineReportBuilderTest.java
+3
-1
未找到文件。
cat-home/src/main/java/com/dianping/cat/build/TaskComponentConfigurator.java
浏览文件 @
49b1fb81
...
@@ -33,6 +33,7 @@ import com.dianping.cat.report.task.heartbeat.HeartbeatReportBuilder;
...
@@ -33,6 +33,7 @@ import com.dianping.cat.report.task.heartbeat.HeartbeatReportBuilder;
import
com.dianping.cat.report.task.matrix.MatrixReportBuilder
;
import
com.dianping.cat.report.task.matrix.MatrixReportBuilder
;
import
com.dianping.cat.report.task.metric.MetricAlert
;
import
com.dianping.cat.report.task.metric.MetricAlert
;
import
com.dianping.cat.report.task.metric.MetricBaselineReportBuilder
;
import
com.dianping.cat.report.task.metric.MetricBaselineReportBuilder
;
import
com.dianping.cat.report.task.metric.MetricPointParser
;
import
com.dianping.cat.report.task.problem.ProblemGraphCreator
;
import
com.dianping.cat.report.task.problem.ProblemGraphCreator
;
import
com.dianping.cat.report.task.problem.ProblemMerger
;
import
com.dianping.cat.report.task.problem.ProblemMerger
;
import
com.dianping.cat.report.task.problem.ProblemReportBuilder
;
import
com.dianping.cat.report.task.problem.ProblemReportBuilder
;
...
@@ -44,7 +45,6 @@ import com.dianping.cat.report.task.transaction.TransactionGraphCreator;
...
@@ -44,7 +45,6 @@ import com.dianping.cat.report.task.transaction.TransactionGraphCreator;
import
com.dianping.cat.report.task.transaction.TransactionMerger
;
import
com.dianping.cat.report.task.transaction.TransactionMerger
;
import
com.dianping.cat.report.task.transaction.TransactionReportBuilder
;
import
com.dianping.cat.report.task.transaction.TransactionReportBuilder
;
public
class
TaskComponentConfigurator
extends
AbstractResourceConfigurator
{
public
class
TaskComponentConfigurator
extends
AbstractResourceConfigurator
{
@Override
@Override
public
List
<
Component
>
defineComponents
()
{
public
List
<
Component
>
defineComponents
()
{
...
@@ -63,20 +63,18 @@ public class TaskComponentConfigurator extends AbstractResourceConfigurator {
...
@@ -63,20 +63,18 @@ public class TaskComponentConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
ProblemMerger
.
class
));
all
.
add
(
C
(
ProblemMerger
.
class
));
all
.
add
(
C
(
SqlMerger
.
class
));
all
.
add
(
C
(
SqlMerger
.
class
));
all
.
add
(
C
(
BaselineCreator
.
class
,
DefaultBaselineCreato
r
.
class
));
all
.
add
(
C
(
MetricPointParse
r
.
class
));
all
.
add
(
C
(
Baseline
Service
.
class
,
DefaultBaselineService
.
class
)
all
.
add
(
C
(
Baseline
Creator
.
class
,
DefaultBaselineCreator
.
class
));
.
req
(
BaselineDao
.
class
));
all
.
add
(
C
(
BaselineService
.
class
,
DefaultBaselineService
.
class
)
.
req
(
BaselineDao
.
class
));
all
.
add
(
C
(
BaselineConfigManager
.
class
,
BaselineConfigManager
.
class
));
all
.
add
(
C
(
BaselineConfigManager
.
class
,
BaselineConfigManager
.
class
));
all
.
add
(
C
(
MetricBaselineReportBuilder
.
class
)
all
.
add
(
C
(
MetricBaselineReportBuilder
.
class
).
req
(
ReportService
.
class
,
MetricPointParser
.
class
)
//
.
req
(
ReportService
.
class
)
//
.
req
(
MetricConfigManager
.
class
,
ProductLineConfigManager
.
class
)
//
.
req
(
MetricConfigManager
.
class
,
ProductLineConfigManager
.
class
)
//
.
req
(
BaselineCreator
.
class
,
BaselineService
.
class
,
BaselineConfigManager
.
class
));
.
req
(
BaselineCreator
.
class
,
BaselineService
.
class
,
BaselineConfigManager
.
class
));
all
.
add
(
C
(
MetricAlert
.
class
)
all
.
add
(
C
(
MetricAlert
.
class
).
req
(
ReportService
.
class
,
ServerConfigManager
.
class
,
MetricPointParser
.
class
)
//
.
req
(
ReportService
.
class
,
ServerConfigManager
.
class
)
//
.
req
(
MetricConfigManager
.
class
,
ProductLineConfigManager
.
class
)
//
.
req
(
MetricConfigManager
.
class
,
ProductLineConfigManager
.
class
)
//
.
req
(
BaselineService
.
class
,
BaselineConfigManager
.
class
)
//
.
req
(
BaselineService
.
class
,
BaselineConfigManager
.
class
)
.
req
(
ModelService
.
class
,
"metric"
));
.
req
(
ModelService
.
class
,
"metric"
));
all
.
add
(
C
(
TransactionReportBuilder
.
class
)
//
all
.
add
(
C
(
TransactionReportBuilder
.
class
)
//
...
@@ -109,9 +107,12 @@ public class TaskComponentConfigurator extends AbstractResourceConfigurator {
...
@@ -109,9 +107,12 @@ public class TaskComponentConfigurator extends AbstractResourceConfigurator {
TopologyGraphDao
.
class
));
TopologyGraphDao
.
class
));
all
.
add
(
C
(
ReportFacade
.
class
)
//
all
.
add
(
C
(
ReportFacade
.
class
)
//
.
req
(
TransactionReportBuilder
.
class
,
EventReportBuilder
.
class
,
ProblemReportBuilder
.
class
//
.
req
(
TransactionReportBuilder
.
class
,
EventReportBuilder
.
class
,
,
HeartbeatReportBuilder
.
class
,
MatrixReportBuilder
.
class
,
CrossReportBuilder
.
class
//
ProblemReportBuilder
.
class
//
,
SqlReportBuilder
.
class
,
StateReportBuilder
.
class
,
DependencyReportBuilder
.
class
,
MetricBaselineReportBuilder
.
class
));
,
HeartbeatReportBuilder
.
class
,
MatrixReportBuilder
.
class
,
CrossReportBuilder
.
class
//
,
SqlReportBuilder
.
class
,
StateReportBuilder
.
class
,
DependencyReportBuilder
.
class
,
MetricBaselineReportBuilder
.
class
));
return
all
;
return
all
;
}
}
...
...
cat-home/src/main/java/com/dianping/cat/report/baseline/impl/DefaultBaselineService.java
浏览文件 @
49b1fb81
...
@@ -6,6 +6,8 @@ import java.io.DataInputStream;
...
@@ -6,6 +6,8 @@ import java.io.DataInputStream;
import
java.io.DataOutputStream
;
import
java.io.DataOutputStream
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.Map
;
import
org.unidal.dal.jdbc.DalException
;
import
org.unidal.dal.jdbc.DalException
;
import
org.unidal.lookup.annotation.Inject
;
import
org.unidal.lookup.annotation.Inject
;
...
@@ -23,16 +25,43 @@ public class DefaultBaselineService implements BaselineService {
...
@@ -23,16 +25,43 @@ public class DefaultBaselineService implements BaselineService {
@Inject
@Inject
private
BaselineDao
m_baselineDao
;
private
BaselineDao
m_baselineDao
;
private
Map
<
String
,
Map
<
String
,
Baseline
>>
m_baselineMap
=
new
HashMap
<
String
,
Map
<
String
,
Baseline
>>();
@Override
@Override
public
double
[]
queryDailyBaseline
(
String
reportName
,
String
key
,
Date
reportPeriod
)
throws
DalException
,
public
double
[]
queryDailyBaseline
(
String
reportName
,
String
key
,
Date
reportPeriod
)
throws
DalException
,
IOException
{
IOException
{
double
[]
result
=
new
double
[
24
*
60
];
double
[]
result
=
new
double
[
24
*
60
];
Baseline
baseline
=
m_baselineDao
.
findByReportNameKeyTime
(
reportPeriod
,
reportName
,
key
,
Baseline
baseline
=
queryFromMap
(
reportName
,
key
,
reportPeriod
);
BaselineEntity
.
READSET_FULL
);
if
(
baseline
==
null
)
{
baseline
=
m_baselineDao
.
findByReportNameKeyTime
(
reportPeriod
,
reportName
,
key
,
BaselineEntity
.
READSET_FULL
);
addBaselineToMap
(
m_baselineMap
,
baseline
,
reportName
,
key
);
}
result
=
parse
(
baseline
.
getData
());
result
=
parse
(
baseline
.
getData
());
return
result
;
return
result
;
}
}
private
void
addBaselineToMap
(
Map
<
String
,
Map
<
String
,
Baseline
>>
allBaselineMap
,
Baseline
baseline
,
String
reportName
,
String
key
)
{
Map
<
String
,
Baseline
>
baselineMap
=
m_baselineMap
.
get
(
reportName
);
if
(
baselineMap
==
null
)
{
baselineMap
=
new
HashMap
<
String
,
Baseline
>();
m_baselineMap
.
put
(
reportName
,
baselineMap
);
}
baselineMap
.
put
(
key
,
baseline
);
}
private
Baseline
queryFromMap
(
String
reportName
,
String
key
,
Date
reportPeriod
)
{
Map
<
String
,
Baseline
>
baselineMap
=
m_baselineMap
.
get
(
reportName
);
if
(
baselineMap
==
null
)
{
return
null
;
}
Baseline
result
=
baselineMap
.
get
(
key
);
if
(
result
!=
null
&&
result
.
getReportPeriod
().
equals
(
reportPeriod
))
{
return
result
;
}
return
null
;
}
@Override
@Override
public
double
[]
queryHourlyBaseline
(
String
reportName
,
String
key
,
Date
reportPeriod
)
throws
DalException
,
public
double
[]
queryHourlyBaseline
(
String
reportName
,
String
key
,
Date
reportPeriod
)
throws
DalException
,
IOException
{
IOException
{
...
...
cat-home/src/main/java/com/dianping/cat/report/task/metric/MetricAlert.java
浏览文件 @
49b1fb81
...
@@ -26,7 +26,6 @@ import com.dianping.cat.report.baseline.BaselineConfigManager;
...
@@ -26,7 +26,6 @@ import com.dianping.cat.report.baseline.BaselineConfigManager;
import
com.dianping.cat.report.baseline.BaselineService
;
import
com.dianping.cat.report.baseline.BaselineService
;
import
com.dianping.cat.report.page.model.spi.ModelService
;
import
com.dianping.cat.report.page.model.spi.ModelService
;
import
com.dianping.cat.report.service.ReportService
;
import
com.dianping.cat.report.service.ReportService
;
import
com.dianping.cat.report.task.TaskHelper
;
import
com.dianping.cat.service.ModelPeriod
;
import
com.dianping.cat.service.ModelPeriod
;
import
com.dianping.cat.service.ModelRequest
;
import
com.dianping.cat.service.ModelRequest
;
import
com.dianping.cat.service.ModelResponse
;
import
com.dianping.cat.service.ModelResponse
;
...
@@ -54,8 +53,13 @@ public class MetricAlert implements Task, LogEnabled {
...
@@ -54,8 +53,13 @@ public class MetricAlert implements Task, LogEnabled {
@Inject
(
type
=
ModelService
.
class
,
value
=
"metric"
)
@Inject
(
type
=
ModelService
.
class
,
value
=
"metric"
)
protected
ModelService
<
MetricReport
>
m_service
;
protected
ModelService
<
MetricReport
>
m_service
;
@Inject
protected
MetricPointParser
m_parser
;
private
Logger
m_logger
;
private
Logger
m_logger
;
private
static
final
long
TEN_SECONDS
=
10
*
TimeUtil
.
ONE_MINUTE
;
private
static
final
int
DURATION_IN_MINUTE
=
1
;
private
static
final
int
DURATION_IN_MINUTE
=
1
;
private
static
final
long
DURATION
=
DURATION_IN_MINUTE
*
TimeUtil
.
ONE_MINUTE
;
private
static
final
long
DURATION
=
DURATION_IN_MINUTE
*
TimeUtil
.
ONE_MINUTE
;
...
@@ -72,7 +76,7 @@ public class MetricAlert implements Task, LogEnabled {
...
@@ -72,7 +76,7 @@ public class MetricAlert implements Task, LogEnabled {
Transaction
t
=
Cat
.
newTransaction
(
"MetricAlert"
,
"Redo"
);
Transaction
t
=
Cat
.
newTransaction
(
"MetricAlert"
,
"Redo"
);
long
current
=
System
.
currentTimeMillis
();
long
current
=
System
.
currentTimeMillis
();
try
{
try
{
Date
reportPeriod
=
new
Date
(
new
Date
().
getTime
()
-
DURATION
);
Date
reportPeriod
=
new
Date
(
new
Date
().
getTime
()
-
DURATION
-
TEN_SECONDS
);
metricAlert
(
reportPeriod
);
metricAlert
(
reportPeriod
);
t
.
setStatus
(
Transaction
.
SUCCESS
);
t
.
setStatus
(
Transaction
.
SUCCESS
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
...
@@ -95,8 +99,7 @@ public class MetricAlert implements Task, LogEnabled {
...
@@ -95,8 +99,7 @@ public class MetricAlert implements Task, LogEnabled {
protected
void
metricAlert
(
Date
reportPeriod
)
{
protected
void
metricAlert
(
Date
reportPeriod
)
{
Map
<
String
,
MetricItemConfig
>
metricConfigMap
=
m_metricConfigManager
.
getMetricConfig
().
getMetricItemConfigs
();
Map
<
String
,
MetricItemConfig
>
metricConfigMap
=
m_metricConfigManager
.
getMetricConfig
().
getMetricItemConfigs
();
Map
<
String
,
double
[]>
baselineMap
=
new
HashMap
<
String
,
double
[]>();
Map
<
String
,
MetricReport
>
metricReportMap
=
new
HashMap
<
String
,
MetricReport
>();
Date
hourStart
=
TaskHelper
.
thisHour
(
reportPeriod
);
Calendar
calendar
=
Calendar
.
getInstance
();
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
reportPeriod
);
calendar
.
setTime
(
reportPeriod
);
...
@@ -108,13 +111,18 @@ public class MetricAlert implements Task, LogEnabled {
...
@@ -108,13 +111,18 @@ public class MetricAlert implements Task, LogEnabled {
for
(
MetricType
type
:
MetricType
.
values
())
{
for
(
MetricType
type
:
MetricType
.
values
())
{
String
key
=
metricID
+
":"
+
type
;
String
key
=
metricID
+
":"
+
type
;
BaselineConfig
baselineConfig
=
m_baselineConfigManager
.
queryBaseLineConfig
(
key
);
BaselineConfig
baselineConfig
=
m_baselineConfigManager
.
queryBaseLineConfig
(
key
);
String
baselineKey
=
key
+
"+"
+
reportPeriod
.
getTime
();
double
[]
baseline
=
null
;
double
[]
baseline
=
queryBaseline
(
baselineMap
,
baselineKey
,
key
,
reportPeriod
);
try
{
if
(
baseline
==
null
)
{
baseline
=
m_baselineService
.
queryHourlyBaseline
(
"metric"
,
key
,
reportPeriod
);
}
catch
(
Exception
e
)
{
continue
;
continue
;
}
}
MetricReport
report
=
queryMetricReport
(
productLine
,
hourStart
.
getTime
());
MetricReport
report
=
metricReportMap
.
get
(
productLine
);
if
(
report
==
null
){
report
=
queryMetricReport
(
productLine
);
metricReportMap
.
put
(
productLine
,
report
);
}
double
[]
datas
=
extractDatasFromReport
(
report
,
metricConfig
,
type
);
double
[]
datas
=
extractDatasFromReport
(
report
,
metricConfig
,
type
);
if
(
datas
==
null
)
{
if
(
datas
==
null
)
{
continue
;
continue
;
...
@@ -128,30 +136,17 @@ public class MetricAlert implements Task, LogEnabled {
...
@@ -128,30 +136,17 @@ public class MetricAlert implements Task, LogEnabled {
}
}
}
}
private
double
[]
queryBaseline
(
Map
<
String
,
double
[]>
baselineMap
,
String
baselineKey
,
String
key
,
Date
reportPeriod
)
{
double
[]
result
=
baselineMap
.
get
(
baselineKey
);
if
(
result
==
null
)
{
try
{
result
=
m_baselineService
.
queryHourlyBaseline
(
"metric"
,
key
,
reportPeriod
);
baselineMap
.
put
(
baselineKey
,
result
);
}
catch
(
Exception
e
)
{
return
null
;
}
}
return
result
;
}
private
double
[]
extractDatasFromReport
(
MetricReport
report
,
MetricItemConfig
metricConfig
,
MetricType
type
)
{
private
double
[]
extractDatasFromReport
(
MetricReport
report
,
MetricItemConfig
metricConfig
,
MetricType
type
)
{
try
{
try
{
MetricItem
reportItem
=
report
.
getMetricItems
().
get
(
metricConfig
.
getMetricKey
());
MetricItem
reportItem
=
report
.
getMetricItems
().
get
(
metricConfig
.
getMetricKey
());
double
[]
datas
=
MetricPointP
arser
.
getOneHourData
(
reportItem
,
type
);
double
[]
datas
=
m_p
arser
.
getOneHourData
(
reportItem
,
type
);
return
datas
;
return
datas
;
}
catch
(
NullPointerException
e
)
{
}
catch
(
NullPointerException
e
)
{
return
null
;
return
null
;
}
}
}
}
private
MetricReport
queryMetricReport
(
String
product
,
long
dateTime
)
{
private
MetricReport
queryMetricReport
(
String
product
)
{
ModelRequest
request
=
new
ModelRequest
(
product
,
ModelPeriod
.
CURRENT
.
getStartTime
());
ModelRequest
request
=
new
ModelRequest
(
product
,
ModelPeriod
.
CURRENT
.
getStartTime
());
if
(
m_service
.
isEligable
(
request
))
{
if
(
m_service
.
isEligable
(
request
))
{
ModelResponse
<
MetricReport
>
response
=
m_service
.
invoke
(
request
);
ModelResponse
<
MetricReport
>
response
=
m_service
.
invoke
(
request
);
...
...
cat-home/src/main/java/com/dianping/cat/report/task/metric/MetricBaselineReportBuilder.java
浏览文件 @
49b1fb81
...
@@ -2,8 +2,10 @@ package com.dianping.cat.report.task.metric;
...
@@ -2,8 +2,10 @@ package com.dianping.cat.report.task.metric;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
org.unidal.lookup.annotation.Inject
;
import
org.unidal.lookup.annotation.Inject
;
...
@@ -40,17 +42,22 @@ public class MetricBaselineReportBuilder implements ReportTaskBuilder {
...
@@ -40,17 +42,22 @@ public class MetricBaselineReportBuilder implements ReportTaskBuilder {
@Inject
@Inject
protected
BaselineService
m_baselineService
;
protected
BaselineService
m_baselineService
;
@Inject
protected
MetricPointParser
m_parser
;
private
static
final
int
POINT_NUMBER
=
60
*
24
;
private
static
final
int
POINT_NUMBER
=
60
*
24
;
@Override
@Override
public
boolean
buildDailyTask
(
String
reportName
,
String
domain
,
Date
reportPeriod
)
{
public
boolean
buildDailyTask
(
String
reportName
,
String
domain
,
Date
reportPeriod
)
{
Map
<
String
,
MetricReport
>
reportMap
=
new
HashMap
<
String
,
MetricReport
>();
for
(
String
metricID
:
m_configManager
.
getMetricConfig
().
getMetricItemConfigs
().
keySet
())
{
for
(
String
metricID
:
m_configManager
.
getMetricConfig
().
getMetricItemConfigs
().
keySet
())
{
buildDailyReportInternal
(
reportName
,
metricID
,
reportPeriod
);
buildDailyReportInternal
(
report
Map
,
report
Name
,
metricID
,
reportPeriod
);
}
}
return
true
;
return
true
;
}
}
protected
void
buildDailyReportInternal
(
String
reportName
,
String
metricID
,
Date
reportPeriod
)
{
protected
void
buildDailyReportInternal
(
Map
<
String
,
MetricReport
>
reportMap
,
String
reportName
,
String
metricID
,
Date
reportPeriod
)
{
MetricItemConfig
metricConfig
=
m_configManager
.
getMetricConfig
().
getMetricItemConfigs
().
get
(
metricID
);
MetricItemConfig
metricConfig
=
m_configManager
.
getMetricConfig
().
getMetricItemConfigs
().
get
(
metricID
);
String
metricKey
=
metricConfig
.
getMetricKey
();
String
metricKey
=
metricConfig
.
getMetricKey
();
String
metricDomain
=
metricConfig
.
getDomain
();
String
metricDomain
=
metricConfig
.
getDomain
();
...
@@ -67,12 +74,17 @@ public class MetricBaselineReportBuilder implements ReportTaskBuilder {
...
@@ -67,12 +74,17 @@ public class MetricBaselineReportBuilder implements ReportTaskBuilder {
Date
relatedHour
=
new
Date
(
reportPeriod
.
getTime
()
+
day
*
TimeUtil
.
ONE_DAY
);
Date
relatedHour
=
new
Date
(
reportPeriod
.
getTime
()
+
day
*
TimeUtil
.
ONE_DAY
);
for
(
int
i
=
0
;
i
<
24
;
i
++)
{
for
(
int
i
=
0
;
i
<
24
;
i
++)
{
Date
hourEnd
=
new
Date
(
relatedHour
.
getTime
()
+
TimeUtil
.
ONE_HOUR
);
Date
hourEnd
=
new
Date
(
relatedHour
.
getTime
()
+
TimeUtil
.
ONE_HOUR
);
MetricReport
report
=
m_reportService
.
queryMetricReport
(
productLine
,
relatedHour
,
hourEnd
);
String
metricReportKey
=
productLine
+
":"
+
relatedHour
.
getTime
();
MetricReport
report
=
reportMap
.
get
(
metricReportKey
);
if
(
report
==
null
)
{
report
=
m_reportService
.
queryMetricReport
(
productLine
,
relatedHour
,
hourEnd
);
reportMap
.
put
(
metricReportKey
,
report
);
}
MetricItem
reportItem
=
report
.
getMetricItems
().
get
(
metricKey
);
MetricItem
reportItem
=
report
.
getMetricItems
().
get
(
metricKey
);
relatedHour
=
hourEnd
;
relatedHour
=
hourEnd
;
reports
.
add
(
reportItem
);
reports
.
add
(
reportItem
);
}
}
double
[]
oneDayValue
=
MetricPointP
arser
.
getOneDayData
(
reports
,
type
);
double
[]
oneDayValue
=
m_p
arser
.
getOneDayData
(
reports
,
type
);
values
.
add
(
oneDayValue
);
values
.
add
(
oneDayValue
);
}
}
...
...
cat-home/src/main/java/com/dianping/cat/report/task/metric/MetricPointParser.java
浏览文件 @
49b1fb81
...
@@ -10,7 +10,7 @@ public class MetricPointParser {
...
@@ -10,7 +10,7 @@ public class MetricPointParser {
private
static
final
int
POINT_NUMBER
=
60
;
private
static
final
int
POINT_NUMBER
=
60
;
public
static
double
[]
getOneHourData
(
MetricItem
report
,
MetricType
type
)
{
public
double
[]
getOneHourData
(
MetricItem
report
,
MetricType
type
)
{
double
[]
result
=
new
double
[
POINT_NUMBER
];
double
[]
result
=
new
double
[
POINT_NUMBER
];
Map
<
Integer
,
Point
>
map
=
report
.
getAbtests
().
get
(
"-1"
).
getGroups
().
get
(
""
).
getPoints
();
Map
<
Integer
,
Point
>
map
=
report
.
getAbtests
().
get
(
"-1"
).
getGroups
().
get
(
""
).
getPoints
();
for
(
Integer
minute
:
map
.
keySet
())
{
for
(
Integer
minute
:
map
.
keySet
())
{
...
@@ -28,7 +28,7 @@ public class MetricPointParser {
...
@@ -28,7 +28,7 @@ public class MetricPointParser {
return
result
;
return
result
;
}
}
public
static
double
[]
getOneDayData
(
List
<
MetricItem
>
reports
,
MetricType
type
)
{
public
double
[]
getOneDayData
(
List
<
MetricItem
>
reports
,
MetricType
type
)
{
double
[]
values
=
new
double
[
24
*
POINT_NUMBER
];
double
[]
values
=
new
double
[
24
*
POINT_NUMBER
];
for
(
int
i
=
0
;
i
<
24
*
POINT_NUMBER
;
i
++)
{
for
(
int
i
=
0
;
i
<
24
*
POINT_NUMBER
;
i
++)
{
values
[
i
]
=
-
1
;
values
[
i
]
=
-
1
;
...
@@ -36,7 +36,7 @@ public class MetricPointParser {
...
@@ -36,7 +36,7 @@ public class MetricPointParser {
int
hour
=
0
;
int
hour
=
0
;
for
(
MetricItem
report
:
reports
)
{
for
(
MetricItem
report
:
reports
)
{
try
{
try
{
double
[]
oneHourValues
=
MetricPointParser
.
getOneHourData
(
report
,
type
);
double
[]
oneHourValues
=
getOneHourData
(
report
,
type
);
for
(
int
minute
=
0
;
minute
<
60
;
minute
++)
{
for
(
int
minute
=
0
;
minute
<
60
;
minute
++)
{
int
index
=
hour
*
60
+
minute
;
int
index
=
hour
*
60
+
minute
;
...
...
cat-home/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
49b1fb81
...
@@ -269,6 +269,10 @@
...
@@ -269,6 +269,10 @@
<role>
com.dianping.cat.report.task.sql.SqlMerger
</role>
<role>
com.dianping.cat.report.task.sql.SqlMerger
</role>
<implementation>
com.dianping.cat.report.task.sql.SqlMerger
</implementation>
<implementation>
com.dianping.cat.report.task.sql.SqlMerger
</implementation>
</component>
</component>
<component>
<role>
com.dianping.cat.report.task.metric.MetricPointParser
</role>
<implementation>
com.dianping.cat.report.task.metric.MetricPointParser
</implementation>
</component>
<component>
<component>
<role>
com.dianping.cat.report.baseline.BaselineCreator
</role>
<role>
com.dianping.cat.report.baseline.BaselineCreator
</role>
<implementation>
com.dianping.cat.report.baseline.impl.DefaultBaselineCreator
</implementation>
<implementation>
com.dianping.cat.report.baseline.impl.DefaultBaselineCreator
</implementation>
...
@@ -293,6 +297,9 @@
...
@@ -293,6 +297,9 @@
<requirement>
<requirement>
<role>
com.dianping.cat.report.service.ReportService
</role>
<role>
com.dianping.cat.report.service.ReportService
</role>
</requirement>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.metric.MetricPointParser
</role>
</requirement>
<requirement>
<requirement>
<role>
com.dianping.cat.consumer.advanced.MetricConfigManager
</role>
<role>
com.dianping.cat.consumer.advanced.MetricConfigManager
</role>
</requirement>
</requirement>
...
@@ -320,6 +327,9 @@
...
@@ -320,6 +327,9 @@
<requirement>
<requirement>
<role>
com.dianping.cat.ServerConfigManager
</role>
<role>
com.dianping.cat.ServerConfigManager
</role>
</requirement>
</requirement>
<requirement>
<role>
com.dianping.cat.report.task.metric.MetricPointParser
</role>
</requirement>
<requirement>
<requirement>
<role>
com.dianping.cat.consumer.advanced.MetricConfigManager
</role>
<role>
com.dianping.cat.consumer.advanced.MetricConfigManager
</role>
</requirement>
</requirement>
...
...
cat-home/src/test/java/com/dianping/cat/report/task/metric/MetricAlertTest.java
浏览文件 @
49b1fb81
...
@@ -32,24 +32,20 @@ public class MetricAlertTest extends ComponentTestCase {
...
@@ -32,24 +32,20 @@ public class MetricAlertTest extends ComponentTestCase {
@Override
@Override
public
String
getName
()
{
public
String
getName
()
{
// TODO Auto-generated method stub
return
null
;
return
null
;
}
}
@Override
@Override
public
ModelResponse
<
MetricReport
>
invoke
(
ModelRequest
request
)
{
public
ModelResponse
<
MetricReport
>
invoke
(
ModelRequest
request
)
{
ModelResponse
<
MetricReport
>
response
=
new
ModelResponse
<
MetricReport
>();
ModelResponse
<
MetricReport
>
response
=
new
ModelResponse
<
MetricReport
>();
String
xml
;
String
xml
;
try
{
try
{
xml
=
Files
.
forIO
().
readFrom
(
getClass
().
getResourceAsStream
(
"metricReport.xml"
),
xml
=
Files
.
forIO
().
readFrom
(
getClass
().
getResourceAsStream
(
"metricReport.xml"
),
"utf-8"
);
"utf-8"
);
MetricReport
report
=
DefaultSaxParser
.
parse
(
xml
);
MetricReport
report
=
DefaultSaxParser
.
parse
(
xml
);
response
.
setModel
(
report
);
response
.
setModel
(
report
);
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
e
.
printStackTrace
();
}
catch
(
SAXException
e
)
{
}
catch
(
SAXException
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
e
.
printStackTrace
();
}
}
return
response
;
return
response
;
...
...
cat-home/src/test/java/com/dianping/cat/report/task/metric/MetricBaselineReportBuilderTest.java
浏览文件 @
49b1fb81
...
@@ -3,11 +3,13 @@ package com.dianping.cat.report.task.metric;
...
@@ -3,11 +3,13 @@ package com.dianping.cat.report.task.metric;
import
java.text.SimpleDateFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.Arrays
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.HashMap
;
import
org.junit.Assert
;
import
org.junit.Assert
;
import
org.junit.Test
;
import
org.junit.Test
;
import
org.unidal.lookup.ComponentTestCase
;
import
org.unidal.lookup.ComponentTestCase
;
import
com.dianping.cat.consumer.metric.model.entity.MetricReport
;
import
com.dianping.cat.home.dal.report.Baseline
;
import
com.dianping.cat.home.dal.report.Baseline
;
import
com.dianping.cat.report.baseline.BaselineConfig
;
import
com.dianping.cat.report.baseline.BaselineConfig
;
import
com.dianping.cat.report.baseline.BaselineConfigManager
;
import
com.dianping.cat.report.baseline.BaselineConfigManager
;
...
@@ -69,7 +71,7 @@ public class MetricBaselineReportBuilderTest extends ComponentTestCase {
...
@@ -69,7 +71,7 @@ public class MetricBaselineReportBuilderTest extends ComponentTestCase {
public
void
testBuildDailyReport
()
throws
Exception
{
public
void
testBuildDailyReport
()
throws
Exception
{
MetricBaselineReportBuilder
builder
=
getReportBuilder
();
MetricBaselineReportBuilder
builder
=
getReportBuilder
();
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
builder
.
buildDailyReportInternal
(
"metric"
,
"TuanGouWeb:URL:/index"
,
format
.
parse
(
"2013-07-01 00:00:00"
));
builder
.
buildDailyReportInternal
(
new
HashMap
<
String
,
MetricReport
>(),
"metric"
,
"TuanGouWeb:URL:/index"
,
format
.
parse
(
"2013-07-01 00:00:00"
));
}
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录