diff --git a/skywalking-api/src/main/java/com/ai/cloud/skywalking/api/IBuriedPointReceiver.java b/skywalking-api/src/main/java/com/ai/cloud/skywalking/api/IBuriedPointReceiver.java index 5119fb155..a08caf00b 100644 --- a/skywalking-api/src/main/java/com/ai/cloud/skywalking/api/IBuriedPointReceiver.java +++ b/skywalking-api/src/main/java/com/ai/cloud/skywalking/api/IBuriedPointReceiver.java @@ -1,9 +1,10 @@ package com.ai.cloud.skywalking.api; import com.ai.cloud.skywalking.model.ContextData; +import com.ai.cloud.skywalking.model.Identification; public interface IBuriedPointReceiver extends IExceptionHandler { void afterReceived(); - void beforeReceived(ContextData contextData); + void beforeReceived(ContextData contextData, Identification id); } diff --git a/skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/LocalBuriedPointSender.java b/skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/LocalBuriedPointSender.java index c3ddcbea6..bec9cd73f 100644 --- a/skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/LocalBuriedPointSender.java +++ b/skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/LocalBuriedPointSender.java @@ -13,7 +13,7 @@ import com.ai.cloud.skywalking.util.ExceptionHandleUtil; public class LocalBuriedPointSender implements IBuriedPointSender { public ContextData beforeSend(Identification id) { - Span spanData = ContextGenerator.generateContextFromThreadLocal(id); + Span spanData = ContextGenerator.generateSpanFromThreadLocal(id); // 3.将新创建的Context存放到ThreadLocal栈中。 Context.append(spanData); // 4 并将当前的Context返回回去 diff --git a/skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/RPCBuriedPointReceiver.java b/skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/RPCBuriedPointReceiver.java index fa17e0cbd..a4584fdf8 100644 --- a/skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/RPCBuriedPointReceiver.java +++ b/skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/RPCBuriedPointReceiver.java @@ -6,6 +6,7 @@ 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; +import com.ai.cloud.skywalking.model.Identification; import com.ai.cloud.skywalking.util.ContextGenerator; import com.ai.cloud.skywalking.util.ExceptionHandleUtil; @@ -20,8 +21,8 @@ public class RPCBuriedPointReceiver implements IBuriedPointReceiver { ContextBuffer.save(spanData); } - public void beforeReceived(ContextData context) { - Span spanData = ContextGenerator.generateContextFromContextData(context); + public void beforeReceived(ContextData context, Identification id) { + Span spanData = ContextGenerator.generateSpanFromContextData(context, id); spanData.setReceiver(true); // 存放到上下文 if (Config.BuriedPoint.PRINTF) { diff --git a/skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/RPCBuriedPointSender.java b/skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/RPCBuriedPointSender.java index df92c5ad2..697372737 100644 --- a/skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/RPCBuriedPointSender.java +++ b/skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/RPCBuriedPointSender.java @@ -13,11 +13,11 @@ import com.ai.cloud.skywalking.util.ExceptionHandleUtil; public class RPCBuriedPointSender implements IBuriedPointSender { public ContextData beforeSend(Identification id) { - Span spanData = ContextGenerator.generateContextFromThreadLocal(id); + Span spanData = ContextGenerator.generateSpanFromThreadLocal(id); // 3.将新创建的Context存放到ThreadLocal栈中。 Context.append(spanData); // 4 并将当前的Context返回回去 - return new ContextData(new Span(spanData.getTraceId(), spanData.getParentLevel())); + return new ContextData(spanData); } public void afterSend() { diff --git a/skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/ThreadFactoryBuriedPointSender.java b/skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/ThreadFactoryBuriedPointSender.java index e049c7124..faf9986c2 100644 --- a/skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/ThreadFactoryBuriedPointSender.java +++ b/skywalking-api/src/main/java/com/ai/cloud/skywalking/buriedpoint/ThreadFactoryBuriedPointSender.java @@ -13,7 +13,7 @@ import com.ai.cloud.skywalking.util.ExceptionHandleUtil; public class ThreadFactoryBuriedPointSender implements IBuriedPointSender { public ContextData beforeSend(Identification id) { - Span spanData = ContextGenerator.generateContextFromThreadLocal(id); + Span spanData = ContextGenerator.generateSpanFromThreadLocal(id); // 3.将新创建的Context存放到ThreadLocal栈中。 Context.append(spanData); // 4 并将当前的Context返回回去 diff --git a/skywalking-api/src/main/java/com/ai/cloud/skywalking/context/Span.java b/skywalking-api/src/main/java/com/ai/cloud/skywalking/context/Span.java index e2aced746..28e055789 100644 --- a/skywalking-api/src/main/java/com/ai/cloud/skywalking/context/Span.java +++ b/skywalking-api/src/main/java/com/ai/cloud/skywalking/context/Span.java @@ -10,23 +10,16 @@ public class Span { private long startDate; private long cost; private String address; - private byte statueCode = 0; + private byte statusCode = 0; private String exceptionStack; - private byte spanType; + private char spanType; private boolean isReceiver = false; - - public Span() { - } + private String businessKey; public Span(String traceId) { this.traceId = traceId; } - public Span(String traceId, String parentLevel) { - this.traceId = traceId; - this.parentLevel = parentLevel; - } - public String getProcessNo() { return processNo; } @@ -97,15 +90,15 @@ public class Span { this.address = address; } - public byte getStatueCode() { - return statueCode; - } + public byte getStatusCode() { + return statusCode; + } - public void setStatueCode(byte statueCode) { - this.statueCode = statueCode; - } + public void setStatusCode(byte statusCode) { + this.statusCode = statusCode; + } - public String getExceptionStack() { + public String getExceptionStack() { return exceptionStack; } @@ -113,11 +106,11 @@ public class Span { this.exceptionStack = exceptionStack; } - public byte getSpanType() { + public char getSpanType() { return spanType; } - public void setSpanType(byte spanType) { + public void setSpanType(char spanType) { this.spanType = spanType; } @@ -129,13 +122,21 @@ public class Span { isReceiver = receiver; } - @Override + public String getBusinessKey() { + return businessKey; + } + + public void setBusinessKey(String businessKey) { + this.businessKey = businessKey; + } + + @Override public String toString() { StringBuffer stringBuffer = new StringBuffer(traceId + "-" + parentLevel + "-" + levelId + "-" + viewPointId + "-" + startDate + "-" + cost + "-" + address + - "-" + statueCode + - "-" + processNo + "-" + spanType + "-" + isReceiver); + "-" + statusCode + + "-" + processNo + "-" + spanType + "-" + isReceiver + "-" + businessKey); if (!StringUtil.isEmpty(exceptionStack)) { diff --git a/skywalking-api/src/main/java/com/ai/cloud/skywalking/model/ContextData.java b/skywalking-api/src/main/java/com/ai/cloud/skywalking/model/ContextData.java index 02e283289..6b711c86a 100644 --- a/skywalking-api/src/main/java/com/ai/cloud/skywalking/model/ContextData.java +++ b/skywalking-api/src/main/java/com/ai/cloud/skywalking/model/ContextData.java @@ -6,34 +6,29 @@ public class ContextData { private String traceId; private String parentLevel; private long levelId; + private char spanType; public ContextData(Span span) { this.traceId = span.getTraceId(); this.parentLevel = span.getParentLevel(); this.levelId = span.getLevelId(); + this.spanType = span.getSpanType(); } public String getTraceId() { return traceId; } - public void setTraceId(String traceId) { - this.traceId = traceId; - } - public String getParentLevel() { return parentLevel; } - public void setParentLevel(String parentLevel) { - this.parentLevel = parentLevel; - } - public long getLevelId() { return levelId; } - public void setLevelId(long levelId) { - this.levelId = levelId; - } + public char getSpanType() { + return spanType; + } + } diff --git a/skywalking-api/src/main/java/com/ai/cloud/skywalking/model/Identification.java b/skywalking-api/src/main/java/com/ai/cloud/skywalking/model/Identification.java index 036f583ed..4e33985b5 100644 --- a/skywalking-api/src/main/java/com/ai/cloud/skywalking/model/Identification.java +++ b/skywalking-api/src/main/java/com/ai/cloud/skywalking/model/Identification.java @@ -3,6 +3,7 @@ package com.ai.cloud.skywalking.model; public class Identification { private String viewPoint; private String businessKey; + private char spanType; public Identification() { //Non @@ -15,6 +16,10 @@ public class Identification { public String getBusinessKey() { return businessKey; } + + public char getSpanType(){ + return spanType; + } public static IdentificationBuilder newBuilder() { return new IdentificationBuilder(); @@ -40,6 +45,11 @@ public class Identification { sendData.businessKey = businessKey; return this; } + + public IdentificationBuilder spanType(char spanType) { + sendData.spanType = spanType; + return this; + } } diff --git a/skywalking-api/src/main/java/com/ai/cloud/skywalking/util/ContextGenerator.java b/skywalking-api/src/main/java/com/ai/cloud/skywalking/util/ContextGenerator.java index 4a235e857..721c992d9 100644 --- a/skywalking-api/src/main/java/com/ai/cloud/skywalking/util/ContextGenerator.java +++ b/skywalking-api/src/main/java/com/ai/cloud/skywalking/util/ContextGenerator.java @@ -12,13 +12,9 @@ public final class ContextGenerator { * @param sendData 视点,业务数据等信息 * @return */ - public static Span generateContextFromThreadLocal(Identification sendData) { - Span spanData = getContextFromThreadLocal(); - // 设置基本属性 - spanData.setStartDate(System.currentTimeMillis()); - spanData.setProcessNo(BuriedPointMachineUtil.getProcessNo()); - spanData.setAddress(BuriedPointMachineUtil.getHostName() + "/" + BuriedPointMachineUtil.getHostIp()); - spanData.setViewPointId(sendData.getViewPoint()); + public static Span generateSpanFromThreadLocal(Identification id) { + Span spanData = getSpanFromThreadLocal(); + initNewSpanData(spanData, id); return spanData; } @@ -29,26 +25,33 @@ public final class ContextGenerator { * @param context * @return */ - public static Span generateContextFromContextData(ContextData context) { + public static Span generateSpanFromContextData(ContextData context, Identification id) { Span spanData; // 校验传入的参数是否为空,如果为空,则新创建一个 if (context == null || StringUtil.isEmpty(context.getTraceId())) { // 不存在,新创建一个Context spanData = new Span(TraceIdGenerator.generate()); - // spanData.setLevelId(0L); } else { // 如果不为空,则将当前的Context存放到上下文 spanData = new Span(context.getTraceId()); spanData.setParentLevel(context.getParentLevel()); } - // 设置基本信息 + initNewSpanData(spanData, id); + + return spanData; + } + + private static void initNewSpanData(Span spanData,Identification id){ + spanData.setSpanType(id.getSpanType()); + spanData.setViewPointId(id.getViewPoint()); + spanData.setBusinessKey(id.getBusinessKey()); + // 设置基本信息 spanData.setStartDate(System.currentTimeMillis()); spanData.setProcessNo(BuriedPointMachineUtil.getProcessNo()); spanData.setAddress(BuriedPointMachineUtil.getHostName() + "/" + BuriedPointMachineUtil.getHostIp()); - return spanData; } - private static Span getContextFromThreadLocal() { + private static Span getSpanFromThreadLocal() { Span span; // 1.获取Context,从ThreadLocal栈中获取中 final Span parentSpan = Context.getLastSpan(); diff --git a/skywalking-api/src/main/java/com/ai/cloud/skywalking/util/ExceptionHandleUtil.java b/skywalking-api/src/main/java/com/ai/cloud/skywalking/util/ExceptionHandleUtil.java index e52550e83..19c619ebc 100644 --- a/skywalking-api/src/main/java/com/ai/cloud/skywalking/util/ExceptionHandleUtil.java +++ b/skywalking-api/src/main/java/com/ai/cloud/skywalking/util/ExceptionHandleUtil.java @@ -33,7 +33,7 @@ public final class ExceptionHandleUtil { Span spanData = Context.getLastSpan(); // 设置错误信息 byte errorCode = 1; - spanData.setStatueCode(errorCode); + spanData.setStatusCode(errorCode); spanData.setExceptionStack(extractExceptionStackMessage(e)); } } diff --git a/skywalking-sdk-plugin/spring-plugin/src/main/java/com/ai/cloud/skywalking/plugin/spring/TracingEnhanceProcessor.java b/skywalking-sdk-plugin/spring-plugin/src/main/java/com/ai/cloud/skywalking/plugin/spring/TracingEnhanceProcessor.java index 515bf79b1..1e16e6a83 100644 --- a/skywalking-sdk-plugin/spring-plugin/src/main/java/com/ai/cloud/skywalking/plugin/spring/TracingEnhanceProcessor.java +++ b/skywalking-sdk-plugin/spring-plugin/src/main/java/com/ai/cloud/skywalking/plugin/spring/TracingEnhanceProcessor.java @@ -104,7 +104,7 @@ public class TracingEnhanceProcessor implements BeanPostProcessor { builder = builder.delete(builder.length() - 1, builder.length()); } builder.append(")"); - builder.append("\").build());"); + builder.append("\").spanType('M').build());"); return builder.toString(); } diff --git a/skywalking-sdk-plugin/src/main/resources/plugin-span-type-notice.txt b/skywalking-sdk-plugin/src/main/resources/plugin-span-type-notice.txt new file mode 100644 index 000000000..c69b14f91 --- /dev/null +++ b/skywalking-sdk-plugin/src/main/resources/plugin-span-type-notice.txt @@ -0,0 +1,5 @@ +#默认埋点类型对照信息 +M:本地JAVA方法 +J:JDBC +W:web servlet调用 +D:dubbo/dubbox调用 \ No newline at end of file