Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
阿信在这里
SkyWalking
提交
756eb176
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,发现更多精彩内容 >>
提交
756eb176
编写于
2月 29, 2016
作者:
wu-sheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1.补充客户端健康检查代码
2.补充部分文档说明
上级
743b36f0
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
45 addition
and
7 deletion
+45
-7
README.md
README.md
+41
-4
skywalking-api/src/main/java/com/ai/cloud/skywalking/sender/DataSender.java
.../main/java/com/ai/cloud/skywalking/sender/DataSender.java
+4
-3
未找到文件。
README.md
浏览文件 @
756eb176
...
...
@@ -144,7 +144,11 @@ INSERT INTO `system_config` (`config_id`,`conf_key`,`conf_value`,`val_type`,`val
暂未提供
## 使用maven发布各插件工程
发布skywalking-sdk-plugin下的各子工程(dubbo-plugin,spring-plugin,web-plugin,jdbc-plugin,httpclient-4.2.x-plugin,httpclient-4.3.x-plugin)
-
发布skywalking-sdk-plugin下的各子工程(dubbo-plugin,spring-plugin,web-plugin,jdbc-plugin,httpclient-4.2.x-plugin,httpclient-4.3.x-plugin)
-
请跳过maven.test环节,避免打包失败
```
properties
-Dmaven.test.skip
=
true
```
## 引入核心SDK
无论试用哪种插件,都必须引入
...
...
@@ -180,21 +184,38 @@ export SKYWALKING_RUN=true
-
设置完成后,可以在当前环境中启动业务应用系统
## 通过扩展log4j或log4j2,在应用日志中,显示trace-id
-
编译并发布skywalking-log/log4j-1.x-plugin和skywalking-log/log4j-2.x-plugin
-
引用所需的日志插件
### log4j
-
编译并发布skywalking-log/log4j-1.x-plugin
```
xml
<dependency>
<groupId>
com.ai.cloud
</groupId>
<artifactId>
skywalking-log4j-1.x-plugin
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
```
-
配置log4j配置文件
```
properties
log4j.appender.A1.layout
=
com.ai.cloud.skywalking.plugin.log.log4j.v1.x.TraceIdPatternLayout
#%x为traceid的转义符
log4j.appender.A1.layout.ConversionPattern
=
[%x] %-d{yyyy-MM-dd HH:mm:ss.SSS} %c %n[%p] %n%m%n
```
### log4j2
-
编译并发布skywalking-log/log4j-2.x-plugin
-
引用所需的日志插件
```
xml
<dependency>
<groupId>
com.ai.cloud
</groupId>
<artifactId>
skywalking-log4j-2.x-plugin
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
```
-
设置log4j和log4j2参考
[
用户指南
](
http://wu-sheng.github.io/sky-walking/sample-code/codeView.html
)
->能通过哪些渠道在应用中发现traceid?
-
配置log4j2配置文件
```
xml
<!--%tid为traceid的转义符-->
<PatternLayout
pattern=
"%d{HH:mm:ss.SSS} [%tid] [%t] %-5level %logger{36} - %msg%n"
/>
```
-
日志示例
```
#tid:N/A,代表环境设置不正确或监控已经关闭
...
...
@@ -203,5 +224,21 @@ export SKYWALKING_RUN=true
[DEBUG] Returning handler method [public org.springframework.web.servlet.ModelAndView com.ai.cloud.skywalking.example.controller.OrderSaveController.save(javax.servlet.http.HttpServletRequest)] TID:1.0a2.1453192613272.2e0c63e.11144.58.1 2016-01-19 16:36:53.288 org.springframework.beans.factory.support.DefaultListableBeanFactory
```
## 如何在追踪日志中记录日志上下文
-
使用sky walking提供的专用API,可以将日志保存到追踪日志中。示例如下:
```
java
String
businessKey
=
"phoneNumber:"
+
phoneNumber
+
",resourceId:"
+
resourceId
+
",mail:"
+
mail
;
BusinessKeyAppender
.
setBusinessKey2Trace
(
businessKey
);
```
## 如何在代码中获取traceid
-
通过API获取traceid
```
java
Tracing
.
getTraceId
();
```
## 还有其他方式获取traceid么?
-
通过web应用的http调用入口,通过返回的header信息,找到此次调用的traceid。前提:此web应用的url,已经使用skywalking进行监控。
# 源代码说明
*
[
HBase存储结构说明
](
https://github.com/wu-sheng/sky-walking/blob/master/skywalking-server/doc/hbase_table_desc.md
)
skywalking-api/src/main/java/com/ai/cloud/skywalking/sender/DataSender.java
浏览文件 @
756eb176
...
...
@@ -59,6 +59,7 @@ public class DataSender implements IDataSender {
bootstrap
.
connect
(
address
).
sync
();
}
catch
(
Exception
e
)
{
status
=
SenderStatus
.
FAILED
;
SDKHealthCollector
.
getCurrentHeathReading
(
"sender"
).
updateData
(
HeathReading
.
INFO
,
"DataSender["
+
socketAddress
+
"] send data successfully."
);
}
}
...
...
@@ -73,15 +74,15 @@ public class DataSender implements IDataSender {
try
{
if
(
channel
!=
null
&&
channel
.
isActive
())
{
channel
.
writeAndFlush
(
data
.
getBytes
());
SDKHealthCollector
.
getCurrentHeathReading
(
"sender"
).
updateData
(
HeathReading
.
INFO
,
"DataSender send data successfully."
);
SDKHealthCollector
.
getCurrentHeathReading
(
"sender"
).
updateData
(
HeathReading
.
INFO
,
"DataSender
["
+
socketAddress
+
"]
send data successfully."
);
return
true
;
}
else
{
DataSenderFactoryWithBalance
.
unRegister
(
this
);
SDKHealthCollector
.
getCurrentHeathReading
(
"sender"
).
updateData
(
HeathReading
.
WARNING
,
"DataSender channel isn't active. unregister sender."
);
SDKHealthCollector
.
getCurrentHeathReading
(
"sender"
).
updateData
(
HeathReading
.
WARNING
,
"DataSender
["
+
socketAddress
+
"]
channel isn't active. unregister sender."
);
}
}
catch
(
Exception
e
)
{
DataSenderFactoryWithBalance
.
unRegister
(
this
);
SDKHealthCollector
.
getCurrentHeathReading
(
"sender"
).
updateData
(
HeathReading
.
WARNING
,
"DataSender channel broken. unregister sender."
);
SDKHealthCollector
.
getCurrentHeathReading
(
"sender"
).
updateData
(
HeathReading
.
WARNING
,
"DataSender
["
+
socketAddress
+
"]
channel broken. unregister sender."
);
}
return
false
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录