Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
SkyWalking
提交
76d5baab
S
SkyWalking
项目概览
apache
/
SkyWalking
上一次同步 大约 1 年
通知
302
Star
21345
Fork
6091
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
SkyWalking
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
76d5baab
编写于
5月 17, 2016
作者:
A
ascrutae
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
提交从TraceId追踪树跳转到典型调用链中
上级
65e2a14a
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
68 addition
and
5 deletion
+68
-5
skywalking-webui/src/main/java/com/ai/cloud/skywalking/web/dao/impl/TraceNodeDao.java
...va/com/ai/cloud/skywalking/web/dao/impl/TraceNodeDao.java
+4
-0
skywalking-webui/src/main/java/com/ai/cloud/skywalking/web/dto/TraceTreeInfo.java
...n/java/com/ai/cloud/skywalking/web/dto/TraceTreeInfo.java
+26
-0
skywalking-webui/src/main/java/com/ai/cloud/skywalking/web/service/impl/TraceTreeService.java
...i/cloud/skywalking/web/service/impl/TraceTreeService.java
+12
-4
skywalking-webui/src/main/java/com/ai/cloud/skywalking/web/util/ReplaceAddressUtil.java
.../com/ai/cloud/skywalking/web/util/ReplaceAddressUtil.java
+11
-0
skywalking-webui/src/main/java/com/ai/cloud/skywalking/web/util/TokenGenerator.java
...java/com/ai/cloud/skywalking/web/util/TokenGenerator.java
+4
-0
skywalking-webui/src/main/webapp/bower_components/skywalking/js/tracelog.js
...rc/main/webapp/bower_components/skywalking/js/tracelog.js
+8
-1
skywalking-webui/src/main/webapp/pages/common/traceInfo.ftl
skywalking-webui/src/main/webapp/pages/common/traceInfo.ftl
+3
-0
未找到文件。
skywalking-webui/src/main/java/com/ai/cloud/skywalking/web/dao/impl/TraceNodeDao.java
浏览文件 @
76d5baab
...
...
@@ -62,12 +62,16 @@ public class TraceNodeDao implements ITraceNodeDao {
Table
table
=
hBaseUtils
.
getConnection
().
getTable
(
TableName
.
valueOf
(
CALL_CHAIN_TABLE_NAME
));
Get
g
=
new
Get
(
Bytes
.
toBytes
(
traceId
));
g
.
addColumn
(
"call-chain"
.
getBytes
(),
"0"
.
getBytes
());
g
.
addColumn
(
"call-chain"
.
getBytes
(),
"0-S"
.
getBytes
());
g
.
addColumn
(
"call-chain"
.
getBytes
(),
"0.0"
.
getBytes
());
Result
r
=
table
.
get
(
g
);
Map
<
String
,
TraceNodeInfo
>
traceLogMap
=
new
HashMap
<
String
,
TraceNodeInfo
>();
Map
<
String
,
TraceNodeInfo
>
rpcMap
=
new
HashMap
<
String
,
TraceNodeInfo
>();
Cell
cell
=
r
.
getColumnLatestCell
(
"call-chain"
.
getBytes
(),
"0"
.
getBytes
());
if
(
cell
==
null
){
cell
=
r
.
getColumnLatestCell
(
"call-chain"
.
getBytes
(),
"0-S"
.
getBytes
());
}
doDealSingleSpan
(
traceLogMap
,
rpcMap
,
cell
);
cell
=
r
.
getColumnLatestCell
(
"call-chain"
.
getBytes
(),
"0.0"
.
getBytes
());
...
...
skywalking-webui/src/main/java/com/ai/cloud/skywalking/web/dto/TraceTreeInfo.java
浏览文件 @
76d5baab
package
com.ai.cloud.skywalking.web.dto
;
import
com.ai.cloud.skywalking.web.util.Constants
;
import
com.ai.cloud.skywalking.web.util.TokenGenerator
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
TraceTreeInfo
{
private
String
traceId
;
private
boolean
hasCallChainTree
=
true
;
private
String
callChainTreeToken
=
""
;
private
long
beginTime
;
private
long
endTime
;
private
List
<
TraceNodeInfo
>
nodes
;
...
...
@@ -78,4 +81,27 @@ public class TraceTreeInfo {
public
void
setMaxQueryNodeSize
(
int
maxQueryNodeSize
)
{
this
.
maxQueryNodeSize
=
maxQueryNodeSize
;
}
public
void
fillCallChainTreeToken
(
String
entranceViewPoint
)
{
if
(
entranceViewPoint
==
null
||
entranceViewPoint
.
length
()
==
0
){
hasCallChainTree
=
false
;
}
callChainTreeToken
=
TokenGenerator
.
generateTreeToken
(
entranceViewPoint
);
}
public
boolean
isHasCallChainTree
()
{
return
hasCallChainTree
;
}
public
void
setHasCallChainTree
(
boolean
hasCallChainTree
)
{
this
.
hasCallChainTree
=
hasCallChainTree
;
}
public
String
getCallChainTreeToken
()
{
return
callChainTreeToken
;
}
public
void
setCallChainTreeToken
(
String
callChainTreeToken
)
{
this
.
callChainTreeToken
=
callChainTreeToken
;
}
}
skywalking-webui/src/main/java/com/ai/cloud/skywalking/web/service/impl/TraceTreeService.java
浏览文件 @
76d5baab
package
com.ai.cloud.skywalking.web.service.impl
;
import
com.ai.cloud.skywalking.util.SpanLevelIdComparators
;
import
com.ai.cloud.skywalking.web.dao.inter.ITraceNodeDao
;
import
com.ai.cloud.skywalking.web.dto.TraceNodeInfo
;
import
com.ai.cloud.skywalking.web.dto.TraceNodesResult
;
import
com.ai.cloud.skywalking.web.dto.TraceTreeInfo
;
import
com.ai.cloud.skywalking.web.service.inter.ITraceTreeService
;
import
com.ai.cloud.skywalking.web.util.Constants
;
import
com.ai.cloud.skywalking.web.util.ReplaceAddressUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -34,13 +36,15 @@ public class TraceTreeService implements ITraceTreeService {
traceNodeInfoList
=
new
ArrayList
<
TraceNodeInfo
>();
traceNodeInfoList
.
addAll
(
traceTreeDao
.
queryEntranceNodeByTraceId
(
traceId
));
traceTreeInfo
.
setRealNodeSize
(
Constants
.
MAX_SEARCH_SPAN_SIZE
+
1
);
}
else
{
}
else
{
traceTreeInfo
.
setRealNodeSize
(
traceNodeInfoList
.
size
());
}
if
(
traceNodeInfoList
.
size
()
>
0
){
if
(
traceNodeInfoList
.
size
()
>
0
)
{
final
List
<
Long
>
endTime
=
new
ArrayList
<
Long
>();
endTime
.
add
(
0
,
traceNodeInfoList
.
get
(
0
).
getEndDate
());
Collections
.
sort
(
traceNodeInfoList
,
new
Comparator
<
TraceNodeInfo
>()
{
@Override
public
int
compare
(
TraceNodeInfo
arg0
,
TraceNodeInfo
arg1
)
{
...
...
@@ -50,18 +54,22 @@ public class TraceTreeService implements ITraceTreeService {
if
(
endTime
.
get
(
0
)
<
arg1
.
getEndDate
())
{
endTime
.
set
(
0
,
arg1
.
getEndDate
());
}
return
arg0
.
getColId
().
compareTo
(
arg1
.
getColId
());
return
SpanLevelIdComparators
.
ascCompare
(
arg0
.
getColId
(),
arg1
.
getColId
());
}
});
// 截断
int
subIndex
=
traceNodeInfoList
.
size
();
if
(
subIndex
>
Constants
.
MAX_SHOW_SPAN_SIZE
){
if
(
subIndex
>
Constants
.
MAX_SHOW_SPAN_SIZE
)
{
subIndex
=
Constants
.
MAX_SHOW_SPAN_SIZE
;
}
traceTreeInfo
.
setHasBeenSpiltNodes
(
traceNodeInfoList
.
subList
(
0
,
subIndex
));
traceTreeInfo
.
setBeginTime
(
traceNodeInfoList
.
get
(
0
).
getStartDate
());
traceTreeInfo
.
setEndTime
(
endTime
.
get
(
0
));
if
(
traceNodeInfoList
.
get
(
0
)
!=
null
)
{
traceTreeInfo
.
fillCallChainTreeToken
(
ReplaceAddressUtil
.
replace
(
traceNodeInfoList
.
get
(
0
).
getViewPointId
(),
traceNodeInfoList
.
get
(
0
).
getApplicationId
()));
}
}
return
traceTreeInfo
;
...
...
skywalking-webui/src/main/java/com/ai/cloud/skywalking/web/util/ReplaceAddressUtil.java
0 → 100644
浏览文件 @
76d5baab
package
com.ai.cloud.skywalking.web.util
;
public
class
ReplaceAddressUtil
{
//ip:port regex
private
static
String
IP_PORT_REGEX
=
"(([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))|localhost):([1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]|[0-9]{1,4})"
;
public
static
String
replace
(
String
origin
,
String
applicationId
){
return
origin
.
replaceAll
(
IP_PORT_REGEX
,
applicationId
);
}
}
skywalking-webui/src/main/java/com/ai/cloud/skywalking/web/util/TokenGenerator.java
浏览文件 @
76d5baab
...
...
@@ -11,6 +11,10 @@ public final class TokenGenerator {
private
static
Logger
logger
=
LogManager
.
getLogger
(
TokenGenerator
.
class
);
public
static
String
generateTreeToken
(
String
originData
)
{
return
"TREE_ID_"
+
generate
(
originData
);
}
public
static
String
generate
(
String
originData
)
{
StringBuilder
result
=
new
StringBuilder
();
if
(
originData
!=
null
)
{
...
...
skywalking-webui/src/main/webapp/bower_components/skywalking/js/tracelog.js
浏览文件 @
76d5baab
function
changeData
(
data
)
{
var
result
=
{
traceTree
:
{
traceId
:
""
,
...
...
@@ -26,6 +25,8 @@ function changeData(data) {
result
.
traceTree
.
maxQueryNodeSize
=
data
.
maxQueryNodeSize
;
result
.
traceTree
.
startTimeStr
=
convertDate
(
new
Date
(
result
.
traceTree
.
startTime
));
result
.
traceTree
.
callIP
=
data
.
nodes
[
0
].
address
;
result
.
traceTree
.
hasCallChainTree
=
data
.
hasCallChainTree
;
result
.
traceTree
.
callChainTreeToken
=
data
.
callChainTreeToken
;
var
tmpNode
;
var
colId
;
for
(
var
i
=
0
;
i
<
data
.
nodes
.
length
;
i
++
)
{
...
...
@@ -137,4 +138,10 @@ function convertDate(date) {
var
minutes
=
date
.
getMinutes
();
var
second
=
date
.
getSeconds
();
return
year
+
"
-
"
+
month
+
"
-
"
+
date1
+
"
"
+
hour
+
"
:
"
+
minutes
+
"
:
"
+
second
;
}
function
gotoCallChainTree
(
obj
){
var
callChainTreeToken
=
$
(
obj
).
attr
(
"
value
"
);
$
(
"
#searchKey
"
).
val
(
"
analysisresult:
"
+
callChainTreeToken
);
$
(
"
#searchBtn
"
).
click
();
}
\ No newline at end of file
skywalking-webui/src/main/webapp/pages/common/traceInfo.ftl
浏览文件 @
76d5baab
...
...
@@ -153,6 +153,9 @@
{{else}}
{{>totalSize}}个调用节点,
{{/if}}消耗总时长:{{>totalTime}}ms。
{{if hasCallChainTree}}
<button class="btn btn-primary" onclick="javascript:gotoCallChainTree(this);" value="{{>callChainTreeToken}}">查看调用树</button>
{{/if}}
</h5>
</div>
<ul id="myTab" class="nav nav-tabs">
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录