From c98b41b08355333803fdbe5997ebdb79bf605427 Mon Sep 17 00:00:00 2001 From: wusheng Date: Sat, 26 Nov 2016 18:53:25 +0800 Subject: [PATCH] on rebuild javaagent. --- pom.xml | 2 +- .../a/eye/skywalking/logging/api/ILog.java | 10 +- .../skywalking/logging/api/NoopLogger.java | 15 ++ .../logging/impl/log4j2/Log4j2Logger.java | 15 ++ .../skywalking-registry/pom.xml | 5 - skywalking-network/src/main/proto/Spans.proto | 8 +- skywalking-sniffer/pom.xml | 5 + skywalking-sniffer/skywalking-agent/pom.xml | 23 +- .../eye/skywalking/agent/SkyWalkingAgent.java | 17 +- skywalking-sniffer/skywalking-api/pom.xml | 201 ++++++++------- .../a/eye/skywalking/buffer/BufferGroup.java | 125 --------- .../a/eye/skywalking/buffer/BufferPool.java | 25 -- .../eye/skywalking/buffer/ContextBuffer.java | 26 -- .../com/a/eye/skywalking/conf/AuthDesc.java | 8 +- .../skywalking/conf/ConfigInitializer.java | 14 +- .../com/a/eye/skywalking/conf/Constants.java | 2 +- .../invoke/monitor/BaseInvokeMonitor.java | 20 +- .../monitor/LocalMethodInvokeMonitor.java | 6 +- .../monitor/RPCClientInvokeMonitor.java | 28 +- .../monitor/RPCServerInvokeMonitor.java | 8 +- .../skywalking/logging/EasyLogResolver.java | 14 + .../logging/{Logger.java => EasyLogger.java} | 110 ++++---- .../a/eye/skywalking/logging/LogManager.java | 11 - .../eye/skywalking/logging/LoggerManager.java | 11 - .../a/eye/skywalking/model/ContextData.java | 33 ++- .../java/com/a/eye/skywalking/model/Span.java | 41 ++- .../com/a/eye/skywalking/model/SpanType.java | 10 + .../AbstractClassEnhancePluginDefine.java | 6 +- .../skywalking/plugin/PluginBootstrap.java | 12 +- .../plugin/PluginResourcesResolver.java | 10 +- .../skywalking/plugin/TracingBootstrap.java | 8 +- .../enhance/ClassConstructorInterceptor.java | 6 +- .../enhance/ClassEnhancePluginDefine.java | 12 +- .../ClassInstanceMethodsInterceptor.java | 10 +- .../ClassStaticMethodsInterceptor.java | 10 +- .../loader/InterceptorInstanceLoader.java | 10 +- .../protocol/util/BuriedPointMachineUtil.java | 12 +- .../protocol/util/TraceIdGenerator.java | 61 +++-- .../selfexamination/HeathReading.java | 72 ------ .../selfexamination/SDKHealthCollector.java | 82 ------ .../a/eye/skywalking/sender/DataSender.java | 120 --------- .../sender/DataSenderFactoryWithBalance.java | 239 ------------------ .../sender/DataSenderWithCopies.java | 69 ----- .../a/eye/skywalking/sender/IDataSender.java | 9 - .../test/a/eye/cloud/logging/LoggingTest.java | 10 +- .../pom.xml | 19 -- .../CustomLocalMethodInterceptor.java | 116 --------- .../localmethod/CustomLocalSpanType.java | 16 -- .../define/CustomLocalMethodPluginDefine.java | 37 --- .../src/main/resources/skywalking-plugin.def | 1 - .../CustomLocalMethodPluginTest.java | 28 -- .../java/test/com/ai/test/TestObject.java | 11 - .../test/java/test/com/ai/test/TestParam.java | 7 - .../src/test/resources/sky-walking.auth | 54 ---- .../skywalking-sdk-plugin/pom.xml | 1 - .../tomcat78x/define/TomcatPluginDefine.java | 4 +- .../skywalking-test-api/pom.xml | 6 + .../data/spandata/RequestSpanData.java | 2 +- 58 files changed, 454 insertions(+), 1399 deletions(-) delete mode 100644 skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/buffer/BufferGroup.java delete mode 100644 skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/buffer/BufferPool.java delete mode 100644 skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/buffer/ContextBuffer.java create mode 100644 skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/logging/EasyLogResolver.java rename skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/logging/{Logger.java => EasyLogger.java} (58%) delete mode 100644 skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/logging/LogManager.java delete mode 100644 skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/logging/LoggerManager.java create mode 100644 skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/model/SpanType.java delete mode 100644 skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/selfexamination/HeathReading.java delete mode 100644 skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/selfexamination/SDKHealthCollector.java delete mode 100644 skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/sender/DataSender.java delete mode 100644 skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/sender/DataSenderFactoryWithBalance.java delete mode 100644 skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/sender/DataSenderWithCopies.java delete mode 100644 skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/sender/IDataSender.java delete mode 100644 skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/pom.xml delete mode 100644 skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/main/java/com/a/eye/skywalking/plugin/custom/localmethod/CustomLocalMethodInterceptor.java delete mode 100644 skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/main/java/com/a/eye/skywalking/plugin/custom/localmethod/CustomLocalSpanType.java delete mode 100644 skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/main/java/com/a/eye/skywalking/plugin/custom/localmethod/define/CustomLocalMethodPluginDefine.java delete mode 100644 skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/main/resources/skywalking-plugin.def delete mode 100644 skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/test/java/com/a/eye/skywalking/plugin/custom/localmethod/CustomLocalMethodPluginTest.java delete mode 100644 skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/test/java/test/com/ai/test/TestObject.java delete mode 100644 skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/test/java/test/com/ai/test/TestParam.java delete mode 100644 skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/test/resources/sky-walking.auth diff --git a/pom.xml b/pom.xml index 01f4c9929..9b7dd6318 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ skywalking-commons skywalking-alarm - + skywalking-sniffer skywalking-storage-center skywalking-opentracing-kit diff --git a/skywalking-commons/skywalking-logging/skywalking-logging-api/src/main/java/com/a/eye/skywalking/logging/api/ILog.java b/skywalking-commons/skywalking-logging/skywalking-logging-api/src/main/java/com/a/eye/skywalking/logging/api/ILog.java index 54956ef14..a6b1cdcd7 100644 --- a/skywalking-commons/skywalking-logging/skywalking-logging-api/src/main/java/com/a/eye/skywalking/logging/api/ILog.java +++ b/skywalking-commons/skywalking-logging/skywalking-logging-api/src/main/java/com/a/eye/skywalking/logging/api/ILog.java @@ -1,7 +1,5 @@ package com.a.eye.skywalking.logging.api; -import java.util.Objects; - /** * Created by xin on 2016/11/10. */ @@ -16,10 +14,16 @@ public interface ILog { void error(String format, Throwable e); - void error(String format, Object argument, Throwable e); + void error(String format, Object arguments, Throwable e); boolean isDebugEnable(); + boolean isInfoEnable(); + + boolean isWarnEnable(); + + boolean isErrorEnable(); + void debug(String format); void debug(String format, Object... arguments); diff --git a/skywalking-commons/skywalking-logging/skywalking-logging-api/src/main/java/com/a/eye/skywalking/logging/api/NoopLogger.java b/skywalking-commons/skywalking-logging/skywalking-logging-api/src/main/java/com/a/eye/skywalking/logging/api/NoopLogger.java index 20b7dc85c..c3922a296 100644 --- a/skywalking-commons/skywalking-logging/skywalking-logging-api/src/main/java/com/a/eye/skywalking/logging/api/NoopLogger.java +++ b/skywalking-commons/skywalking-logging/skywalking-logging-api/src/main/java/com/a/eye/skywalking/logging/api/NoopLogger.java @@ -41,6 +41,21 @@ public class NoopLogger implements ILog{ return false; } + @Override + public boolean isInfoEnable() { + return false; + } + + @Override + public boolean isWarnEnable() { + return false; + } + + @Override + public boolean isErrorEnable() { + return false; + } + @Override public void debug(String format) { diff --git a/skywalking-commons/skywalking-logging/skywalking-logging-impl-log4j2/src/main/java/com/a/eye/skywalking/logging/impl/log4j2/Log4j2Logger.java b/skywalking-commons/skywalking-logging/skywalking-logging-impl-log4j2/src/main/java/com/a/eye/skywalking/logging/impl/log4j2/Log4j2Logger.java index cb6327c64..b8c68e3e5 100644 --- a/skywalking-commons/skywalking-logging/skywalking-logging-impl-log4j2/src/main/java/com/a/eye/skywalking/logging/impl/log4j2/Log4j2Logger.java +++ b/skywalking-commons/skywalking-logging/skywalking-logging-impl-log4j2/src/main/java/com/a/eye/skywalking/logging/impl/log4j2/Log4j2Logger.java @@ -48,6 +48,21 @@ public class Log4j2Logger implements ILog { return logger.isDebugEnabled(); } + @Override + public boolean isInfoEnable() { + return logger.isInfoEnabled(); + } + + @Override + public boolean isWarnEnable() { + return logger.isWarnEnabled(); + } + + @Override + public boolean isErrorEnable() { + return logger.isErrorEnabled(); + } + @Override public void debug(String format) { logger.debug(format); diff --git a/skywalking-commons/skywalking-registry/pom.xml b/skywalking-commons/skywalking-registry/pom.xml index 5ec2da6b2..667fb8b20 100644 --- a/skywalking-commons/skywalking-registry/pom.xml +++ b/skywalking-commons/skywalking-registry/pom.xml @@ -23,11 +23,6 @@ skywalking-logging-api ${project.version} - - com.a.eye - skywalking-logging-impl-log4j2 - ${project.version} - org.apache.zookeeper zookeeper diff --git a/skywalking-network/src/main/proto/Spans.proto b/skywalking-network/src/main/proto/Spans.proto index 4d1024b09..d275bc87d 100644 --- a/skywalking-network/src/main/proto/Spans.proto +++ b/skywalking-network/src/main/proto/Spans.proto @@ -11,6 +11,8 @@ message AckSpan { int32 statusCode = 5; string exceptionStack = 6; string viewpointId = 7; + string userId = 8; + string applicationId = 9; } message RequestSpan { @@ -25,7 +27,7 @@ message RequestSpan { string applicationId = 9; string userId = 10; string bussinessKey = 11; - string processNo = 13; + int32 processNo = 13; string address = 14; } @@ -43,10 +45,10 @@ message Span{ string exceptionStack = 7; string spanTypeDesc = 8; string callType = 9; - uint32 spanType = 10; + int32 spanType = 10; string applicationId = 11; string userId = 12; string businessKey = 13; - string processNo = 14; + int32 processNo = 14; string address = 15; } diff --git a/skywalking-sniffer/pom.xml b/skywalking-sniffer/pom.xml index 6fd424da7..885bf00c4 100644 --- a/skywalking-sniffer/pom.xml +++ b/skywalking-sniffer/pom.xml @@ -19,4 +19,9 @@ skywalking-test-api + + 1.6 + + + diff --git a/skywalking-sniffer/skywalking-agent/pom.xml b/skywalking-sniffer/skywalking-agent/pom.xml index 295be5a8f..63f5e27e6 100644 --- a/skywalking-sniffer/skywalking-agent/pom.xml +++ b/skywalking-sniffer/skywalking-agent/pom.xml @@ -16,13 +16,13 @@ UTF-8 + com.a.eye.skywalking.api.dependencies com.a.eye.skywalking.agent.SkyWalkingAgent net.bytebuddy - com.a.eye.skywalking.api.dependencies.net.bytebuddy - io.netty - com.a.eye.skywalking.api.dependencies.io.netty - com.google.gson - com.a.eye.skywalking.api.dependencies.com.google.gson + ${shade.package}.${shade.net.bytebuddy.source}} + + com.lmax.disruptor + ${shade.package}.${shade.com.lmax.disruptor.source} @@ -51,11 +51,6 @@ tomcat-7.x-8.x-plugin 2.0-2016 - - com.a.eye - custom-local-method-interceptor-plugin - 2.0-2016 - @@ -91,12 +86,8 @@ ${shade.net.bytebuddy.target} - ${shade.io.netty.source} - ${shade.io.netty.target} - - - ${shade.com.google.gson.source} - ${shade.com.google.gson.target} + ${shade.com.lmax.disruptor.source} + ${shade.com.lmax.disruptor.target} diff --git a/skywalking-sniffer/skywalking-agent/src/main/java/com/a/eye/skywalking/agent/SkyWalkingAgent.java b/skywalking-sniffer/skywalking-agent/src/main/java/com/a/eye/skywalking/agent/SkyWalkingAgent.java index ccc8d2189..fff88127e 100644 --- a/skywalking-sniffer/skywalking-agent/src/main/java/com/a/eye/skywalking/agent/SkyWalkingAgent.java +++ b/skywalking-sniffer/skywalking-agent/src/main/java/com/a/eye/skywalking/agent/SkyWalkingAgent.java @@ -3,8 +3,9 @@ package com.a.eye.skywalking.agent; import com.a.eye.skywalking.agent.junction.SkyWalkingEnhanceMatcher; import com.a.eye.skywalking.conf.AuthDesc; import com.a.eye.skywalking.conf.Config; -import com.a.eye.skywalking.logging.LogManager; -import com.a.eye.skywalking.logging.Logger; +import com.a.eye.skywalking.logging.EasyLogResolver; +import com.a.eye.skywalking.logging.api.ILog; +import com.a.eye.skywalking.logging.api.LogManager; import com.a.eye.skywalking.plugin.AbstractClassEnhancePluginDefine; import com.a.eye.skywalking.plugin.PluginBootstrap; import com.a.eye.skywalking.plugin.PluginDefineCategory; @@ -24,9 +25,15 @@ import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.not; public class SkyWalkingAgent { - private static Logger logger = LogManager.getLogger(SkyWalkingAgent.class); + static{ + LogManager.setLogResolver(new EasyLogResolver()); + } + + private static ILog easyLogger; public static void premain(String agentArgs, Instrumentation instrumentation) throws PluginException { + easyLogger = LogManager.getLogger(SkyWalkingAgent.class); + initConfig(); if (AuthDesc.isAuth()) { final PluginDefineCategory pluginDefineCategory = @@ -53,7 +60,7 @@ public class SkyWalkingAgent { @Override public void onError(String typeName, ClassLoader classLoader, JavaModule module, Throwable throwable) { - logger.error("Failed to enhance class " + typeName, throwable); + easyLogger.error("Failed to enhance class " + typeName, throwable); } @Override @@ -88,7 +95,7 @@ public class SkyWalkingAgent { urlString = urlString.substring(urlString.indexOf("file:"), urlString.indexOf('!')); return new File(new URL(urlString).getFile()).getParentFile().getAbsolutePath(); } catch (Exception e) { - logger.error("Failed to init config .", e); + easyLogger.error("Failed to init config .", e); return ""; } } diff --git a/skywalking-sniffer/skywalking-api/pom.xml b/skywalking-sniffer/skywalking-api/pom.xml index 29d399de2..148482786 100644 --- a/skywalking-sniffer/skywalking-api/pom.xml +++ b/skywalking-sniffer/skywalking-api/pom.xml @@ -1,102 +1,121 @@ - 4.0.0 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 - - com.a.eye - skywalking-sniffer - 2.0-2016 - + + com.a.eye + skywalking-sniffer + 2.0-2016 + - skywalking-api - jar + skywalking-api + jar - skywalking-api - http://maven.apache.org + skywalking-api + http://maven.apache.org - - UTF-8 - + + UTF-8 + - + - - net.bytebuddy - byte-buddy - 1.4.16 - + + net.bytebuddy + byte-buddy + 1.5.7 + - - io.netty - netty-all - 4.0.33.Final - + + com.a.eye + skywalking-network + ${project.version} + + + com.lmax + disruptor + 3.3.6 + + + com.a.eye + skywalking-registry + ${project.parent.version} + + + com.a.eye + skywalking-health-report + ${project.parent.version} + + + com.a.eye + skywalking-logging + ${project.parent.version} + + + com.lmax + disruptor + 3.3.6 + - - com.a.eye - skywalking-test-api - 2.0-2016 - test - - - - com.google.code.gson - gson - 2.7 - - - junit - junit - 4.11 - test - - - org.powermock - powermock-api-mockito - 1.6.5 - test - - - - org.powermock - powermock-module-junit4 - 1.6.5 - test - - - - - - maven-compiler-plugin - - 1.7 - 1.7 - ${project.build.sourceEncoding} - - - - org.apache.maven.plugins - maven-resources-plugin - 2.4.3 - - ${project.build.sourceEncoding} - - - - - org.apache.maven.plugins - maven-source-plugin - - - - attach-sources - - jar - - - - - - + + + com.a.eye + skywalking-test-api + ${project.parent.version} + test + + + junit + junit + 4.11 + test + + + org.powermock + powermock-api-mockito + 1.6.5 + test + + + org.powermock + powermock-module-junit4 + 1.6.5 + test + + + + + + maven-compiler-plugin + + 1.7 + 1.7 + ${project.build.sourceEncoding} + + + + org.apache.maven.plugins + maven-resources-plugin + 2.4.3 + + ${project.build.sourceEncoding} + + + + + org.apache.maven.plugins + maven-source-plugin + + + + attach-sources + + jar + + + + + + diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/buffer/BufferGroup.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/buffer/BufferGroup.java deleted file mode 100644 index 08a06dadd..000000000 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/buffer/BufferGroup.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.a.eye.skywalking.buffer; - -import com.a.eye.skywalking.conf.Config; -import com.a.eye.skywalking.logging.LogManager; -import com.a.eye.skywalking.logging.Logger; -import com.a.eye.skywalking.selfexamination.HeathReading; -import com.a.eye.skywalking.selfexamination.SDKHealthCollector; -import com.a.eye.skywalking.sender.DataSenderFactoryWithBalance; -import com.a.eye.skywalking.protocol.common.ISerializable; -import com.a.eye.skywalking.protocol.util.AtomicRangeInteger; - -import java.util.ArrayList; -import java.util.List; - -public class BufferGroup { - private static Logger logger = LogManager.getLogger(BufferGroup.class); - private String groupName; - //注意: 修改这个变量名,需要修改test-api工程的Config类中的SPAN_ARRAY_FIELD_NAME变量 - private ISerializable[] dataBuffer = new ISerializable[Config.Buffer.BUFFER_MAX_SIZE]; - AtomicRangeInteger index = new AtomicRangeInteger(0, Config.Buffer.BUFFER_MAX_SIZE); - - public BufferGroup(String groupName) { - this.groupName = groupName; - startConsumerWorker(); - } - - private void startConsumerWorker() { - if (Config.Consumer.MAX_CONSUMER > 0) { - int step = (int) Math.ceil(Config.Buffer.BUFFER_MAX_SIZE * 1.0 / Config.Consumer.MAX_CONSUMER); - int start = 0, end = 0; - while (true) { - if (end + step >= Config.Buffer.BUFFER_MAX_SIZE) { - new ConsumerWorker(start, Config.Buffer.BUFFER_MAX_SIZE).start(); - break; - } - end += step; - new ConsumerWorker(start, end).start(); - start = end; - } - } - } - - public void save(ISerializable data) { - int i = index.getAndIncrement(); - if (dataBuffer[i] != null) { - logger.warn( - "Group[{}] index[{}] data collision, discard old data.", - groupName, i); - SDKHealthCollector - .getCurrentHeathReading("BufferGroup").updateData(HeathReading.WARNING, "BufferGroup index[" + i + "] data collision, data been coverd."); - } - dataBuffer[i] = data; - SDKHealthCollector.getCurrentHeathReading("BufferGroup").updateData(HeathReading.INFO, "save span"); - } - - class ConsumerWorker extends Thread { - private int start = 0; - private int end = Config.Buffer.BUFFER_MAX_SIZE; - - private ConsumerWorker(int start, int end) { - super("ConsumerWorker"); - this.start = start; - this.end = end; - this.setDaemon(true); - } - - @Override - public void run() { - List packageData = new ArrayList(); - while (true) { - boolean bool = false; - try { - for (int i = start; i < end; i++) { - if (dataBuffer[i] == null) { - continue; - } - bool = true; - if (packageData.size() >= Config.Sender.MAX_SEND_DATA_SIZE) { - while (!DataSenderFactoryWithBalance.getSender() - .send(packageData)) { - try { - Thread.sleep(Config.Consumer.CONSUMER_FAIL_RETRY_WAIT_INTERVAL); - } catch (InterruptedException e) { - logger.error("Sleep Failure"); - } - } - logger.debug("send buried-point data, size:{}", packageData.size()); - packageData = new ArrayList(); - } - - packageData.add(dataBuffer[i]); - dataBuffer[i] = null; - } - - if (packageData != null && packageData.size() > 0) { - while (!DataSenderFactoryWithBalance.getSender().send( - packageData)) { - try { - Thread.sleep(Config.Consumer.CONSUMER_FAIL_RETRY_WAIT_INTERVAL); - } catch (InterruptedException e) { - logger.error("Sleep Failure"); - } - } - packageData = new ArrayList(); - } - } catch (Throwable e) { - logger.error("data group running failed", e); - } - - if (!bool) { - try { - Thread.sleep(Config.Consumer.MAX_WAIT_TIME); - } catch (InterruptedException e) { - logger.error("Sleep Failure"); - } - } - } - } - } - - public String getGroupName() { - return groupName; - } - -} diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/buffer/BufferPool.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/buffer/BufferPool.java deleted file mode 100644 index f44009180..000000000 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/buffer/BufferPool.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.a.eye.skywalking.buffer; - -import com.a.eye.skywalking.conf.Config; -import com.a.eye.skywalking.protocol.common.ISerializable; - -import java.util.concurrent.ThreadLocalRandom; - -/** - * Created by wusheng on 16/7/21. - */ -class BufferPool { - // 注意: 这个变量名如果改变需要改变test-api工程中的Config变量 - private static BufferGroup[] bufferGroups = new BufferGroup[Config.Buffer.POOL_SIZE]; - static { - for (int i = 0; i < Config.Buffer.POOL_SIZE; i++) { - bufferGroups[i] = new BufferGroup("buffer_group-" + i); - } - } - - public void save(ISerializable data) { - bufferGroups[ThreadLocalRandom.current().nextInt(0, Config.Buffer.POOL_SIZE)].save(data); - } - - -} diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/buffer/ContextBuffer.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/buffer/ContextBuffer.java deleted file mode 100644 index a93002058..000000000 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/buffer/ContextBuffer.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.a.eye.skywalking.buffer; - -import com.a.eye.skywalking.logging.LogManager; -import com.a.eye.skywalking.logging.Logger; -import com.a.eye.skywalking.protocol.common.ISerializable; - -public class ContextBuffer { - private static Logger logger = LogManager.getLogger(ContextBuffer.class); - - private static BufferPool pool = new BufferPool(); - - private ContextBuffer() { - //non - } - - public static void save(ISerializable data) { - try{ - pool.save(data); - }catch(Throwable t){ - logger.error("save span error.", t); - } - } -} - - - diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/conf/AuthDesc.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/conf/AuthDesc.java index 23fb10074..c9ff920a1 100644 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/conf/AuthDesc.java +++ b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/conf/AuthDesc.java @@ -1,7 +1,7 @@ package com.a.eye.skywalking.conf; import com.a.eye.skywalking.logging.LogManager; -import com.a.eye.skywalking.logging.Logger; +import com.a.eye.skywalking.logging.EasyLogger; import com.a.eye.skywalking.selfexamination.SDKHealthCollector; import java.io.File; @@ -9,8 +9,8 @@ import java.io.FileInputStream; import java.io.InputStream; public class AuthDesc { - private static Logger logger = LogManager.getLogger(AuthDesc.class); - static boolean isAuth = false; + private static EasyLogger easyLogger = LogManager.getLogger(AuthDesc.class); + static boolean isAuth = false; static { InputStream authFileInputStream; @@ -29,7 +29,7 @@ public class AuthDesc { try { return new FileInputStream(Config.SkyWalking.AGENT_BASE_PATH + File.separator + "/sky-walking.auth"); } catch (Exception e) { - logger.error("Error to fetch auth file input stream.", e); + easyLogger.error("Error to fetch auth file input stream.", e); return null; } } diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/conf/ConfigInitializer.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/conf/ConfigInitializer.java index 4e4af4967..c7328f4e5 100644 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/conf/ConfigInitializer.java +++ b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/conf/ConfigInitializer.java @@ -1,7 +1,7 @@ package com.a.eye.skywalking.conf; import com.a.eye.skywalking.logging.LogManager; -import com.a.eye.skywalking.logging.Logger; +import com.a.eye.skywalking.logging.EasyLogger; import java.io.IOException; import java.io.InputStream; @@ -11,26 +11,26 @@ import java.util.LinkedList; import java.util.Properties; public class ConfigInitializer { - private static Logger logger = LogManager.getLogger(ConfigInitializer.class); + private static EasyLogger easyLogger = LogManager.getLogger(ConfigInitializer.class); static void initialize(InputStream inputStream) { if (inputStream == null) { - logger.info("Not provide sky-walking certification documents, sky-walking api auto shutdown."); + easyLogger.info("Not provide sky-walking certification documents, sky-walking api auto shutdown."); } else { try { Properties properties = new Properties(); properties.load(inputStream); initNextLevel(properties, Config.class, new ConfigDesc()); AuthDesc.isAuth = Boolean.valueOf(System.getenv(Config.SkyWalking.AUTH_SYSTEM_ENV_NAME)); - logger.info("sky-walking system-env auth : " + AuthDesc.isAuth); + easyLogger.info("sky-walking system-env auth : " + AuthDesc.isAuth); if(!AuthDesc.isAuth && Config.SkyWalking.AUTH_OVERRIDE){ AuthDesc.isAuth = Config.SkyWalking.AUTH_OVERRIDE; - logger.info("sky-walking auth override: " + AuthDesc.isAuth); + easyLogger.info("sky-walking auth override: " + AuthDesc.isAuth); } } catch (IllegalAccessException e) { - logger.error("Parsing certification file failed, sky-walking api auto shutdown.", e); + easyLogger.error("Parsing certification file failed, sky-walking api auto shutdown.", e); } catch (IOException e) { - logger.error("Failed to read the certification file, sky-walking api auto shutdown.", e); + easyLogger.error("Failed to read the certification file, sky-walking api auto shutdown.", e); } } } diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/conf/Constants.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/conf/Constants.java index 2806ee38c..98b352f6f 100644 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/conf/Constants.java +++ b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/conf/Constants.java @@ -4,7 +4,7 @@ public class Constants { /** * 务必严格保持两位的version */ - public static String SDK_VERSION = "1.0Final"; + public static int SDK_VERSION = 202016; public static final String HEALTH_DATA_SPILT_PATTERN = "^~"; diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/invoke/monitor/BaseInvokeMonitor.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/invoke/monitor/BaseInvokeMonitor.java index 35c6cd5b3..24207b7fc 100644 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/invoke/monitor/BaseInvokeMonitor.java +++ b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/invoke/monitor/BaseInvokeMonitor.java @@ -2,15 +2,15 @@ package com.a.eye.skywalking.invoke.monitor; import com.a.eye.skywalking.buffer.ContextBuffer; import com.a.eye.skywalking.conf.Config; -import com.a.eye.skywalking.logging.LogManager; -import com.a.eye.skywalking.logging.Logger; +import com.a.eye.skywalking.logging.EasyLogger; import com.a.eye.skywalking.conf.AuthDesc; import com.a.eye.skywalking.context.CurrentThreadSpanStack; +import com.a.eye.skywalking.logging.api.ILog; +import com.a.eye.skywalking.logging.api.LogManager; import com.a.eye.skywalking.model.ContextData; import com.a.eye.skywalking.model.Identification; -import com.a.eye.skywalking.protocol.AckSpan; -import com.a.eye.skywalking.protocol.RequestSpan; import com.a.eye.skywalking.model.Span; +import com.a.eye.skywalking.network.grpc.AckSpan; import com.a.eye.skywalking.protocol.util.BuriedPointMachineUtil; import java.util.HashSet; @@ -18,7 +18,7 @@ import java.util.Set; public abstract class BaseInvokeMonitor { - private static Logger logger = LogManager.getLogger(BaseInvokeMonitor.class); + private static ILog easyLogger = LogManager.getLogger(BaseInvokeMonitor.class); private static String EXCEPTION_SPLIT = ","; @@ -26,7 +26,7 @@ public abstract class BaseInvokeMonitor { protected ContextData beforeInvoke(Span spanData, Identification id) { if (Config.BuriedPoint.PRINTF) { - logger.debug("TraceId:" + spanData.getTraceId() + "\tParentLevelId:" + spanData.getParentLevel() + easyLogger.debug("TraceId:" + spanData.getTraceId() + "\tParentLevelId:" + spanData.getParentLevel() + "\tLevelId:" + spanData.getLevelId() + "\tbusinessKey:" + spanData.getBusinessKey()); } @@ -52,13 +52,15 @@ public abstract class BaseInvokeMonitor { Span spanData = CurrentThreadSpanStack.pop(); if (Config.BuriedPoint.PRINTF) { - logger.debug("TraceId-ACK:" + spanData.getTraceId() + "\tParentLevelId:" + spanData.getParentLevel() + easyLogger.debug("TraceId-ACK:" + spanData.getTraceId() + "\tParentLevelId:" + spanData.getParentLevel() + "\tLevelId:" + spanData.getLevelId() + "\tbusinessKey:" + spanData.getBusinessKey()); } // 生成并保存到缓存 + AckSpan.Builder ackSpanBuilder = spanData.buildAckSpan(AckSpan.newBuilder()); + ContextBuffer.save(new AckSpan(spanData)); } catch (Throwable t) { - logger.error(t.getMessage(), t); + easyLogger.error(t.getMessage(), t); } } @@ -77,7 +79,7 @@ public abstract class BaseInvokeMonitor { Span span = CurrentThreadSpanStack.peek(); span.handleException(th, exclusiveExceptionSet, Config.BuriedPoint.MAX_EXCEPTION_STACK_LENGTH); } catch (Throwable t) { - logger.error(t.getMessage(), t); + easyLogger.error(t.getMessage(), t); } } } diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/invoke/monitor/LocalMethodInvokeMonitor.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/invoke/monitor/LocalMethodInvokeMonitor.java index 1d6d2a3a2..6b64d0b6c 100644 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/invoke/monitor/LocalMethodInvokeMonitor.java +++ b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/invoke/monitor/LocalMethodInvokeMonitor.java @@ -1,7 +1,7 @@ package com.a.eye.skywalking.invoke.monitor; -import com.a.eye.skywalking.logging.LogManager; -import com.a.eye.skywalking.logging.Logger; +import com.a.eye.skywalking.logging.api.ILog; +import com.a.eye.skywalking.logging.api.LogManager; import com.a.eye.skywalking.model.ContextData; import com.a.eye.skywalking.model.EmptyContextData; import com.a.eye.skywalking.model.Identification; @@ -11,7 +11,7 @@ import com.a.eye.skywalking.model.Span; public class LocalMethodInvokeMonitor extends BaseInvokeMonitor { - private static Logger logger = LogManager + private static ILog logger = LogManager .getLogger(LocalMethodInvokeMonitor.class); public ContextData beforeInvoke(Identification id) { diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/invoke/monitor/RPCClientInvokeMonitor.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/invoke/monitor/RPCClientInvokeMonitor.java index d817af951..8c783f4bb 100644 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/invoke/monitor/RPCClientInvokeMonitor.java +++ b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/invoke/monitor/RPCClientInvokeMonitor.java @@ -4,20 +4,16 @@ import com.a.eye.skywalking.buffer.ContextBuffer; import com.a.eye.skywalking.conf.AuthDesc; import com.a.eye.skywalking.conf.Config; import com.a.eye.skywalking.context.CurrentThreadSpanStack; -import com.a.eye.skywalking.logging.LogManager; -import com.a.eye.skywalking.logging.Logger; -import com.a.eye.skywalking.model.ContextData; -import com.a.eye.skywalking.model.EmptyContextData; -import com.a.eye.skywalking.model.Identification; +import com.a.eye.skywalking.logging.api.ILog; +import com.a.eye.skywalking.logging.api.LogManager; +import com.a.eye.skywalking.model.*; +import com.a.eye.skywalking.network.grpc.RequestSpan; import com.a.eye.skywalking.protocol.util.BuriedPointMachineUtil; import com.a.eye.skywalking.protocol.util.ContextGenerator; -import com.a.eye.skywalking.protocol.RequestSpan; -import com.a.eye.skywalking.model.Span; -import com.a.eye.skywalking.protocol.common.SpanType; public class RPCClientInvokeMonitor extends BaseInvokeMonitor { - private static Logger logger = LogManager + private static ILog logger = LogManager .getLogger(RPCClientInvokeMonitor.class); public ContextData beforeInvoke(Identification id) { @@ -36,12 +32,14 @@ public class RPCClientInvokeMonitor extends BaseInvokeMonitor { CurrentThreadSpanStack.push(spanData); - RequestSpan requestSpan = RequestSpan.RequestSpanBuilder.newBuilder(CurrentThreadSpanStack.peek()) - .viewPoint(id.getViewPoint()) - .spanTypeDesc(id.getSpanTypeDesc()) - .bussinessKey(id.getBusinessKey()) - .callType(id.getCallType()).processNo(BuriedPointMachineUtil.getProcessNo()) - .address(BuriedPointMachineUtil.getHostDesc()).build(); + Span span = CurrentThreadSpanStack.peek(); + RequestSpan.Builder requestSpanBuilder = span.buildRequestSpan(RequestSpan.newBuilder()); + RequestSpan requestSpan = requestSpanBuilder + .setViewPointId(id.getViewPoint()) + .setSpanTypeDesc(id.getSpanTypeDesc()) + .setBussinessKey(id.getBusinessKey()) + .setCallType(id.getCallType()).setProcessNo(BuriedPointMachineUtil.getProcessNo()) + .setAddress(BuriedPointMachineUtil.getHostDesc()).build(); ContextBuffer.save(requestSpan); diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/invoke/monitor/RPCServerInvokeMonitor.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/invoke/monitor/RPCServerInvokeMonitor.java index ed2423f6d..520a49397 100644 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/invoke/monitor/RPCServerInvokeMonitor.java +++ b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/invoke/monitor/RPCServerInvokeMonitor.java @@ -1,17 +1,17 @@ package com.a.eye.skywalking.invoke.monitor; -import com.a.eye.skywalking.logging.LogManager; -import com.a.eye.skywalking.logging.Logger; +import com.a.eye.skywalking.logging.api.ILog; +import com.a.eye.skywalking.logging.api.LogManager; import com.a.eye.skywalking.model.ContextData; import com.a.eye.skywalking.model.Identification; +import com.a.eye.skywalking.model.SpanType; import com.a.eye.skywalking.protocol.util.ContextGenerator; import com.a.eye.skywalking.conf.AuthDesc; import com.a.eye.skywalking.model.Span; -import com.a.eye.skywalking.protocol.common.SpanType; public class RPCServerInvokeMonitor extends BaseInvokeMonitor { - private static Logger logger = LogManager + private static ILog logger = LogManager .getLogger(RPCServerInvokeMonitor.class); public void beforeInvoke(ContextData context, Identification id) { diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/logging/EasyLogResolver.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/logging/EasyLogResolver.java new file mode 100644 index 000000000..dc1f578ed --- /dev/null +++ b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/logging/EasyLogResolver.java @@ -0,0 +1,14 @@ +package com.a.eye.skywalking.logging; + +import com.a.eye.skywalking.logging.api.ILog; +import com.a.eye.skywalking.logging.api.LogResolver; + +/** + * Created by wusheng on 2016/11/26. + */ +public class EasyLogResolver implements LogResolver { + @Override + public ILog getLogger(Class clazz) { + return new EasyLogger(clazz); + } +} diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/logging/Logger.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/logging/EasyLogger.java similarity index 58% rename from skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/logging/Logger.java rename to skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/logging/EasyLogger.java index a8c0f7878..82bc9faa5 100644 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/logging/Logger.java +++ b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/logging/EasyLogger.java @@ -1,6 +1,7 @@ package com.a.eye.skywalking.logging; +import com.a.eye.skywalking.logging.api.ILog; import com.a.eye.skywalking.protocol.util.LoggingUtil; import java.net.URLEncoder; @@ -10,12 +11,11 @@ import java.util.Date; /** * Created by xin on 16-6-23. */ -public class Logger { +public class EasyLogger implements ILog { private Class toBeLoggerClass; - - public Logger(Class toBeLoggerClass) { + public EasyLogger(Class toBeLoggerClass) { this.toBeLoggerClass = toBeLoggerClass; } @@ -37,50 +37,7 @@ public class Logger { } - public void error(String message, Throwable e) { - logger(ERROR, message, e); - } - - public void error(String message) { - error(message, null); - } - - public void warn(String message, Object... parameters) { - String tmpMessage = replaceParameter(message, parameters); - logger(WARN, tmpMessage, null); - } - - - public void debug(String message) { - logger(DEBUG, message, null); - } - - public void debug(Object message) { - debug(message.toString()); - } - - public void info(Object message) { - info(message.toString()); - } - - public void info(String message) { - logger(INFO, message, null); - } - - public void debug(String message, Object... parameters) { - debug(replaceParameter(message, parameters)); - } - - public void error(String message, Object[] parameters, Throwable throwable) { - logger(ERROR, replaceParameter(message, parameters), throwable); - } - - public void info(String message, Object paramter) { - info(replaceParameter(message, new Object[]{paramter})); - } - - - private String replaceParameter(String message, Object... parameters) { + private String replaceParam(String message, Object... parameters) { int startSize = 0; int parametersIndex = 0; int index = -1; @@ -109,4 +66,63 @@ public class Logger { private static final String INFO = "INFO"; + @Override + public void info(String format) { + logger(INFO, format, null); + } + + @Override + public void info(String format, Object... arguments) { + logger(INFO, replaceParam(INFO, format, arguments), null); + } + + @Override + public void warn(String format, Object... arguments) { + logger(WARN, replaceParam(WARN, format, arguments), null); + } + + @Override + public void warn(String format, Object arguments, Throwable e) { + logger(WARN, replaceParam(WARN, format, arguments), e); + } + + @Override + public void error(String format, Throwable e) { + logger(ERROR, format, e); + } + + @Override + public void error(String format, Object arguments, Throwable e) { + logger(ERROR, replaceParam(ERROR, format, arguments), e); + } + + @Override + public boolean isDebugEnable() { + return true; + } + + @Override + public boolean isInfoEnable() { + return true; + } + + @Override + public boolean isWarnEnable() { + return true; + } + + @Override + public boolean isErrorEnable() { + return true; + } + + @Override + public void debug(String format) { + logger(DEBUG, format, null); + } + + @Override + public void debug(String format, Object... arguments) { + logger(DEBUG, replaceParam(DEBUG, format, arguments), null); + } } diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/logging/LogManager.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/logging/LogManager.java deleted file mode 100644 index 95882209f..000000000 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/logging/LogManager.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.a.eye.skywalking.logging; - -/** - * Created by xin on 16-6-23. - */ -public class LogManager { - - public static Logger getLogger(Class toBeLoggerClass) { - return new Logger(toBeLoggerClass); - } -} diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/logging/LoggerManager.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/logging/LoggerManager.java deleted file mode 100644 index b7500988b..000000000 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/logging/LoggerManager.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.a.eye.skywalking.logging; - -/** - * Created by xin on 16-6-23. - */ -public class LoggerManager { - - public static Logger getLog(Class toBeClass) { - return new Logger(toBeClass); - } -} diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/model/ContextData.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/model/ContextData.java index e5e22407e..429358462 100644 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/model/ContextData.java +++ b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/model/ContextData.java @@ -1,10 +1,10 @@ package com.a.eye.skywalking.model; -import com.a.eye.skywalking.model.Span; +import com.a.eye.skywalking.network.grpc.TraceId; public class ContextData { - private String traceId; + private TraceId traceId; private String parentLevel; private int levelId; @@ -12,7 +12,7 @@ public class ContextData { } - public ContextData(String traceId, String parentLevel) { + public ContextData(TraceId traceId, String parentLevel) { this.traceId = traceId; this.parentLevel = parentLevel; } @@ -27,14 +27,29 @@ public class ContextData { // 反序列化参数 String[] value = contextDataStr.split("-"); if (value == null || value.length != 3) { - throw new IllegalArgumentException("illegal context data."); + throw new IllegalArgumentException("illegal context"); } - this.traceId = value[0]; + String traceIdStr = value[0]; + String[] traceIdSegments = traceIdStr.split(","); + if(traceIdSegments == null || traceIdSegments.length != 6){ + throw new IllegalArgumentException("illegal traceid in context"); + } + TraceId.Builder traceIdBuilder = TraceId.newBuilder(); + int i = 0; + for (String traceIdSegment : traceIdSegments) { + try { + traceIdBuilder.addSegments(Long.parseLong(traceIdSegment)); + }catch(NumberFormatException e){ + throw new IllegalArgumentException("illegal traceid seg[" + i + "] in context", e); + } + i++; + } + this.traceId = traceIdBuilder.build(); this.parentLevel = value[1].trim(); this.levelId = Integer.valueOf(value[2]); } - public String getTraceId() { + public TraceId getTraceId() { return traceId; } @@ -49,7 +64,11 @@ public class ContextData { @Override public String toString() { StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append(traceId); + StringBuilder traceIdBuilder = new StringBuilder(); + for (Long segment : traceId.getSegmentsList()) { + traceIdBuilder.append(segment).append("."); + } + stringBuilder.append(traceIdBuilder.substring(0, traceIdBuilder.length() - 1)); stringBuilder.append("-"); if (parentLevel == null || parentLevel.length() == 0) { stringBuilder.append(" "); diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/model/Span.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/model/Span.java index 891a71e97..6169d9a74 100644 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/model/Span.java +++ b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/model/Span.java @@ -1,11 +1,12 @@ package com.a.eye.skywalking.model; -import com.a.eye.skywalking.protocol.common.SpanType; + +import com.a.eye.skywalking.network.grpc.AckSpan; +import com.a.eye.skywalking.network.grpc.RequestSpan; +import com.a.eye.skywalking.network.grpc.TraceId; import java.io.ByteArrayOutputStream; import java.io.IOException; -import java.util.HashMap; -import java.util.Map; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; @@ -17,12 +18,12 @@ public class Span { /** * tid,调用链的全局唯一标识 */ - protected String traceId; + protected TraceId traceId; /** * 当前调用链的上级描述
* 如当前序号为:0.1.0时,parentLevel=0.1 */ - protected String parentLevel; + protected String parentLevel; /** * 当前调用链的本机描述
* 如当前序号为:0.1.0时,levelId=0 @@ -51,7 +52,7 @@ public class Span { * 节点类型
* 如:RPC Client,RPC Server,Local */ - private SpanType spanType = SpanType.LOCAL; + private int spanType = SpanType.LOCAL; /** * 业务字段
@@ -67,14 +68,14 @@ public class Span { private String userId; private String viewPointId; - public Span(String traceId, String applicationId, String userId) { + public Span(TraceId traceId, String applicationId, String userId) { this.traceId = traceId; this.applicationId = applicationId; this.userId = userId; this.parentLevel = ""; } - public Span(String traceId, String parentLevel, int levelId, String applicationId, String userId) { + public Span(TraceId traceId, String parentLevel, int levelId, String applicationId, String userId) { this.traceId = traceId; this.parentLevel = parentLevel; this.levelId = levelId; @@ -82,7 +83,7 @@ public class Span { this.userId = userId; } - public String getTraceId() { + public TraceId getTraceId() { return traceId; } @@ -122,11 +123,11 @@ public class Span { this.exceptionStack = exceptionStack; } - public void setSpanType(SpanType spanType) { + public void setSpanType(int spanType) { this.spanType = spanType; } - public SpanType getSpanType() { + public int getSpanType() { return spanType; } @@ -186,14 +187,26 @@ public class Span { this.userId = userId; } - public void setViewPointId(String viewPointId) { this.viewPointId = viewPointId; } - - public String getViewPointId() { return viewPointId; } + + public RequestSpan.Builder buildRequestSpan(RequestSpan.Builder builder) { + builder.setTraceId(this.traceId).setParentLevel(this.parentLevel).setLevelId(this.levelId).setSpanType(this.spanType).setApplicationId(this.applicationId) + .setUserId(this.userId); + return builder; + } + + public AckSpan.Builder buildAckSpan(AckSpan.Builder builder){ + builder.setTraceId(this.traceId).setParentLevel(this.parentLevel).setLevelId(this.levelId) + .setCost(System.currentTimeMillis() - this.startDate).setStatusCode(this.statusCode) + .setExceptionStack(this.exceptionStack).setUserId(this.userId).setApplicationId(this.applicationId) + .setViewpointId(this.viewPointId); + return builder; + } + } diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/model/SpanType.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/model/SpanType.java new file mode 100644 index 000000000..bb3b476bc --- /dev/null +++ b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/model/SpanType.java @@ -0,0 +1,10 @@ +package com.a.eye.skywalking.model; + +/** + * Created by wusheng on 2016/11/26. + */ +public interface SpanType { + int LOCAL = 0; + int RPC_CLIENT = 1; + int RPC_SERVER = 2; +} diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/AbstractClassEnhancePluginDefine.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/AbstractClassEnhancePluginDefine.java index 73297bd2f..ba5e3cc12 100644 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/AbstractClassEnhancePluginDefine.java +++ b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/AbstractClassEnhancePluginDefine.java @@ -1,13 +1,13 @@ package com.a.eye.skywalking.plugin; -import com.a.eye.skywalking.logging.LogManager; -import com.a.eye.skywalking.logging.Logger; +import com.a.eye.skywalking.logging.api.ILog; +import com.a.eye.skywalking.logging.api.LogManager; import com.a.eye.skywalking.protocol.util.StringUtil; import net.bytebuddy.dynamic.DynamicType; import net.bytebuddy.pool.TypePool.Resolution; public abstract class AbstractClassEnhancePluginDefine{ - private static Logger logger = LogManager.getLogger(AbstractClassEnhancePluginDefine.class); + private static ILog logger = LogManager.getLogger(AbstractClassEnhancePluginDefine.class); public DynamicType.Builder define(String transformClassName, DynamicType.Builder builder) throws PluginException { String interceptorDefineClassName = this.getClass().getName(); diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/PluginBootstrap.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/PluginBootstrap.java index cc8b117f5..f61a95db1 100644 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/PluginBootstrap.java +++ b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/PluginBootstrap.java @@ -1,7 +1,7 @@ package com.a.eye.skywalking.plugin; import com.a.eye.skywalking.logging.LogManager; -import com.a.eye.skywalking.logging.Logger; +import com.a.eye.skywalking.logging.EasyLogger; import net.bytebuddy.pool.TypePool; import java.net.URL; @@ -9,7 +9,7 @@ import java.util.ArrayList; import java.util.List; public class PluginBootstrap { - private static Logger logger = LogManager.getLogger(PluginBootstrap.class); + private static EasyLogger easyLogger = LogManager.getLogger(PluginBootstrap.class); public static TypePool CLASS_TYPE_POOL = null; @@ -20,7 +20,7 @@ public class PluginBootstrap { List resources = resolver.getResources(); if (resources == null || resources.size() == 0) { - logger.info("no plugin files (skywalking-plugin.properties) found, continue to start application."); + easyLogger.info("no plugin files (skywalking-plugin.properties) found, continue to start application."); return new ArrayList(); } @@ -28,7 +28,7 @@ public class PluginBootstrap { try { PluginCfg.CFG.load(pluginUrl.openStream()); } catch (Throwable t) { - logger.error("plugin [{}] init failure.", new Object[] {pluginUrl}, t); + easyLogger.error("plugin [{}] init failure.", new Object[] {pluginUrl}, t); } } @@ -37,12 +37,12 @@ public class PluginBootstrap { List plugins = new ArrayList(); for (String pluginClassName : pluginClassList) { try { - logger.debug("loading plugin class {}.", pluginClassName); + easyLogger.debug("loading plugin class {}.", pluginClassName); AbstractClassEnhancePluginDefine plugin = (AbstractClassEnhancePluginDefine) Class.forName(pluginClassName).newInstance(); plugins.add(plugin); } catch (Throwable t) { - logger.error("loade plugin [{}] failure.", new Object[] {pluginClassName}, t); + easyLogger.error("loade plugin [{}] failure.", new Object[] {pluginClassName}, t); } } diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/PluginResourcesResolver.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/PluginResourcesResolver.java index e6eb30f1c..f297eeb98 100644 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/PluginResourcesResolver.java +++ b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/PluginResourcesResolver.java @@ -1,7 +1,7 @@ package com.a.eye.skywalking.plugin; import com.a.eye.skywalking.logging.LogManager; -import com.a.eye.skywalking.logging.Logger; +import com.a.eye.skywalking.logging.EasyLogger; import java.io.IOException; import java.net.URL; @@ -10,7 +10,7 @@ import java.util.Enumeration; import java.util.List; public class PluginResourcesResolver { - private static Logger logger = LogManager.getLogger(PluginResourcesResolver.class); + private static EasyLogger easyLogger = LogManager.getLogger(PluginResourcesResolver.class); public List getResources(){ List cfgUrlPaths = new ArrayList(); @@ -19,18 +19,18 @@ public class PluginResourcesResolver { urls = getDefaultClassLoader().getResources("skywalking-plugin.def"); if(!urls.hasMoreElements()){ - logger.info("no plugin files (skywalking-plugin.properties) found"); + easyLogger.info("no plugin files (skywalking-plugin.properties) found"); } while(urls.hasMoreElements()){ URL pluginUrl = urls.nextElement(); cfgUrlPaths.add(pluginUrl); - logger.info("find skywalking plugin define in {}", pluginUrl); + easyLogger.info("find skywalking plugin define in {}", pluginUrl); } return cfgUrlPaths; } catch (IOException e) { - logger.error("read resources failure.", e); + easyLogger.error("read resources failure.", e); } return null; } diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/TracingBootstrap.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/TracingBootstrap.java index 1d3d8061f..7d308e0ce 100644 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/TracingBootstrap.java +++ b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/TracingBootstrap.java @@ -2,7 +2,7 @@ package com.a.eye.skywalking.plugin; import com.a.eye.skywalking.conf.AuthDesc; import com.a.eye.skywalking.logging.LogManager; -import com.a.eye.skywalking.logging.Logger; +import com.a.eye.skywalking.logging.EasyLogger; import net.bytebuddy.ByteBuddy; import net.bytebuddy.dynamic.ClassFileLocator; import net.bytebuddy.dynamic.DynamicType; @@ -21,7 +21,7 @@ import java.util.List; * @author wusheng */ public class TracingBootstrap { - private static Logger logger = LogManager.getLogger(TracingBootstrap.class); + private static EasyLogger easyLogger = LogManager.getLogger(TracingBootstrap.class); private TracingBootstrap() { } @@ -43,14 +43,14 @@ public class TracingBootstrap { PluginBootstrap bootstrap = new PluginBootstrap(); plugins = bootstrap.loadPlugins(); } catch (Throwable t) { - logger.error("PluginBootstrap start failure.", t); + easyLogger.error("PluginBootstrap start failure.", t); } for (AbstractClassEnhancePluginDefine plugin : plugins) { String enhanceClassName = plugin.enhanceClassName(); TypePool.Resolution resolution = TypePool.Default.ofClassPath().describe(enhanceClassName); if (!resolution.isResolved()) { - logger.error("Failed to resolve the class " + enhanceClassName); + easyLogger.error("Failed to resolve the class " + enhanceClassName); continue; } DynamicType.Builder newClassBuilder = diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/interceptor/enhance/ClassConstructorInterceptor.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/interceptor/enhance/ClassConstructorInterceptor.java index 9bb29fe75..82eb52244 100644 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/interceptor/enhance/ClassConstructorInterceptor.java +++ b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/interceptor/enhance/ClassConstructorInterceptor.java @@ -1,7 +1,7 @@ package com.a.eye.skywalking.plugin.interceptor.enhance; import com.a.eye.skywalking.logging.LogManager; -import com.a.eye.skywalking.logging.Logger; +import com.a.eye.skywalking.logging.EasyLogger; import com.a.eye.skywalking.plugin.interceptor.EnhancedClassInstanceContext; import com.a.eye.skywalking.plugin.interceptor.loader.InterceptorInstanceLoader; import net.bytebuddy.implementation.bind.annotation.AllArguments; @@ -10,7 +10,7 @@ import net.bytebuddy.implementation.bind.annotation.RuntimeType; import net.bytebuddy.implementation.bind.annotation.This; public class ClassConstructorInterceptor { - private static Logger logger = LogManager + private static EasyLogger easyLogger = LogManager .getLogger(ClassConstructorInterceptor.class); private String instanceMethodsAroundInterceptorClassName; @@ -34,7 +34,7 @@ public class ClassConstructorInterceptor { allArguments); interceptor.onConstruct(context, interceptorContext); } catch (Throwable t) { - logger.error("ClassConstructorInterceptor failue.", t); + easyLogger.error("ClassConstructorInterceptor failue.", t); } } diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/interceptor/enhance/ClassEnhancePluginDefine.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/interceptor/enhance/ClassEnhancePluginDefine.java index adeaaf0ee..789132057 100644 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/interceptor/enhance/ClassEnhancePluginDefine.java +++ b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/interceptor/enhance/ClassEnhancePluginDefine.java @@ -5,7 +5,7 @@ import static net.bytebuddy.matcher.ElementMatchers.any; import static net.bytebuddy.matcher.ElementMatchers.not; import com.a.eye.skywalking.logging.LogManager; -import com.a.eye.skywalking.logging.Logger; +import com.a.eye.skywalking.logging.EasyLogger; import com.a.eye.skywalking.plugin.AbstractClassEnhancePluginDefine; import com.a.eye.skywalking.plugin.PluginException; import com.a.eye.skywalking.plugin.interceptor.EnhancedClassInstanceContext; @@ -22,7 +22,7 @@ import com.a.eye.skywalking.plugin.interceptor.EnhanceException; import com.a.eye.skywalking.plugin.interceptor.MethodMatcher; public abstract class ClassEnhancePluginDefine extends AbstractClassEnhancePluginDefine { - private static Logger logger = LogManager + private static EasyLogger easyLogger = LogManager .getLogger(ClassEnhancePluginDefine.class); public static final String contextAttrName = "_$EnhancedClassInstanceContext"; @@ -82,10 +82,10 @@ public abstract class ClassEnhancePluginDefine extends AbstractClassEnhancePlugi for (MethodMatcher methodMatcher : methodMatchers) { enhanceRules.append("\t" + ruleIdx++ + ". " + methodMatcher + "\n"); } - logger.debug(enhanceRules); + easyLogger.debug(enhanceRules); ElementMatcher.Junction matcher = null; for (MethodMatcher methodMatcher : methodMatchers) { - logger.debug("enhance class {} instance methods by rule: {}", + easyLogger.debug("enhance class {} instance methods by rule: {}", enhanceOriginClassName, methodMatcher); if (matcher == null) { matcher = methodMatcher.buildMatcher(); @@ -144,10 +144,10 @@ public abstract class ClassEnhancePluginDefine extends AbstractClassEnhancePlugi for (MethodMatcher methodMatcher : methodMatchers) { enhanceRules.append("\t" + ruleIdx++ + ". " + methodMatcher + "\n"); } - logger.debug(enhanceRules); + easyLogger.debug(enhanceRules); ElementMatcher.Junction matcher = null; for (MethodMatcher methodMatcher : methodMatchers) { - logger.debug("enhance class {} static methods by rule: {}", + easyLogger.debug("enhance class {} static methods by rule: {}", enhanceOriginClassName, methodMatcher); if (matcher == null) { matcher = methodMatcher.buildMatcher(); diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/interceptor/enhance/ClassInstanceMethodsInterceptor.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/interceptor/enhance/ClassInstanceMethodsInterceptor.java index dfbda015e..926521cc9 100644 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/interceptor/enhance/ClassInstanceMethodsInterceptor.java +++ b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/interceptor/enhance/ClassInstanceMethodsInterceptor.java @@ -1,7 +1,7 @@ package com.a.eye.skywalking.plugin.interceptor.enhance; import com.a.eye.skywalking.logging.LogManager; -import com.a.eye.skywalking.logging.Logger; +import com.a.eye.skywalking.logging.EasyLogger; import com.a.eye.skywalking.plugin.interceptor.EnhancedClassInstanceContext; import com.a.eye.skywalking.plugin.interceptor.loader.InterceptorInstanceLoader; import net.bytebuddy.implementation.bind.annotation.*; @@ -15,7 +15,7 @@ import java.util.concurrent.Callable; * @author wusheng */ public class ClassInstanceMethodsInterceptor { - private static Logger logger = LogManager.getLogger(ClassInstanceMethodsInterceptor.class); + private static EasyLogger easyLogger = LogManager.getLogger(ClassInstanceMethodsInterceptor.class); private String instanceMethodsAroundInterceptorClassName; @@ -34,7 +34,7 @@ public class ClassInstanceMethodsInterceptor { try { interceptor.beforeMethod(instanceContext, interceptorContext, result); } catch (Throwable t) { - logger.error("class[{}] before method[{}] intercept failue:{}", new Object[] {obj.getClass(), method.getName(), t.getMessage()}, t); + easyLogger.error("class[{}] before method[{}] intercept failue:{}", new Object[] {obj.getClass(), method.getName(), t.getMessage()}, t); } Object ret = null; @@ -48,14 +48,14 @@ public class ClassInstanceMethodsInterceptor { try { interceptor.handleMethodException(t, instanceContext, interceptorContext); } catch (Throwable t2) { - logger.error("class[{}] handle method[{}] exception failue:{}", new Object[] {obj.getClass(), method.getName(), t2.getMessage()}, t2); + easyLogger.error("class[{}] handle method[{}] exception failue:{}", new Object[] {obj.getClass(), method.getName(), t2.getMessage()}, t2); } throw t; } finally { try { ret = interceptor.afterMethod(instanceContext, interceptorContext, ret); } catch (Throwable t) { - logger.error("class[{}] after method[{}] intercept failue:{}", new Object[] {obj.getClass(), method.getName(), t.getMessage()}, t); + easyLogger.error("class[{}] after method[{}] intercept failue:{}", new Object[] {obj.getClass(), method.getName(), t.getMessage()}, t); } } return ret; diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/interceptor/enhance/ClassStaticMethodsInterceptor.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/interceptor/enhance/ClassStaticMethodsInterceptor.java index 1c2ba1c73..87e29fb05 100644 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/interceptor/enhance/ClassStaticMethodsInterceptor.java +++ b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/interceptor/enhance/ClassStaticMethodsInterceptor.java @@ -1,7 +1,7 @@ package com.a.eye.skywalking.plugin.interceptor.enhance; import com.a.eye.skywalking.logging.LogManager; -import com.a.eye.skywalking.logging.Logger; +import com.a.eye.skywalking.logging.EasyLogger; import com.a.eye.skywalking.plugin.interceptor.loader.InterceptorInstanceLoader; import net.bytebuddy.implementation.bind.annotation.AllArguments; import net.bytebuddy.implementation.bind.annotation.Origin; @@ -17,7 +17,7 @@ import java.util.concurrent.Callable; * @author wusheng */ public class ClassStaticMethodsInterceptor { - private static Logger logger = LogManager.getLogger(ClassStaticMethodsInterceptor.class); + private static EasyLogger easyLogger = LogManager.getLogger(ClassStaticMethodsInterceptor.class); private String staticMethodsAroundInterceptorClassName; @@ -35,7 +35,7 @@ public class ClassStaticMethodsInterceptor { try { interceptor.beforeMethod(interceptorContext, result); } catch (Throwable t) { - logger.error("class[{}] before static method[{}] intercept failue:{}", new Object[] {clazz, method.getName(), t.getMessage()}, t); + easyLogger.error("class[{}] before static method[{}] intercept failue:{}", new Object[] {clazz, method.getName(), t.getMessage()}, t); } @@ -50,14 +50,14 @@ public class ClassStaticMethodsInterceptor { try { interceptor.handleMethodException(t, interceptorContext); } catch (Throwable t2) { - logger.error("class[{}] handle static method[{}] exception failue:{}", new Object[] {clazz, method.getName(), t2.getMessage()}, t2); + easyLogger.error("class[{}] handle static method[{}] exception failue:{}", new Object[] {clazz, method.getName(), t2.getMessage()}, t2); } throw t; } finally { try { ret = interceptor.afterMethod(interceptorContext, ret); } catch (Throwable t) { - logger.error("class[{}] after static method[{}] intercept failue:{}", new Object[] {clazz, method.getName(), t.getMessage()}, t); + easyLogger.error("class[{}] after static method[{}] intercept failue:{}", new Object[] {clazz, method.getName(), t.getMessage()}, t); } } return ret; diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/interceptor/loader/InterceptorInstanceLoader.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/interceptor/loader/InterceptorInstanceLoader.java index f52e8c08a..5c2890c63 100644 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/interceptor/loader/InterceptorInstanceLoader.java +++ b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/interceptor/loader/InterceptorInstanceLoader.java @@ -1,7 +1,7 @@ package com.a.eye.skywalking.plugin.interceptor.loader; import com.a.eye.skywalking.logging.LogManager; -import com.a.eye.skywalking.logging.Logger; +import com.a.eye.skywalking.logging.EasyLogger; import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; @@ -16,7 +16,7 @@ import java.util.concurrent.locks.ReentrantLock; * Created by wusheng on 16/8/2. */ public class InterceptorInstanceLoader { - private static Logger logger = LogManager.getLogger(InterceptorInstanceLoader.class); + private static EasyLogger easyLogger = LogManager.getLogger(InterceptorInstanceLoader.class); private static ConcurrentHashMap INSTANCE_CACHE = new ConcurrentHashMap<>(); @@ -72,7 +72,7 @@ public class InterceptorInstanceLoader { BufferedInputStream is = null; ByteArrayOutputStream baos = null; try { - logger.debug("Read binary code of {} using classload {}", className, InterceptorInstanceLoader.class.getClassLoader()); + easyLogger.debug("Read binary code of {} using classload {}", className, InterceptorInstanceLoader.class.getClassLoader()); is = new BufferedInputStream(InterceptorInstanceLoader.class.getResourceAsStream(path)); baos = new ByteArrayOutputStream(); int ch = 0; @@ -81,7 +81,7 @@ public class InterceptorInstanceLoader { } data = baos.toByteArray(); } catch (IOException e) { - logger.error(e.getMessage(), e); + easyLogger.error(e.getMessage(), e); } finally { if (is != null) try { @@ -105,7 +105,7 @@ public class InterceptorInstanceLoader { } } defineClassMethod.setAccessible(true); - logger.debug("load binary code of {} to classload {}", className, targetClassLoader); + easyLogger.debug("load binary code of {} to classload {}", className, targetClassLoader); Class type = (Class) defineClassMethod.invoke(targetClassLoader, className, data, 0, data.length, null); return (T) type.newInstance(); } diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/protocol/util/BuriedPointMachineUtil.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/protocol/util/BuriedPointMachineUtil.java index 1108fea18..4440a9f46 100644 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/protocol/util/BuriedPointMachineUtil.java +++ b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/protocol/util/BuriedPointMachineUtil.java @@ -5,7 +5,7 @@ import java.net.InetAddress; import java.net.UnknownHostException; public final class BuriedPointMachineUtil { - private static String processNo; + private static int processNo = -1; private static String IP; private static String hostName; @@ -13,10 +13,14 @@ public final class BuriedPointMachineUtil { processNo = getProcessNo(); } - public static String getProcessNo() { - if (StringUtil.isEmpty(processNo)) { + public static int getProcessNo() { + if (processNo != -1) { String name = ManagementFactory.getRuntimeMXBean().getName(); - processNo = name.split("@")[0]; + try { + processNo = Integer.parseInt(name.split("@")[0]); + }catch(Throwable t){ + processNo = 0; + } } return processNo; } diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/protocol/util/TraceIdGenerator.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/protocol/util/TraceIdGenerator.java index cc44cff93..0a9677f76 100644 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/protocol/util/TraceIdGenerator.java +++ b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/protocol/util/TraceIdGenerator.java @@ -3,42 +3,41 @@ package com.a.eye.skywalking.protocol.util; import java.util.UUID; import com.a.eye.skywalking.conf.Constants; +import com.a.eye.skywalking.network.grpc.TraceId; public final class TraceIdGenerator { - private static final ThreadLocal ThreadTraceIdSequence = new ThreadLocal(); + private static final ThreadLocal ThreadTraceIdSequence = new ThreadLocal(); - private static final String PROCESS_UUID; + private static final int PROCESS_UUID; - static { - String uuid = UUID.randomUUID().toString().replaceAll("-", ""); - PROCESS_UUID = uuid.substring(uuid.length() - 7); - } + static { + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + PROCESS_UUID = uuid.substring(uuid.length() - 7).hashCode(); + } - private TraceIdGenerator() { - } + private TraceIdGenerator() { + } - /** - * TraceId由以下规则组成
- * 2位version号 + 1位时间戳(毫秒数) + 1位进程随机号(UUID后7位) + 1位进程数号 + 1位线程号 + 1位线程内序号 - * - * 注意:这里的位,是指“.”作为分隔符所占的位数,非字符串长度的位数。 - * TraceId为不定长字符串,但保证在分布式集群条件下的唯一性 - * - * @return - */ - public static String generate() { - Integer seq = ThreadTraceIdSequence.get(); - if (seq == null || seq == 10000 || seq > 10000) { - seq = 0; - } - seq++; - ThreadTraceIdSequence.set(seq); + /** + * TraceId由以下规则组成
+ * version号 + 1位时间戳(毫秒数) + 1位进程随机号(UUID后7位) + 1位进程数号 + 1位线程号 + 1位线程内序号 + *

+ * 注意:这里的位,是指“.”作为分隔符所占的位数,非字符串长度的位数。 + * TraceId为6个片段组成的数组 + * + * @return + */ + public static TraceId generate() { + Integer seq = ThreadTraceIdSequence.get(); + if (seq == null || seq == 10000 || seq > 10000) { + seq = 0; + } + seq++; + ThreadTraceIdSequence.set(seq); - return Constants.SDK_VERSION - + "." + System.currentTimeMillis() - + "." + PROCESS_UUID - + "." + BuriedPointMachineUtil.getProcessNo() - + "." + Thread.currentThread().getId() - + "." + seq; - } + return TraceId.newBuilder().addSegments(Constants.SDK_VERSION) + .addSegments(System.currentTimeMillis()).addSegments(PROCESS_UUID) + .addSegments(BuriedPointMachineUtil.getProcessNo()) + .addSegments(Thread.currentThread().getId()).addSegments(seq).build(); + } } diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/selfexamination/HeathReading.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/selfexamination/HeathReading.java deleted file mode 100644 index 2fb71cac9..000000000 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/selfexamination/HeathReading.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.a.eye.skywalking.selfexamination; - -import java.util.HashMap; -import java.util.Map; - -public class HeathReading { - public static final String ERROR = "[ERROR]"; - public static final String WARNING = "[WARNING]"; - public static final String INFO = "[INFO]"; - - private String id; - - private Map datas = new HashMap(); - - /** - * 健康读数,只应该在工作线程中创建 - * - */ - public HeathReading(String id) { - this.id = id; - } - - public void updateData(String key, String newData){ - if(datas.containsKey(key)){ - datas.get(key).updateData(newData); - }else{ - datas.put(key, new HeathDetailData(newData)); - } - } - - @Override - public String toString(){ - StringBuilder sb = new StringBuilder(); - sb.append("id<").append(this.id).append(">\n"); - for(Map.Entry data : datas.entrySet()){ - sb.append(data.getKey()).append(data.getValue().toString()).append("\n"); - } - - //reset data - datas = new HashMap(); - return sb.toString(); - } - - class HeathDetailData{ - private String data; - - private long statusTime; - - HeathDetailData(String initialData){ - data = initialData; - statusTime = System.currentTimeMillis(); - } - - void updateData(String newData){ - data = newData; - statusTime = System.currentTimeMillis(); - } - - String getData() { - return data; - } - - long getStatusTime() { - return statusTime; - } - - @Override - public String toString(){ - return data + "(t:" + statusTime + ")"; - } - } -} diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/selfexamination/SDKHealthCollector.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/selfexamination/SDKHealthCollector.java deleted file mode 100644 index ac91bc648..000000000 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/selfexamination/SDKHealthCollector.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.a.eye.skywalking.selfexamination; - -import java.util.Arrays; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import com.a.eye.skywalking.conf.Config; -import com.a.eye.skywalking.logging.LogManager; -import com.a.eye.skywalking.logging.Logger; -import com.a.eye.skywalking.conf.AuthDesc; -import com.a.eye.skywalking.protocol.util.BuriedPointMachineUtil; - -public class SDKHealthCollector extends Thread { - private static Logger logger = LogManager - .getLogger(SDKHealthCollector.class); - - private static Map heathReadings = new ConcurrentHashMap(); - - private SDKHealthCollector() { - super("HealthCollector"); - this.setDaemon(true); - } - - public static void init() { - if (AuthDesc.isAuth()) { - new SDKHealthCollector().start(); - } - } - - public static HeathReading getCurrentHeathReading(String extraId) { - String id = getId(extraId); - if (!heathReadings.containsKey(id)) { - synchronized (heathReadings) { - if (!heathReadings.containsKey(id)) { - if (heathReadings.keySet().size() > 5000) { - throw new RuntimeException( - "use ServerHealthCollector illegal. There is an overflow trend of SDK Health Collector Report Data."); - } - heathReadings.put(id, new HeathReading(id)); - } - } - } - return heathReadings.get(id); - } - - private static String getId(String extraId) { - return "SDK-API,M:" + BuriedPointMachineUtil.getHostDesc() + ",P:" - + BuriedPointMachineUtil.getProcessNo() + ",T:" - + Thread.currentThread().getName() + "(" - + Thread.currentThread().getId() + ")" - + (extraId == null ? "" : ",extra:" + extraId); - } - - @Override - public void run() { - while (true) { - try { - Map heathReadingsSnapshot = heathReadings; - heathReadings = new ConcurrentHashMap(); - String[] keyList = heathReadingsSnapshot.keySet().toArray( - new String[0]); - Arrays.sort(keyList); - StringBuilder log = new StringBuilder(); - log.append("\n---------SDK Health Collector Report---------\n"); - for (String key : keyList) { - log.append(heathReadingsSnapshot.get(key)).append("\n"); - } - log.append("------------------------------------------------\n"); - - logger.info(log); - - try { - Thread.sleep(Config.HealthCollector.REPORT_INTERVAL); - } catch (InterruptedException e) { - logger.warn("sleep error.", e); - } - } catch (Throwable t) { - logger.error("SDKHealthCollector report error.", t); - } - } - } -} diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/sender/DataSender.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/sender/DataSender.java deleted file mode 100644 index b2a9a7715..000000000 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/sender/DataSender.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.a.eye.skywalking.sender; - -import com.a.eye.skywalking.selfexamination.HeathReading; -import com.a.eye.skywalking.selfexamination.SDKHealthCollector; -import com.a.eye.skywalking.protocol.common.ISerializable; -import io.netty.bootstrap.Bootstrap; -import io.netty.channel.Channel; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.ChannelInboundHandlerAdapter; -import io.netty.channel.ChannelInitializer; -import io.netty.channel.ChannelOption; -import io.netty.channel.ChannelPipeline; -import io.netty.channel.EventLoopGroup; -import io.netty.channel.nio.NioEventLoopGroup; -import io.netty.channel.socket.SocketChannel; -import io.netty.channel.socket.nio.NioSocketChannel; -import io.netty.handler.codec.LengthFieldBasedFrameDecoder; -import io.netty.handler.codec.LengthFieldPrepender; -import io.netty.handler.codec.bytes.ByteArrayDecoder; -import io.netty.handler.codec.bytes.ByteArrayEncoder; - -import java.io.IOException; -import java.net.InetSocketAddress; -import java.util.List; - -import com.a.eye.skywalking.protocol.TransportPackager; - -public class DataSender implements IDataSender { - private EventLoopGroup group; - private SenderStatus status = SenderStatus.FAILED; - private InetSocketAddress socketAddress; - private Channel channel; - - public DataSender(String ip, int port) throws IOException { - this(new InetSocketAddress(ip, port)); - } - - public DataSender(InetSocketAddress address) throws IOException { - this.socketAddress = address; - status = SenderStatus.READY; - group = new NioEventLoopGroup(); - try { - Bootstrap bootstrap = new Bootstrap(); - bootstrap.group(group) - .channel(NioSocketChannel.class) - .option(ChannelOption.TCP_NODELAY, true) - .handler(new ChannelInitializer() { - @Override - protected void initChannel(SocketChannel ch) throws Exception { - ChannelPipeline p = ch.pipeline(); - p.addLast("frameDecoder", new LengthFieldBasedFrameDecoder(Integer.MAX_VALUE, 0, 4, 0, 4)); - p.addLast("frameEncoder", new LengthFieldPrepender(4)); - p.addLast("decoder", new ByteArrayDecoder()); - p.addLast("encoder", new ByteArrayEncoder()); - p.addLast(new ChannelInboundHandlerAdapter() { - public void channelActive(ChannelHandlerContext ctx) throws Exception { - super.channelActive(ctx); - channel = ctx.channel(); - } - }); - } - }); - bootstrap.connect(address).sync(); - } catch (Exception e) { - status = SenderStatus.FAILED; - SDKHealthCollector - .getCurrentHeathReading("sender").updateData(HeathReading.INFO, "DataSender[" + socketAddress + "] send data successfully."); - } - } - - /** - * 返回是否发送成功 - * - * @param packageData - * @return - */ - @Override - public boolean send(List packageData) { - try { - if (channel != null && channel.isActive()) { - - byte[] dataPackage = TransportPackager.pack(packageData); - channel.writeAndFlush(dataPackage); - - SDKHealthCollector.getCurrentHeathReading("sender").updateData(HeathReading.INFO, "DataSender[" + socketAddress + "] send data successfully."); - return true; - }else{ - DataSenderFactoryWithBalance.unRegister(this); - 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[" + socketAddress + "] channel broken. unregister sender."); - } - - return false; - } - - public InetSocketAddress getServerAddr() { - return this.socketAddress; - } - - public void close() { - if (group != null) { - group.shutdownGracefully(); - } - } - - public enum SenderStatus { - READY, FAILED - } - - public SenderStatus getStatus() { - return status; - } - - public void setStatus(SenderStatus status) { - this.status = status; - } -} diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/sender/DataSenderFactoryWithBalance.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/sender/DataSenderFactoryWithBalance.java deleted file mode 100644 index c35001e71..000000000 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/sender/DataSenderFactoryWithBalance.java +++ /dev/null @@ -1,239 +0,0 @@ -package com.a.eye.skywalking.sender; - -import com.a.eye.skywalking.conf.Config; -import com.a.eye.skywalking.logging.LogManager; -import com.a.eye.skywalking.logging.Logger; -import com.a.eye.skywalking.selfexamination.HeathReading; -import com.a.eye.skywalking.selfexamination.SDKHealthCollector; -import com.a.eye.skywalking.protocol.util.StringUtil; - -import java.io.IOException; -import java.net.InetSocketAddress; -import java.util.*; -import java.util.concurrent.ThreadLocalRandom; - -public class DataSenderFactoryWithBalance { - - private static Logger logger = LogManager.getLogger(DataSenderFactoryWithBalance.class); - // unUsedServerAddress存放没有使用的服务器地址, - private static List unusedServerAddresses = new ArrayList(); - - private static List usingDataSender = new ArrayList(); - private static int maxKeepConnectingSenderSize; - - private static int calculateMaxKeeperConnectingSenderSize(int allAddressSize) { - if (Config.Sender.CONNECT_PERCENT <= 0 || Config.Sender.CONNECT_PERCENT > 100) { - logger.error("CONNECT_PERCENT must between 1 and 100"); - System.exit(-1); - } - return (int) Math.ceil(allAddressSize - * ((1.0 * Config.Sender.CONNECT_PERCENT / 100) % 100)); - } - - // 初始化服务端的地址数据 - static { - // 获取数据 - if (StringUtil.isEmpty(Config.Sender.SERVERS_ADDR)) { - throw new IllegalArgumentException( - "Collection service configuration error."); - } - - // 初始化地址 - Set tmpInetSocketAddress = new HashSet(); - for (String serverConfig : Config.Sender.SERVERS_ADDR.split(";")) { - String[] server = serverConfig.split(":"); - if (server.length != 2) - throw new IllegalArgumentException( - "Collection service configuration error."); - tmpInetSocketAddress.add(new InetSocketAddress(server[0], Integer - .valueOf(server[1]))); - } - - unusedServerAddresses.addAll(tmpInetSocketAddress); - - // 根据配置的服务器集群的地址,来计算保持连接的Sender的数量 - maxKeepConnectingSenderSize = calculateMaxKeeperConnectingSenderSize(tmpInetSocketAddress - .size()); - // 最大连接消费线程小于保持连接的Sender的数量,就不需要保持那么多的保持连接的Sender的数量 - if (maxKeepConnectingSenderSize > Config.Consumer.MAX_CONSUMER - * Config.Buffer.POOL_SIZE) { - maxKeepConnectingSenderSize = Config.Consumer.MAX_CONSUMER - * Config.Buffer.POOL_SIZE; - } - - new DataSenderChecker().start(); - } - - // 获取连接 - public static IDataSender getSender() { - DataSenderWithCopies readySender = new DataSenderWithCopies(maxKeepConnectingSenderSize); - while (true) { - try { - if (usingDataSender.size() > 0) { - int index = ThreadLocalRandom.current().nextInt(0, - usingDataSender.size()); - if (usingDataSender.get(index).getStatus() == DataSender.SenderStatus.READY) { - while (readySender.append(usingDataSender.get(index))) { - if (++index == usingDataSender.size()) { - index = 0; - } - } - break; - } - } - - if (!readySender.isReady()) { - try { - Thread.sleep(Config.Sender.RETRY_GET_SENDER_WAIT_INTERVAL); - } catch (InterruptedException e) { - logger.error("Sleep failed", e); - } - } - } catch (Throwable e) { - logger.error("get sender failed", e); - } - - } - - return readySender; - } - - // 定时Sender状态检查 - public static class DataSenderChecker extends Thread { - public DataSenderChecker() { - super("Data-Sender-Checker"); - this.setDaemon(true); - } - - @Override - public void run() { - long sleepTime = 0; - while (true) { - try { - DataSender newSender; - // removing failed sender - Iterator senderIterator = usingDataSender - .iterator(); - DataSender tmpDataSender; - while (senderIterator.hasNext()) { - tmpDataSender = senderIterator.next(); - if (tmpDataSender.getStatus() == DataSender.SenderStatus.FAILED) { - tmpDataSender.close(); - unusedServerAddresses.add(tmpDataSender - .getServerAddr()); - senderIterator.remove(); - SDKHealthCollector.getCurrentHeathReading("remove").updateData(HeathReading.INFO, "remove disconnected sender."); - } - } - - // try to fill up senders. if size is not enough. - while (unusedServerAddresses.size() > 0 && usingDataSender.size() < maxKeepConnectingSenderSize) { - if ((newSender = findReadySender()) == null) { - // no available sender. ignore. - break; - } - usingDataSender.add(newSender); - SDKHealthCollector.getCurrentHeathReading("add").updateData(HeathReading.INFO, "add new sender."); - } - - // try to switch. - if (sleepTime >= Config.Sender.SWITCH_SENDER_INTERVAL && unusedServerAddresses.size() > 0) { - // if sender is enough, go to switch for balancing. - if (usingDataSender.size() >= maxKeepConnectingSenderSize) { - DataSender toBeSwitchSender; - DataSender tmpSender; - - int toBeSwitchIndex; - - if (usingDataSender.size() - 1 > 0) { - toBeSwitchIndex = ThreadLocalRandom.current() - .nextInt(0, usingDataSender.size() - 1); - } else { - toBeSwitchIndex = 0; - } - - toBeSwitchSender = usingDataSender - .get(toBeSwitchIndex); - tmpSender = findReadySender(); - if (tmpSender != null) { - usingDataSender.set(toBeSwitchIndex, tmpSender); - try { - Thread.sleep(Config.Sender.CLOSE_SENDER_COUNTDOWN); - } catch (InterruptedException e) { - logger.error("Sleep Failed", e); - } - toBeSwitchSender.close(); - unusedServerAddresses.remove(tmpSender - .getServerAddr()); - unusedServerAddresses.add(toBeSwitchSender - .getServerAddr()); - SDKHealthCollector.getCurrentHeathReading("switch").updateData(HeathReading.INFO, "switch existed sender."); - } - } - sleepTime = 0; - } - } catch (Throwable e) { - SDKHealthCollector.getCurrentHeathReading(null).updateData(HeathReading.ERROR, "DataSenderChecker running failed:" + e.getMessage()); - logger.error("DataSenderChecker running failed", e); - } finally { - SDKHealthCollector.getCurrentHeathReading(null).updateData(HeathReading.INFO, "using available DataSender connect to: " + listUsingServers()); - } - - sleepTime += Config.Sender.CHECKER_THREAD_WAIT_INTERVAL; - try { - Thread.sleep(Config.Sender.CHECKER_THREAD_WAIT_INTERVAL); - } catch (InterruptedException e) { - logger.error("Sleep failed"); - } - - } - } - } - - private static DataSender findReadySender() { - DataSender result = null; - int index = 0; - - if (unusedServerAddresses.size() > 1) { - index = ThreadLocalRandom.current().nextInt(0, - unusedServerAddresses.size()); - } - - for (int i = 0; i < unusedServerAddresses.size(); i++, index++) { - - if (index == unusedServerAddresses.size()) { - index = 0; - } - - try { - result = new DataSender(unusedServerAddresses.get(index)); - unusedServerAddresses.remove(index); - break; - } catch (IOException e) { - if (result != null) { - result.close(); - } - continue; - } - } - - return result; - } - - public static void unRegister(DataSender socket) { - socket.setStatus(DataSender.SenderStatus.FAILED); - } - - private static String listUsingServers() { - StringBuilder usingAddrDesc = new StringBuilder(); - if (usingDataSender.size() > 0) { - for (DataSender sender : usingDataSender) { - if (usingAddrDesc.length() > 0) { - usingAddrDesc.append(","); - } - usingAddrDesc.append(sender.getServerAddr().toString()); - } - } - return usingAddrDesc.toString(); - } -} diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/sender/DataSenderWithCopies.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/sender/DataSenderWithCopies.java deleted file mode 100644 index e5c08b2c1..000000000 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/sender/DataSenderWithCopies.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.a.eye.skywalking.sender; - -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import com.a.eye.skywalking.conf.Config; -import com.a.eye.skywalking.selfexamination.HeathReading; -import com.a.eye.skywalking.selfexamination.SDKHealthCollector; -import com.a.eye.skywalking.protocol.common.ISerializable; - -/** - * 带副本的数据发送器 - * - * @author wusheng - * - */ -public class DataSenderWithCopies implements IDataSender { - private int maxCopyNum; - - private Set senders = new HashSet(); - - public DataSenderWithCopies(int maxKeepConnectingSenderSize) { - // 最大副本数量,不能大于可用最大连接数 - maxCopyNum = maxKeepConnectingSenderSize > Config.Sender.MAX_COPY_NUM ? Config.Sender.MAX_COPY_NUM - : maxKeepConnectingSenderSize; - } - - /** - * 尝试增加到最大可用副本数,极端情况可能不足 - * - * @param dataSender - * @return - */ - public boolean append(IDataSender dataSender) { - // 出现重复sender,副本到达最大限度 - if (senders.contains(dataSender)) { - return false; - } - senders.add(dataSender); - return senders.size() < maxCopyNum; - } - - boolean isReady(){ - return senders.size() > 0 ; - } - - - /** - * 尝试向所有副本发送 - */ - public boolean send(List packageData) { - int successNum = 0; - for (IDataSender sender : senders) { - if (sender.send(packageData)) { - successNum++; - } - } - SDKHealthCollector.getCurrentHeathReading("DataSenderWithCopies").updateData(HeathReading.INFO, "DataSender send data with copynum=" + successNum + " successfully."); - if (senders.size() == 1 && successNum == 1) { - return true; - } else if (successNum >= 2) { - return true; - } else { - return false; - } - } - -} diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/sender/IDataSender.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/sender/IDataSender.java deleted file mode 100644 index c7c1d843b..000000000 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/sender/IDataSender.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.a.eye.skywalking.sender; - -import com.a.eye.skywalking.protocol.common.ISerializable; - -import java.util.List; - -public interface IDataSender { - public boolean send(List data); -} diff --git a/skywalking-sniffer/skywalking-api/src/test/java/test/a/eye/cloud/logging/LoggingTest.java b/skywalking-sniffer/skywalking-api/src/test/java/test/a/eye/cloud/logging/LoggingTest.java index 06a9361ba..0a067674b 100644 --- a/skywalking-sniffer/skywalking-api/src/test/java/test/a/eye/cloud/logging/LoggingTest.java +++ b/skywalking-sniffer/skywalking-api/src/test/java/test/a/eye/cloud/logging/LoggingTest.java @@ -2,26 +2,26 @@ package test.a.eye.cloud.logging; import com.a.eye.skywalking.conf.Config; import com.a.eye.skywalking.logging.LogManager; -import com.a.eye.skywalking.logging.Logger; +import com.a.eye.skywalking.logging.EasyLogger; import org.junit.Test; public class LoggingTest { - Logger logger = LogManager.getLogger(LoggingTest.class); + EasyLogger easyLogger = LogManager.getLogger(LoggingTest.class); @Test public void testNormalLogging() { - logger.debug("Hello World"); + easyLogger.debug("Hello World"); } @Test public void testErrorLogging() { - logger.error("Hello World", new RuntimeException("Failed message")); + easyLogger.error("Hello World", new RuntimeException("Failed message")); } @Test public void testConvertFile() { Config.Logging.MAX_LOG_FILE_LENGTH = 2400; - logger.error("Hello World", new RuntimeException("Failed message")); + easyLogger.error("Hello World", new RuntimeException("Failed message")); } } diff --git a/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/pom.xml b/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/pom.xml deleted file mode 100644 index d6a15cf34..000000000 --- a/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/pom.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - skywalking-sdk-plugin - com.a.eye - 2.0-2016 - - 4.0.0 - - custom-local-method-interceptor-plugin - jar - - custom-local-method-interceptor-plugin - http://maven.apache.org - - - UTF-8 - - diff --git a/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/main/java/com/a/eye/skywalking/plugin/custom/localmethod/CustomLocalMethodInterceptor.java b/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/main/java/com/a/eye/skywalking/plugin/custom/localmethod/CustomLocalMethodInterceptor.java deleted file mode 100644 index d14f7ebba..000000000 --- a/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/main/java/com/a/eye/skywalking/plugin/custom/localmethod/CustomLocalMethodInterceptor.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.a.eye.skywalking.plugin.custom.localmethod; - -import com.a.eye.skywalking.api.Tracing; -import com.a.eye.skywalking.buffer.ContextBuffer; -import com.a.eye.skywalking.conf.Config; -import com.a.eye.skywalking.invoke.monitor.LocalMethodInvokeMonitor; -import com.a.eye.skywalking.model.Identification; -import com.a.eye.skywalking.plugin.interceptor.EnhancedClassInstanceContext; -import com.a.eye.skywalking.plugin.interceptor.enhance.*; -import com.a.eye.skywalking.protocol.InputParametersSpan; -import com.a.eye.skywalking.protocol.OutputParameterSpan; -import com.google.gson.Gson; - -public class CustomLocalMethodInterceptor implements InstanceMethodsAroundInterceptor, StaticMethodsAroundInterceptor { - - @Override - public void onConstruct(EnhancedClassInstanceContext context, ConstructorInvokeContext interceptorContext) { - } - - @Override - public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, - MethodInterceptResult result) { - Identification.IdentificationBuilder identificationBuilder = Identification.newBuilder(); - identificationBuilder.spanType(new CustomLocalSpanType()).viewPoint( - fullMethodName(interceptorContext.inst().getClass(), interceptorContext.methodName(), - interceptorContext.argumentTypes())); - - new LocalMethodInvokeMonitor().beforeInvoke(identificationBuilder.build()); - - recordParametersAndSave2BufferIfNecessary(interceptorContext.allArguments()); - } - - private void recordParametersAndSave2BufferIfNecessary(Object[] arguments) { - if (Config.Plugin.CustomLocalMethodInterceptorPlugin.RECORD_PARAM_ENABLE) { - InputParametersSpan inputParametersSpan = new InputParametersSpan(Tracing.getTraceId(), Tracing.getTracelevelId()); - for (Object param : arguments) { - String paramStr; - try { - paramStr = new Gson().toJson(param); - } catch (Throwable e) { - paramStr = "N/A"; - } - inputParametersSpan.addParameter(paramStr); - } - - ContextBuffer.save(inputParametersSpan); - } - } - - @Override - public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, - Object ret) { - recordResultAndSave2BufferIfNecessary(ret); - new LocalMethodInvokeMonitor().afterInvoke(); - return ret; - } - - @Override - public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, - InstanceMethodInvokeContext interceptorContext) { - new LocalMethodInvokeMonitor().occurException(t); - } - - - @Override - public void beforeMethod(StaticMethodInvokeContext interceptorContext, MethodInterceptResult result) { - Identification.IdentificationBuilder identificationBuilder = Identification.newBuilder(); - identificationBuilder.spanType(new CustomLocalSpanType()).viewPoint( - fullMethodName(interceptorContext.claszz(), interceptorContext.methodName(), - interceptorContext.argumentTypes())); - - new LocalMethodInvokeMonitor().beforeInvoke(identificationBuilder.build()); - - recordParametersAndSave2BufferIfNecessary(interceptorContext.allArguments()); - } - - @Override - public Object afterMethod(StaticMethodInvokeContext interceptorContext, Object ret) { - recordResultAndSave2BufferIfNecessary(ret); - new LocalMethodInvokeMonitor().afterInvoke(); - return ret; - } - - private void recordResultAndSave2BufferIfNecessary(Object ret) { - if (Config.Plugin.CustomLocalMethodInterceptorPlugin.RECORD_PARAM_ENABLE){ - OutputParameterSpan outputParameterSpan = new OutputParameterSpan(Tracing.getTraceId(), Tracing.getTracelevelId()); - String retStr; - try{ - retStr = new Gson().toJson(ret); - }catch (Throwable e){ - retStr = "N/A"; - } - outputParameterSpan.setOutputParameter(retStr); - ContextBuffer.save(outputParameterSpan); - } - } - - @Override - public void handleMethodException(Throwable t, MethodInvokeContext interceptorContext) { - new LocalMethodInvokeMonitor().occurException(t); - } - - private String fullMethodName(Class clazz, String simpleMethodName, Class[] allArgumentTypes) { - StringBuilder methodName = new StringBuilder(clazz.getName() + "." + simpleMethodName + "("); - for (Class argument : allArgumentTypes) { - methodName.append(argument.getName() + ","); - } - - if (allArgumentTypes.length > 0) { - methodName.deleteCharAt(methodName.length() - 1); - } - - methodName.append(")"); - return methodName.toString(); - } -} diff --git a/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/main/java/com/a/eye/skywalking/plugin/custom/localmethod/CustomLocalSpanType.java b/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/main/java/com/a/eye/skywalking/plugin/custom/localmethod/CustomLocalSpanType.java deleted file mode 100644 index e0a02ee9f..000000000 --- a/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/main/java/com/a/eye/skywalking/plugin/custom/localmethod/CustomLocalSpanType.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.a.eye.skywalking.plugin.custom.localmethod; - -import com.a.eye.skywalking.api.IBuriedPointType; -import com.a.eye.skywalking.protocol.common.CallType; - -public class CustomLocalSpanType implements IBuriedPointType { - @Override - public String getTypeName() { - return "L"; - } - - @Override - public CallType getCallType() { - return CallType.SYNC; - } -} diff --git a/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/main/java/com/a/eye/skywalking/plugin/custom/localmethod/define/CustomLocalMethodPluginDefine.java b/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/main/java/com/a/eye/skywalking/plugin/custom/localmethod/define/CustomLocalMethodPluginDefine.java deleted file mode 100644 index 47141c893..000000000 --- a/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/main/java/com/a/eye/skywalking/plugin/custom/localmethod/define/CustomLocalMethodPluginDefine.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.a.eye.skywalking.plugin.custom.localmethod.define; - -import com.a.eye.skywalking.conf.Config; -import com.a.eye.skywalking.plugin.interceptor.MethodMatcher; -import com.a.eye.skywalking.plugin.interceptor.enhance.ClassEnhancePluginDefine; -import com.a.eye.skywalking.plugin.interceptor.matcher.AnyMethodsMatcher; - -public class CustomLocalMethodPluginDefine extends ClassEnhancePluginDefine { - - @Override - protected MethodMatcher[] getInstanceMethodsMatchers() { - return new MethodMatcher[] {new AnyMethodsMatcher()}; - } - - @Override - protected String getInstanceMethodsInterceptor() { - return "com.a.eye.skywalking.plugin.custom.localmethod.CustomLocalMethodInterceptor"; - } - - @Override - protected MethodMatcher[] getStaticMethodsMatchers() { - return new MethodMatcher[] {new AnyMethodsMatcher()}; - } - - @Override - protected String getStaticMethodsInterceptor() { - return "com.a.eye.skywalking.plugin.custom.localmethod.CustomLocalMethodInterceptor"; - } - - @Override - protected String enhanceClassName() { - if (!Config.Plugin.CustomLocalMethodInterceptorPlugin.IS_ENABLE){ - return null; - } - return Config.Plugin.CustomLocalMethodInterceptorPlugin.PACKAGE_PREFIX; - } -} diff --git a/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/main/resources/skywalking-plugin.def b/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/main/resources/skywalking-plugin.def deleted file mode 100644 index a32a22796..000000000 --- a/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/main/resources/skywalking-plugin.def +++ /dev/null @@ -1 +0,0 @@ -com.a.eye.skywalking.plugin.custom.localmethod.define.CustomLocalMethodPluginDefine diff --git a/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/test/java/com/a/eye/skywalking/plugin/custom/localmethod/CustomLocalMethodPluginTest.java b/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/test/java/com/a/eye/skywalking/plugin/custom/localmethod/CustomLocalMethodPluginTest.java deleted file mode 100644 index c26f2990e..000000000 --- a/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/test/java/com/a/eye/skywalking/plugin/custom/localmethod/CustomLocalMethodPluginTest.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.a.eye.skywalking.plugin.custom.localmethod; - -import com.a.eye.skywalking.plugin.TracingBootstrap; -import com.a.eye.skywalking.testframework.api.RequestSpanAssert; -import org.junit.Test; -import test.com.ai.test.TestObject; -import test.com.ai.test.TestParam; - -import java.lang.reflect.InvocationTargetException; - -public class CustomLocalMethodPluginTest { - - @Test - public void test() - throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException { - TracingBootstrap.main(new String[]{"CustomLocalMethodPluginTest"}); - } - - public static void main(String[] args) throws InterruptedException { - TestObject testObject = new TestObject(); - testObject.printlnHelloWorld(); - TestObject.staticPrintlnHelloWorld("AA", new TestParam()); - RequestSpanAssert.assertEquals(new String[][] { - {"0", "test.com.ai.test.TestObject.printlnHelloWorld()", ""}, - {"0", "test.com.ai.test.TestObject.staticPrintlnHelloWorld()", ""} - }); - } -} diff --git a/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/test/java/test/com/ai/test/TestObject.java b/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/test/java/test/com/ai/test/TestObject.java deleted file mode 100644 index 97058f5d2..000000000 --- a/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/test/java/test/com/ai/test/TestObject.java +++ /dev/null @@ -1,11 +0,0 @@ -package test.com.ai.test; - -public class TestObject { - public static void staticPrintlnHelloWorld(String aa, TestParam param){ - System.out.println("Hello World" + aa); - } - - public void printlnHelloWorld(TestParam... params){ - System.out.println("Hello World"); - } -} diff --git a/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/test/java/test/com/ai/test/TestParam.java b/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/test/java/test/com/ai/test/TestParam.java deleted file mode 100644 index b2f6e6c68..000000000 --- a/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/test/java/test/com/ai/test/TestParam.java +++ /dev/null @@ -1,7 +0,0 @@ -package test.com.ai.test; - -/** - * Created by xin on 16/8/12. - */ -public class TestParam { -} diff --git a/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/test/resources/sky-walking.auth b/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/test/resources/sky-walking.auth deleted file mode 100644 index e3d197ccc..000000000 --- a/skywalking-sniffer/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/test/resources/sky-walking.auth +++ /dev/null @@ -1,54 +0,0 @@ -#skyWalking用户ID -skywalking.user_id=123 -#skyWalking应用编码 -skywalking.application_code=skywalking-sample-dubbo -#skywalking auth的环境变量名字 -skywalking.auth_system_env_name=SKYWALKING_RUN -#skywalking数据编码 -skywalking.charset=UTF-8 -skywalking.auth_override=true -#是否使用STD替换日志输出 -skywalking.logger_std_out_override=false; - -#是否打印数据 -buriedpoint.printf=true -#埋点异常的最大长度 -buriedpoint.max_exception_stack_length=4000 -#业务字段的最大长度 -buriedpoint.businesskey_max_length=300 -#过滤异常 -buriedpoint.exclusive_exceptions=java.lang.RuntimeException - -#最大发送者的连接数阀比例 -sender.connect_percent=100 -#发送服务端配置 -sender.servers_addr=127.0.0.1:34000 -#最大发送的副本数量 -sender.max_copy_num=2 -#发送的最大长度 -sender.max_send_length=20000 -#当没有Sender时,尝试获取sender的等待周期 -sender.retry_get_sender_wait_interval=2000 - -#最大消费线程数 -consumer.max_consumer=1 -#消费者最大等待时间 -consumer.max_wait_time=5 -#发送失败等待时间 -consumer.consumer_fail_retry_wait_interval=50 - -#每个Buffer的最大个数 -buffer.buffer_max_size=18000 -#Buffer池的最大长度 -buffer.pool_size=5 - -#发送检查线程检查周期 -senderchecker.check_polling_time=200 - -#自定义本地方法插件是否开启 -plugin.customlocalmethodinterceptorplugin.is_enable=true -#自定义插件拦截的包前缀 -plugin.customlocalmethodinterceptorplugin.package_prefix=test.com.ai.test.* -#自定义插件是否记录入参 -plugin.customlocalmethodinterceptorplugin.record_param_enable=true - diff --git a/skywalking-sniffer/skywalking-sdk-plugin/pom.xml b/skywalking-sniffer/skywalking-sdk-plugin/pom.xml index f2f4cdac8..4caf13c58 100644 --- a/skywalking-sniffer/skywalking-sdk-plugin/pom.xml +++ b/skywalking-sniffer/skywalking-sdk-plugin/pom.xml @@ -16,7 +16,6 @@ httpClient-4.x-plugin jedis-2.x-plugin tomcat-7.x-8.x-plugin - custom-local-method-interceptor-plugin motan-plugin pom diff --git a/skywalking-sniffer/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/com/a/eye/skywalking/plugin/tomcat78x/define/TomcatPluginDefine.java b/skywalking-sniffer/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/com/a/eye/skywalking/plugin/tomcat78x/define/TomcatPluginDefine.java index 57ddd986d..101190402 100644 --- a/skywalking-sniffer/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/com/a/eye/skywalking/plugin/tomcat78x/define/TomcatPluginDefine.java +++ b/skywalking-sniffer/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/com/a/eye/skywalking/plugin/tomcat78x/define/TomcatPluginDefine.java @@ -1,13 +1,13 @@ package com.a.eye.skywalking.plugin.tomcat78x.define; import com.a.eye.skywalking.logging.LogManager; -import com.a.eye.skywalking.logging.Logger; +import com.a.eye.skywalking.logging.EasyLogger; import com.a.eye.skywalking.plugin.interceptor.matcher.SimpleMethodMatcher; import com.a.eye.skywalking.plugin.interceptor.MethodMatcher; import com.a.eye.skywalking.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine; public class TomcatPluginDefine extends ClassInstanceMethodsEnhancePluginDefine { - private static Logger logger = LogManager.getLogger(TomcatPluginDefine.class); + private static EasyLogger easyLogger = LogManager.getLogger(TomcatPluginDefine.class); @Override protected MethodMatcher[] getInstanceMethodsMatchers() { diff --git a/skywalking-sniffer/skywalking-test-api/pom.xml b/skywalking-sniffer/skywalking-test-api/pom.xml index df4dcd23d..0af92da46 100644 --- a/skywalking-sniffer/skywalking-test-api/pom.xml +++ b/skywalking-sniffer/skywalking-test-api/pom.xml @@ -19,5 +19,11 @@ + + com.a.eye + skywalking-api + ${project.version} + + diff --git a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/spandata/RequestSpanData.java b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/spandata/RequestSpanData.java index 2646a9246..0298125fc 100644 --- a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/spandata/RequestSpanData.java +++ b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/spandata/RequestSpanData.java @@ -53,7 +53,7 @@ public class RequestSpanData extends AbstractSpanData { return requestSpan.getApplicationId(); } - public String getProcessNo() { + public int getProcessNo() { return requestSpan.getProcessNo(); }