Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
SkyWalking
提交
66bca126
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 搜索 >>
提交
66bca126
编写于
5月 03, 2016
作者:
A
ascrutae
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1. 新增TreeID和CID对应关系的表
2. 修改WEBUI的排序的方法
上级
fe8911d4
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
88 addition
and
39 deletion
+88
-39
skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/ChainBuildMapper.java
...loud/skywalking/analysis/chainbuild/ChainBuildMapper.java
+3
-0
skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/ChainBuildReducer.java
...oud/skywalking/analysis/chainbuild/ChainBuildReducer.java
+1
-1
skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/util/HBaseUtil.java
.../cloud/skywalking/analysis/chainbuild/util/HBaseUtil.java
+11
-0
skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/util/TokenGenerator.java
...d/skywalking/analysis/chainbuild/util/TokenGenerator.java
+19
-18
skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/config/HBaseTableMetaData.java
.../cloud/skywalking/analysis/config/HBaseTableMetaData.java
+13
-0
skywalking-analysis/src/test/java/com/ai/cloud/skywalking/analysis/mapper/CallChainMapperTest.java
...cloud/skywalking/analysis/mapper/CallChainMapperTest.java
+37
-17
skywalking-protocol/src/main/java/com/ai/cloud/skywalking/util/SpanLevelIdComparators.java
.../com/ai/cloud/skywalking/util/SpanLevelIdComparators.java
+2
-2
skywalking-webui/src/main/java/com/ai/cloud/skywalking/web/service/impl/AnalysisResultService.java
...ud/skywalking/web/service/impl/AnalysisResultService.java
+2
-1
未找到文件。
skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/ChainBuildMapper.java
浏览文件 @
66bca126
...
...
@@ -6,6 +6,7 @@ import com.ai.cloud.skywalking.analysis.chainbuild.filter.SpanNodeProcessFilter;
import
com.ai.cloud.skywalking.analysis.chainbuild.po.ChainInfo
;
import
com.ai.cloud.skywalking.analysis.chainbuild.po.ChainNode
;
import
com.ai.cloud.skywalking.analysis.chainbuild.po.SummaryType
;
import
com.ai.cloud.skywalking.analysis.chainbuild.util.HBaseUtil
;
import
com.ai.cloud.skywalking.analysis.chainbuild.util.SubLevelSpanCostCounter
;
import
com.ai.cloud.skywalking.analysis.chainbuild.util.TokenGenerator
;
import
com.ai.cloud.skywalking.analysis.chainbuild.util.VersionIdentifier
;
...
...
@@ -63,6 +64,8 @@ public class ChainBuildMapper extends TableMapper<Text, Text> {
chainInfo
=
spanToChainInfo
(
Bytes
.
toString
(
key
.
get
()),
spanList
);
logger
.
debug
(
"convert tid["
+
Bytes
.
toString
(
key
.
get
())
+
"] to chain with cid["
+
chainInfo
.
getCID
()
+
"]."
);
HBaseUtil
.
saveTraceIdAndTreeIdMapping
(
Bytes
.
toString
(
key
.
get
()),
chainInfo
.
getCID
());
if
(
chainInfo
.
getCallEntrance
()
!=
null
&&
chainInfo
.
getCallEntrance
().
length
()
>
0
)
{
for
(
ChainNode
chainNode
:
chainInfo
.
getNodes
())
{
context
.
write
(
new
Text
(
SummaryType
.
HOUR
.
getValue
()
+
"-"
+
hourSimpleDateFormat
.
format
(
...
...
skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/ChainBuildReducer.java
浏览文件 @
66bca126
...
...
@@ -37,7 +37,7 @@ public class ChainBuildReducer extends Reducer<Text, Text, Text, IntWritable> {
if
(
index
==
-
1
)
{
return
;
}
String
summaryTypeAndDateStr
=
reduceKey
.
substring
(
0
,
index
-
1
);
String
summaryTypeAndDateStr
=
reduceKey
.
substring
(
0
,
index
);
String
entryKey
=
reduceKey
.
substring
(
index
+
1
);
logger
.
debug
(
"begin to reduce for key: {}"
,
reduceKey
);
...
...
skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/util/HBaseUtil.java
浏览文件 @
66bca126
...
...
@@ -32,6 +32,9 @@ public class HBaseUtil {
createTableIfNeed
(
HBaseTableMetaData
.
TABLE_CALL_CHAIN_TREE_ID_AND_CID_MAPPING
.
TABLE_NAME
,
HBaseTableMetaData
.
TABLE_CALL_CHAIN_TREE_ID_AND_CID_MAPPING
.
COLUMN_FAMILY_NAME
);
createTableIfNeed
(
HBaseTableMetaData
.
TABLE_TRACE_ID_AND_CID_MAPPING
.
TABLE_NAME
,
HBaseTableMetaData
.
TABLE_TRACE_ID_AND_CID_MAPPING
.
COLUMN_FAMILY_NAME
);
createTableIfNeed
(
HBaseTableMetaData
.
TABLE_CHAIN_ONE_MINUTE_SUMMARY
.
TABLE_NAME
,
HBaseTableMetaData
.
TABLE_CHAIN_ONE_MINUTE_SUMMARY
.
COLUMN_FAMILY_NAME
);
...
...
@@ -231,4 +234,12 @@ public class HBaseUtil {
}
public
static
void
saveTraceIdAndTreeIdMapping
(
String
traceId
,
String
cid
)
throws
IOException
{
Put
put
=
new
Put
(
traceId
.
getBytes
());
put
.
addColumn
(
HBaseTableMetaData
.
TABLE_TRACE_ID_AND_CID_MAPPING
.
COLUMN_FAMILY_NAME
.
getBytes
(),
HBaseTableMetaData
.
TABLE_TRACE_ID_AND_CID_MAPPING
.
COLUMN_NAME
.
getBytes
(),
cid
.
getBytes
());
Table
table
=
connection
.
getTable
(
TableName
.
valueOf
(
HBaseTableMetaData
.
TABLE_TRACE_ID_AND_CID_MAPPING
.
TABLE_NAME
));
table
.
put
(
put
);
}
}
skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/util/TokenGenerator.java
浏览文件 @
66bca126
...
...
@@ -26,23 +26,24 @@ public class TokenGenerator {
}
private
static
String
generate
(
String
originData
)
{
StringBuilder
result
=
new
StringBuilder
();
if
(
originData
!=
null
)
{
try
{
MessageDigest
md
=
MessageDigest
.
getInstance
(
"MD5"
);
byte
bytes
[]
=
md
.
digest
(
originData
.
getBytes
());
for
(
int
i
=
0
;
i
<
bytes
.
length
;
i
++)
{
String
str
=
Integer
.
toHexString
(
bytes
[
i
]
&
0xFF
);
if
(
str
.
length
()
==
1
)
{
str
+=
"F"
;
}
result
.
append
(
str
);
}
}
catch
(
NoSuchAlgorithmException
e
)
{
logger
.
error
(
"Cannot found algorithm."
,
e
);
System
.
exit
(-
1
);
}
}
return
result
.
toString
().
toUpperCase
();
// StringBuilder result = new StringBuilder();
// if (originData != null) {
// try {
// MessageDigest md = MessageDigest.getInstance("MD5");
// byte bytes[] = md.digest(originData.getBytes());
// for (int i = 0; i < bytes.length; i++) {
// String str = Integer.toHexString(bytes[i] & 0xFF);
// if (str.length() == 1) {
// str += "F";
// }
// result.append(str);
// }
// } catch (NoSuchAlgorithmException e) {
// logger.error("Cannot found algorithm.", e);
// System.exit(-1);
// }
// }
// return result.toString().toUpperCase();
return
originData
;
}
}
\ No newline at end of file
skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/config/HBaseTableMetaData.java
浏览文件 @
66bca126
...
...
@@ -78,4 +78,17 @@ public class HBaseTableMetaData {
public
static
final
String
COLUMN_NAME
=
"been_merged_cid"
;
}
/**
* 用于存放TraceID和CID的映射关系
*
* @author zhangxin
*/
public
final
static
class
TABLE_TRACE_ID_AND_CID_MAPPING
{
public
static
final
String
TABLE_NAME
=
"sw-traceId-cid-mapping"
;
public
static
final
String
COLUMN_FAMILY_NAME
=
"cid"
;
public
static
final
String
COLUMN_NAME
=
"cid"
;
}
}
skywalking-analysis/src/test/java/com/ai/cloud/skywalking/analysis/mapper/CallChainMapperTest.java
浏览文件 @
66bca126
...
...
@@ -5,6 +5,7 @@ import com.ai.cloud.skywalking.analysis.chainbuild.ChainBuildMapper;
import
com.ai.cloud.skywalking.analysis.chainbuild.ChainBuildReducer
;
import
com.ai.cloud.skywalking.analysis.chainbuild.action.IStatisticsAction
;
import
com.ai.cloud.skywalking.analysis.chainbuild.po.ChainInfo
;
import
com.ai.cloud.skywalking.analysis.chainbuild.po.ChainNode
;
import
com.ai.cloud.skywalking.analysis.chainbuild.po.SummaryType
;
import
com.ai.cloud.skywalking.analysis.chainbuild.util.TokenGenerator
;
import
com.ai.cloud.skywalking.analysis.config.ConfigInitializer
;
...
...
@@ -33,7 +34,7 @@ public class CallChainMapperTest {
private
static
String
ZK_QUORUM
=
"10.1.235.197,10.1.235.198,10.1.235.199"
;
// private static String ZK_QUORUM = "10.1.241.18,10.1.241.19,10.1.241.20";
private
static
String
ZK_CLIENT_PORT
=
"29181"
;
private
static
String
chain_Id
=
"1.0
a2.1453123911750.b3d7400.13582.96.2
"
;
private
static
String
chain_Id
=
"1.0
b.1461569643178.5b468e7.23292.118.68
"
;
//private static String chain_Id = "1.0a2.1453429608422.2701d43.6468.56.1";
private
static
Configuration
configuration
=
null
;
...
...
@@ -48,23 +49,42 @@ public class CallChainMapperTest {
public
static
void
main
(
String
[]
args
)
throws
Exception
{
ConfigInitializer
.
initialize
();
initHBaseClient
();
List
<
Span
>
spanList
=
selectByTraceId
(
chain_Id
);
ChainInfo
chainInfo
=
ChainBuildMapper
.
spanToChainInfo
(
chain_Id
,
spanList
);
List
<
Text
>
chainNodeInfo
=
new
ArrayList
<>();
chainNodeInfo
.
add
(
new
Text
(
new
Gson
().
toJson
(
chainInfo
)));
Text
key
=
new
Text
(
SummaryType
.
RELATIONSHIP
+
"-"
+
TokenGenerator
.
generateTreeToken
(
chainInfo
.
getCallEntrance
())
+
":"
+
chainInfo
.
getCallEntrance
());
String
reduceKey
=
Bytes
.
toString
(
key
.
getBytes
());
int
index
=
reduceKey
.
indexOf
(
":"
);
if
(
index
==
-
1
)
{
return
;
// 2016-04-22/23:57:03 to 2016-05-02/23:47:03
SimpleDateFormat
simpleDateFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd/HH:mm:ss"
);
Date
startDate
=
simpleDateFormat
.
parse
(
"2016-04-22/23:57:03"
);
Date
endDate
=
simpleDateFormat
.
parse
(
"2016-05-02/23:47:03"
);
Scan
scan
=
new
Scan
();
scan
.
setTimeRange
(
startDate
.
getTime
(),
endDate
.
getTime
());
Table
table
=
connection
.
getTable
(
TableName
.
valueOf
(
HBaseTableMetaData
.
TABLE_CALL_CHAIN
.
TABLE_NAME
));
ResultScanner
result
=
table
.
getScanner
(
scan
);
int
count
=
0
;
for
(
Result
result1
:
result
){
count
++;
}
String
summaryTypeAndDateStr
=
reduceKey
.
substring
(
0
,
index
-
1
);
String
entryKey
=
reduceKey
.
substring
(
index
+
1
);
IStatisticsAction
summaryAction
=
SummaryType
.
chooseSummaryAction
(
summaryTypeAndDateStr
,
entryKey
);
new
ChainBuildReducer
().
doReduceAction
(
reduceKey
,
summaryAction
,
chainNodeInfo
.
iterator
());
System
.
out
.
println
(
count
);
// List<Span> spanList = selectByTraceId(chain_Id);
// ChainInfo chainInfo = ChainBuildMapper.spanToChainInfo(chain_Id, spanList);
// List<Text> chainNodeInfo = new ArrayList<>();
// for (ChainNode chainNode : chainInfo.getNodes()) {
// List<Text> value1 = new ArrayList<Text>();
// Text key =new Text(SummaryType.YEAR.getValue() + "-" + yearSimpleDateFormat.format(
// new Date(chainNode.getStartDate())
// ) + ":" + chainInfo.getCallEntrance());
// value1.add(new Text(new Gson().toJson(chainNode)));
//
// String reduceKey = Bytes.toString(key.getBytes());
// int index = reduceKey.indexOf(":");
// if (index == -1) {
// return;
// }
//
// String summaryTypeAndDateStr = reduceKey.substring(0, index);
// String entryKey = reduceKey.substring(index + 1);
// IStatisticsAction summaryAction = SummaryType.chooseSummaryAction(summaryTypeAndDateStr, entryKey);
//
// new ChainBuildReducer().doReduceAction(reduceKey, summaryAction, value1.iterator());
// }
}
public
static
List
<
Span
>
selectByTraceId
(
String
traceId
)
throws
IOException
{
...
...
skywalking-protocol/src/main/java/com/ai/cloud/skywalking/util/SpanLevelIdComparators.java
浏览文件 @
66bca126
...
...
@@ -35,7 +35,7 @@ public class SpanLevelIdComparators {
return
spanTraceLevelId
;
}
p
rivate
static
int
descComparator
(
String
levelId0
,
String
levelId1
)
{
p
ublic
static
int
descComparator
(
String
levelId0
,
String
levelId1
)
{
String
[]
levelId0Array
=
levelId0
.
split
(
"\\."
);
String
[]
levelId1Array
=
levelId1
.
split
(
"\\."
);
int
result
=
-
1
;
...
...
@@ -60,7 +60,7 @@ public class SpanLevelIdComparators {
}
p
rivate
static
int
ascCompare
(
String
levelId0
,
String
levelId1
)
{
p
ublic
static
int
ascCompare
(
String
levelId0
,
String
levelId1
)
{
String
[]
levelId0Array
=
levelId0
.
split
(
"\\."
);
String
[]
levelId1Array
=
levelId1
.
split
(
"\\."
);
int
result
=
-
1
;
...
...
skywalking-webui/src/main/java/com/ai/cloud/skywalking/web/service/impl/AnalysisResultService.java
浏览文件 @
66bca126
package
com.ai.cloud.skywalking.web.service.impl
;
import
com.ai.cloud.skywalking.util.SpanLevelIdComparators
;
import
com.ai.cloud.skywalking.web.dao.inter.ICallChainTreeDao
;
import
com.ai.cloud.skywalking.web.dao.inter.ITypicalCallTreeDao
;
import
com.ai.cloud.skywalking.web.dto.CallChainTree
;
...
...
@@ -73,7 +74,7 @@ public class AnalysisResultService implements IAnalysisResultService {
Collections
.
sort
(
callChainTree
.
getCallChainTreeNodeList
(),
new
Comparator
<
CallChainTreeNode
>()
{
@Override
public
int
compare
(
CallChainTreeNode
o1
,
CallChainTreeNode
o2
)
{
return
o1
.
getTraceLevelId
().
compareTo
(
o2
.
getTraceLevelId
());
return
SpanLevelIdComparators
.
ascCompare
(
o1
.
getTraceLevelId
(),
o2
.
getTraceLevelId
());
}
});
callChainTree
.
beautifulViewPointForShow
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录