parent
743b36f085
commit
756eb176b8
45
README.md
45
README.md
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue