Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
96ad7b97
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,发现更多精彩内容 >>
提交
96ad7b97
编写于
7月 29, 2014
作者:
J
jialinsun
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
https://github.com/dianping/cat
上级
2a0ea1fd
f91375ea
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
136 addition
and
125 deletion
+136
-125
cat-client/src/main/java/com/dianping/cat/message/io/ChannelManager.java
...main/java/com/dianping/cat/message/io/ChannelManager.java
+90
-91
cat-client/src/main/java/com/dianping/cat/message/io/TcpSocketSender.java
...ain/java/com/dianping/cat/message/io/TcpSocketSender.java
+0
-3
cat-consumer/src/main/java/com/dianping/cat/consumer/state/StateDelegate.java
...n/java/com/dianping/cat/consumer/state/StateDelegate.java
+1
-0
cat-home/src/main/java/com/dianping/cat/report/service/impl/RouterConfigService.java
...dianping/cat/report/service/impl/RouterConfigService.java
+22
-10
cat-home/src/main/java/com/dianping/cat/system/page/router/Handler.java
...ain/java/com/dianping/cat/system/page/router/Handler.java
+1
-2
cat-home/src/main/resources/config/default-router-config.xml
cat-home/src/main/resources/config/default-router-config.xml
+1
-0
cat-home/src/main/webapp/jsp/report/dependency/dependencyDashboard.jsp
...main/webapp/jsp/report/dependency/dependencyDashboard.jsp
+12
-10
cat-home/src/main/webapp/jsp/report/dependency/metricDashboard.jsp
...src/main/webapp/jsp/report/dependency/metricDashboard.jsp
+8
-8
cat-home/src/main/webapp/jsp/system/router/router.jsp
cat-home/src/main/webapp/jsp/system/router/router.jsp
+1
-1
未找到文件。
cat-client/src/main/java/com/dianping/cat/message/io/ChannelManager.java
浏览文件 @
96ad7b97
...
...
@@ -61,87 +61,6 @@ public class ChannelManager implements Task {
private
String
m_lastServers
;
private
List
<
InetSocketAddress
>
parse
(
String
content
)
{
try
{
List
<
String
>
strs
=
Splitters
.
by
(
";"
).
noEmptyItem
().
split
(
content
);
List
<
InetSocketAddress
>
address
=
new
ArrayList
<
InetSocketAddress
>();
for
(
String
str
:
strs
)
{
List
<
String
>
items
=
Splitters
.
by
(
":"
).
noEmptyItem
().
split
(
str
);
address
.
add
(
new
InetSocketAddress
(
items
.
get
(
0
),
Integer
.
parseInt
(
items
.
get
(
1
))));
}
return
address
;
}
catch
(
Exception
e
)
{
m_logger
.
error
(
e
.
getMessage
(),
e
);
}
return
new
ArrayList
<
InetSocketAddress
>();
}
private
String
getServerConfig
()
{
try
{
String
url
=
m_configManager
.
getServerConfigUrl
();
InputStream
currentServer
=
Urls
.
forIO
().
readTimeout
(
3000
).
connectTimeout
(
1000
).
openStream
(
url
);
String
content
=
Files
.
forIO
().
readFrom
(
currentServer
,
"utf-8"
);
return
content
.
trim
();
}
catch
(
Exception
e
)
{
}
return
null
;
}
private
Pair
<
Boolean
,
String
>
serverConfigChanged
()
{
String
current
=
getServerConfig
();
if
(
current
!=
null
&&
!
current
.
equals
(
m_lastServers
))
{
return
new
Pair
<
Boolean
,
String
>(
true
,
current
);
}
else
{
return
new
Pair
<
Boolean
,
String
>(
false
,
current
);
}
}
private
void
closeAllChannel
()
{
try
{
if
(
m_activeFuture
!=
null
)
{
m_activeFuture
.
getChannel
().
close
();
}
if
(
m_lastFuture
!=
null
)
{
m_lastFuture
.
getChannel
().
close
();
}
m_activeIndex
=
-
1
;
}
catch
(
Exception
e
)
{
// ignore
}
}
private
void
initChannel
(
List
<
InetSocketAddress
>
addresses
)
{
try
{
StringBuilder
sb
=
new
StringBuilder
();
for
(
InetSocketAddress
address
:
addresses
)
{
sb
.
append
(
address
.
getAddress
().
getHostAddress
()).
append
(
":"
).
append
(
address
.
getPort
()).
append
(
','
);
}
m_logger
.
info
(
"init CAT server:"
+
sb
.
toString
());
m_serverAddresses
=
addresses
;
int
len
=
addresses
.
size
();
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
ChannelFuture
future
=
createChannel
(
addresses
.
get
(
i
));
if
(
future
!=
null
)
{
m_activeFuture
=
future
;
m_activeIndex
=
i
;
break
;
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
// ignore
}
}
public
ChannelManager
(
Logger
logger
,
List
<
InetSocketAddress
>
serverAddresses
,
MessageQueue
queue
,
ClientConfigManager
configManager
)
{
m_logger
=
logger
;
...
...
@@ -164,7 +83,7 @@ public class ChannelManager implements Task {
bootstrap
.
setOption
(
"keepAlive"
,
true
);
m_bootstrap
=
bootstrap
;
String
serverConfig
=
getServerConfig
();
if
(
serverConfig
!=
null
)
{
...
...
@@ -178,6 +97,20 @@ public class ChannelManager implements Task {
}
}
private
void
closeAllChannel
()
{
try
{
if
(
m_activeFuture
!=
null
)
{
m_activeFuture
.
getChannel
().
close
();
}
if
(
m_lastFuture
!=
null
)
{
m_lastFuture
.
getChannel
().
close
();
}
m_activeIndex
=
-
1
;
}
catch
(
Exception
e
)
{
// ignore
}
}
private
ChannelFuture
createChannel
(
InetSocketAddress
address
)
{
ChannelFuture
future
=
null
;
...
...
@@ -215,6 +148,46 @@ public class ChannelManager implements Task {
return
"TcpSocketSender-ChannelManager"
;
}
private
String
getServerConfig
()
{
try
{
String
url
=
m_configManager
.
getServerConfigUrl
();
InputStream
currentServer
=
Urls
.
forIO
().
readTimeout
(
3000
).
connectTimeout
(
1000
).
openStream
(
url
);
String
content
=
Files
.
forIO
().
readFrom
(
currentServer
,
"utf-8"
);
return
content
.
trim
();
}
catch
(
Exception
e
)
{
}
return
null
;
}
private
void
initChannel
(
List
<
InetSocketAddress
>
addresses
)
{
try
{
StringBuilder
sb
=
new
StringBuilder
();
for
(
InetSocketAddress
address
:
addresses
)
{
sb
.
append
(
address
.
getAddress
().
getHostAddress
()).
append
(
":"
).
append
(
address
.
getPort
()).
append
(
','
);
}
m_logger
.
info
(
"init CAT server:"
+
sb
.
toString
());
m_serverAddresses
=
addresses
;
int
len
=
addresses
.
size
();
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
ChannelFuture
future
=
createChannel
(
addresses
.
get
(
i
));
if
(
future
!=
null
)
{
m_activeFuture
=
future
;
m_activeIndex
=
i
;
break
;
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
// ignore
}
}
private
boolean
isChannelStalled
()
{
m_retriedTimes
++;
int
size
=
m_queue
.
size
();
...
...
@@ -235,15 +208,21 @@ public class ChannelManager implements Task {
}
}
private
boolean
shouldCheckServerConfig
(
int
count
)
{
//return true;
int
duration
=
3600
;
if
(
count
%
(
duration
)
==
0
)
{
return
true
;
}
else
{
return
false
;
}
private
List
<
InetSocketAddress
>
parse
(
String
content
)
{
try
{
List
<
String
>
strs
=
Splitters
.
by
(
";"
).
noEmptyItem
().
split
(
content
);
List
<
InetSocketAddress
>
address
=
new
ArrayList
<
InetSocketAddress
>();
for
(
String
str
:
strs
)
{
List
<
String
>
items
=
Splitters
.
by
(
":"
).
noEmptyItem
().
split
(
str
);
address
.
add
(
new
InetSocketAddress
(
items
.
get
(
0
),
Integer
.
parseInt
(
items
.
get
(
1
))));
}
return
address
;
}
catch
(
Exception
e
)
{
m_logger
.
error
(
e
.
getMessage
(),
e
);
}
return
new
ArrayList
<
InetSocketAddress
>();
}
@Override
...
...
@@ -308,6 +287,26 @@ public class ChannelManager implements Task {
}
}
private
Pair
<
Boolean
,
String
>
serverConfigChanged
()
{
String
current
=
getServerConfig
();
if
(
current
!=
null
&&
!
current
.
equals
(
m_lastServers
))
{
return
new
Pair
<
Boolean
,
String
>(
true
,
current
);
}
else
{
return
new
Pair
<
Boolean
,
String
>(
false
,
current
);
}
}
private
boolean
shouldCheckServerConfig
(
int
count
)
{
int
duration
=
3600
;
if
(
count
%
(
duration
)
==
0
)
{
return
true
;
}
else
{
return
false
;
}
}
@Override
public
void
shutdown
()
{
m_active
=
false
;
...
...
cat-client/src/main/java/com/dianping/cat/message/io/TcpSocketSender.java
浏览文件 @
96ad7b97
...
...
@@ -95,8 +95,6 @@ public class TcpSocketSender implements Task, MessageSender, LogEnabled {
MessageTree
tree
=
m_queue
.
poll
();
if
(
tree
!=
null
)
{
System
.
out
.
println
(
"write to===="
+
future
.
getChannel
().
getRemoteAddress
());
sendInternal
(
tree
);
tree
.
setMessage
(
null
);
}
...
...
@@ -104,7 +102,6 @@ public class TcpSocketSender implements Task, MessageSender, LogEnabled {
m_logger
.
error
(
"Error when sending message over TCP socket!"
,
t
);
}
}
else
{
System
.
out
.
println
(
"channel can't write"
);
try
{
Thread
.
sleep
(
5
);
}
catch
(
Exception
e
)
{
...
...
cat-consumer/src/main/java/com/dianping/cat/consumer/state/StateDelegate.java
浏览文件 @
96ad7b97
...
...
@@ -43,6 +43,7 @@ public class StateDelegate implements ReportDelegate<StateReport> {
m_taskManager
.
createTask
(
startTime
,
domain
,
Constants
.
REPORT_ALERT
,
TaskProlicy
.
ALL
);
m_taskManager
.
createTask
(
startTime
,
domain
,
Constants
.
REPORT_UTILIZATION
,
TaskProlicy
.
ALL
);
m_taskManager
.
createTask
(
startTime
,
domain
,
Constants
.
REPORT_NET_TOPOLOGY
,
TaskProlicy
.
HOULY
);
m_taskManager
.
createTask
(
startTime
,
domain
,
Constants
.
REPORT_ROUTER
,
TaskProlicy
.
DAILY
);
return
m_taskManager
.
createTask
(
startTime
,
domain
,
StateAnalyzer
.
ID
,
TaskProlicy
.
ALL_EXCLUED_HOURLY
);
}
...
...
cat-home/src/main/java/com/dianping/cat/report/service/impl/RouterConfigService.java
浏览文件 @
96ad7b97
package
com.dianping.cat.report.service.impl
;
import
java.util.Date
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
import
org.unidal.dal.jdbc.DalException
;
import
org.unidal.dal.jdbc.DalNotFoundException
;
...
...
@@ -17,6 +19,8 @@ import com.dianping.cat.report.service.AbstractReportService;
public
class
RouterConfigService
extends
AbstractReportService
<
RouterConfig
>
{
private
Map
<
Long
,
RouterConfig
>
m_configs
=
new
LinkedHashMap
<
Long
,
RouterConfig
>();
@Override
public
RouterConfig
makeReport
(
String
domain
,
Date
start
,
Date
end
)
{
RouterConfig
report
=
new
RouterConfig
(
domain
);
...
...
@@ -28,20 +32,28 @@ public class RouterConfigService extends AbstractReportService<RouterConfig> {
@Override
public
RouterConfig
queryDailyReport
(
String
domain
,
Date
start
,
Date
end
)
{
String
name
=
Constants
.
REPORT_ROUTER
;
long
time
=
start
.
getTime
();
RouterConfig
config
=
m_configs
.
get
(
time
);
if
(
config
==
null
)
{
String
name
=
Constants
.
REPORT_ROUTER
;
try
{
DailyReport
report
=
m_dailyReportDao
.
findByDomainNamePeriod
(
domain
,
name
,
start
,
DailyReportEntity
.
READSET_FULL
);
RouterConfig
config
=
queryFromDailyBinary
(
report
.
getId
(),
domain
);
try
{
DailyReport
report
=
m_dailyReportDao
.
findByDomainNamePeriod
(
domain
,
name
,
start
,
DailyReportEntity
.
READSET_FULL
);
config
=
queryFromDailyBinary
(
report
.
getId
(),
domain
);
m_configs
.
put
(
time
,
config
);
return
config
;
}
catch
(
DalNotFoundException
e
)
{
// ignore
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
return
null
;
}
else
{
return
config
;
}
catch
(
DalNotFoundException
e
)
{
// ignore
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
return
null
;
}
private
RouterConfig
queryFromDailyBinary
(
int
id
,
String
domain
)
throws
DalException
{
...
...
cat-home/src/main/java/com/dianping/cat/system/page/router/Handler.java
浏览文件 @
96ad7b97
...
...
@@ -74,9 +74,8 @@ public class Handler implements PageHandler<Context> {
if
(
report
!=
null
)
{
model
.
setContent
(
report
.
toString
());
}
break
;
}
model
.
setAction
(
Action
.
API
);
model
.
setAction
(
action
);
model
.
setPage
(
SystemPage
.
ROUTER
);
if
(!
ctx
.
isProcessStopped
())
{
...
...
cat-home/src/main/resources/config/default-router-config.xml
浏览文件 @
96ad7b97
...
...
@@ -12,5 +12,6 @@
<domain
id=
"Cat"
>
<server
id=
"10.1.6.37"
port=
"2280"
/>
<server
id=
"10.1.6.128"
port=
"2280"
/>
<server
id=
"127.0.0.1"
port=
"2280"
/>
</domain>
</router-config>
cat-home/src/main/webapp/jsp/report/dependency/dependencyDashboard.jsp
浏览文件 @
96ad7b97
...
...
@@ -8,16 +8,6 @@
<jsp:useBean
id=
"model"
type=
"com.dianping.cat.report.page.dependency.Model"
scope=
"request"
/>
<res:bean
id=
"res"
/>
<res:useCss
value=
'
${
res
.
css
.
local
.
table_css
}
'
target=
"head-css"
/>
<res:useCss
value=
'
${
res
.
css
.
local
.
body_css
}
'
target=
"head-css"
/>
<res:useCss
value=
"
${
res
.
css
.
local
[
'bootstrap.css'
]
}
"
target=
"head-css"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'jquery-1.7.1.js'
]
}
"
target=
"head-js"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'bootstrap.min.js'
]
}
"
target=
"head-js"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'jquery.dataTables.min.js'
]
}
"
target=
"head-js"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'startopo.js'
]
}
"
target=
"head-js"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'raphael-min.js'
]
}
"
target=
"head-js"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'dependencyConfig.js'
]
}
"
target=
"head-js"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'jquery.validate.min.js'
]
}
"
target=
"head-js"
/>
<style>
.tooltip-inner
{
max-width
:
36555px
;
...
...
@@ -31,6 +21,16 @@
</style>
<c:choose>
<c:when
test=
"
${
payload
.
fullScreen
}
"
>
<res:useCss
value=
'
${
res
.
css
.
local
.
table_css
}
'
target=
"head-css"
/>
<res:useCss
value=
'
${
res
.
css
.
local
.
body_css
}
'
target=
"head-css"
/>
<res:useCss
value=
"
${
res
.
css
.
local
[
'bootstrap.css'
]
}
"
target=
"head-css"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'jquery-1.7.1.js'
]
}
"
target=
"head-js"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'bootstrap.min.js'
]
}
"
target=
"head-js"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'jquery.dataTables.min.js'
]
}
"
target=
"head-js"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'raphael-min.js'
]
}
"
target=
"head-js"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'dependencyConfig.js'
]
}
"
target=
"head-js"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'jquery.validate.min.js'
]
}
"
target=
"head-js"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'startopo.js'
]
}
"
target=
"head-js"
/>
<div
class=
"report"
>
<a
href=
"javascript:showOpNav()"
id=
"switch"
class=
"btn btn-small btn-success"
>
隐藏
</a>
<div
class=
"opNav"
>
...
...
@@ -46,6 +46,8 @@
</div>
</c:when>
<c:otherwise>
<res:useJs
value=
"
${
res
.
js
.
local
[
'raphael-min.js'
]
}
"
target=
"head-js"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'startopo.js'
]
}
"
target=
"head-js"
/>
<a:report
title=
"Dependency Report"
navUrlPrefix=
"domain=${model.domain}&op=dashboard"
>
<jsp:attribute
name=
"subtitle"
>
From ${w:format(model.reportStart,'yyyy-MM-dd HH:mm:ss')} to ${w:format(model.reportEnd,'yyyy-MM-dd HH:mm:ss')}
</jsp:attribute>
...
...
cat-home/src/main/webapp/jsp/report/dependency/metricDashboard.jsp
浏览文件 @
96ad7b97
...
...
@@ -7,14 +7,6 @@
<jsp:useBean
id=
"payload"
type=
"com.dianping.cat.report.page.dependency.Payload"
scope=
"request"
/>
<jsp:useBean
id=
"model"
type=
"com.dianping.cat.report.page.dependency.Model"
scope=
"request"
/>
<res:bean
id=
"res"
/>
<res:useCss
value=
'
${
res
.
css
.
local
.
table_css
}
'
target=
"head-css"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'dependencyConfig.js'
]
}
"
target=
"head-js"
/>
<res:useCss
value=
'
${
res
.
css
.
local
.
body_css
}
'
target=
"head-css"
/>
<res:useCss
value=
"
${
res
.
css
.
local
[
'bootstrap.css'
]
}
"
target=
"head-css"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'jquery-1.7.1.js'
]
}
"
target=
"head-js"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'bootstrap.min.js'
]
}
"
target=
"head-js"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'baseGraph.js'
]
}
"
target=
"head-js"
/>
<style>
.tooltip-inner
{
...
...
@@ -29,6 +21,14 @@
</style>
<c:choose>
<c:when
test=
"
${
payload
.
fullScreen
}
"
>
<res:bean
id=
"res"
/>
<res:useCss
value=
'
${
res
.
css
.
local
.
table_css
}
'
target=
"head-css"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'dependencyConfig.js'
]
}
"
target=
"head-js"
/>
<res:useCss
value=
'
${
res
.
css
.
local
.
body_css
}
'
target=
"head-css"
/>
<res:useCss
value=
"
${
res
.
css
.
local
[
'bootstrap.css'
]
}
"
target=
"head-css"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'jquery-1.7.1.js'
]
}
"
target=
"head-js"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'bootstrap.min.js'
]
}
"
target=
"head-js"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'baseGraph.js'
]
}
"
target=
"head-js"
/>
<res:useJs
value=
"
${
res
.
js
.
local
[
'highcharts.js'
]
}
"
target=
"head-js"
/>
<div
class=
"report"
>
<a
href=
"javascript:showOpNav()"
id=
"switch"
class=
"btn btn-small btn-success"
>
隐藏
</a>
...
...
cat-home/src/main/webapp/jsp/system/router/router.jsp
浏览文件 @
96ad7b97
<%@ page
contentType=
"text/
html; charset=utf-8
"
%>
<%@ page
contentType=
"text/
xml; charset=utf-8"
trimDirectiveWhitespaces=
"true
"
%>
<jsp:useBean
id=
"model"
type=
"com.dianping.cat.system.page.router.Model"
scope=
"request"
/>
${model.content}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录