From 085f9b69fdc9416675743a8a5b2a43593eef592f Mon Sep 17 00:00:00 2001 From: baiyang Date: Mon, 17 Apr 2017 22:04:22 +0800 Subject: [PATCH] Support plugin for MongoDB --- skywalking-sniffer/skywalking-agent/pom.xml | 5 + .../mongodb-plugin/pom.xml | 52 +++++++ .../mongodb/MongoDBMethodInterceptor.java | 139 ++++++++++++++++++ .../MongoDBReadBindingInterceptor.java | 46 ++++++ .../MongoDBWriteBindingInterceptor.java | 46 ++++++ .../plugin/mongodb/OperationInfo.java | 51 +++++++ .../skywalking/plugin/mongodb/ReadMethod.java | 22 +++ .../plugin/mongodb/WriteMethod.java | 23 +++ .../define/MongoDBInstrumentation.java | 72 +++++++++ .../src/main/resources/skywalking-plugin.def | 1 + .../skywalking-sdk-plugin/pom.xml | 1 + 11 files changed, 458 insertions(+) create mode 100644 skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/pom.xml create mode 100644 skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/MongoDBMethodInterceptor.java create mode 100644 skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/MongoDBReadBindingInterceptor.java create mode 100644 skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/MongoDBWriteBindingInterceptor.java create mode 100644 skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/OperationInfo.java create mode 100644 skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/ReadMethod.java create mode 100644 skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/WriteMethod.java create mode 100644 skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/define/MongoDBInstrumentation.java create mode 100644 skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/resources/skywalking-plugin.def diff --git a/skywalking-sniffer/skywalking-agent/pom.xml b/skywalking-sniffer/skywalking-agent/pom.xml index df778f4c8..0d1ebff04 100644 --- a/skywalking-sniffer/skywalking-agent/pom.xml +++ b/skywalking-sniffer/skywalking-agent/pom.xml @@ -55,6 +55,11 @@ motan-plugin ${project.version} + + com.a.eye + skywalking-mongodb-plugin + ${project.version} + diff --git a/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/pom.xml b/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/pom.xml new file mode 100644 index 000000000..ba40b3142 --- /dev/null +++ b/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/pom.xml @@ -0,0 +1,52 @@ + + 4.0.0 + + skywalking-sdk-plugin + com.a.eye + 3.0.1-2017 + + + skywalking-mongodb-plugin + jar + + mongodb-plugin + http://maven.apache.org + + + UTF-8 + + + + + log4j + log4j + 1.2.17 + test + + + org.mongodb + mongo-java-driver + 3.4.2 + provided + + + + + + + + org.apache.maven.plugins + maven-source-plugin + + + + attach-sources + + jar + + + + + + + \ No newline at end of file diff --git a/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/MongoDBMethodInterceptor.java b/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/MongoDBMethodInterceptor.java new file mode 100644 index 000000000..2fb5ae5b0 --- /dev/null +++ b/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/MongoDBMethodInterceptor.java @@ -0,0 +1,139 @@ +package com.a.eye.skywalking.plugin.mongodb; + +import java.util.List; + +import com.a.eye.skywalking.api.context.ContextManager; +import com.a.eye.skywalking.api.plugin.interceptor.EnhancedClassInstanceContext; +import com.a.eye.skywalking.api.plugin.interceptor.enhance.InstanceMethodInvokeContext; +import com.a.eye.skywalking.api.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; +import com.a.eye.skywalking.api.plugin.interceptor.enhance.MethodInterceptResult; +import com.a.eye.skywalking.trace.Span; +import com.a.eye.skywalking.trace.tag.Tags; +import com.mongodb.bulk.DeleteRequest; +import com.mongodb.bulk.InsertRequest; +import com.mongodb.bulk.UpdateRequest; +import com.mongodb.bulk.WriteRequest; +import com.mongodb.operation.CountOperation; +import com.mongodb.operation.CreateCollectionOperation; +import com.mongodb.operation.CreateIndexesOperation; +import com.mongodb.operation.CreateViewOperation; +import com.mongodb.operation.DeleteOperation; +import com.mongodb.operation.DistinctOperation; +import com.mongodb.operation.FindAndDeleteOperation; +import com.mongodb.operation.FindAndReplaceOperation; +import com.mongodb.operation.FindAndUpdateOperation; +import com.mongodb.operation.FindOperation; +import com.mongodb.operation.GroupOperation; +import com.mongodb.operation.InsertOperation; +import com.mongodb.operation.ListCollectionsOperation; +import com.mongodb.operation.MapReduceToCollectionOperation; +import com.mongodb.operation.MapReduceWithInlineResultsOperation; +import com.mongodb.operation.MixedBulkWriteOperation; +import com.mongodb.operation.UpdateOperation; + +/** + * {@link MongoDBMethodInterceptor} intercept method of {@link com.mongodb.Mongo#execute(ReadOperation, ReadPreference)} + * or {@link com.mongodb.Mongo#execute(WriteOperation)}. record the mongoDB host, operation name and the key of the operation. + * + * @author baiyang + */ +public class MongoDBMethodInterceptor implements InstanceMethodsAroundInterceptor { + + /** + * The key name that MongoDB host in {@link EnhancedClassInstanceContext#context}. + */ + protected static final String MONGODB_HOST = "MONGODB_HOST"; + + /** + * The key name that MongoDB port in {@link EnhancedClassInstanceContext#context}. + */ + protected static final String MONGODB_PORT = "MONGODB_PORT"; + + private static final String MONGODB_COMPONENT = "MongoDB"; + + @Override + public void beforeMethod(final EnhancedClassInstanceContext context, + final InstanceMethodInvokeContext interceptorContext, final MethodInterceptResult result) { + Object[] arguments = interceptorContext.allArguments(); + OperationInfo operationInfo = this.getReadOperationInfo(arguments[0]); + Span span = ContextManager.createSpan("MongoDB/" + operationInfo.getMethodName()); + Tags.COMPONENT.set(span, MONGODB_COMPONENT); + Tags.DB_TYPE.set(span, MONGODB_COMPONENT); + Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_CLIENT); + Tags.SPAN_LAYER.asDB(span); + Tags.DB_STATEMENT.set(span, operationInfo.getMethodName() + " " + operationInfo.getFilter()); + } + + @Override + public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, + Object ret) { + Span span = ContextManager.activeSpan(); + Tags.PEER_HOST.set(span, context.get(MONGODB_HOST, String.class)); + Tags.PEER_PORT.set(span, (Integer) context.get(MONGODB_PORT)); + ContextManager.stopSpan(); + return ret; + } + + @Override + public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, + InstanceMethodInvokeContext interceptorContext) { + ContextManager.activeSpan().log(t); + } + + /** + * Convert ReadOperation interface or WriteOperation interface to the implementation class. + * Get the method name and filter info. + */ + @SuppressWarnings("rawtypes") + private OperationInfo getReadOperationInfo(Object obj) { + if (obj instanceof CountOperation) { + return new OperationInfo(ReadMethod.COUNT.getName(), ((CountOperation) obj).getFilter().toString()); + } else if (obj instanceof DistinctOperation) { + return new OperationInfo(ReadMethod.DISTINCT.getName(), ((DistinctOperation) obj).getFilter().toString()); + } else if (obj instanceof FindOperation) { + return new OperationInfo(ReadMethod.FIND.getName(), ((FindOperation) obj).getFilter().toString()); + } else if (obj instanceof GroupOperation) { + return new OperationInfo(ReadMethod.GROUP.getName(), ((GroupOperation) obj).getFilter().toString()); + } else if (obj instanceof ListCollectionsOperation) { + return new OperationInfo(ReadMethod.LIST_COLLECTIONS.getName(), ((ListCollectionsOperation) obj).getFilter().toString()); + } else if (obj instanceof MapReduceWithInlineResultsOperation) { + return new OperationInfo(ReadMethod.MAPREDUCE_WITHINLINE_RESULTS.getName(), ((ListCollectionsOperation) obj).getFilter().toString()); + } else if (obj instanceof DeleteOperation) { + return new OperationInfo(WriteMethod.DELETE.getName(), ((DeleteOperation) obj).getDeleteRequests().toString()); + } else if (obj instanceof InsertOperation) { + return new OperationInfo(WriteMethod.INSERT.getName(), ((InsertOperation) obj).getInsertRequests().toString()); + } else if (obj instanceof UpdateOperation) { + return new OperationInfo(WriteMethod.UPDATE.getName(), ((UpdateOperation) obj).getUpdateRequests().toString()); + } else if (obj instanceof CreateCollectionOperation) { + return new OperationInfo(WriteMethod.CREATECOLLECTION.getName(), ((CreateCollectionOperation) obj).getCollectionName()); + } else if (obj instanceof CreateIndexesOperation) { + return new OperationInfo(WriteMethod.CREATEINDEXES.getName(), ((CreateIndexesOperation) obj).getIndexNames().toString()); + } else if (obj instanceof CreateViewOperation) { + return new OperationInfo(WriteMethod.CREATEVIEW.getName(), ((CreateViewOperation) obj).getViewName()); + } else if (obj instanceof FindAndDeleteOperation) { + return new OperationInfo(WriteMethod.FINDANDDELETE.getName(), ((FindAndDeleteOperation) obj).getFilter().toString()); + } else if (obj instanceof FindAndReplaceOperation) { + return new OperationInfo(WriteMethod.FINDANDREPLACE.getName(), ((FindAndReplaceOperation) obj).getFilter().toString()); + } else if (obj instanceof FindAndUpdateOperation) { + return new OperationInfo(WriteMethod.FINDANDUPDATE.getName(), ((FindAndUpdateOperation) obj).getFilter().toString()); + } else if (obj instanceof MapReduceToCollectionOperation) { + return new OperationInfo(WriteMethod.MAPREDUCETOCOLLECTION.getName(), ((MapReduceToCollectionOperation) obj).getFilter().toString()); + } else if (obj instanceof MixedBulkWriteOperation) { + List list = ((MixedBulkWriteOperation) obj).getWriteRequests(); + StringBuilder sb = new StringBuilder(); + for (WriteRequest request : list) { + if (request instanceof InsertRequest) { + sb.append(((InsertRequest) request).getDocument().toString()).append(","); + } else if (request instanceof DeleteRequest) { + sb.append(((DeleteRequest) request).getFilter()).append(","); + } else if (request instanceof UpdateRequest) { + sb.append(((UpdateRequest) request).getFilter()).append(","); + } + } + return new OperationInfo(WriteMethod.MIXEDBULKWRITE.getName(), sb.toString()); + } else { + return new OperationInfo(WriteMethod.UNKNOW.getName()); + } + } + +} diff --git a/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/MongoDBReadBindingInterceptor.java b/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/MongoDBReadBindingInterceptor.java new file mode 100644 index 000000000..7a0c5ec7c --- /dev/null +++ b/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/MongoDBReadBindingInterceptor.java @@ -0,0 +1,46 @@ +package com.a.eye.skywalking.plugin.mongodb; + +import com.a.eye.skywalking.api.context.ContextManager; +import com.a.eye.skywalking.api.plugin.interceptor.EnhancedClassInstanceContext; +import com.a.eye.skywalking.api.plugin.interceptor.enhance.InstanceMethodInvokeContext; +import com.a.eye.skywalking.api.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; +import com.a.eye.skywalking.api.plugin.interceptor.enhance.MethodInterceptResult; +import com.mongodb.ServerAddress; +import com.mongodb.binding.ReadBinding; + +/** + * {@link MongoDBReadBindingInterceptor} record the host and port information from {@link EnhancedClassInstanceContext#context}, + * + * @author baiyang + */ +public class MongoDBReadBindingInterceptor implements InstanceMethodsAroundInterceptor { + + @Override + public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, + MethodInterceptResult result) { + + } + + /** + * Execute after {@link com.mongodb.Mongo#getReadBinding(ReadPreference)}, + * record the host and port information + */ + @Override + public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, + Object ret) { + ReadBinding readBinding = (ReadBinding) ret; + ServerAddress serverAddress = readBinding.getReadConnectionSource().getServerDescription().getAddress(); + String host = serverAddress.getHost(); + Integer port = serverAddress.getPort(); + context.set(MongoDBMethodInterceptor.MONGODB_HOST, host); + context.set(MongoDBMethodInterceptor.MONGODB_PORT, port); + return ret; + } + + @Override + public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, + InstanceMethodInvokeContext interceptorContext) { + ContextManager.activeSpan().log(t); + } + +} diff --git a/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/MongoDBWriteBindingInterceptor.java b/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/MongoDBWriteBindingInterceptor.java new file mode 100644 index 000000000..0e3146b46 --- /dev/null +++ b/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/MongoDBWriteBindingInterceptor.java @@ -0,0 +1,46 @@ +package com.a.eye.skywalking.plugin.mongodb; + +import com.a.eye.skywalking.api.context.ContextManager; +import com.a.eye.skywalking.api.plugin.interceptor.EnhancedClassInstanceContext; +import com.a.eye.skywalking.api.plugin.interceptor.enhance.InstanceMethodInvokeContext; +import com.a.eye.skywalking.api.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; +import com.a.eye.skywalking.api.plugin.interceptor.enhance.MethodInterceptResult; +import com.mongodb.ServerAddress; +import com.mongodb.binding.WriteBinding; + +/** + * {@link MongoDBWriteBindingInterceptor} record the host and port information from {@link EnhancedClassInstanceContext#context}, + * + * @author baiyang + */ +public class MongoDBWriteBindingInterceptor implements InstanceMethodsAroundInterceptor { + + @Override + public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, + MethodInterceptResult result) { + + } + + /** + * Execute after {@link com.mongodb.Mongo#getWriteBinding()}, + * record the host and port information + */ + @Override + public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, + Object ret) { + WriteBinding writeBinding = (WriteBinding) ret; + ServerAddress serverAddress = writeBinding.getWriteConnectionSource().getServerDescription().getAddress(); + String host = serverAddress.getHost(); + Integer port = serverAddress.getPort(); + context.set(MongoDBMethodInterceptor.MONGODB_HOST, host); + context.set(MongoDBMethodInterceptor.MONGODB_PORT, port); + return ret; + } + + @Override + public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, + InstanceMethodInvokeContext interceptorContext) { + ContextManager.activeSpan().log(t); + } + +} diff --git a/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/OperationInfo.java b/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/OperationInfo.java new file mode 100644 index 000000000..01e91d468 --- /dev/null +++ b/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/OperationInfo.java @@ -0,0 +1,51 @@ +package com.a.eye.skywalking.plugin.mongodb; + +/** + * {@link OperationInfo} record the methodName and filter information + * + * @author baiyang + */ +public class OperationInfo { + + private String methodName; + + private String filter; + + public OperationInfo() { + + } + + public OperationInfo(String methodName) { + super(); + this.methodName = methodName; + this.filter = ""; + } + + public OperationInfo(String methodName, String filter) { + super(); + this.methodName = methodName; + this.filter = filter; + } + + public String getMethodName() { + return methodName; + } + + public void setMethodName(String methodName) { + this.methodName = methodName; + } + + public String getFilter() { + return filter; + } + + public void setFilter(String filter) { + this.filter = filter; + } + + @Override + public String toString() { + return "{methodName=" + methodName + ", filter=" + filter + "}"; + } + +} diff --git a/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/ReadMethod.java b/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/ReadMethod.java new file mode 100644 index 000000000..0797cfb24 --- /dev/null +++ b/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/ReadMethod.java @@ -0,0 +1,22 @@ +package com.a.eye.skywalking.plugin.mongodb; + +/** + * {@link ReadMethod} mongoDB read method enum + * + * @author baiyang + */ +public enum ReadMethod { + COUNT("count"), DISTINCT("distinct"), FIND("find"), GROUP("group"), LIST_COLLECTIONS("listCollections"), + MAPREDUCE_WITHINLINE_RESULTS("mapReduceWithInlineResults"); + + private String name; + + private ReadMethod(String name) { + this.name = name; + } + + public String getName() { + return name; + } + +} diff --git a/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/WriteMethod.java b/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/WriteMethod.java new file mode 100644 index 000000000..81bcf5a8c --- /dev/null +++ b/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/WriteMethod.java @@ -0,0 +1,23 @@ +package com.a.eye.skywalking.plugin.mongodb; + +/** + * {@link WriteMethod} mongoDB write method enum + * + * @author baiyang + */ +public enum WriteMethod { + DELETE("delete"), INSERT("insert"), UPDATE("update"), CREATECOLLECTION("createCollection"), CREATEINDEXES( + "createIndexess"), CREATEVIEW("createView"), FINDANDDELETE("findAndDelete"), FINDANDREPLACE( + "findAndReplace"), FINDANDUPDATE("findAndUpdate"), MAPREDUCETOCOLLECTION("mapReduceToCollection"), + MIXEDBULKWRITE("mixedBulkWrite"), UNKNOW("unknow"); + + private String name; + + private WriteMethod(String name) { + this.name = name; + } + + public String getName() { + return name; + } +} diff --git a/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/define/MongoDBInstrumentation.java b/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/define/MongoDBInstrumentation.java new file mode 100644 index 000000000..262072259 --- /dev/null +++ b/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/java/com/a/eye/skywalking/plugin/mongodb/define/MongoDBInstrumentation.java @@ -0,0 +1,72 @@ +package com.a.eye.skywalking.plugin.mongodb.define; + +import static net.bytebuddy.matcher.ElementMatchers.named; +import net.bytebuddy.description.method.MethodDescription; +import net.bytebuddy.matcher.ElementMatcher; + +import com.a.eye.skywalking.api.plugin.interceptor.ConstructorInterceptPoint; +import com.a.eye.skywalking.api.plugin.interceptor.InstanceMethodsInterceptPoint; +import com.a.eye.skywalking.api.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine; + +/** + * {@link MongoDBInstrumentation} presents that skywalking intercepts {@link com.mongodb.Mongo#execute(ReadOperation, ReadPreference)},{@link com.mongodb.Mongo#execute(WriteOperation)} + * by using {@link MongoDBMethodInterceptor}. + * + * @author baiyang + */ +public class MongoDBInstrumentation extends ClassInstanceMethodsEnhancePluginDefine { + + private static final String ENHANCE_CLASS = "com.mongodb.Mongo"; + + private static final String MONGDB_READ_BINDING_CLASS = "com.a.eye.skywalking.plugin.mongodb.MongoDBReadBindingInterceptor"; + + private static final String MONGDB_WRITE_BINDING_CLASS = "com.a.eye.skywalking.plugin.mongodb.MongoDBWriteBindingInterceptor"; + + private static final String MONGDB_METHOD_INTERCET_CLASS = "com.a.eye.skywalking.plugin.mongodb.MongoDBMethodInterceptor"; + + @Override + protected ConstructorInterceptPoint[] getConstructorsInterceptPoints() { + return null; + } + + @Override + protected InstanceMethodsInterceptPoint[] getInstanceMethodsInterceptPoints() { + return new InstanceMethodsInterceptPoint[] { new InstanceMethodsInterceptPoint() { + @Override + public ElementMatcher getMethodsMatcher() { + return named("execute"); + } + + @Override + public String getMethodsInterceptor() { + return MONGDB_METHOD_INTERCET_CLASS; + } + }, new InstanceMethodsInterceptPoint() { + @Override + public ElementMatcher getMethodsMatcher() { + return named("getReadBinding"); + } + + @Override + public String getMethodsInterceptor() { + return MONGDB_READ_BINDING_CLASS; + } + }, new InstanceMethodsInterceptPoint() { + @Override + public ElementMatcher getMethodsMatcher() { + return named("getWriteBinding"); + } + + @Override + public String getMethodsInterceptor() { + return MONGDB_WRITE_BINDING_CLASS; + } + } }; + } + + @Override + protected String enhanceClassName() { + return ENHANCE_CLASS; + } + +} diff --git a/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/resources/skywalking-plugin.def b/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/resources/skywalking-plugin.def new file mode 100644 index 000000000..e2fb179df --- /dev/null +++ b/skywalking-sniffer/skywalking-sdk-plugin/mongodb-plugin/src/main/resources/skywalking-plugin.def @@ -0,0 +1 @@ +com.a.eye.skywalking.plugin.mongodb.define.MongoDBInstrumentation \ No newline at end of file diff --git a/skywalking-sniffer/skywalking-sdk-plugin/pom.xml b/skywalking-sniffer/skywalking-sdk-plugin/pom.xml index e6c83e9bc..42e8e3ba9 100644 --- a/skywalking-sniffer/skywalking-sdk-plugin/pom.xml +++ b/skywalking-sniffer/skywalking-sdk-plugin/pom.xml @@ -17,6 +17,7 @@ jedis-2.x-plugin tomcat-7.x-8.x-plugin motan-plugin + mongodb-plugin pom