diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/BaseInvokeMonitor.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/BaseInvokeMonitor.java index 7b6b63b19..53e9db343 100644 --- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/BaseInvokeMonitor.java +++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/BaseInvokeMonitor.java @@ -25,18 +25,18 @@ public abstract class BaseInvokeMonitor { private static Set exclusiveExceptionSet = null; - protected ContextData beforeInvoke(Span spanData, Identification id) { if (Config.BuriedPoint.PRINTF) { - logger.debug("TraceId:" + spanData.getTraceId() + "\tviewpointId:" + id.getViewPoint() + "\tParentLevelId:" + spanData.getParentLevel() + "\tLevelId:" + spanData - .getLevelId()); + logger.debug("TraceId:" + spanData.getTraceId() + "\tviewpointId:" + id.getViewPoint() + "\tParentLevelId:" + + spanData.getParentLevel() + "\tLevelId:" + spanData.getLevelId()); } if (!spanData.isValidate()) { // 根据SpanData生成RequestSpan,并保存 ContextBuffer.save(RequestSpan.RequestSpanBuilder. - newBuilder(spanData).callType(id.getCallType()).viewPoint(id.getViewPoint()).spanTypeDesc(id.getSpanTypeDesc()).build()); + newBuilder(spanData).callType(id.getCallType()).viewPoint(id.getViewPoint()) + .spanTypeDesc(id.getSpanTypeDesc()).build()); } // 将新创建的Context存放到ThreadLocal栈中。 @@ -46,10 +46,10 @@ public abstract class BaseInvokeMonitor { } protected void afterInvoke() { - afterInvoke(null); + afterInvoke(null); } - protected void afterInvoke(String resultJson) { + protected void afterInvoke(String invokeResult) { try { if (!AuthDesc.isAuth()) return; @@ -60,15 +60,11 @@ public abstract class BaseInvokeMonitor { return; } - // 追加Result JSon - if (resultJson != null){ - spanData.appendParameter("Result", resultJson); - } + spanData.setInvokeResult(invokeResult); if (Config.BuriedPoint.PRINTF) { - logger.debug( - "TraceId-ACK:" + spanData.getTraceId() + "\tParentLevelId:" + spanData.getParentLevel() + "\tLevelId:" + spanData - .getLevelId() + "\tbusinessKey:" + spanData.getParameters()); + logger.debug("TraceId-ACK:" + spanData.getTraceId() + "\tParentLevelId:" + spanData.getParentLevel() + + "\tLevelId:" + spanData.getLevelId() + "\tbusinessKey:" + spanData.getParameters()); } // 生成并保存到缓存 ContextBuffer.save(new AckSpan(spanData)); diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/LocalMethodInvokeMonitor.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/LocalMethodInvokeMonitor.java index cd96235e4..b77844056 100644 --- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/LocalMethodInvokeMonitor.java +++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/LocalMethodInvokeMonitor.java @@ -32,8 +32,8 @@ public class LocalMethodInvokeMonitor extends BaseInvokeMonitor { super.afterInvoke(); } - public void afterInvoke(String resultJsonStr){ - super.afterInvoke(resultJsonStr); + public void afterInvoke(String invokeResult){ + super.afterInvoke(invokeResult); } diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/RPCClientInvokeMonitor.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/RPCClientInvokeMonitor.java index 831d3d560..a6f63310d 100644 --- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/RPCClientInvokeMonitor.java +++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/RPCClientInvokeMonitor.java @@ -18,7 +18,7 @@ public class RPCClientInvokeMonitor extends BaseInvokeMonitor { private static Logger logger = LogManager .getLogger(RPCClientInvokeMonitor.class); - public ContextData traceBeforeInvoke(Identification id) { + public ContextData beforeInvoke(Identification id) { try { if (!AuthDesc.isAuth()) return new EmptyContextData(); diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/RPCServerInvokeMonitor.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/RPCServerInvokeMonitor.java index 532446c1a..1d6c48956 100644 --- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/RPCServerInvokeMonitor.java +++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/RPCServerInvokeMonitor.java @@ -15,7 +15,7 @@ public class RPCServerInvokeMonitor extends BaseInvokeMonitor { private static Logger logger = LogManager .getLogger(RPCServerInvokeMonitor.class); - public void traceBeforeInvoke(ContextData context, Identification id) { + public void beforeInvoke(ContextData context, Identification id) { try { if (!AuthDesc.isAuth()) return; diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/model/Identification.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/model/Identification.java index 62c988257..3a22f6c12 100644 --- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/model/Identification.java +++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/model/Identification.java @@ -45,6 +45,7 @@ public class Identification { public static class IdentificationBuilder { private Identification sendData; + private int parameterIdx = 0; IdentificationBuilder() { sendData = new Identification(); @@ -59,11 +60,18 @@ public class Identification { return this; } - public IdentificationBuilder appendParameter(String key, String value) { + public IdentificationBuilder setParameter(String key, String value) { sendData.parameters.put(key, value); return this; } + public IdentificationBuilder addParameter(String value){ + parameterIdx++; + sendData.parameters.put("_" + parameterIdx, value); + return this; + } + + public IdentificationBuilder businessKey(String businessKey) { sendData.businessKey = businessKey; return this; diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/transformer/ClassTransformer.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/transformer/ClassTransformer.java index d0c7c5c39..3c831e146 100644 --- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/transformer/ClassTransformer.java +++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/transformer/ClassTransformer.java @@ -13,7 +13,7 @@ import java.security.ProtectionDomain; public class ClassTransformer implements ClassFileTransformer { - private Logger logger = LogManager.getLogger(ClassTransformer.class); + private static Logger logger = LogManager.getLogger(ClassTransformer.class); private String interceptorPackage; @@ -62,7 +62,7 @@ public class ClassTransformer implements ClassFileTransformer { } return ctClass.toBytecode(); } catch (Exception e) { - logger.error("Failed to transform class" + className, e); + logger.error("Failed to transform class " + className, e); return classfileBuffer; } diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/transformer/MethodInterceptor.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/transformer/MethodInterceptor.java index 6fcdde96f..84eebf99e 100644 --- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/transformer/MethodInterceptor.java +++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/transformer/MethodInterceptor.java @@ -7,7 +7,17 @@ import com.ai.cloud.skywalking.protocol.common.CallType; import com.google.gson.Gson; public class MethodInterceptor { + public static IBuriedPointType METHOD_INVOKE_BURIEDPOINT = new IBuriedPointType() { + @Override + public String getTypeName() { + return "LOCAL"; + } + @Override + public CallType getCallType() { + return CallType.SYNC; + } + }; public void before(Class originClass, Class[] parametersType, Object[] allArgument, Object superCall, String methodName) { @@ -15,28 +25,19 @@ public class MethodInterceptor { Identification.IdentificationBuilder identificationBuilder = Identification.newBuilder(); identificationBuilder.viewPoint(generateViewPoint(originClass, parametersType, methodName)); appendingParameters(allArgument, identificationBuilder); - identificationBuilder.spanType(new IBuriedPointType() { - @Override - public String getTypeName() { - return "LOCAL"; - } - - @Override - public CallType getCallType() { - return CallType.SYNC; - } - }); + identificationBuilder.spanType(METHOD_INVOKE_BURIEDPOINT); localMethodInvokeMonitor.beforeInvoke(identificationBuilder.build()); } private void appendingParameters(Object[] allArgument, Identification.IdentificationBuilder identificationBuilder) { + Gson gson = new Gson(); for (int i = 0; i < allArgument.length; i++) { try { - identificationBuilder.appendParameter("P" + i, new Gson().toJson(allArgument[i])); + identificationBuilder.addParameter(gson.toJson(allArgument[i])); } catch (Exception e) { - identificationBuilder.appendParameter("P" + i, "Cannot convert parameter"); + identificationBuilder.addParameter("N/A"); } } } @@ -62,7 +63,7 @@ public class MethodInterceptor { try { resultJson = new Gson().toJson(result); } catch (Exception e) { - resultJson = "Can not convert result"; + resultJson = "N/A"; } } diff --git a/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/api/TimeTest.java b/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/api/TimeTest.java index 44bc7ed43..ec3183cbc 100644 --- a/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/api/TimeTest.java +++ b/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/api/TimeTest.java @@ -15,7 +15,7 @@ public class TimeTest { IdentificationBuilder builder = Identification .newBuilder() .viewPoint("1111"); - sender.traceBeforeInvoke(builder.build()); + sender.beforeInvoke(builder.build()); sender.afterInvoke(); } long end = System.currentTimeMillis(); diff --git a/skywalking-collector/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/protocol/Span.java b/skywalking-collector/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/protocol/Span.java index 857bb6a3e..c9a1c9051 100644 --- a/skywalking-collector/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/protocol/Span.java +++ b/skywalking-collector/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/protocol/Span.java @@ -11,6 +11,8 @@ import java.util.logging.Level; import java.util.logging.Logger; public class Span { + private final static String INVOKE_RESULT_PARAMETER_KEY = "_ret"; + private Logger logger = Logger.getLogger(Span.class.getName()); /** * tid,调用链的全局唯一标识 @@ -229,4 +231,8 @@ public class Span { public void appendParameter(String key, String value) { this.parameters.put(key, value); } + + public void setInvokeResult(String result){ + this.parameters.put(INVOKE_RESULT_PARAMETER_KEY, result); + } } diff --git a/skywalking-collector/skywalking-sdk-plugin/dubbo-plugin/src/main/java/com/ai/cloud/skywalking/plugin/dubbo/SWDubboEnhanceFilter.java b/skywalking-collector/skywalking-sdk-plugin/dubbo-plugin/src/main/java/com/ai/cloud/skywalking/plugin/dubbo/SWDubboEnhanceFilter.java index 81c5e95db..ba8af10de 100644 --- a/skywalking-collector/skywalking-sdk-plugin/dubbo-plugin/src/main/java/com/ai/cloud/skywalking/plugin/dubbo/SWDubboEnhanceFilter.java +++ b/skywalking-collector/skywalking-sdk-plugin/dubbo-plugin/src/main/java/com/ai/cloud/skywalking/plugin/dubbo/SWDubboEnhanceFilter.java @@ -24,7 +24,7 @@ public class SWDubboEnhanceFilter implements Filter { if (isConsumer) { RPCClientInvokeMonitor rpcClientInvokeMonitor = new RPCClientInvokeMonitor(); - ContextData contextData = rpcClientInvokeMonitor.traceBeforeInvoke(createIdentification(invoker, invocation)); + ContextData contextData = rpcClientInvokeMonitor.beforeInvoke(createIdentification(invoker, invocation)); String contextDataStr = contextData.toString(); //追加参数 @@ -78,7 +78,7 @@ public class SWDubboEnhanceFilter implements Filter { contextData = new ContextData(contextDataStr); } - rpcServerInvokeMonitor.traceBeforeInvoke(contextData, createIdentification(invoker, invocation)); + rpcServerInvokeMonitor.beforeInvoke(contextData, createIdentification(invoker, invocation)); try { //执行结果 @@ -138,4 +138,4 @@ public class SWDubboEnhanceFilter implements Filter { return null; } -} \ No newline at end of file +} diff --git a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/com/ai/cloud/skywalking/httpClient/v4/plugin/HttpClientExecuteInterceptor.java b/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/com/ai/cloud/skywalking/httpClient/v4/plugin/HttpClientExecuteInterceptor.java index 0bfb22165..6c33426a9 100644 --- a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/com/ai/cloud/skywalking/httpClient/v4/plugin/HttpClientExecuteInterceptor.java +++ b/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/com/ai/cloud/skywalking/httpClient/v4/plugin/HttpClientExecuteInterceptor.java @@ -38,7 +38,7 @@ public class HttpClientExecuteInterceptor implements IntanceMethodsAroundInterce .setHeader( TRACE_HEAD_NAME, "ContextData=" - + rpcClientInvokeMonitor.traceBeforeInvoke( + + rpcClientInvokeMonitor.beforeInvoke( Identification .newBuilder() .viewPoint( diff --git a/skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/CallableStatementTracing.java b/skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/CallableStatementTracing.java index c43e8581c..bfd32fc4b 100644 --- a/skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/CallableStatementTracing.java +++ b/skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/CallableStatementTracing.java @@ -17,7 +17,7 @@ public class CallableStatementTracing { String connectInfo, String method, String sql, Executable exec) throws SQLException { try { - rpcClientInvokeMonitor.traceBeforeInvoke(Identification + rpcClientInvokeMonitor.beforeInvoke(Identification .newBuilder() .viewPoint(connectInfo) .businessKey( diff --git a/skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/ConnectionTracing.java b/skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/ConnectionTracing.java index 10c337262..33fbdb033 100755 --- a/skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/ConnectionTracing.java +++ b/skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/ConnectionTracing.java @@ -17,7 +17,7 @@ public class ConnectionTracing { String connectInfo, String method, String sql, Executable exec) throws SQLException { try { - rpcClientInvokeMonitor.traceBeforeInvoke(Identification + rpcClientInvokeMonitor.beforeInvoke(Identification .newBuilder() .viewPoint(connectInfo) .businessKey( diff --git a/skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/PreparedStatementTracing.java b/skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/PreparedStatementTracing.java index c16e3c1b1..a4b35d211 100644 --- a/skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/PreparedStatementTracing.java +++ b/skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/PreparedStatementTracing.java @@ -18,7 +18,7 @@ public class PreparedStatementTracing { String connectInfo, String method, String sql, Executable exec) throws SQLException { try { - rpcClientInvokeMonitor.traceBeforeInvoke(Identification + rpcClientInvokeMonitor.beforeInvoke(Identification .newBuilder() .viewPoint(connectInfo) .businessKey( diff --git a/skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/StatementTracing.java b/skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/StatementTracing.java index 81b3f6529..4009e63b2 100644 --- a/skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/StatementTracing.java +++ b/skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/StatementTracing.java @@ -17,7 +17,7 @@ public class StatementTracing { String connectInfo, String method, String sql, Executable exec) throws SQLException { try { - rpcClientInvokeMonitor.traceBeforeInvoke(Identification + rpcClientInvokeMonitor.beforeInvoke(Identification .newBuilder() .viewPoint(connectInfo) .businessKey( diff --git a/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/JedisBaseInterceptor.java b/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/JedisBaseInterceptor.java index d44a58767..2686f576d 100644 --- a/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/JedisBaseInterceptor.java +++ b/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/JedisBaseInterceptor.java @@ -30,7 +30,7 @@ public abstract class JedisBaseInterceptor extends SimpleObjectFirstInvokeInterc builder.businessKey("key=" + interceptorContext.allArguments()[0]); } - rpcClientInvokeMonitor.traceBeforeInvoke(builder.build()); + rpcClientInvokeMonitor.beforeInvoke(builder.build()); } } diff --git a/skywalking-collector/skywalking-sdk-plugin/web-plugin/src/main/java/com/ai/cloud/skywalking/plugin/web/SkyWalkingFilter.java b/skywalking-collector/skywalking-sdk-plugin/web-plugin/src/main/java/com/ai/cloud/skywalking/plugin/web/SkyWalkingFilter.java index 62cae8eb7..2944f2d56 100644 --- a/skywalking-collector/skywalking-sdk-plugin/web-plugin/src/main/java/com/ai/cloud/skywalking/plugin/web/SkyWalkingFilter.java +++ b/skywalking-collector/skywalking-sdk-plugin/web-plugin/src/main/java/com/ai/cloud/skywalking/plugin/web/SkyWalkingFilter.java @@ -52,7 +52,7 @@ public class SkyWalkingFilter implements Filter { } } rpcServerInvokeMonitor = new RPCServerInvokeMonitor(); - rpcServerInvokeMonitor.traceBeforeInvoke(contextData, generateIdentification(request)); + rpcServerInvokeMonitor.beforeInvoke(contextData, generateIdentification(request)); filterChain.doFilter(servletRequest, servletResponse); HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;