From e12dc5fa4763312211c8238f1f47e0eb9db26bec Mon Sep 17 00:00:00 2001
From: pengys5 <8082209@qq.com>
Date: Thu, 20 Jul 2017 09:54:16 +0800
Subject: [PATCH] 1. Add agent jvm module 2. Add agent register module
---
apm-collector/apm-collector-agentjvm/pom.xml | 32 ++++++++++++
.../agentjvm/AgentJVMModuleContext.java | 12 +++++
.../agentjvm/AgentJVMModuleDefine.java | 51 +++++++++++++++++++
.../agentjvm/AgentJVMModuleException.java | 16 ++++++
.../agentjvm/AgentJVMModuleGroupDefine.java | 25 +++++++++
.../agentjvm/AgentJVMModuleInstaller.java | 36 +++++++++++++
.../agentjvm/grpc/AgentJVMGRPCConfig.java | 9 ++++
.../grpc/AgentJVMGRPCConfigParser.java | 27 ++++++++++
.../grpc/AgentJVMGRPCDataListener.java | 17 +++++++
.../grpc/AgentJVMGRPCModuleDefine.java | 51 +++++++++++++++++++
.../grpc/AgentJVMGRPCModuleRegistration.java | 13 +++++
.../handler/JVMMetricsServiceHandler.java | 17 +++++++
.../resources/META-INF/defines/group.define | 1 +
.../resources/META-INF/defines/module.define | 1 +
.../grpc/AgentRegisterGRPCModuleDefine.java | 10 +++-
.../ApplicationRegisterServiceHandler.java | 16 ++++++
.../InstanceDiscoveryServiceHandler.java | 30 +++++++++++
.../ServiceNameDiscoveryServiceHandler.java | 18 +++++++
apm-collector/apm-collector-boot/pom.xml | 5 ++
.../remote/RemoteModuleInstaller.java | 2 +-
.../collector/server/grpc/GRPCHandler.java | 9 ++++
.../apm/collector/server/grpc/GRPCServer.java | 1 +
apm-collector/pom.xml | 1 +
23 files changed, 398 insertions(+), 2 deletions(-)
create mode 100644 apm-collector/apm-collector-agentjvm/pom.xml
create mode 100644 apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleContext.java
create mode 100644 apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleDefine.java
create mode 100644 apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleException.java
create mode 100644 apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleGroupDefine.java
create mode 100644 apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleInstaller.java
create mode 100644 apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCConfig.java
create mode 100644 apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCConfigParser.java
create mode 100644 apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCDataListener.java
create mode 100644 apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCModuleDefine.java
create mode 100644 apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCModuleRegistration.java
create mode 100644 apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/handler/JVMMetricsServiceHandler.java
create mode 100644 apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/group.define
create mode 100644 apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/module.define
create mode 100644 apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/ApplicationRegisterServiceHandler.java
create mode 100644 apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/InstanceDiscoveryServiceHandler.java
create mode 100644 apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/ServiceNameDiscoveryServiceHandler.java
create mode 100644 apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCHandler.java
diff --git a/apm-collector/apm-collector-agentjvm/pom.xml b/apm-collector/apm-collector-agentjvm/pom.xml
new file mode 100644
index 000000000..8f20f17ab
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/pom.xml
@@ -0,0 +1,32 @@
+
+
+
+ apm-collector
+ org.skywalking
+ 3.2-2017
+
+ 4.0.0
+
+ apm-collector-agentjvm
+ jar
+
+
+
+ org.skywalking
+ apm-collector-cluster
+ ${project.version}
+
+
+ org.skywalking
+ apm-collector-server
+ ${project.version}
+
+
+ org.skywalking
+ apm-network
+ ${project.version}
+
+
+
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleContext.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleContext.java
new file mode 100644
index 000000000..5152b68d6
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleContext.java
@@ -0,0 +1,12 @@
+package org.skywalking.apm.collector.agentjvm;
+
+import org.skywalking.apm.collector.core.framework.Context;
+
+/**
+ * @author pengys5
+ */
+public class AgentJVMModuleContext extends Context {
+ public AgentJVMModuleContext(String groupName) {
+ super(groupName);
+ }
+}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleDefine.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleDefine.java
new file mode 100644
index 000000000..29826dd6a
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleDefine.java
@@ -0,0 +1,51 @@
+package org.skywalking.apm.collector.agentjvm;
+
+import java.util.List;
+import java.util.Map;
+import org.skywalking.apm.collector.cluster.ClusterModuleGroupDefine;
+import org.skywalking.apm.collector.core.client.Client;
+import org.skywalking.apm.collector.core.client.ClientException;
+import org.skywalking.apm.collector.core.client.DataMonitor;
+import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine;
+import org.skywalking.apm.collector.core.cluster.ClusterModuleContext;
+import org.skywalking.apm.collector.core.config.ConfigParseException;
+import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
+import org.skywalking.apm.collector.core.framework.DefineException;
+import org.skywalking.apm.collector.core.framework.Handler;
+import org.skywalking.apm.collector.core.module.ModuleDefine;
+import org.skywalking.apm.collector.core.server.Server;
+import org.skywalking.apm.collector.core.server.ServerException;
+import org.skywalking.apm.collector.core.server.ServerHolder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author pengys5
+ */
+public abstract class AgentJVMModuleDefine extends ModuleDefine implements ClusterDataListenerDefine {
+
+ private final Logger logger = LoggerFactory.getLogger(AgentJVMModuleDefine.class);
+
+ @Override
+ public final void initialize(Map config, ServerHolder serverHolder) throws DefineException, ClientException {
+ try {
+ configParser().parse(config);
+ Server server = server();
+ serverHolder.holdServer(server, handlerList());
+
+ ((ClusterModuleContext)CollectorContextHelper.INSTANCE.getContext(ClusterModuleGroupDefine.GROUP_NAME)).getDataMonitor().addListener(listener(), registration());
+ } catch (ConfigParseException | ServerException e) {
+ throw new AgentJVMModuleException(e.getMessage(), e);
+ }
+ }
+
+ @Override protected final Client createClient(DataMonitor dataMonitor) {
+ throw new UnsupportedOperationException("");
+ }
+
+ @Override public final boolean defaultModule() {
+ return true;
+ }
+
+ public abstract List handlerList();
+}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleException.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleException.java
new file mode 100644
index 000000000..6732f2636
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleException.java
@@ -0,0 +1,16 @@
+package org.skywalking.apm.collector.agentjvm;
+
+import org.skywalking.apm.collector.core.module.ModuleException;
+
+/**
+ * @author pengys5
+ */
+public class AgentJVMModuleException extends ModuleException {
+ public AgentJVMModuleException(String message) {
+ super(message);
+ }
+
+ public AgentJVMModuleException(String message, Throwable cause) {
+ super(message, cause);
+ }
+}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleGroupDefine.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleGroupDefine.java
new file mode 100644
index 000000000..89b942290
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleGroupDefine.java
@@ -0,0 +1,25 @@
+package org.skywalking.apm.collector.agentjvm;
+
+import org.skywalking.apm.collector.core.framework.Context;
+import org.skywalking.apm.collector.core.module.ModuleGroupDefine;
+import org.skywalking.apm.collector.core.module.ModuleInstaller;
+
+/**
+ * @author pengys5
+ */
+public class AgentJVMModuleGroupDefine implements ModuleGroupDefine {
+
+ public static final String GROUP_NAME = "agent_jvm";
+
+ @Override public String name() {
+ return GROUP_NAME;
+ }
+
+ @Override public Context groupContext() {
+ return new AgentJVMModuleContext(GROUP_NAME);
+ }
+
+ @Override public ModuleInstaller moduleInstaller() {
+ return new AgentJVMModuleInstaller();
+ }
+}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleInstaller.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleInstaller.java
new file mode 100644
index 000000000..defe8786e
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleInstaller.java
@@ -0,0 +1,36 @@
+package org.skywalking.apm.collector.agentjvm;
+
+import java.util.Iterator;
+import java.util.Map;
+import org.skywalking.apm.collector.core.client.ClientException;
+import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
+import org.skywalking.apm.collector.core.framework.DefineException;
+import org.skywalking.apm.collector.core.module.ModuleDefine;
+import org.skywalking.apm.collector.core.module.ModuleInstaller;
+import org.skywalking.apm.collector.core.server.ServerHolder;
+import org.skywalking.apm.collector.core.util.ObjectUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author pengys5
+ */
+public class AgentJVMModuleInstaller implements ModuleInstaller {
+
+ private final Logger logger = LoggerFactory.getLogger(AgentJVMModuleInstaller.class);
+
+ @Override public void install(Map moduleConfig,
+ Map moduleDefineMap, ServerHolder serverHolder) throws DefineException, ClientException {
+ logger.info("beginning agent jvm module install");
+
+ AgentJVMModuleContext context = new AgentJVMModuleContext(AgentJVMModuleGroupDefine.GROUP_NAME);
+ CollectorContextHelper.INSTANCE.putContext(context);
+
+ Iterator> moduleDefineEntry = moduleDefineMap.entrySet().iterator();
+ while (moduleDefineEntry.hasNext()) {
+ ModuleDefine moduleDefine = moduleDefineEntry.next().getValue();
+ logger.info("module {} initialize", moduleDefine.getClass().getName());
+ moduleDefine.initialize((ObjectUtils.isNotEmpty(moduleConfig) && moduleConfig.containsKey(moduleDefine.name())) ? moduleConfig.get(moduleDefine.name()) : null, serverHolder);
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCConfig.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCConfig.java
new file mode 100644
index 000000000..1376814cd
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCConfig.java
@@ -0,0 +1,9 @@
+package org.skywalking.apm.collector.agentjvm.grpc;
+
+/**
+ * @author pengys5
+ */
+public class AgentJVMGRPCConfig {
+ public static String HOST;
+ public static int PORT;
+}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCConfigParser.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCConfigParser.java
new file mode 100644
index 000000000..d5d1996aa
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCConfigParser.java
@@ -0,0 +1,27 @@
+package org.skywalking.apm.collector.agentjvm.grpc;
+
+import java.util.Map;
+import org.skywalking.apm.collector.core.config.ConfigParseException;
+import org.skywalking.apm.collector.core.module.ModuleConfigParser;
+import org.skywalking.apm.collector.core.util.ObjectUtils;
+import org.skywalking.apm.collector.core.util.StringUtils;
+
+/**
+ * @author pengys5
+ */
+public class AgentJVMGRPCConfigParser implements ModuleConfigParser {
+
+ private static final String HOST = "host";
+ private static final String PORT = "port";
+
+ @Override public void parse(Map config) throws ConfigParseException {
+ if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(HOST))) {
+ AgentJVMGRPCConfig.HOST = "localhost";
+ }
+ if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(PORT))) {
+ AgentJVMGRPCConfig.PORT = 11800;
+ } else {
+ AgentJVMGRPCConfig.PORT = (Integer)config.get(PORT);
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCDataListener.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCDataListener.java
new file mode 100644
index 000000000..d0ea0aa61
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCDataListener.java
@@ -0,0 +1,17 @@
+package org.skywalking.apm.collector.agentjvm.grpc;
+
+import org.skywalking.apm.collector.agentjvm.AgentJVMModuleGroupDefine;
+import org.skywalking.apm.collector.cluster.ClusterModuleDefine;
+import org.skywalking.apm.collector.core.cluster.ClusterDataListener;
+
+/**
+ * @author pengys5
+ */
+public class AgentJVMGRPCDataListener extends ClusterDataListener {
+
+ public static final String PATH = ClusterModuleDefine.BASE_CATALOG + "." + AgentJVMModuleGroupDefine.GROUP_NAME + "." + AgentJVMGRPCModuleDefine.MODULE_NAME;
+
+ @Override public String path() {
+ return PATH;
+ }
+}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCModuleDefine.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCModuleDefine.java
new file mode 100644
index 000000000..358adedfb
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCModuleDefine.java
@@ -0,0 +1,51 @@
+package org.skywalking.apm.collector.agentjvm.grpc;
+
+import java.util.LinkedList;
+import java.util.List;
+import org.skywalking.apm.collector.agentjvm.AgentJVMModuleDefine;
+import org.skywalking.apm.collector.agentjvm.AgentJVMModuleGroupDefine;
+import org.skywalking.apm.collector.agentjvm.grpc.handler.JVMMetricsServiceHandler;
+import org.skywalking.apm.collector.core.cluster.ClusterDataListener;
+import org.skywalking.apm.collector.core.framework.Handler;
+import org.skywalking.apm.collector.core.module.ModuleConfigParser;
+import org.skywalking.apm.collector.core.module.ModuleRegistration;
+import org.skywalking.apm.collector.core.server.Server;
+import org.skywalking.apm.collector.server.grpc.GRPCServer;
+
+/**
+ * @author pengys5
+ */
+public class AgentJVMGRPCModuleDefine extends AgentJVMModuleDefine {
+
+ public static final String MODULE_NAME = "grpc";
+
+ @Override protected String group() {
+ return AgentJVMModuleGroupDefine.GROUP_NAME;
+ }
+
+ @Override public String name() {
+ return MODULE_NAME;
+ }
+
+ @Override protected ModuleConfigParser configParser() {
+ return new AgentJVMGRPCConfigParser();
+ }
+
+ @Override protected Server server() {
+ return new GRPCServer(AgentJVMGRPCConfig.HOST, AgentJVMGRPCConfig.PORT);
+ }
+
+ @Override protected ModuleRegistration registration() {
+ return new AgentJVMGRPCModuleRegistration();
+ }
+
+ @Override public ClusterDataListener listener() {
+ return new AgentJVMGRPCDataListener();
+ }
+
+ @Override public List handlerList() {
+ List handlers = new LinkedList<>();
+ handlers.add(new JVMMetricsServiceHandler());
+ return handlers;
+ }
+}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCModuleRegistration.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCModuleRegistration.java
new file mode 100644
index 000000000..ca249dea7
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCModuleRegistration.java
@@ -0,0 +1,13 @@
+package org.skywalking.apm.collector.agentjvm.grpc;
+
+import org.skywalking.apm.collector.core.module.ModuleRegistration;
+
+/**
+ * @author pengys5
+ */
+public class AgentJVMGRPCModuleRegistration extends ModuleRegistration {
+
+ @Override public Value buildValue() {
+ return new Value(AgentJVMGRPCConfig.HOST, AgentJVMGRPCConfig.PORT, null);
+ }
+}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/handler/JVMMetricsServiceHandler.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/handler/JVMMetricsServiceHandler.java
new file mode 100644
index 000000000..7166b980d
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/handler/JVMMetricsServiceHandler.java
@@ -0,0 +1,17 @@
+package org.skywalking.apm.collector.agentjvm.grpc.handler;
+
+import io.grpc.stub.StreamObserver;
+import org.skywalking.apm.collector.server.grpc.GRPCHandler;
+import org.skywalking.apm.network.proto.Downstream;
+import org.skywalking.apm.network.proto.JVMMetrics;
+import org.skywalking.apm.network.proto.JVMMetricsServiceGrpc;
+
+/**
+ * @author pengys5
+ */
+public class JVMMetricsServiceHandler extends JVMMetricsServiceGrpc.JVMMetricsServiceImplBase implements GRPCHandler {
+
+ @Override public void collect(JVMMetrics request, StreamObserver responseObserver) {
+ super.collect(request, responseObserver);
+ }
+}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/group.define b/apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/group.define
new file mode 100644
index 000000000..0b2741b98
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/group.define
@@ -0,0 +1 @@
+org.skywalking.apm.collector.agentjvm.AgentJVMModuleGroupDefine
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/module.define b/apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/module.define
new file mode 100644
index 000000000..78d6e4a41
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/module.define
@@ -0,0 +1 @@
+org.skywalking.apm.collector.agentjvm.grpc.AgentJVMGRPCModuleDefine
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/AgentRegisterGRPCModuleDefine.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/AgentRegisterGRPCModuleDefine.java
index e9fca8ad3..509009c37 100644
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/AgentRegisterGRPCModuleDefine.java
+++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/AgentRegisterGRPCModuleDefine.java
@@ -1,8 +1,12 @@
package org.skywalking.apm.collector.agentregister.grpc;
+import java.util.LinkedList;
import java.util.List;
import org.skywalking.apm.collector.agentregister.AgentRegisterModuleDefine;
import org.skywalking.apm.collector.agentregister.AgentRegisterModuleGroupDefine;
+import org.skywalking.apm.collector.agentregister.grpc.handler.ApplicationRegisterServiceHandler;
+import org.skywalking.apm.collector.agentregister.grpc.handler.InstanceDiscoveryServiceHandler;
+import org.skywalking.apm.collector.agentregister.grpc.handler.ServiceNameDiscoveryServiceHandler;
import org.skywalking.apm.collector.core.cluster.ClusterDataListener;
import org.skywalking.apm.collector.core.framework.Handler;
import org.skywalking.apm.collector.core.module.ModuleConfigParser;
@@ -42,6 +46,10 @@ public class AgentRegisterGRPCModuleDefine extends AgentRegisterModuleDefine {
}
@Override public List handlerList() {
- return null;
+ List handlers = new LinkedList<>();
+ handlers.add(new ApplicationRegisterServiceHandler());
+ handlers.add(new InstanceDiscoveryServiceHandler());
+ handlers.add(new ServiceNameDiscoveryServiceHandler());
+ return handlers;
}
}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/ApplicationRegisterServiceHandler.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/ApplicationRegisterServiceHandler.java
new file mode 100644
index 000000000..705c2b74e
--- /dev/null
+++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/ApplicationRegisterServiceHandler.java
@@ -0,0 +1,16 @@
+package org.skywalking.apm.collector.agentregister.grpc.handler;
+
+import io.grpc.stub.StreamObserver;
+import org.skywalking.apm.collector.server.grpc.GRPCHandler;
+import org.skywalking.apm.network.proto.Application;
+import org.skywalking.apm.network.proto.ApplicationMapping;
+import org.skywalking.apm.network.proto.ApplicationRegisterServiceGrpc;
+
+/**
+ * @author pengys5
+ */
+public class ApplicationRegisterServiceHandler extends ApplicationRegisterServiceGrpc.ApplicationRegisterServiceImplBase implements GRPCHandler {
+ @Override public void register(Application request, StreamObserver responseObserver) {
+
+ }
+}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/InstanceDiscoveryServiceHandler.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/InstanceDiscoveryServiceHandler.java
new file mode 100644
index 000000000..70f64ed9b
--- /dev/null
+++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/InstanceDiscoveryServiceHandler.java
@@ -0,0 +1,30 @@
+package org.skywalking.apm.collector.agentregister.grpc.handler;
+
+import io.grpc.stub.StreamObserver;
+import org.skywalking.apm.collector.server.grpc.GRPCHandler;
+import org.skywalking.apm.network.proto.ApplicationInstance;
+import org.skywalking.apm.network.proto.ApplicationInstanceHeartbeat;
+import org.skywalking.apm.network.proto.ApplicationInstanceMapping;
+import org.skywalking.apm.network.proto.ApplicationInstanceRecover;
+import org.skywalking.apm.network.proto.Downstream;
+import org.skywalking.apm.network.proto.InstanceDiscoveryServiceGrpc;
+
+/**
+ * @author pengys5
+ */
+public class InstanceDiscoveryServiceHandler extends InstanceDiscoveryServiceGrpc.InstanceDiscoveryServiceImplBase implements GRPCHandler {
+
+ @Override
+ public void register(ApplicationInstance request, StreamObserver responseObserver) {
+ super.register(request, responseObserver);
+ }
+
+ @Override public void heartbeat(ApplicationInstanceHeartbeat request, StreamObserver responseObserver) {
+ super.heartbeat(request, responseObserver);
+ }
+
+ @Override
+ public void registerRecover(ApplicationInstanceRecover request, StreamObserver responseObserver) {
+ super.registerRecover(request, responseObserver);
+ }
+}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/ServiceNameDiscoveryServiceHandler.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/ServiceNameDiscoveryServiceHandler.java
new file mode 100644
index 000000000..a0e040c9f
--- /dev/null
+++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/ServiceNameDiscoveryServiceHandler.java
@@ -0,0 +1,18 @@
+package org.skywalking.apm.collector.agentregister.grpc.handler;
+
+import io.grpc.stub.StreamObserver;
+import org.skywalking.apm.collector.server.grpc.GRPCHandler;
+import org.skywalking.apm.network.proto.ServiceNameCollection;
+import org.skywalking.apm.network.proto.ServiceNameDiscoveryServiceGrpc;
+import org.skywalking.apm.network.proto.ServiceNameMappingCollection;
+
+/**
+ * @author pengys5
+ */
+public class ServiceNameDiscoveryServiceHandler extends ServiceNameDiscoveryServiceGrpc.ServiceNameDiscoveryServiceImplBase implements GRPCHandler {
+
+ @Override public void discovery(ServiceNameCollection request,
+ StreamObserver responseObserver) {
+ super.discovery(request, responseObserver);
+ }
+}
diff --git a/apm-collector/apm-collector-boot/pom.xml b/apm-collector/apm-collector-boot/pom.xml
index 94efcc0fc..dff459ea8 100644
--- a/apm-collector/apm-collector-boot/pom.xml
+++ b/apm-collector/apm-collector-boot/pom.xml
@@ -43,5 +43,10 @@
apm-collector-agentregister
${project.version}
+
+ org.skywalking
+ apm-collector-agentjvm
+ ${project.version}
+
\ No newline at end of file
diff --git a/apm-collector/apm-collector-remote/src/main/java/org/skywalking/apm/collector/remote/RemoteModuleInstaller.java b/apm-collector/apm-collector-remote/src/main/java/org/skywalking/apm/collector/remote/RemoteModuleInstaller.java
index 00a5bf070..18f1b8f2b 100644
--- a/apm-collector/apm-collector-remote/src/main/java/org/skywalking/apm/collector/remote/RemoteModuleInstaller.java
+++ b/apm-collector/apm-collector-remote/src/main/java/org/skywalking/apm/collector/remote/RemoteModuleInstaller.java
@@ -13,6 +13,6 @@ import org.skywalking.apm.collector.core.server.ServerHolder;
public class RemoteModuleInstaller implements ModuleInstaller {
@Override public void install(Map moduleConfig, Map moduleDefineMap,
ServerHolder serverHolder) throws DefineException, ClientException {
-
+
}
}
diff --git a/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCHandler.java b/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCHandler.java
new file mode 100644
index 000000000..7a6dd08bf
--- /dev/null
+++ b/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCHandler.java
@@ -0,0 +1,9 @@
+package org.skywalking.apm.collector.server.grpc;
+
+import org.skywalking.apm.collector.core.framework.Handler;
+
+/**
+ * @author pengys5
+ */
+public interface GRPCHandler extends Handler {
+}
diff --git a/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServer.java b/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServer.java
index 98c2f12db..592b44278 100644
--- a/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServer.java
+++ b/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServer.java
@@ -50,5 +50,6 @@ public class GRPCServer implements Server {
}
@Override public void addHandler(Handler handler) {
+ nettyServerBuilder.addService((io.grpc.BindableService)handler);
}
}
diff --git a/apm-collector/pom.xml b/apm-collector/pom.xml
index 67c9b2384..a73fc46cd 100644
--- a/apm-collector/pom.xml
+++ b/apm-collector/pom.xml
@@ -16,6 +16,7 @@
apm-collector-stream
apm-collector-agentserver
apm-collector-agentregister
+ apm-collector-agentjvm
apm