diff --git a/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/pom.xml b/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/pom.xml index 48211e35bb6cffc745d5792a2a7ca2cb25dde496..eb0e0fa27bcecfa23e74ecafe56b1eaab5ccc79a 100644 --- a/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/pom.xml +++ b/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/pom.xml @@ -61,5 +61,15 @@ segment-parser-define ${project.version} + + org.apache.skywalking + jvm-define + ${project.version} + + + org.apache.skywalking + metric-define + ${project.version} + \ No newline at end of file diff --git a/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/agent/jetty/provider/handler/InstanceHeartBeatServletHandler.java b/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/agent/jetty/provider/handler/InstanceHeartBeatServletHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..16eaa08aed4d760fe212d45ce8f4d994bdc85439 --- /dev/null +++ b/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/agent/jetty/provider/handler/InstanceHeartBeatServletHandler.java @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.skywalking.apm.collector.agent.jetty.provider.handler; + +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import java.io.IOException; +import javax.servlet.http.HttpServletRequest; +import org.apache.skywalking.apm.collector.analysis.metric.define.AnalysisMetricModule; +import org.apache.skywalking.apm.collector.analysis.metric.define.service.IInstanceHeartBeatService; +import org.apache.skywalking.apm.collector.core.module.ModuleManager; +import org.apache.skywalking.apm.collector.server.jetty.ArgumentsParseException; +import org.apache.skywalking.apm.collector.server.jetty.JettyHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng + */ +public class InstanceHeartBeatServletHandler extends JettyHandler { + + private final Logger logger = LoggerFactory.getLogger(InstanceHeartBeatServletHandler.class); + + private final IInstanceHeartBeatService instanceHeartBeatService; + private final Gson gson = new Gson(); + + private static final String INSTANCE_ID = "ii"; + private static final String HEARTBEAT_TIME = "ht"; + + public InstanceHeartBeatServletHandler(ModuleManager moduleManager) { + this.instanceHeartBeatService = moduleManager.find(AnalysisMetricModule.NAME).getService(IInstanceHeartBeatService.class); + } + + @Override public String pathSpec() { + return "/instance/heartbeat"; + } + + @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { + throw new UnsupportedOperationException(); + } + + @Override protected JsonElement doPost(HttpServletRequest req) throws ArgumentsParseException, IOException { + JsonObject responseJson = new JsonObject(); + try { + JsonObject heartBeat = gson.fromJson(req.getReader(), JsonObject.class); + int instanceId = heartBeat.get(INSTANCE_ID).getAsInt(); + long heartBeatTime = heartBeat.get(HEARTBEAT_TIME).getAsLong(); + + instanceHeartBeatService.heartBeat(instanceId, heartBeatTime); + } catch (IOException e) { + logger.error(e.getMessage(), e); + } + return responseJson; + } +} diff --git a/apm-collector/apm-collector-analysis/analysis-register/register-define/src/main/java/org/apache/skywalking/apm/collector/analysis/register/define/service/IInstanceIDService.java b/apm-collector/apm-collector-analysis/analysis-register/register-define/src/main/java/org/apache/skywalking/apm/collector/analysis/register/define/service/IInstanceIDService.java index a8f72f85eba6d61961d65269173806cb93cdd7e8..ed84f05b5e2752e6fb30e9e23764b38d001fa90e 100644 --- a/apm-collector/apm-collector-analysis/analysis-register/register-define/src/main/java/org/apache/skywalking/apm/collector/analysis/register/define/service/IInstanceIDService.java +++ b/apm-collector/apm-collector-analysis/analysis-register/register-define/src/main/java/org/apache/skywalking/apm/collector/analysis/register/define/service/IInstanceIDService.java @@ -26,7 +26,5 @@ import org.apache.skywalking.apm.collector.core.module.Service; public interface IInstanceIDService extends Service { int getOrCreateByAgentUUID(int applicationId, String agentUUID, long registerTime, String osInfo); - void recover(int instanceId, int applicationId, long registerTime, String osInfo); - int getOrCreateByAddressId(int applicationId, int addressId, long registerTime); } diff --git a/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/service/InstanceIDService.java b/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/service/InstanceIDService.java index d1891457839d0b5aa6e9b5ca93c23553864e78fc..803e8d9f9280921383a62918f115854470da35ea 100644 --- a/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/service/InstanceIDService.java +++ b/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/service/InstanceIDService.java @@ -29,8 +29,6 @@ import org.apache.skywalking.apm.collector.core.module.ModuleManager; import org.apache.skywalking.apm.collector.core.util.BooleanUtils; import org.apache.skywalking.apm.collector.core.util.Const; import org.apache.skywalking.apm.collector.core.util.ObjectUtils; -import org.apache.skywalking.apm.collector.storage.StorageModule; -import org.apache.skywalking.apm.collector.storage.dao.register.IInstanceRegisterDAO; import org.apache.skywalking.apm.collector.storage.table.register.Instance; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,7 +43,6 @@ public class InstanceIDService implements IInstanceIDService { private final ModuleManager moduleManager; private InstanceCacheService instanceCacheService; private Graph instanceRegisterGraph; - private IInstanceRegisterDAO instanceRegisterDAO; private ApplicationCacheService applicationCacheService; public InstanceIDService(ModuleManager moduleManager) { @@ -66,13 +63,6 @@ public class InstanceIDService implements IInstanceIDService { return instanceRegisterGraph; } - private IInstanceRegisterDAO getInstanceRegisterDAO() { - if (ObjectUtils.isEmpty(instanceRegisterDAO)) { - instanceRegisterDAO = moduleManager.find(StorageModule.NAME).getService(IInstanceRegisterDAO.class); - } - return instanceRegisterDAO; - } - private ApplicationCacheService getApplicationCacheService() { if (ObjectUtils.isEmpty(applicationCacheService)) { this.applicationCacheService = moduleManager.find(CacheModule.NAME).getService(ApplicationCacheService.class); @@ -123,19 +113,4 @@ public class InstanceIDService implements IInstanceIDService { } return instanceId; } - - @Override public void recover(int instanceId, int applicationId, long registerTime, String osInfo) { - logger.debug("instance recover, instance id: {}, application id: {}, register time: {}", instanceId, applicationId, registerTime); - Instance instance = new Instance(); - instance.setId(String.valueOf(instanceId)); - instance.setApplicationId(applicationId); - instance.setApplicationCode(getApplicationCacheService().getApplicationById(applicationId).getApplicationCode()); - instance.setAgentUUID(""); - instance.setRegisterTime(registerTime); - instance.setHeartBeatTime(registerTime); - instance.setInstanceId(instanceId); - instance.setOsInfo(osInfo); - - getInstanceRegisterDAO().save(instance); - } }