From 221378d3654dfc9c2b8a4025594cc77c7fac2f4b Mon Sep 17 00:00:00 2001 From: wusheng Date: Thu, 28 Jan 2016 11:32:32 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0SpanData=E7=9A=84=E6=B3=A8?= =?UTF-8?q?=E9=87=8A=E3=80=82=E8=AF=A6=E7=BB=86=E6=8F=8F=E8=BF=B0=E6=AF=8F?= =?UTF-8?q?=E4=B8=AA=E5=B1=9E=E6=80=A7=E7=9A=84=E4=B8=9A=E5=8A=A1=E5=90=AB?= =?UTF-8?q?=E4=B9=89=E3=80=82=202.=E4=BF=AE=E6=94=B9=E9=83=A8=E5=88=86?= =?UTF-8?q?=E7=B1=BB=E5=90=8D=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ai/cloud/skywalking/protocol/Span.java | 60 ++++++------- .../cloud/skywalking/protocol/SpanData.java | 87 +++++++++++++++++-- .../httpclient/v42x/HttpClientTracing.java | 2 +- ...PointType.java => WebBuriedPointType.java} | 8 +- .../httpclient/v43x/HttpClientTracing.java | 2 +- ...PointType.java => WebBuriedPointType.java} | 8 +- .../plugin/web/SkyWalkingFilter.java | 2 +- ...PointType.java => WebBuriedPointType.java} | 8 +- 8 files changed, 127 insertions(+), 50 deletions(-) rename skywalking-sdk-plugin/httpclient-4.2.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/httpclient/v42x/{WEBBuriedPointType.java => WebBuriedPointType.java} (69%) rename skywalking-sdk-plugin/httpclient-4.3.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/httpclient/v43x/{WEBBuriedPointType.java => WebBuriedPointType.java} (69%) rename skywalking-sdk-plugin/web-plugin/src/main/java/com/ai/cloud/skywalking/plugin/web/{WEBBuriedPointType.java => WebBuriedPointType.java} (69%) diff --git a/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/protocol/Span.java b/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/protocol/Span.java index a62acb7f6..958f4b72f 100644 --- a/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/protocol/Span.java +++ b/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/protocol/Span.java @@ -29,7 +29,7 @@ public class Span extends SpanData { } public Span(String originData) { - String[] fieldValues = originData.split(SPAN_FIELD_SPILT_PATTERN); + String[] fieldValues = originData.split(SPAN_FIELD_SEPARATOR); int index = 0; while (this.setValueByIndex(fieldValues, index)) { @@ -67,7 +67,7 @@ public class Span extends SpanData { break; case 8: exceptionStack = fieldValues[8].trim().replaceAll( - SPAN_ATTR_SPILT_CHARACTER, NEW_LINE_CHARACTER_PATTERN); + NEW_LINE_PLACEHOLDER, OS_NEW_LINE); break; case 9: spanType = fieldValues[9]; @@ -77,7 +77,7 @@ public class Span extends SpanData { break; case 11: businessKey = fieldValues[11].trim().replaceAll( - SPAN_ATTR_SPILT_CHARACTER, NEW_LINE_CHARACTER_PATTERN); + NEW_LINE_PLACEHOLDER, OS_NEW_LINE); break; case 12: processNo = fieldValues[12].trim(); @@ -104,76 +104,76 @@ public class Span extends SpanData { @Override public String toString() { StringBuilder toStringValue = new StringBuilder(); - toStringValue.append(traceId + SPAN_FIELD_SPILT_PATTERN); + toStringValue.append(traceId + SPAN_FIELD_SEPARATOR); if (isNonBlank(parentLevel)) { - toStringValue.append(parentLevel + SPAN_FIELD_SPILT_PATTERN); + toStringValue.append(parentLevel + SPAN_FIELD_SEPARATOR); } else { - toStringValue.append(" " + SPAN_FIELD_SPILT_PATTERN); + toStringValue.append(" " + SPAN_FIELD_SEPARATOR); } - toStringValue.append(levelId + SPAN_FIELD_SPILT_PATTERN); + toStringValue.append(levelId + SPAN_FIELD_SEPARATOR); if (isNonBlank(viewPointId)) { - toStringValue.append(viewPointId + SPAN_FIELD_SPILT_PATTERN); + toStringValue.append(viewPointId + SPAN_FIELD_SEPARATOR); } else { - toStringValue.append(" " + SPAN_FIELD_SPILT_PATTERN); + toStringValue.append(" " + SPAN_FIELD_SEPARATOR); } - toStringValue.append(startDate + SPAN_FIELD_SPILT_PATTERN); - toStringValue.append(cost + SPAN_FIELD_SPILT_PATTERN); + toStringValue.append(startDate + SPAN_FIELD_SEPARATOR); + toStringValue.append(cost + SPAN_FIELD_SEPARATOR); if (isNonBlank(address)) { - toStringValue.append(address + SPAN_FIELD_SPILT_PATTERN); + toStringValue.append(address + SPAN_FIELD_SEPARATOR); } else { - toStringValue.append(" " + SPAN_FIELD_SPILT_PATTERN); + toStringValue.append(" " + SPAN_FIELD_SEPARATOR); } - toStringValue.append(statusCode + SPAN_FIELD_SPILT_PATTERN); + toStringValue.append(statusCode + SPAN_FIELD_SEPARATOR); if (isNonBlank(exceptionStack)) { // 换行符在各个系统中表现不一致, // windows平台的换行符为/r/n // linux平台的换行符为/n toStringValue.append(exceptionStack.replaceAll( - CARRIAGE_RETURN_CHARACTER_PATTERN, "").replaceAll( - NEW_LINE_CHARACTER_PATTERN, SPAN_ATTR_SPILT_CHARACTER) - + SPAN_FIELD_SPILT_PATTERN); + WINDOWS_OS_NEW_LINE_REDUNDANT_CHAR, "").replaceAll( + OS_NEW_LINE, NEW_LINE_PLACEHOLDER) + + SPAN_FIELD_SEPARATOR); } else { - toStringValue.append(" " + SPAN_FIELD_SPILT_PATTERN); + toStringValue.append(" " + SPAN_FIELD_SEPARATOR); } - toStringValue.append(spanType + SPAN_FIELD_SPILT_PATTERN); - toStringValue.append(isReceiver + SPAN_FIELD_SPILT_PATTERN); + toStringValue.append(spanType + SPAN_FIELD_SEPARATOR); + toStringValue.append(isReceiver + SPAN_FIELD_SEPARATOR); if (isNonBlank(businessKey)) { // 换行符在各个系统中表现不一致, // windows平台的换行符为/r/n // linux平台的换行符为/n toStringValue.append(businessKey.replaceAll( - CARRIAGE_RETURN_CHARACTER_PATTERN, "").replaceAll( - NEW_LINE_CHARACTER_PATTERN, SPAN_ATTR_SPILT_CHARACTER) - + SPAN_FIELD_SPILT_PATTERN); + WINDOWS_OS_NEW_LINE_REDUNDANT_CHAR, "").replaceAll( + OS_NEW_LINE, NEW_LINE_PLACEHOLDER) + + SPAN_FIELD_SEPARATOR); } else { - toStringValue.append(" " + SPAN_FIELD_SPILT_PATTERN); + toStringValue.append(" " + SPAN_FIELD_SEPARATOR); } if (isNonBlank(processNo)) { - toStringValue.append(processNo + SPAN_FIELD_SPILT_PATTERN); + toStringValue.append(processNo + SPAN_FIELD_SEPARATOR); } else { - toStringValue.append(" " + SPAN_FIELD_SPILT_PATTERN); + toStringValue.append(" " + SPAN_FIELD_SEPARATOR); } if (isNonBlank(applicationId)) { - toStringValue.append(applicationId + SPAN_FIELD_SPILT_PATTERN); + toStringValue.append(applicationId + SPAN_FIELD_SEPARATOR); } else { - toStringValue.append(" " + SPAN_FIELD_SPILT_PATTERN); + toStringValue.append(" " + SPAN_FIELD_SEPARATOR); } if (isNonBlank(userId)) { - toStringValue.append(userId + SPAN_FIELD_SPILT_PATTERN); + toStringValue.append(userId + SPAN_FIELD_SEPARATOR); } else { - toStringValue.append(" " + SPAN_FIELD_SPILT_PATTERN); + toStringValue.append(" " + SPAN_FIELD_SEPARATOR); } toStringValue.append(callType); diff --git a/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/protocol/SpanData.java b/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/protocol/SpanData.java index 02413e68f..f9e139fa6 100644 --- a/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/protocol/SpanData.java +++ b/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/protocol/SpanData.java @@ -1,28 +1,105 @@ package com.ai.cloud.skywalking.protocol; public abstract class SpanData { + /** + * Span在序列中,各字段间的分隔符 + */ + protected static final String SPAN_FIELD_SEPARATOR = "@~"; + /** + * Span在序列化中,新的换行符 + */ + protected static final String NEW_LINE_PLACEHOLDER = "#~"; + /** + * 字符串中的换行符 + */ + protected static final String OS_NEW_LINE = "\n"; + /** + * windows操作系统的多余换行字符 + */ + protected static final String WINDOWS_OS_NEW_LINE_REDUNDANT_CHAR = "\r"; - protected static final String SPAN_FIELD_SPILT_PATTERN = "@~"; - protected static final String SPAN_ATTR_SPILT_CHARACTER = "#~"; - protected static final String NEW_LINE_CHARACTER_PATTERN = "\n"; - protected static final String CARRIAGE_RETURN_CHARACTER_PATTERN = "\r"; - + /** + * tid,调用链的全局唯一标识 + */ protected String traceId; + /** + * 当前调用链的上级描述
+ * 如当前序号为:0.1.0时,parentLevel=0.1 + */ protected String parentLevel; + /** + * 当前调用链的本机描述
+ * 如当前序号为:0.1.0时,levelId=0 + */ protected int levelId = 0; + /** + * 调用链中单个节点的入口描述
+ * 如:java方法名,调用的RPC地址等等 + */ protected String viewPointId = ""; + /** + * 节点调用开始时间 + */ protected long startDate = System.currentTimeMillis(); + /** + * 节点调用花费时间 + */ protected long cost = 0L; + /** + * 节点调用的发生机器描述
+ * 包含机器名 + IP地址 + */ protected String address = ""; + /** + * 节点调用的状态
+ * 0:成功
+ * 1:异常
+ * 异常判断原则:代码产生exception,并且此exception不在忽略列表中 + */ protected byte statusCode = 0; + /** + * 节点调用的错误堆栈
+ * 堆栈以JAVA的exception为主要判断依据 + */ protected String exceptionStack; + /** + * 节点类型描述
+ * 已字符串的形式描述
+ * 如:java,dubbo等 + */ protected String spanType = ""; + /** + * 节点调用类型描述
+ * @see com.ai.cloud.skywalking.protocol.CallType + */ protected String callType = ""; + /** + * 节点分布式类型
+ * 服务端/客户端 + */ protected boolean isReceiver = false; + /** + * 节点调用过程中的业务字段
+ * 如:业务系统设置的订单号,SQL语句等 + */ protected String businessKey = ""; + /** + * 节点调用的所在进程号 + */ protected String processNo = ""; + /** + * 节点调用所在的系统逻辑名称
+ * 由授权文件指定 + */ protected String applicationId = ""; + /** + * 反序列化时,存储序列化前的字符串原文 + */ protected String originData = ""; + /** + * 用户id
+ * 由授权文件指定 + */ protected String userId; diff --git a/skywalking-sdk-plugin/httpclient-4.2.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/httpclient/v42x/HttpClientTracing.java b/skywalking-sdk-plugin/httpclient-4.2.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/httpclient/v42x/HttpClientTracing.java index 7102dd35a..3080417d2 100644 --- a/skywalking-sdk-plugin/httpclient-4.2.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/httpclient/v42x/HttpClientTracing.java +++ b/skywalking-sdk-plugin/httpclient-4.2.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/httpclient/v42x/HttpClientTracing.java @@ -20,7 +20,7 @@ public class HttpClientTracing { httpRequest.setHeader(traceHearName, "ContextData=" + sender.beforeSend(Identification.newBuilder() .viewPoint(url) - .spanType(WEBBuriedPointType.instance()) + .spanType(WebBuriedPointType.instance()) .build()) .toString()); return executor.execute(); diff --git a/skywalking-sdk-plugin/httpclient-4.2.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/httpclient/v42x/WEBBuriedPointType.java b/skywalking-sdk-plugin/httpclient-4.2.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/httpclient/v42x/WebBuriedPointType.java similarity index 69% rename from skywalking-sdk-plugin/httpclient-4.2.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/httpclient/v42x/WEBBuriedPointType.java rename to skywalking-sdk-plugin/httpclient-4.2.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/httpclient/v42x/WebBuriedPointType.java index 26c4a85a7..15aeeef68 100644 --- a/skywalking-sdk-plugin/httpclient-4.2.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/httpclient/v42x/WEBBuriedPointType.java +++ b/skywalking-sdk-plugin/httpclient-4.2.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/httpclient/v42x/WebBuriedPointType.java @@ -3,13 +3,13 @@ package com.ai.cloud.skywalking.plugin.httpclient.v42x; import com.ai.cloud.skywalking.api.IBuriedPointType; import com.ai.cloud.skywalking.protocol.CallType; -public class WEBBuriedPointType implements IBuriedPointType { +public class WebBuriedPointType implements IBuriedPointType { - private static WEBBuriedPointType webBuriedPointType; + private static WebBuriedPointType webBuriedPointType; public static IBuriedPointType instance() { if (webBuriedPointType == null) { - webBuriedPointType = new WEBBuriedPointType(); + webBuriedPointType = new WebBuriedPointType(); } return webBuriedPointType; @@ -25,7 +25,7 @@ public class WEBBuriedPointType implements IBuriedPointType { return CallType.SYNC; } - private WEBBuriedPointType() { + private WebBuriedPointType() { // Non } } diff --git a/skywalking-sdk-plugin/httpclient-4.3.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/httpclient/v43x/HttpClientTracing.java b/skywalking-sdk-plugin/httpclient-4.3.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/httpclient/v43x/HttpClientTracing.java index 0d8ccb940..2b179ee84 100644 --- a/skywalking-sdk-plugin/httpclient-4.3.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/httpclient/v43x/HttpClientTracing.java +++ b/skywalking-sdk-plugin/httpclient-4.3.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/httpclient/v43x/HttpClientTracing.java @@ -20,7 +20,7 @@ public class HttpClientTracing { httpRequest.setHeader(traceHearName, "ContextData=" + sender.beforeSend(Identification.newBuilder() .viewPoint(url) - .spanType(WEBBuriedPointType.instance()) + .spanType(WebBuriedPointType.instance()) .build()) .toString()); return executor.execute(); diff --git a/skywalking-sdk-plugin/httpclient-4.3.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/httpclient/v43x/WEBBuriedPointType.java b/skywalking-sdk-plugin/httpclient-4.3.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/httpclient/v43x/WebBuriedPointType.java similarity index 69% rename from skywalking-sdk-plugin/httpclient-4.3.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/httpclient/v43x/WEBBuriedPointType.java rename to skywalking-sdk-plugin/httpclient-4.3.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/httpclient/v43x/WebBuriedPointType.java index dde842a6f..e9b0af155 100644 --- a/skywalking-sdk-plugin/httpclient-4.3.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/httpclient/v43x/WEBBuriedPointType.java +++ b/skywalking-sdk-plugin/httpclient-4.3.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/httpclient/v43x/WebBuriedPointType.java @@ -3,13 +3,13 @@ package com.ai.cloud.skywalking.plugin.httpclient.v43x; import com.ai.cloud.skywalking.api.IBuriedPointType; import com.ai.cloud.skywalking.protocol.CallType; -public class WEBBuriedPointType implements IBuriedPointType { +public class WebBuriedPointType implements IBuriedPointType { - private static WEBBuriedPointType webBuriedPointType; + private static WebBuriedPointType webBuriedPointType; public static IBuriedPointType instance() { if (webBuriedPointType == null) { - webBuriedPointType = new WEBBuriedPointType(); + webBuriedPointType = new WebBuriedPointType(); } return webBuriedPointType; @@ -25,7 +25,7 @@ public class WEBBuriedPointType implements IBuriedPointType { return CallType.SYNC; } - private WEBBuriedPointType() { + private WebBuriedPointType() { // Non } } diff --git a/skywalking-sdk-plugin/web-plugin/src/main/java/com/ai/cloud/skywalking/plugin/web/SkyWalkingFilter.java b/skywalking-sdk-plugin/web-plugin/src/main/java/com/ai/cloud/skywalking/plugin/web/SkyWalkingFilter.java index 0bb232738..c75794cda 100644 --- a/skywalking-sdk-plugin/web-plugin/src/main/java/com/ai/cloud/skywalking/plugin/web/SkyWalkingFilter.java +++ b/skywalking-sdk-plugin/web-plugin/src/main/java/com/ai/cloud/skywalking/plugin/web/SkyWalkingFilter.java @@ -70,7 +70,7 @@ public class SkyWalkingFilter implements Filter { private Identification generateIdentification(HttpServletRequest request) { return Identification.newBuilder() .viewPoint(request.getRequestURL().toString()) - .spanType(WEBBuriedPointType.instance()) + .spanType(WebBuriedPointType.instance()) .build(); } diff --git a/skywalking-sdk-plugin/web-plugin/src/main/java/com/ai/cloud/skywalking/plugin/web/WEBBuriedPointType.java b/skywalking-sdk-plugin/web-plugin/src/main/java/com/ai/cloud/skywalking/plugin/web/WebBuriedPointType.java similarity index 69% rename from skywalking-sdk-plugin/web-plugin/src/main/java/com/ai/cloud/skywalking/plugin/web/WEBBuriedPointType.java rename to skywalking-sdk-plugin/web-plugin/src/main/java/com/ai/cloud/skywalking/plugin/web/WebBuriedPointType.java index c9ff0a2b9..2bef953b2 100644 --- a/skywalking-sdk-plugin/web-plugin/src/main/java/com/ai/cloud/skywalking/plugin/web/WEBBuriedPointType.java +++ b/skywalking-sdk-plugin/web-plugin/src/main/java/com/ai/cloud/skywalking/plugin/web/WebBuriedPointType.java @@ -3,13 +3,13 @@ package com.ai.cloud.skywalking.plugin.web; import com.ai.cloud.skywalking.api.IBuriedPointType; import com.ai.cloud.skywalking.protocol.CallType; -public class WEBBuriedPointType implements IBuriedPointType { +public class WebBuriedPointType implements IBuriedPointType { - private static WEBBuriedPointType webBuriedPointType; + private static WebBuriedPointType webBuriedPointType; public static IBuriedPointType instance() { if (webBuriedPointType == null) { - webBuriedPointType = new WEBBuriedPointType(); + webBuriedPointType = new WebBuriedPointType(); } return webBuriedPointType; @@ -25,7 +25,7 @@ public class WEBBuriedPointType implements IBuriedPointType { return CallType.SYNC; } - private WEBBuriedPointType() { + private WebBuriedPointType() { // Non } }