Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
阿信在这里
SkyWalking
提交
0f55fc14
S
SkyWalking
项目概览
阿信在这里
/
SkyWalking
与 Fork 源项目一致
Fork自
山不在高_有仙则灵 / SkyWalking
通知
1
Star
0
Fork
0
代码
文件
提交
分支
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,发现更多精彩内容 >>
提交
0f55fc14
编写于
11月 11, 2015
作者:
Z
zhangxin10
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1.增加打印埋点信息和是否发送的配置
2.修改节点层次的实现
上级
71063f08
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
135 addition
and
20 deletion
+135
-20
samples/skywalking-auth/src/main/resources/sky-walking.auth
samples/skywalking-auth/src/main/resources/sky-walking.auth
+4
-0
skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/LocalBuriedPointSender.java
.../cloud/skywalking/buriedpoint/LocalBuriedPointSender.java
+9
-2
skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/RPCBuriedPointReceiver.java
.../cloud/skywalking/buriedpoint/RPCBuriedPointReceiver.java
+5
-0
skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/RPCBuriedPointSender.java
...ai/cloud/skywalking/buriedpoint/RPCBuriedPointSender.java
+10
-3
skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/ThreadBuriedPointSender.java
...cloud/skywalking/buriedpoint/ThreadBuriedPointSender.java
+8
-1
skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/ThreadFactoryBuriedPointSender.java
...kywalking/buriedpoint/ThreadFactoryBuriedPointSender.java
+8
-1
skywalking-api/src/main/java/com/ai/cloud/skywalking/conf/Config.java
...pi/src/main/java/com/ai/cloud/skywalking/conf/Config.java
+8
-0
skywalking-api/src/main/java/com/ai/cloud/skywalking/conf/ConfigInitializer.java
.../java/com/ai/cloud/skywalking/conf/ConfigInitializer.java
+2
-0
skywalking-api/src/main/java/com/ai/cloud/skywalking/context/Context.java
...rc/main/java/com/ai/cloud/skywalking/context/Context.java
+72
-5
skywalking-api/src/main/java/com/ai/cloud/skywalking/context/Span.java
...i/src/main/java/com/ai/cloud/skywalking/context/Span.java
+7
-4
skywalking-api/src/main/java/com/ai/cloud/skywalking/util/ContextGenerator.java
...n/java/com/ai/cloud/skywalking/util/ContextGenerator.java
+2
-4
未找到文件。
samples/skywalking-auth/src/main/resources/sky-walking.auth
浏览文件 @
0f55fc14
...
...
@@ -10,5 +10,9 @@ buffer.pool_max_length=5
sender.max_buffer_data_size=1000
#最大发送者的连接数阀比例
sender.send_connection_threshold=1
#是否打印数据
buriedpoint.printf=true
#是否开启发送消息
sender.off=true
#发送服务端配置
sender.sender_servers=127.0.0.1:34000
\ No newline at end of file
skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/LocalBuriedPointSender.java
浏览文件 @
0f55fc14
...
...
@@ -2,6 +2,7 @@ package com.ai.cloud.skywalking.buriedpoint;
import
com.ai.cloud.skywalking.api.IBuriedPointSender
;
import
com.ai.cloud.skywalking.buffer.ContextBuffer
;
import
com.ai.cloud.skywalking.conf.Config
;
import
com.ai.cloud.skywalking.context.Context
;
import
com.ai.cloud.skywalking.context.Span
;
import
com.ai.cloud.skywalking.model.ContextData
;
...
...
@@ -21,14 +22,20 @@ public class LocalBuriedPointSender implements IBuriedPointSender {
public
void
afterSend
()
{
// 弹出上下文的栈顶中的元素
Span
spanData
=
Context
.
getOrCreate
().
removeLastSpan
();
Span
spanData
=
Context
.
getOrCreate
().
removeLastSpan
();
if
(
spanData
==
null
)
{
return
;
}
// 填上必要信息
spanData
.
setCost
(
System
.
currentTimeMillis
()
-
spanData
.
getStartDate
());
if
(
Config
.
BuriedPoint
.
PRINTF
)
{
System
.
out
.
println
(
"viewpointId:"
+
spanData
.
getViewPointId
()
+
"\tParentLevelId:"
+
spanData
.
getParentLevel
()
+
"\tLevelId:"
+
spanData
.
getLevelId
());
}
// 存放到本地发送进程中
ContextBuffer
.
save
(
spanData
);
if
(!
Config
.
Sender
.
OFF
)
{
ContextBuffer
.
save
(
spanData
);
}
}
public
void
handleException
(
Throwable
e
)
{
...
...
skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/RPCBuriedPointReceiver.java
浏览文件 @
0f55fc14
...
...
@@ -2,6 +2,7 @@ package com.ai.cloud.skywalking.buriedpoint;
import
com.ai.cloud.skywalking.api.IBuriedPointReceiver
;
import
com.ai.cloud.skywalking.buffer.ContextBuffer
;
import
com.ai.cloud.skywalking.conf.Config
;
import
com.ai.cloud.skywalking.context.Context
;
import
com.ai.cloud.skywalking.context.Span
;
import
com.ai.cloud.skywalking.model.ContextData
;
...
...
@@ -22,6 +23,10 @@ public class RPCBuriedPointReceiver implements IBuriedPointReceiver {
public
void
beforeReceived
(
ContextData
context
)
{
Span
spanData
=
ContextGenerator
.
generateContextFromContextData
(
context
);
// 存放到上下文
if
(
Config
.
BuriedPoint
.
PRINTF
)
{
System
.
out
.
println
(
"viewpointId:"
+
spanData
.
getViewPointId
()
+
"\tParentLevelId:"
+
spanData
.
getParentLevel
()
+
"\tLevelId:"
+
spanData
.
getLevelId
());
}
Context
.
getOrCreate
().
append
(
spanData
);
}
...
...
skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/RPCBuriedPointSender.java
浏览文件 @
0f55fc14
...
...
@@ -2,6 +2,7 @@ package com.ai.cloud.skywalking.buriedpoint;
import
com.ai.cloud.skywalking.api.IBuriedPointSender
;
import
com.ai.cloud.skywalking.buffer.ContextBuffer
;
import
com.ai.cloud.skywalking.conf.Config
;
import
com.ai.cloud.skywalking.context.Context
;
import
com.ai.cloud.skywalking.context.Span
;
import
com.ai.cloud.skywalking.model.ContextData
;
...
...
@@ -16,8 +17,8 @@ public class RPCBuriedPointSender implements IBuriedPointSender {
// 3.将新创建的Context存放到ThreadLocal栈中。
Context
.
getOrCreate
().
append
(
spanData
);
// 4 并将当前的Context返回回去
return
new
ContextData
(
new
Span
(
spanData
.
getTraceId
(),
spanData
.
getParentLevel
()
+
"."
+
spanData
.
getLevelId
()));
return
new
ContextData
(
new
Span
(
spanData
.
getTraceId
(),
spanData
.
getParentLevel
()
/*
+
"." + spanData.getLevelId()
*/
));
}
public
void
afterSend
()
{
...
...
@@ -28,8 +29,14 @@ public class RPCBuriedPointSender implements IBuriedPointSender {
}
// 填上必要信息
spanData
.
setCost
(
System
.
currentTimeMillis
()
-
spanData
.
getStartDate
());
if
(
Config
.
BuriedPoint
.
PRINTF
)
{
System
.
out
.
println
(
"viewpointId:"
+
spanData
.
getViewPointId
()
+
"\tParentLevelId:"
+
spanData
.
getParentLevel
()
+
"\tLevelId:"
+
spanData
.
getLevelId
());
}
// 存放到本地发送进程中
ContextBuffer
.
save
(
spanData
);
if
(!
Config
.
Sender
.
OFF
)
{
ContextBuffer
.
save
(
spanData
);
}
}
public
void
handleException
(
Throwable
e
)
{
...
...
skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/ThreadBuriedPointSender.java
浏览文件 @
0f55fc14
...
...
@@ -2,6 +2,7 @@ package com.ai.cloud.skywalking.buriedpoint;
import
com.ai.cloud.skywalking.api.IBuriedPointSender
;
import
com.ai.cloud.skywalking.buffer.ContextBuffer
;
import
com.ai.cloud.skywalking.conf.Config
;
import
com.ai.cloud.skywalking.context.Context
;
import
com.ai.cloud.skywalking.context.Span
;
import
com.ai.cloud.skywalking.model.ContextData
;
...
...
@@ -47,8 +48,14 @@ public class ThreadBuriedPointSender implements IBuriedPointSender {
}
// 填上必要信息
span
.
setCost
(
System
.
currentTimeMillis
()
-
span
.
getStartDate
());
if
(
Config
.
BuriedPoint
.
PRINTF
)
{
System
.
out
.
println
(
"viewpointId:"
+
span
.
getViewPointId
()
+
"\tParentLevelId:"
+
span
.
getParentLevel
()
+
"\tLevelId:"
+
span
.
getLevelId
());
}
// 存放到本地发送进程中
ContextBuffer
.
save
(
span
);
if
(!
Config
.
Sender
.
OFF
)
{
ContextBuffer
.
save
(
span
);
}
}
public
void
handleException
(
Throwable
th
)
{
...
...
skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/ThreadFactoryBuriedPointSender.java
浏览文件 @
0f55fc14
...
...
@@ -2,6 +2,7 @@ package com.ai.cloud.skywalking.buriedpoint;
import
com.ai.cloud.skywalking.api.IBuriedPointSender
;
import
com.ai.cloud.skywalking.buffer.ContextBuffer
;
import
com.ai.cloud.skywalking.conf.Config
;
import
com.ai.cloud.skywalking.context.Context
;
import
com.ai.cloud.skywalking.context.Span
;
import
com.ai.cloud.skywalking.model.ContextData
;
...
...
@@ -27,8 +28,14 @@ public class ThreadFactoryBuriedPointSender implements IBuriedPointSender {
}
// 填上必要信息
spanData
.
setCost
(
System
.
currentTimeMillis
()
-
spanData
.
getStartDate
());
if
(
Config
.
BuriedPoint
.
PRINTF
)
{
System
.
out
.
println
(
"viewpointId:"
+
spanData
.
getViewPointId
()
+
"\tParentLevelId:"
+
spanData
.
getParentLevel
()
+
"\tLevelId:"
+
spanData
.
getLevelId
());
}
// 存放到本地发送进程中
ContextBuffer
.
save
(
spanData
);
if
(!
Config
.
Sender
.
OFF
)
{
ContextBuffer
.
save
(
spanData
);
}
}
public
void
handleException
(
Throwable
th
)
{
...
...
skywalking-api/src/main/java/com/ai/cloud/skywalking/conf/Config.java
浏览文件 @
0f55fc14
package
com.ai.cloud.skywalking.conf
;
public
class
Config
{
public
static
class
BuriedPoint
{
public
static
boolean
PRINTF
=
true
;
}
public
static
class
Consumer
{
//最大消费线程数
public
static
int
MAX_CONSUMER
=
2
;
...
...
@@ -25,5 +30,8 @@ public class Config {
// 发送服务端配置
public
static
String
SENDER_SERVERS
;
// 是否开启发送
public
static
boolean
OFF
=
false
;
}
}
\ No newline at end of file
skywalking-api/src/main/java/com/ai/cloud/skywalking/conf/ConfigInitializer.java
浏览文件 @
0f55fc14
...
...
@@ -25,6 +25,8 @@ public class ConfigInitializer {
field
.
set
(
null
,
value
);
if
(
field
.
getType
().
equals
(
long
.
class
))
field
.
set
(
null
,
Long
.
valueOf
(
value
));
if
(
field
.
getType
().
equals
(
boolean
.
class
))
field
.
set
(
null
,
Boolean
.
valueOf
(
value
));
}
}
}
...
...
skywalking-api/src/main/java/com/ai/cloud/skywalking/context/Context.java
浏览文件 @
0f55fc14
package
com.ai.cloud.skywalking.context
;
import
java.util.Stack
;
import
java.util.concurrent.atomic.AtomicInteger
;
/**
*/
public
class
Context
{
private
static
ThreadLocal
<
SpanStack
>
spans
=
new
ThreadLocal
<
SpanStack
>();
//private static ThreadLocal<SpanStack> nodes = new ThreadLocal<SpanStack>();
private
static
ThreadLocal
<
SpanNodeStack
>
nodes
=
new
ThreadLocal
<
SpanNodeStack
>();
private
static
Context
context
;
private
Context
()
{
spans
.
set
(
new
Span
Stack
());
nodes
.
set
(
new
SpanNode
Stack
());
}
public
void
append
(
Span
span
)
{
span
s
.
get
().
push
(
span
);
node
s
.
get
().
push
(
span
);
}
public
Span
getLastSpan
()
{
return
span
s
.
get
().
peek
();
return
node
s
.
get
().
peek
();
}
public
Span
removeLastSpan
()
{
return
span
s
.
get
().
pop
();
return
node
s
.
get
().
pop
();
}
public
static
Context
getOrCreate
()
{
...
...
@@ -34,12 +36,14 @@ public class Context {
static
class
SpanStack
{
private
Stack
<
Span
>
spans
=
new
Stack
<
Span
>();
private
AtomicInteger
levelId
=
new
AtomicInteger
();
public
Span
pop
()
{
return
spans
.
pop
();
}
public
void
push
(
Span
span
)
{
span
.
setLevelId
(
levelId
.
getAndDecrement
());
spans
.
push
(
span
);
}
...
...
@@ -59,4 +63,67 @@ public class Context {
}
}
static
class
SpanNodeStack
{
private
Stack
<
SpanNode
>
spans
=
new
Stack
<
SpanNode
>();
public
Span
pop
()
{
Span
span
=
spans
.
pop
().
getData
();
if
(!
isEmpty
())
{
spans
.
peek
().
getLevelId
().
incrementAndGet
();
}
return
span
;
}
public
void
push
(
Span
span
)
{
if
(!
isEmpty
())
{
spans
.
push
(
new
SpanNode
(
span
,
spans
.
peek
().
getLevelId
().
get
()));
}
else
{
spans
.
push
(
new
SpanNode
(
span
));
}
}
public
Span
peek
()
{
if
(
spans
.
isEmpty
())
{
return
null
;
}
return
spans
.
peek
().
getData
();
}
public
boolean
isEmpty
()
{
return
spans
.
isEmpty
();
}
}
static
class
SpanNode
{
private
Span
data
;
private
AtomicInteger
levelId
=
new
AtomicInteger
();
public
SpanNode
(
Span
data
)
{
this
.
data
=
data
;
this
.
data
.
setLevelId
(
levelId
.
get
());
}
public
SpanNode
(
Span
data
,
int
levelId
)
{
this
.
data
=
data
;
this
.
data
.
setLevelId
(
levelId
);
}
public
Span
getData
()
{
return
data
;
}
public
void
setData
(
Span
data
)
{
this
.
data
=
data
;
}
public
AtomicInteger
getLevelId
()
{
return
levelId
;
}
public
void
setLevelId
(
AtomicInteger
levelId
)
{
this
.
levelId
=
levelId
;
}
}
}
skywalking-api/src/main/java/com/ai/cloud/skywalking/context/Span.java
浏览文件 @
0f55fc14
...
...
@@ -5,7 +5,7 @@ import com.ai.cloud.skywalking.util.StringUtil;
public
class
Span
{
private
String
traceId
;
private
String
parentLevel
;
private
long
levelId
;
private
int
levelId
;
private
String
viewPointId
;
private
long
startDate
;
private
long
cost
;
...
...
@@ -60,18 +60,21 @@ public class Span {
}
public
String
getParentLevel
()
{
return
parentLevel
;
if
(!
StringUtil
.
isEmpty
(
parentLevel
))
{
return
parentLevel
;
}
return
""
;
}
public
void
setParentLevel
(
String
parentLevel
)
{
this
.
parentLevel
=
parentLevel
;
}
public
long
getLevelId
()
{
public
int
getLevelId
()
{
return
levelId
;
}
public
void
setLevelId
(
long
levelId
)
{
public
void
setLevelId
(
int
levelId
)
{
this
.
levelId
=
levelId
;
}
...
...
skywalking-api/src/main/java/com/ai/cloud/skywalking/util/ContextGenerator.java
浏览文件 @
0f55fc14
...
...
@@ -35,7 +35,7 @@ public final class ContextGenerator {
if
(
context
==
null
||
StringUtil
.
isEmpty
(
context
.
getTraceId
()))
{
// 不存在,新创建一个Context
spanData
=
new
Span
(
TraceIdGenerator
.
generate
());
spanData
.
setLevelId
(
0L
);
//
spanData.setLevelId(0L);
}
else
{
// 如果不为空,则将当前的Context存放到上下文
spanData
=
new
Span
(
context
.
getTraceId
());
...
...
@@ -56,12 +56,10 @@ public final class ContextGenerator {
if
(
parentSpan
==
null
)
{
// 不存在,新创建一个Context
span
=
new
Span
(
TraceIdGenerator
.
generate
());
span
.
setLevelId
(
0L
);
}
else
{
// 根据ParentContextData的TraceId和RPCID
span
=
new
Span
(
parentSpan
.
getTraceId
());
span
.
setParentLevel
(
parentSpan
.
getParentLevel
());
span
.
setLevelId
(
parentSpan
.
getLevelId
()
+
1
);
span
.
setParentLevel
(
parentSpan
.
getParentLevel
()
+
"."
+
parentSpan
.
getLevelId
());
}
return
span
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录