From a220ae9c781237142ec9b82ee34d50cf75d67e63 Mon Sep 17 00:00:00 2001 From: pengys5 <8082209@qq.com> Date: Sun, 30 Jul 2017 21:23:44 +0800 Subject: [PATCH] Create ui module --- .../grpc/AgentJVMGRPCConfigParser.java | 3 ++ .../grpc/AgentRegisterGRPCConfigParser.java | 3 ++ .../apm-collector-agentserver/pom.xml | 5 ++ .../jetty/AgentServerJettyConfigParser.java | 3 ++ .../grpc/AgentStreamGRPCConfigParser.java | 3 ++ .../jetty/AgentStreamJettyConfigParser.java | 3 ++ .../src/main/resources/application.yml | 1 + .../stream/grpc/StreamGRPCConfigParser.java | 3 ++ apm-collector/apm-collector-ui/pom.xml | 23 +++++++++ .../apm/collector/ui/UIModuleContext.java | 13 +++++ .../apm/collector/ui/UIModuleDefine.java | 51 +++++++++++++++++++ .../apm/collector/ui/UIModuleException.java | 16 ++++++ .../apm/collector/ui/UIModuleGroupDefine.java | 25 +++++++++ .../apm/collector/ui/UIModuleInstaller.java | 36 +++++++++++++ .../apm/collector/ui/jetty/UIJettyConfig.java | 10 ++++ .../ui/jetty/UIJettyConfigParser.java | 36 +++++++++++++ .../ui/jetty/UIJettyDataListener.java | 20 ++++++++ .../ui/jetty/UIJettyModuleDefine.java | 51 +++++++++++++++++++ .../ui/jetty/UIJettyModuleRegistration.java | 13 +++++ .../ui/jetty/handler/TraceDagGetHandler.java | 21 ++++++++ .../jetty/handler/UIJettyServerHandler.java | 36 +++++++++++++ .../resources/META-INF/defines/group.define | 1 + .../resources/META-INF/defines/module.define | 1 + 23 files changed, 377 insertions(+) create mode 100644 apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleContext.java create mode 100644 apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleDefine.java create mode 100644 apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleException.java create mode 100644 apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleGroupDefine.java create mode 100644 apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleInstaller.java create mode 100644 apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyConfig.java create mode 100644 apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyConfigParser.java create mode 100644 apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyDataListener.java create mode 100644 apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyModuleDefine.java create mode 100644 apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyModuleRegistration.java create mode 100644 apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/TraceDagGetHandler.java create mode 100644 apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/UIJettyServerHandler.java create mode 100644 apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/group.define create mode 100644 apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/module.define 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 index d5d1996aae..f66ea0a8aa 100644 --- 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 @@ -17,7 +17,10 @@ public class AgentJVMGRPCConfigParser implements ModuleConfigParser { @Override public void parse(Map config) throws ConfigParseException { if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(HOST))) { AgentJVMGRPCConfig.HOST = "localhost"; + } else { + AgentJVMGRPCConfig.HOST = (String)config.get(HOST); } + if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(PORT))) { AgentJVMGRPCConfig.PORT = 11800; } else { diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/AgentRegisterGRPCConfigParser.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/AgentRegisterGRPCConfigParser.java index cf59cd8ef3..90f0d39dac 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/AgentRegisterGRPCConfigParser.java +++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/AgentRegisterGRPCConfigParser.java @@ -17,7 +17,10 @@ public class AgentRegisterGRPCConfigParser implements ModuleConfigParser { @Override public void parse(Map config) throws ConfigParseException { if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(HOST))) { AgentRegisterGRPCConfig.HOST = "localhost"; + } else { + AgentRegisterGRPCConfig.HOST = (String)config.get(HOST); } + if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(PORT))) { AgentRegisterGRPCConfig.PORT = 11800; } else { diff --git a/apm-collector/apm-collector-agentserver/pom.xml b/apm-collector/apm-collector-agentserver/pom.xml index 1451d0a0db..8f174702d3 100644 --- a/apm-collector/apm-collector-agentserver/pom.xml +++ b/apm-collector/apm-collector-agentserver/pom.xml @@ -33,5 +33,10 @@ apm-collector-agentregister ${project.version} + + org.skywalking + apm-collector-ui + ${project.version} + \ No newline at end of file diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyConfigParser.java b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyConfigParser.java index bac76bcfc2..2625be0784 100644 --- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyConfigParser.java +++ b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyConfigParser.java @@ -20,7 +20,10 @@ public class AgentServerJettyConfigParser implements ModuleConfigParser { if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(HOST))) { AgentServerJettyConfig.HOST = "localhost"; + } else { + AgentServerJettyConfig.HOST = (String)config.get(HOST); } + if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(PORT))) { AgentServerJettyConfig.PORT = 10800; } else { diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCConfigParser.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCConfigParser.java index 43a7ac543a..f6e8eca80e 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCConfigParser.java +++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCConfigParser.java @@ -17,7 +17,10 @@ public class AgentStreamGRPCConfigParser implements ModuleConfigParser { @Override public void parse(Map config) throws ConfigParseException { if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(HOST))) { AgentStreamGRPCConfig.HOST = "localhost"; + } else { + AgentStreamGRPCConfig.HOST = (String)config.get(HOST); } + if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(PORT))) { AgentStreamGRPCConfig.PORT = 11800; } else { diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyConfigParser.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyConfigParser.java index 86eb65a2bb..d7e4c4cebe 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyConfigParser.java +++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyConfigParser.java @@ -20,7 +20,10 @@ public class AgentStreamJettyConfigParser implements ModuleConfigParser { if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(HOST))) { AgentStreamJettyConfig.HOST = "localhost"; + } else { + AgentStreamJettyConfig.HOST = (String)config.get(HOST); } + if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(PORT))) { AgentStreamJettyConfig.PORT = 12800; } else { diff --git a/apm-collector/apm-collector-boot/src/main/resources/application.yml b/apm-collector/apm-collector-boot/src/main/resources/application.yml index 5e1a6de331..b5619da81e 100644 --- a/apm-collector/apm-collector-boot/src/main/resources/application.yml +++ b/apm-collector/apm-collector-boot/src/main/resources/application.yml @@ -20,6 +20,7 @@ ui: jetty: host: localhost port: 12800 + context_path: /ui storage: elasticsearch: cluster_name: CollectorDBCluster diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCConfigParser.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCConfigParser.java index 3a4899f1c5..621cdbf72b 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCConfigParser.java +++ b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCConfigParser.java @@ -17,7 +17,10 @@ public class StreamGRPCConfigParser implements ModuleConfigParser { @Override public void parse(Map config) throws ConfigParseException { if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(HOST))) { StreamGRPCConfig.HOST = "localhost"; + } else { + StreamGRPCConfig.HOST = (String)config.get(HOST); } + if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(PORT))) { StreamGRPCConfig.PORT = 11800; } else { diff --git a/apm-collector/apm-collector-ui/pom.xml b/apm-collector/apm-collector-ui/pom.xml index 6ece91dd84..ff4bb505b1 100644 --- a/apm-collector/apm-collector-ui/pom.xml +++ b/apm-collector/apm-collector-ui/pom.xml @@ -11,4 +11,27 @@ apm-collector-ui jar + + + + org.skywalking + apm-collector-core + ${project.version} + + + org.skywalking + apm-collector-cluster + ${project.version} + + + org.skywalking + apm-collector-server + ${project.version} + + + org.skywalking + apm-collector-storage + ${project.version} + + \ No newline at end of file diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleContext.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleContext.java new file mode 100644 index 0000000000..5333eba1b3 --- /dev/null +++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleContext.java @@ -0,0 +1,13 @@ +package org.skywalking.apm.collector.ui; + +import org.skywalking.apm.collector.core.framework.Context; + +/** + * @author pengys5 + */ +public class UIModuleContext extends Context { + + public UIModuleContext(String groupName) { + super(groupName); + } +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleDefine.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleDefine.java new file mode 100644 index 0000000000..2f43dfeb40 --- /dev/null +++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleDefine.java @@ -0,0 +1,51 @@ +package org.skywalking.apm.collector.ui; + +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 UIModuleDefine extends ModuleDefine implements ClusterDataListenerDefine { + + private final Logger logger = LoggerFactory.getLogger(UIModuleDefine.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 UIModuleException(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-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleException.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleException.java new file mode 100644 index 0000000000..34662eb14f --- /dev/null +++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleException.java @@ -0,0 +1,16 @@ +package org.skywalking.apm.collector.ui; + +import org.skywalking.apm.collector.core.module.ModuleException; + +/** + * @author pengys5 + */ +public class UIModuleException extends ModuleException { + public UIModuleException(String message) { + super(message); + } + + public UIModuleException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleGroupDefine.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleGroupDefine.java new file mode 100644 index 0000000000..575cd41753 --- /dev/null +++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleGroupDefine.java @@ -0,0 +1,25 @@ +package org.skywalking.apm.collector.ui; + +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 UIModuleGroupDefine implements ModuleGroupDefine { + + public static final String GROUP_NAME = "ui"; + + @Override public String name() { + return GROUP_NAME; + } + + @Override public Context groupContext() { + return new UIModuleContext(GROUP_NAME); + } + + @Override public ModuleInstaller moduleInstaller() { + return new UIModuleInstaller(); + } +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleInstaller.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleInstaller.java new file mode 100644 index 0000000000..4bda90127e --- /dev/null +++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleInstaller.java @@ -0,0 +1,36 @@ +package org.skywalking.apm.collector.ui; + +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 UIModuleInstaller implements ModuleInstaller { + + private final Logger logger = LoggerFactory.getLogger(UIModuleInstaller.class); + + @Override public void install(Map moduleConfig, + Map moduleDefineMap, ServerHolder serverHolder) throws DefineException, ClientException { + logger.info("beginning ui module install"); + + UIModuleContext context = new UIModuleContext(UIModuleGroupDefine.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-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyConfig.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyConfig.java new file mode 100644 index 0000000000..0f761058ab --- /dev/null +++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyConfig.java @@ -0,0 +1,10 @@ +package org.skywalking.apm.collector.ui.jetty; + +/** + * @author pengys5 + */ +public class UIJettyConfig { + public static String HOST; + public static int PORT; + public static String CONTEXT_PATH; +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyConfigParser.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyConfigParser.java new file mode 100644 index 0000000000..4f1a5baf5e --- /dev/null +++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyConfigParser.java @@ -0,0 +1,36 @@ +package org.skywalking.apm.collector.ui.jetty; + +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 UIJettyConfigParser implements ModuleConfigParser { + + private static final String HOST = "host"; + private static final String PORT = "port"; + public static final String CONTEXT_PATH = "contextPath"; + + @Override public void parse(Map config) throws ConfigParseException { + UIJettyConfig.CONTEXT_PATH = "/"; + + if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(HOST))) { + UIJettyConfig.HOST = "localhost"; + } else { + UIJettyConfig.HOST = (String)config.get(HOST); + } + + if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(PORT))) { + UIJettyConfig.PORT = 12800; + } else { + UIJettyConfig.PORT = (Integer)config.get(PORT); + } + if (ObjectUtils.isNotEmpty(config) && StringUtils.isNotEmpty(config.get(CONTEXT_PATH))) { + UIJettyConfig.CONTEXT_PATH = (String)config.get(CONTEXT_PATH); + } + } +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyDataListener.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyDataListener.java new file mode 100644 index 0000000000..00a1104dd1 --- /dev/null +++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyDataListener.java @@ -0,0 +1,20 @@ +package org.skywalking.apm.collector.ui.jetty; + +import org.skywalking.apm.collector.cluster.ClusterModuleDefine; +import org.skywalking.apm.collector.core.cluster.ClusterDataListener; +import org.skywalking.apm.collector.ui.UIModuleGroupDefine; + +/** + * @author pengys5 + */ +public class UIJettyDataListener extends ClusterDataListener { + + public static final String PATH = ClusterModuleDefine.BASE_CATALOG + "." + UIModuleGroupDefine.GROUP_NAME + "." + UIJettyModuleDefine.MODULE_NAME; + + @Override public String path() { + return PATH; + } + + @Override public void addressChangedNotify() { + } +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyModuleDefine.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyModuleDefine.java new file mode 100644 index 0000000000..69f9bc5c21 --- /dev/null +++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyModuleDefine.java @@ -0,0 +1,51 @@ +package org.skywalking.apm.collector.ui.jetty; + +import java.util.LinkedList; +import java.util.List; +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.jetty.JettyServer; +import org.skywalking.apm.collector.ui.UIModuleDefine; +import org.skywalking.apm.collector.ui.UIModuleGroupDefine; +import org.skywalking.apm.collector.ui.jetty.handler.UIJettyServerHandler; + +/** + * @author pengys5 + */ +public class UIJettyModuleDefine extends UIModuleDefine { + + public static final String MODULE_NAME = "jetty"; + + @Override protected String group() { + return UIModuleGroupDefine.GROUP_NAME; + } + + @Override public String name() { + return MODULE_NAME; + } + + @Override protected ModuleConfigParser configParser() { + return new UIJettyConfigParser(); + } + + @Override protected Server server() { + return new JettyServer(UIJettyConfig.HOST, UIJettyConfig.PORT, UIJettyConfig.CONTEXT_PATH); + } + + @Override protected ModuleRegistration registration() { + return new UIJettyModuleRegistration(); + } + + @Override public ClusterDataListener listener() { + return new UIJettyDataListener(); + } + + @Override public List handlerList() { + List handlers = new LinkedList<>(); + handlers.add(new UIJettyServerHandler()); + return handlers; + } +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyModuleRegistration.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyModuleRegistration.java new file mode 100644 index 0000000000..c29a8cb4ea --- /dev/null +++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyModuleRegistration.java @@ -0,0 +1,13 @@ +package org.skywalking.apm.collector.ui.jetty; + +import org.skywalking.apm.collector.core.module.ModuleRegistration; + +/** + * @author pengys5 + */ +public class UIJettyModuleRegistration extends ModuleRegistration { + + @Override public Value buildValue() { + return new Value(UIJettyConfig.HOST, UIJettyConfig.PORT, UIJettyConfig.CONTEXT_PATH); + } +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/TraceDagGetHandler.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/TraceDagGetHandler.java new file mode 100644 index 0000000000..ca4e1da967 --- /dev/null +++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/TraceDagGetHandler.java @@ -0,0 +1,21 @@ +package org.skywalking.apm.collector.ui.jetty.handler; + +import java.io.IOException; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.skywalking.apm.collector.server.jetty.JettyHandler; + +/** + * @author pengys5 + */ +public class TraceDagGetHandler extends JettyHandler { + + @Override public String pathSpec() { + return "/traceDag"; + } + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + } +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/UIJettyServerHandler.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/UIJettyServerHandler.java new file mode 100644 index 0000000000..3a9580434b --- /dev/null +++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/UIJettyServerHandler.java @@ -0,0 +1,36 @@ +package org.skywalking.apm.collector.ui.jetty.handler; + +import com.google.gson.JsonArray; +import java.io.IOException; +import java.util.List; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.skywalking.apm.collector.cluster.ClusterModuleGroupDefine; +import org.skywalking.apm.collector.core.cluster.ClusterModuleContext; +import org.skywalking.apm.collector.core.cluster.ClusterModuleRegistrationReader; +import org.skywalking.apm.collector.core.framework.CollectorContextHelper; +import org.skywalking.apm.collector.server.jetty.JettyHandler; +import org.skywalking.apm.collector.ui.jetty.UIJettyDataListener; + +/** + * @author pengys5 + */ +public class UIJettyServerHandler extends JettyHandler { + + @Override public String pathSpec() { + return "/ui/jetty"; + } + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + ClusterModuleRegistrationReader reader = ((ClusterModuleContext)CollectorContextHelper.INSTANCE.getContext(ClusterModuleGroupDefine.GROUP_NAME)).getReader(); + List servers = reader.read(UIJettyDataListener.PATH); + JsonArray serverArray = new JsonArray(); + servers.forEach(server -> { + serverArray.add(server); + }); + + reply(resp, serverArray, HttpServletResponse.SC_OK); + } +} diff --git a/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/group.define b/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/group.define new file mode 100644 index 0000000000..35b83f180b --- /dev/null +++ b/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/group.define @@ -0,0 +1 @@ +org.skywalking.apm.collector.ui.UIModuleGroupDefine \ No newline at end of file diff --git a/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/module.define b/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/module.define new file mode 100644 index 0000000000..285a6d99da --- /dev/null +++ b/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/module.define @@ -0,0 +1 @@ +org.skywalking.apm.collector.ui.jetty.UIJettyModuleDefine \ No newline at end of file -- GitLab