diff --git a/skywalking-collector/skywalking-agent/src/main/java/com/ai/cloud/skywalking/agent/SkyWalkingAgent.java b/skywalking-collector/skywalking-agent/src/main/java/com/ai/cloud/skywalking/agent/SkyWalkingAgent.java
index ca0f08355..96641af00 100644
--- a/skywalking-collector/skywalking-agent/src/main/java/com/ai/cloud/skywalking/agent/SkyWalkingAgent.java
+++ b/skywalking-collector/skywalking-agent/src/main/java/com/ai/cloud/skywalking/agent/SkyWalkingAgent.java
@@ -20,6 +20,9 @@ import java.io.File;
import java.lang.instrument.Instrumentation;
import java.net.URL;
+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);
@@ -29,7 +32,7 @@ public class SkyWalkingAgent {
final PluginDefineCategory pluginDefineCategory =
PluginDefineCategory.category(new PluginBootstrap().loadPlugins());
- new AgentBuilder.Default().type(enhanceClassMatcher(pluginDefineCategory))
+ new AgentBuilder.Default().type(enhanceClassMatcher(pluginDefineCategory).and(not(isInterface())))
.transform(new AgentBuilder.Transformer() {
public DynamicType.Builder> transform(DynamicType.Builder> builder,
TypeDescription typeDescription, ClassLoader classLoader) {
diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/BaseInvokeMonitor.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/BaseInvokeMonitor.java
index 0e6e895e2..71295174f 100644
--- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/BaseInvokeMonitor.java
+++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/BaseInvokeMonitor.java
@@ -28,8 +28,8 @@ public abstract class BaseInvokeMonitor {
protected ContextData beforeInvoke(Span spanData, Identification id) {
if (Config.BuriedPoint.PRINTF) {
- logger.debug("TraceId:" + spanData.getTraceId() + "\tviewpointId:" + id.getViewPoint() + "\tParentLevelId:"
- + spanData.getParentLevel() + "\tLevelId:" + spanData.getLevelId());
+ logger.debug("TraceId:" + spanData.getTraceId() + "\tParentLevelId:" + spanData.getParentLevel()
+ + "\tLevelId:" + spanData.getLevelId() + "\tbusinessKey:" + spanData.getParameters());
}
// 将新创建的Context存放到ThreadLocal栈中。
diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/RPCClientInvokeMonitor.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/RPCClientInvokeMonitor.java
index c6ec5aecc..f593c75b6 100644
--- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/RPCClientInvokeMonitor.java
+++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/RPCClientInvokeMonitor.java
@@ -2,6 +2,7 @@ package com.ai.cloud.skywalking.invoke.monitor;
import com.ai.cloud.skywalking.buffer.ContextBuffer;
import com.ai.cloud.skywalking.conf.AuthDesc;
+import com.ai.cloud.skywalking.conf.Config;
import com.ai.cloud.skywalking.context.CurrentThreadSpanStack;
import com.ai.cloud.skywalking.logging.LogManager;
import com.ai.cloud.skywalking.logging.Logger;
@@ -28,6 +29,10 @@ public class RPCClientInvokeMonitor extends BaseInvokeMonitor {
//设置SpanType的类型
spanData.setSpanType(SpanType.RPC_CLIENT);
+ if (Config.BuriedPoint.PRINTF) {
+ logger.debug("TraceId:" + spanData.getTraceId() + "\tParentLevelId:" + spanData.getParentLevel()
+ + "\tLevelId:" + spanData.getLevelId() + "\tbusinessKey:" + spanData.getParameters());
+ }
CurrentThreadSpanStack.push(spanData);
diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/logging/Logger.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/logging/Logger.java
index 950761f35..d4b648ffb 100644
--- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/logging/Logger.java
+++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/logging/Logger.java
@@ -3,6 +3,7 @@ package com.ai.cloud.skywalking.logging;
import com.ai.cloud.skywalking.protocol.util.LoggingUtil;
+import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -89,7 +90,7 @@ public class Logger {
break;
}
- tmpMessage = tmpMessage.replaceFirst("\\{\\}", String.valueOf(parameters[parametersIndex++]));
+ tmpMessage = tmpMessage.replaceFirst("\\{\\}", URLEncoder.encode(String.valueOf(parameters[parametersIndex++])));
startSize = index + 2;
}
return tmpMessage;
diff --git a/skywalking-collector/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/main/java/com/ai/cloud/skywalking/plugin/custom/localmethod/CustomLocalMethodInterceptor.java b/skywalking-collector/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/main/java/com/ai/cloud/skywalking/plugin/custom/localmethod/CustomLocalMethodInterceptor.java
index 72abfb6dd..90a3ae7ee 100644
--- a/skywalking-collector/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/main/java/com/ai/cloud/skywalking/plugin/custom/localmethod/CustomLocalMethodInterceptor.java
+++ b/skywalking-collector/skywalking-sdk-plugin/custom-local-method-interceptor-plugin/src/main/java/com/ai/cloud/skywalking/plugin/custom/localmethod/CustomLocalMethodInterceptor.java
@@ -43,7 +43,7 @@ public class CustomLocalMethodInterceptor implements InstanceMethodsAroundInterc
@Override
public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext,
Object ret) {
- new LocalMethodInvokeMonitor().afterInvoke();
+ recordResultIfNecessary(ret);
return ret;
}
@@ -65,10 +65,24 @@ public class CustomLocalMethodInterceptor implements InstanceMethodsAroundInterc
@Override
public Object afterMethod(StaticMethodInvokeContext interceptorContext, Object ret) {
- new LocalMethodInvokeMonitor().afterInvoke();
+ recordResultIfNecessary(ret);
return ret;
}
+ private void recordResultIfNecessary(Object ret) {
+ if (Config.Plugin.CustomLocalMethodInterceptorPlugin.RECORD_PARAM_ENABLE){
+ String retStr;
+ try{
+ retStr = new Gson().toJson(ret);
+ }catch (Exception e){
+ retStr = "N/A";
+ }
+ new LocalMethodInvokeMonitor().afterInvoke(retStr);
+ }else {
+ new LocalMethodInvokeMonitor().afterInvoke();
+ }
+ }
+
@Override
public void handleMethodException(Throwable t, MethodInvokeContext interceptorContext) {
new LocalMethodInvokeMonitor().occurException(t);
diff --git a/skywalking-protocol/src/main/gen-java/com/ai/cloud/skywalking/protocol/proto/TraceProtocol.java b/skywalking-protocol/src/main/gen-java/com/ai/cloud/skywalking/protocol/proto/TraceProtocol.java
index 87c0f2a96..dccb25119 100644
--- a/skywalking-protocol/src/main/gen-java/com/ai/cloud/skywalking/protocol/proto/TraceProtocol.java
+++ b/skywalking-protocol/src/main/gen-java/com/ai/cloud/skywalking/protocol/proto/TraceProtocol.java
@@ -100,6 +100,40 @@ public final class TraceProtocol {
*/
com.google.protobuf.ByteString
getViewpointIdBytes();
+
+ /**
+ * map<string, string> parameters = 8;
+ */
+ int getParametersCount();
+ /**
+ * map<string, string> parameters = 8;
+ */
+ boolean containsParameters(
+ java.lang.String key);
+ /**
+ * Use {@link #getParametersMap()} instead.
+ */
+ @java.lang.Deprecated
+ java.util.Map
+ getParameters();
+ /**
+ * map<string, string> parameters = 8;
+ */
+ java.util.Map
+ getParametersMap();
+ /**
+ * map<string, string> parameters = 8;
+ */
+
+ java.lang.String getParametersOrDefault(
+ java.lang.String key,
+ java.lang.String defaultValue);
+ /**
+ * map<string, string> parameters = 8;
+ */
+
+ java.lang.String getParametersOrThrow(
+ java.lang.String key);
}
/**
* Protobuf type {@code AckSpan}
@@ -189,6 +223,18 @@ public final class TraceProtocol {
viewpointId_ = bs;
break;
}
+ case 66: {
+ if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
+ parameters_ = com.google.protobuf.MapField.newMapField(
+ ParametersDefaultEntryHolder.defaultEntry);
+ mutable_bitField0_ |= 0x00000080;
+ }
+ com.google.protobuf.MapEntry
+ parameters = input.readMessage(
+ ParametersDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
+ parameters_.getMutableMap().put(parameters.getKey(), parameters.getValue());
+ break;
+ }
}
}
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -206,6 +252,17 @@ public final class TraceProtocol {
return com.ai.cloud.skywalking.protocol.proto.TraceProtocol.internal_static_AckSpan_descriptor;
}
+ @SuppressWarnings({"rawtypes"})
+ protected com.google.protobuf.MapField internalGetMapField(
+ int number) {
+ switch (number) {
+ case 8:
+ return internalGetParameters();
+ default:
+ throw new RuntimeException(
+ "Invalid map field number: " + number);
+ }
+ }
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return com.ai.cloud.skywalking.protocol.proto.TraceProtocol.internal_static_AckSpan_fieldAccessorTable
@@ -427,6 +484,82 @@ public final class TraceProtocol {
}
}
+ public static final int PARAMETERS_FIELD_NUMBER = 8;
+ private static final class ParametersDefaultEntryHolder {
+ static final com.google.protobuf.MapEntry<
+ java.lang.String, java.lang.String> defaultEntry =
+ com.google.protobuf.MapEntry
+ .newDefaultInstance(
+ com.ai.cloud.skywalking.protocol.proto.TraceProtocol.internal_static_AckSpan_ParametersEntry_descriptor,
+ com.google.protobuf.WireFormat.FieldType.STRING,
+ "",
+ com.google.protobuf.WireFormat.FieldType.STRING,
+ "");
+ }
+ private com.google.protobuf.MapField<
+ java.lang.String, java.lang.String> parameters_;
+ private com.google.protobuf.MapField
+ internalGetParameters() {
+ if (parameters_ == null) {
+ return com.google.protobuf.MapField.emptyMapField(
+ ParametersDefaultEntryHolder.defaultEntry);
+ }
+ return parameters_;
+ }
+
+ public int getParametersCount() {
+ return internalGetParameters().getMap().size();
+ }
+ /**
+ * map<string, string> parameters = 8;
+ */
+
+ public boolean containsParameters(
+ java.lang.String key) {
+ if (key == null) { throw new java.lang.NullPointerException(); }
+ return internalGetParameters().getMap().containsKey(key);
+ }
+ /**
+ * Use {@link #getParametersMap()} instead.
+ */
+ @java.lang.Deprecated
+ public java.util.Map getParameters() {
+ return getParametersMap();
+ }
+ /**
+ * map<string, string> parameters = 8;
+ */
+
+ public java.util.Map getParametersMap() {
+ return internalGetParameters().getMap();
+ }
+ /**
+ * map<string, string> parameters = 8;
+ */
+
+ public java.lang.String getParametersOrDefault(
+ java.lang.String key,
+ java.lang.String defaultValue) {
+ if (key == null) { throw new java.lang.NullPointerException(); }
+ java.util.Map map =
+ internalGetParameters().getMap();
+ return map.containsKey(key) ? map.get(key) : defaultValue;
+ }
+ /**
+ * map<string, string> parameters = 8;
+ */
+
+ public java.lang.String getParametersOrThrow(
+ java.lang.String key) {
+ if (key == null) { throw new java.lang.NullPointerException(); }
+ java.util.Map map =
+ internalGetParameters().getMap();
+ if (!map.containsKey(key)) {
+ throw new java.lang.IllegalArgumentException();
+ }
+ return map.get(key);
+ }
+
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
byte isInitialized = memoizedIsInitialized;
@@ -480,6 +613,15 @@ public final class TraceProtocol {
if (((bitField0_ & 0x00000040) == 0x00000040)) {
com.google.protobuf.GeneratedMessageV3.writeString(output, 7, viewpointId_);
}
+ for (java.util.Map.Entry entry
+ : internalGetParameters().getMap().entrySet()) {
+ com.google.protobuf.MapEntry
+ parameters = ParametersDefaultEntryHolder.defaultEntry.newBuilderForType()
+ .setKey(entry.getKey())
+ .setValue(entry.getValue())
+ .build();
+ output.writeMessage(8, parameters);
+ }
unknownFields.writeTo(output);
}
@@ -512,6 +654,16 @@ public final class TraceProtocol {
if (((bitField0_ & 0x00000040) == 0x00000040)) {
size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, viewpointId_);
}
+ for (java.util.Map.Entry entry
+ : internalGetParameters().getMap().entrySet()) {
+ com.google.protobuf.MapEntry
+ parameters = ParametersDefaultEntryHolder.defaultEntry.newBuilderForType()
+ .setKey(entry.getKey())
+ .setValue(entry.getValue())
+ .build();
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(8, parameters);
+ }
size += unknownFields.getSerializedSize();
memoizedSize = size;
return size;
@@ -564,6 +716,8 @@ public final class TraceProtocol {
result = result && getViewpointId()
.equals(other.getViewpointId());
}
+ result = result && internalGetParameters().equals(
+ other.internalGetParameters());
result = result && unknownFields.equals(other.unknownFields);
return result;
}
@@ -604,6 +758,10 @@ public final class TraceProtocol {
hash = (37 * hash) + VIEWPOINTID_FIELD_NUMBER;
hash = (53 * hash) + getViewpointId().hashCode();
}
+ if (!internalGetParameters().getMap().isEmpty()) {
+ hash = (37 * hash) + PARAMETERS_FIELD_NUMBER;
+ hash = (53 * hash) + internalGetParameters().hashCode();
+ }
hash = (29 * hash) + unknownFields.hashCode();
memoizedHashCode = hash;
return hash;
@@ -698,6 +856,28 @@ public final class TraceProtocol {
return com.ai.cloud.skywalking.protocol.proto.TraceProtocol.internal_static_AckSpan_descriptor;
}
+ @SuppressWarnings({"rawtypes"})
+ protected com.google.protobuf.MapField internalGetMapField(
+ int number) {
+ switch (number) {
+ case 8:
+ return internalGetParameters();
+ default:
+ throw new RuntimeException(
+ "Invalid map field number: " + number);
+ }
+ }
+ @SuppressWarnings({"rawtypes"})
+ protected com.google.protobuf.MapField internalGetMutableMapField(
+ int number) {
+ switch (number) {
+ case 8:
+ return internalGetMutableParameters();
+ default:
+ throw new RuntimeException(
+ "Invalid map field number: " + number);
+ }
+ }
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return com.ai.cloud.skywalking.protocol.proto.TraceProtocol.internal_static_AckSpan_fieldAccessorTable
@@ -736,6 +916,7 @@ public final class TraceProtocol {
bitField0_ = (bitField0_ & ~0x00000020);
viewpointId_ = "";
bitField0_ = (bitField0_ & ~0x00000040);
+ internalGetMutableParameters().clear();
return this;
}
@@ -788,6 +969,8 @@ public final class TraceProtocol {
to_bitField0_ |= 0x00000040;
}
result.viewpointId_ = viewpointId_;
+ result.parameters_ = internalGetParameters();
+ result.parameters_.makeImmutable();
result.bitField0_ = to_bitField0_;
onBuilt();
return result;
@@ -859,6 +1042,8 @@ public final class TraceProtocol {
viewpointId_ = other.viewpointId_;
onChanged();
}
+ internalGetMutableParameters().mergeFrom(
+ other.internalGetParameters());
this.mergeUnknownFields(other.unknownFields);
onChanged();
return this;
@@ -1301,6 +1486,125 @@ public final class TraceProtocol {
onChanged();
return this;
}
+
+ private com.google.protobuf.MapField<
+ java.lang.String, java.lang.String> parameters_;
+ private com.google.protobuf.MapField
+ internalGetParameters() {
+ if (parameters_ == null) {
+ return com.google.protobuf.MapField.emptyMapField(
+ ParametersDefaultEntryHolder.defaultEntry);
+ }
+ return parameters_;
+ }
+ private com.google.protobuf.MapField
+ internalGetMutableParameters() {
+ onChanged();;
+ if (parameters_ == null) {
+ parameters_ = com.google.protobuf.MapField.newMapField(
+ ParametersDefaultEntryHolder.defaultEntry);
+ }
+ if (!parameters_.isMutable()) {
+ parameters_ = parameters_.copy();
+ }
+ return parameters_;
+ }
+
+ public int getParametersCount() {
+ return internalGetParameters().getMap().size();
+ }
+ /**
+ * map<string, string> parameters = 8;
+ */
+
+ public boolean containsParameters(
+ java.lang.String key) {
+ if (key == null) { throw new java.lang.NullPointerException(); }
+ return internalGetParameters().getMap().containsKey(key);
+ }
+ /**
+ * Use {@link #getParametersMap()} instead.
+ */
+ @java.lang.Deprecated
+ public java.util.Map getParameters() {
+ return getParametersMap();
+ }
+ /**
+ * map<string, string> parameters = 8;
+ */
+
+ public java.util.Map getParametersMap() {
+ return internalGetParameters().getMap();
+ }
+ /**
+ * map<string, string> parameters = 8;
+ */
+
+ public java.lang.String getParametersOrDefault(
+ java.lang.String key,
+ java.lang.String defaultValue) {
+ if (key == null) { throw new java.lang.NullPointerException(); }
+ java.util.Map map =
+ internalGetParameters().getMap();
+ return map.containsKey(key) ? map.get(key) : defaultValue;
+ }
+ /**
+ * map<string, string> parameters = 8;
+ */
+
+ public java.lang.String getParametersOrThrow(
+ java.lang.String key) {
+ if (key == null) { throw new java.lang.NullPointerException(); }
+ java.util.Map map =
+ internalGetParameters().getMap();
+ if (!map.containsKey(key)) {
+ throw new java.lang.IllegalArgumentException();
+ }
+ return map.get(key);
+ }
+
+ public Builder clearParameters() {
+ getMutableParameters().clear();
+ return this;
+ }
+ /**
+ * map<string, string> parameters = 8;
+ */
+
+ public Builder removeParameters(
+ java.lang.String key) {
+ if (key == null) { throw new java.lang.NullPointerException(); }
+ getMutableParameters().remove(key);
+ return this;
+ }
+ /**
+ * Use alternate mutation accessors instead.
+ */
+ @java.lang.Deprecated
+ public java.util.Map
+ getMutableParameters() {
+ return internalGetMutableParameters().getMutableMap();
+ }
+ /**
+ * map<string, string> parameters = 8;
+ */
+ public Builder putParameters(
+ java.lang.String key,
+ java.lang.String value) {
+ if (key == null) { throw new java.lang.NullPointerException(); }
+ if (value == null) { throw new java.lang.NullPointerException(); }
+ getMutableParameters().put(key, value);
+ return this;
+ }
+ /**
+ * map<string, string> parameters = 8;
+ */
+
+ public Builder putAllParameters(
+ java.util.Map values) {
+ getMutableParameters().putAll(values);
+ return this;
+ }
public final Builder setUnknownFields(
final com.google.protobuf.UnknownFieldSet unknownFields) {
return super.setUnknownFields(unknownFields);
@@ -4199,6 +4503,11 @@ public final class TraceProtocol {
private static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_AckSpan_fieldAccessorTable;
+ private static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_AckSpan_ParametersEntry_descriptor;
+ private static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_AckSpan_ParametersEntry_fieldAccessorTable;
private static final com.google.protobuf.Descriptors.Descriptor
internal_static_RequestSpan_descriptor;
private static final
@@ -4218,21 +4527,24 @@ public final class TraceProtocol {
descriptor;
static {
java.lang.String[] descriptorData = {
- "\n\023TraceProtocol.proto\"\217\001\n\007AckSpan\022\017\n\007tra" +
+ "\n\023TraceProtocol.proto\"\360\001\n\007AckSpan\022\017\n\007tra" +
"ceId\030\001 \002(\t\022\023\n\013parentLevel\030\002 \001(\t\022\017\n\007level" +
"Id\030\003 \002(\005\022\014\n\004cost\030\004 \002(\003\022\022\n\nstatusCode\030\005 \002" +
"(\005\022\026\n\016exceptionStack\030\006 \001(\t\022\023\n\013viewpointI" +
- "d\030\007 \002(\t\"\375\002\n\013RequestSpan\022\017\n\007traceId\030\001 \002(\t" +
- "\022\023\n\013parentLevel\030\002 \001(\t\022\017\n\007levelId\030\003 \002(\005\022\023" +
- "\n\013viewPointId\030\004 \002(\t\022\021\n\tstartDate\030\005 \002(\003\022\024" +
- "\n\014spanTypeDesc\030\006 \002(\t\022\020\n\010callType\030\007 \002(\t\022\020" +
- "\n\010spanType\030\010 \002(\r\022\025\n\rapplicationId\030\t \002(\t\022" +
- "\016\n\006userId\030\n \002(\t\022\024\n\014bussinessKey\030\013 \001(\t\022\017\n",
- "\007agentId\030\014 \002(\t\0220\n\nparameters\030\r \003(\0132\034.Req" +
- "uestSpan.ParametersEntry\022\021\n\tprocessNo\030\016 " +
- "\002(\t\022\017\n\007address\030\017 \002(\t\0321\n\017ParametersEntry\022" +
- "\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001B(\n&com.a" +
- "i.cloud.skywalking.protocol.proto"
+ "d\030\007 \002(\t\022,\n\nparameters\030\010 \003(\0132\030.AckSpan.Pa" +
+ "rametersEntry\0321\n\017ParametersEntry\022\013\n\003key\030" +
+ "\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\375\002\n\013RequestSpan" +
+ "\022\017\n\007traceId\030\001 \002(\t\022\023\n\013parentLevel\030\002 \001(\t\022\017" +
+ "\n\007levelId\030\003 \002(\005\022\023\n\013viewPointId\030\004 \002(\t\022\021\n\t" +
+ "startDate\030\005 \002(\003\022\024\n\014spanTypeDesc\030\006 \002(\t\022\020\n",
+ "\010callType\030\007 \002(\t\022\020\n\010spanType\030\010 \002(\r\022\025\n\rapp" +
+ "licationId\030\t \002(\t\022\016\n\006userId\030\n \002(\t\022\024\n\014buss" +
+ "inessKey\030\013 \001(\t\022\017\n\007agentId\030\014 \002(\t\0220\n\nparam" +
+ "eters\030\r \003(\0132\034.RequestSpan.ParametersEntr" +
+ "y\022\021\n\tprocessNo\030\016 \002(\t\022\017\n\007address\030\017 \002(\t\0321\n" +
+ "\017ParametersEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002" +
+ " \001(\t:\0028\001B(\n&com.ai.cloud.skywalking.prot" +
+ "ocol.proto"
};
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() {
@@ -4251,7 +4563,13 @@ public final class TraceProtocol {
internal_static_AckSpan_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_AckSpan_descriptor,
- new java.lang.String[] { "TraceId", "ParentLevel", "LevelId", "Cost", "StatusCode", "ExceptionStack", "ViewpointId", });
+ new java.lang.String[] { "TraceId", "ParentLevel", "LevelId", "Cost", "StatusCode", "ExceptionStack", "ViewpointId", "Parameters", });
+ internal_static_AckSpan_ParametersEntry_descriptor =
+ internal_static_AckSpan_descriptor.getNestedTypes().get(0);
+ internal_static_AckSpan_ParametersEntry_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_AckSpan_ParametersEntry_descriptor,
+ new java.lang.String[] { "Key", "Value", });
internal_static_RequestSpan_descriptor =
getDescriptor().getMessageTypes().get(1);
internal_static_RequestSpan_fieldAccessorTable = new
diff --git a/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/protocol/AckSpan.java b/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/protocol/AckSpan.java
index 947d61a68..b4332714f 100644
--- a/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/protocol/AckSpan.java
+++ b/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/protocol/AckSpan.java
@@ -122,14 +122,6 @@ public class AckSpan extends AbstractDataSerializable {
this.exceptionStack = exceptionStack;
}
- public Map getParamters() {
- return paramters;
- }
-
- public void setParamters(Map paramters) {
- this.paramters = paramters;
- }
-
@Override
public int getDataType() {
return 2;
@@ -137,9 +129,15 @@ public class AckSpan extends AbstractDataSerializable {
@Override
public byte[] getData() {
- return TraceProtocol.AckSpan.newBuilder().setTraceId(traceId).setParentLevel(parentLevel).
+ TraceProtocol.AckSpan.Builder builder = TraceProtocol.AckSpan.newBuilder().setTraceId(traceId).setParentLevel(parentLevel).
setLevelId(levelId).setCost(cost).setViewpointId(viewPointId).setStatusCode(statusCode)
- .setExceptionStack(exceptionStack).build().toByteArray();
+ .setExceptionStack(exceptionStack);
+
+ if (paramters != null && paramters.size() > 0){
+ builder.putAllParameters(paramters);
+ }
+
+ return builder.build().toByteArray();
}
@Override
@@ -154,6 +152,7 @@ public class AckSpan extends AbstractDataSerializable {
ackSpan.setExceptionStack(ackSpanProtocol.getExceptionStack());
ackSpan.setStatusCode((byte) ackSpanProtocol.getStatusCode());
ackSpan.viewPointId = ackSpanProtocol.getViewpointId();
+ ackSpan.paramters = ackSpanProtocol.getParametersMap();
} catch (InvalidProtocolBufferException e) {
throw new ConvertFailedException(e.getMessage(),e);
}
diff --git a/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/protocol/RequestSpan.java b/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/protocol/RequestSpan.java
index b79d62369..743582fd5 100644
--- a/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/protocol/RequestSpan.java
+++ b/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/protocol/RequestSpan.java
@@ -221,7 +221,7 @@ public class RequestSpan extends AbstractDataSerializable {
}
if (parameters != null && parameters.size() > 0) {
- builder.getParametersMap().putAll(parameters);
+ builder.putAllParameters(parameters);
}
return builder.setCallType(callType).setApplicationId(applicationId).setUserId(userId).setAgentId(agentId)
diff --git a/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/protocol/Span.java b/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/protocol/Span.java
index efd08be5d..d689395ff 100644
--- a/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/protocol/Span.java
+++ b/skywalking-protocol/src/main/java/com/ai/cloud/skywalking/protocol/Span.java
@@ -209,6 +209,9 @@ public class Span {
}
public void setInvokeResult(String result){
+ if (result == null){
+ result = "";
+ }
this.parameters.put(INVOKE_RESULT_PARAMETER_KEY, result);
}
diff --git a/skywalking-protocol/src/main/proto/TraceProtocol.proto b/skywalking-protocol/src/main/proto/TraceProtocol.proto
index 8fb195176..95a5a9143 100644
--- a/skywalking-protocol/src/main/proto/TraceProtocol.proto
+++ b/skywalking-protocol/src/main/proto/TraceProtocol.proto
@@ -10,6 +10,7 @@ message AckSpan {
required int32 statusCode = 5;
optional string exceptionStack = 6;
required string viewpointId = 7;
+ map parameters = 8;
}
message RequestSpan {
diff --git a/skywalking-server/src/main/java/com/ai/cloud/skywalking/reciever/processor/AbstractSpanProcessor.java b/skywalking-server/src/main/java/com/ai/cloud/skywalking/reciever/processor/AbstractSpanProcessor.java
index 012055d58..9f2d8847d 100644
--- a/skywalking-server/src/main/java/com/ai/cloud/skywalking/reciever/processor/AbstractSpanProcessor.java
+++ b/skywalking-server/src/main/java/com/ai/cloud/skywalking/reciever/processor/AbstractSpanProcessor.java
@@ -56,7 +56,7 @@ public abstract class AbstractSpanProcessor implements IProcessor {
@Override
public void process(List serializedObjects) {
- //doAlarm(serializedObjects);
+ doAlarm(serializedObjects);
doSaveHBase(connection, serializedObjects);
}
diff --git a/skywalking-server/src/main/java/com/ai/cloud/skywalking/reciever/processor/AckSpanProcessor.java b/skywalking-server/src/main/java/com/ai/cloud/skywalking/reciever/processor/AckSpanProcessor.java
index ec127fe7b..8d8d9f74d 100644
--- a/skywalking-server/src/main/java/com/ai/cloud/skywalking/reciever/processor/AckSpanProcessor.java
+++ b/skywalking-server/src/main/java/com/ai/cloud/skywalking/reciever/processor/AckSpanProcessor.java
@@ -47,7 +47,6 @@ public class AckSpanProcessor extends AbstractSpanProcessor {
String columnName;
for (AbstractDataSerializable serializedObject : serializedObjects) {
AckSpan ackSpan = (AckSpan) serializedObject;
- System.out.println(ackSpan.getTraceId() + "-ACK:" + ackSpan.getViewPointId());
Put put = new Put(Bytes.toBytes(ackSpan.getTraceId()), getTSBySpanTraceId(ackSpan.getTraceId()));
if (StringUtils.isEmpty(ackSpan.getParentLevel().trim())) {
columnName = ackSpan.getLevelId() + "";
diff --git a/skywalking-server/src/main/java/com/ai/cloud/skywalking/reciever/processor/RequestSpanProcessor.java b/skywalking-server/src/main/java/com/ai/cloud/skywalking/reciever/processor/RequestSpanProcessor.java
index dd67086d5..b4c979edf 100644
--- a/skywalking-server/src/main/java/com/ai/cloud/skywalking/reciever/processor/RequestSpanProcessor.java
+++ b/skywalking-server/src/main/java/com/ai/cloud/skywalking/reciever/processor/RequestSpanProcessor.java
@@ -31,9 +31,6 @@ public class RequestSpanProcessor extends AbstractSpanProcessor {
String columnName;
for (AbstractDataSerializable serializedObject : serializedObjects) {
RequestSpan requestSpan = (RequestSpan) serializedObject;
- System.out.println(
- requestSpan.getTraceId() + ":" + requestSpan.getParentLevel() + "." + requestSpan.getLevelId() + ":"
- + requestSpan.getViewPointId());
Put put = new Put(Bytes.toBytes(requestSpan.getTraceId()), getTSBySpanTraceId(requestSpan.getTraceId()));
if (StringUtils.isEmpty(requestSpan.getParentLevel().trim())) {
columnName = requestSpan.getLevelId() + "";
diff --git a/skywalking-webui/src/main/java/com/ai/cloud/skywalking/web/util/Constants.java b/skywalking-webui/src/main/java/com/ai/cloud/skywalking/web/util/Constants.java
index 37e219a0c..2204bb1ab 100644
--- a/skywalking-webui/src/main/java/com/ai/cloud/skywalking/web/util/Constants.java
+++ b/skywalking-webui/src/main/java/com/ai/cloud/skywalking/web/util/Constants.java
@@ -27,6 +27,7 @@ public class Constants {
put("J", "JDBC");
put("W", "WEB");
put("D", "DUBBO");
+ put("L", "LOCAL");
put("U", "UNKNOWN");
}
};