Loading apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/AgentModuleGRPCProvider.java +26 −3 Original line number Diff line number Diff line Loading @@ -20,12 +20,20 @@ package org.skywalking.apm.collector.agent.grpc; import java.util.Properties; import org.skywalking.apm.collector.agent.AgentModule; import org.skywalking.apm.collector.agent.grpc.handler.ApplicationRegisterServiceHandler; import org.skywalking.apm.collector.agent.grpc.handler.InstanceDiscoveryServiceHandler; import org.skywalking.apm.collector.agent.grpc.handler.JVMMetricsServiceHandler; import org.skywalking.apm.collector.agent.grpc.handler.ServiceNameDiscoveryServiceHandler; import org.skywalking.apm.collector.agent.grpc.handler.TraceSegmentServiceHandler; import org.skywalking.apm.collector.agent.grpc.handler.naming.AgentGRPCNamingHandler; import org.skywalking.apm.collector.agent.grpc.handler.naming.AgentGRPCNamingListener; import org.skywalking.apm.collector.agent.stream.AgentStreamSingleton; import org.skywalking.apm.collector.cache.CacheModule; import org.skywalking.apm.collector.cache.CacheServiceManager; import org.skywalking.apm.collector.cluster.ClusterModule; import org.skywalking.apm.collector.cluster.service.ModuleListenerService; import org.skywalking.apm.collector.cluster.service.ModuleRegisterService; import org.skywalking.apm.collector.core.graph.Graph; import org.skywalking.apm.collector.core.module.Module; import org.skywalking.apm.collector.core.module.ModuleNotFoundException; import org.skywalking.apm.collector.core.module.ModuleProvider; Loading @@ -34,9 +42,12 @@ import org.skywalking.apm.collector.grpc.manager.GRPCManagerModule; import org.skywalking.apm.collector.grpc.manager.service.GRPCManagerService; import org.skywalking.apm.collector.naming.NamingModule; import org.skywalking.apm.collector.naming.service.NamingHandlerRegisterService; import org.skywalking.apm.collector.remote.RemoteModule; import org.skywalking.apm.collector.server.Server; import org.skywalking.apm.collector.storage.StorageModule; import org.skywalking.apm.collector.storage.service.DAOService; import org.skywalking.apm.collector.storage.table.register.Application; import org.skywalking.apm.collector.stream.worker.base.WorkerCreateListener; /** * @author peng-yongsheng Loading Loading @@ -74,11 +85,17 @@ public class AgentModuleGRPCProvider extends ModuleProvider { NamingHandlerRegisterService namingHandlerRegisterService = getManager().find(NamingModule.NAME).getService(NamingHandlerRegisterService.class); namingHandlerRegisterService.register(new AgentGRPCNamingHandler(namingListener)); CacheServiceManager cacheServiceManager = new CacheServiceManager(); cacheServiceManager.init(getManager()); DAOService daoService = getManager().find(StorageModule.NAME).getService(DAOService.class); GRPCManagerService managerService = getManager().find(GRPCManagerModule.NAME).getService(GRPCManagerService.class); Server gRPCServer = managerService.createIfAbsent(host, port); addHandlers(daoService, gRPCServer); AgentStreamSingleton agentStreamSingleton = AgentStreamSingleton.getInstance(getManager(), cacheServiceManager, new WorkerCreateListener()); addHandlers(daoService, gRPCServer, cacheServiceManager, agentStreamSingleton); } catch (ModuleNotFoundException e) { throw new ServiceNotProvidedException(e.getMessage()); } Loading @@ -89,10 +106,16 @@ public class AgentModuleGRPCProvider extends ModuleProvider { } @Override public String[] requiredModules() { return new String[] {ClusterModule.NAME, NamingModule.NAME, StorageModule.NAME, GRPCManagerModule.NAME}; return new String[] {ClusterModule.NAME, NamingModule.NAME, StorageModule.NAME, GRPCManagerModule.NAME, CacheModule.NAME, RemoteModule.NAME}; } private void addHandlers(DAOService daoService, Server gRPCServer) { private void addHandlers(DAOService daoService, Server gRPCServer, CacheServiceManager cacheServiceManager, AgentStreamSingleton agentStreamSingleton) { Graph<Application> applicationRegisterGraph = agentStreamSingleton.getApplicationRegisterGraph(); gRPCServer.addHandler(new ApplicationRegisterServiceHandler(cacheServiceManager, applicationRegisterGraph)); gRPCServer.addHandler(new InstanceDiscoveryServiceHandler(daoService, cacheServiceManager)); gRPCServer.addHandler(new ServiceNameDiscoveryServiceHandler(cacheServiceManager)); gRPCServer.addHandler(new JVMMetricsServiceHandler()); gRPCServer.addHandler(new TraceSegmentServiceHandler()); } } apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/ApplicationRegisterServiceHandler.java 0 → 100644 +65 −0 Original line number Diff line number Diff line /* * Copyright 2017, OpenSkywalking Organization All rights reserved. * * Licensed 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. * * Project repository: https://github.com/OpenSkywalking/skywalking */ package org.skywalking.apm.collector.agent.grpc.handler; import com.google.protobuf.ProtocolStringList; import io.grpc.stub.StreamObserver; import org.skywalking.apm.collector.agent.stream.worker.register.ApplicationIDService; import org.skywalking.apm.collector.cache.CacheServiceManager; import org.skywalking.apm.collector.core.graph.Graph; 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; import org.skywalking.apm.network.proto.KeyWithIntegerValue; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ public class ApplicationRegisterServiceHandler extends ApplicationRegisterServiceGrpc.ApplicationRegisterServiceImplBase implements GRPCHandler { private final Logger logger = LoggerFactory.getLogger(ApplicationRegisterServiceHandler.class); private final ApplicationIDService applicationIDService; public ApplicationRegisterServiceHandler(CacheServiceManager cacheServiceManager, Graph<org.skywalking.apm.collector.storage.table.register.Application> applicationRegisterGraph) { applicationIDService = new ApplicationIDService(cacheServiceManager, applicationRegisterGraph); } @Override public void register(Application request, StreamObserver<ApplicationMapping> responseObserver) { logger.debug("register application"); ProtocolStringList applicationCodes = request.getApplicationCodeList(); ApplicationMapping.Builder builder = ApplicationMapping.newBuilder(); for (int i = 0; i < applicationCodes.size(); i++) { String applicationCode = applicationCodes.get(i); int applicationId = applicationIDService.getOrCreate(applicationCode); if (applicationId != 0) { KeyWithIntegerValue value = KeyWithIntegerValue.newBuilder().setKey(applicationCode).setValue(applicationId).build(); builder.addApplication(value); } } responseObserver.onNext(builder.build()); responseObserver.onCompleted(); } } apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/InstanceDiscoveryServiceHandler.java 0 → 100644 +83 −0 Original line number Diff line number Diff line /* * Copyright 2017, OpenSkywalking Organization All rights reserved. * * Licensed 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. * * Project repository: https://github.com/OpenSkywalking/skywalking */ package org.skywalking.apm.collector.agent.grpc.handler; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import io.grpc.stub.StreamObserver; import org.skywalking.apm.collector.agent.stream.worker.register.InstanceIDService; import org.skywalking.apm.collector.cache.CacheServiceManager; import org.skywalking.apm.collector.core.util.TimeBucketUtils; import org.skywalking.apm.collector.server.grpc.GRPCHandler; import org.skywalking.apm.collector.storage.service.DAOService; import org.skywalking.apm.network.proto.ApplicationInstance; 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; import org.skywalking.apm.network.proto.OSInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ public class InstanceDiscoveryServiceHandler extends InstanceDiscoveryServiceGrpc.InstanceDiscoveryServiceImplBase implements GRPCHandler { private final Logger logger = LoggerFactory.getLogger(InstanceDiscoveryServiceHandler.class); private final InstanceIDService instanceIDService; public InstanceDiscoveryServiceHandler(DAOService daoService, CacheServiceManager cacheServiceManager) { this.instanceIDService = new InstanceIDService(daoService, cacheServiceManager); } @Override public void register(ApplicationInstance request, StreamObserver<ApplicationInstanceMapping> responseObserver) { long timeBucket = TimeBucketUtils.INSTANCE.getSecondTimeBucket(request.getRegisterTime()); int instanceId = instanceIDService.getOrCreate(request.getApplicationId(), request.getAgentUUID(), timeBucket, buildOsInfo(request.getOsinfo())); ApplicationInstanceMapping.Builder builder = ApplicationInstanceMapping.newBuilder(); builder.setApplicationId(request.getApplicationId()); builder.setApplicationInstanceId(instanceId); responseObserver.onNext(builder.build()); responseObserver.onCompleted(); } @Override public void registerRecover(ApplicationInstanceRecover request, StreamObserver<Downstream> responseObserver) { long timeBucket = TimeBucketUtils.INSTANCE.getSecondTimeBucket(request.getRegisterTime()); instanceIDService.recover(request.getApplicationInstanceId(), request.getApplicationId(), timeBucket, buildOsInfo(request.getOsinfo())); responseObserver.onNext(Downstream.newBuilder().build()); responseObserver.onCompleted(); } private String buildOsInfo(OSInfo osinfo) { JsonObject osInfoJson = new JsonObject(); osInfoJson.addProperty("osName", osinfo.getOsName()); osInfoJson.addProperty("hostName", osinfo.getHostname()); osInfoJson.addProperty("processId", osinfo.getProcessNo()); JsonArray ipv4Array = new JsonArray(); osinfo.getIpv4SList().forEach(ipv4 -> { ipv4Array.add(ipv4); }); osInfoJson.add("ipv4s", ipv4Array); return osInfoJson.toString(); } } apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/ServiceNameDiscoveryServiceHandler.java 0 → 100644 +68 −0 Original line number Diff line number Diff line /* * Copyright 2017, OpenSkywalking Organization All rights reserved. * * Licensed 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. * * Project repository: https://github.com/OpenSkywalking/skywalking */ package org.skywalking.apm.collector.agent.grpc.handler; import io.grpc.stub.StreamObserver; import java.util.List; import org.skywalking.apm.collector.agent.stream.worker.register.ServiceNameService; import org.skywalking.apm.collector.cache.CacheServiceManager; 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.ServiceNameElement; import org.skywalking.apm.network.proto.ServiceNameMappingCollection; import org.skywalking.apm.network.proto.ServiceNameMappingElement; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ public class ServiceNameDiscoveryServiceHandler extends ServiceNameDiscoveryServiceGrpc.ServiceNameDiscoveryServiceImplBase implements GRPCHandler { private final Logger logger = LoggerFactory.getLogger(ServiceNameDiscoveryServiceHandler.class); private final ServiceNameService serviceNameService; public ServiceNameDiscoveryServiceHandler(CacheServiceManager cacheServiceManager) { this.serviceNameService = new ServiceNameService(cacheServiceManager); } @Override public void discovery(ServiceNameCollection request, StreamObserver<ServiceNameMappingCollection> responseObserver) { List<ServiceNameElement> serviceNameElementList = request.getElementsList(); ServiceNameMappingCollection.Builder builder = ServiceNameMappingCollection.newBuilder(); for (ServiceNameElement serviceNameElement : serviceNameElementList) { int applicationId = serviceNameElement.getApplicationId(); String serviceName = serviceNameElement.getServiceName(); int serviceId = serviceNameService.getOrCreate(applicationId, serviceName); if (serviceId != 0) { ServiceNameMappingElement.Builder mappingElement = ServiceNameMappingElement.newBuilder(); mappingElement.setServiceId(serviceId); mappingElement.setElement(serviceNameElement); builder.addElements(mappingElement); } } responseObserver.onNext(builder.build()); responseObserver.onCompleted(); } } apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/naming/AgentGRPCNamingHandler.java +2 −1 Original line number Diff line number Diff line Loading @@ -37,7 +37,8 @@ public class AgentGRPCNamingHandler extends JettyHandler { } @Override public String pathSpec() { return "/agent/gRPC"; // return "/agent/gRPC"; return "/agentstream/grpc"; } @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { Loading Loading
apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/AgentModuleGRPCProvider.java +26 −3 Original line number Diff line number Diff line Loading @@ -20,12 +20,20 @@ package org.skywalking.apm.collector.agent.grpc; import java.util.Properties; import org.skywalking.apm.collector.agent.AgentModule; import org.skywalking.apm.collector.agent.grpc.handler.ApplicationRegisterServiceHandler; import org.skywalking.apm.collector.agent.grpc.handler.InstanceDiscoveryServiceHandler; import org.skywalking.apm.collector.agent.grpc.handler.JVMMetricsServiceHandler; import org.skywalking.apm.collector.agent.grpc.handler.ServiceNameDiscoveryServiceHandler; import org.skywalking.apm.collector.agent.grpc.handler.TraceSegmentServiceHandler; import org.skywalking.apm.collector.agent.grpc.handler.naming.AgentGRPCNamingHandler; import org.skywalking.apm.collector.agent.grpc.handler.naming.AgentGRPCNamingListener; import org.skywalking.apm.collector.agent.stream.AgentStreamSingleton; import org.skywalking.apm.collector.cache.CacheModule; import org.skywalking.apm.collector.cache.CacheServiceManager; import org.skywalking.apm.collector.cluster.ClusterModule; import org.skywalking.apm.collector.cluster.service.ModuleListenerService; import org.skywalking.apm.collector.cluster.service.ModuleRegisterService; import org.skywalking.apm.collector.core.graph.Graph; import org.skywalking.apm.collector.core.module.Module; import org.skywalking.apm.collector.core.module.ModuleNotFoundException; import org.skywalking.apm.collector.core.module.ModuleProvider; Loading @@ -34,9 +42,12 @@ import org.skywalking.apm.collector.grpc.manager.GRPCManagerModule; import org.skywalking.apm.collector.grpc.manager.service.GRPCManagerService; import org.skywalking.apm.collector.naming.NamingModule; import org.skywalking.apm.collector.naming.service.NamingHandlerRegisterService; import org.skywalking.apm.collector.remote.RemoteModule; import org.skywalking.apm.collector.server.Server; import org.skywalking.apm.collector.storage.StorageModule; import org.skywalking.apm.collector.storage.service.DAOService; import org.skywalking.apm.collector.storage.table.register.Application; import org.skywalking.apm.collector.stream.worker.base.WorkerCreateListener; /** * @author peng-yongsheng Loading Loading @@ -74,11 +85,17 @@ public class AgentModuleGRPCProvider extends ModuleProvider { NamingHandlerRegisterService namingHandlerRegisterService = getManager().find(NamingModule.NAME).getService(NamingHandlerRegisterService.class); namingHandlerRegisterService.register(new AgentGRPCNamingHandler(namingListener)); CacheServiceManager cacheServiceManager = new CacheServiceManager(); cacheServiceManager.init(getManager()); DAOService daoService = getManager().find(StorageModule.NAME).getService(DAOService.class); GRPCManagerService managerService = getManager().find(GRPCManagerModule.NAME).getService(GRPCManagerService.class); Server gRPCServer = managerService.createIfAbsent(host, port); addHandlers(daoService, gRPCServer); AgentStreamSingleton agentStreamSingleton = AgentStreamSingleton.getInstance(getManager(), cacheServiceManager, new WorkerCreateListener()); addHandlers(daoService, gRPCServer, cacheServiceManager, agentStreamSingleton); } catch (ModuleNotFoundException e) { throw new ServiceNotProvidedException(e.getMessage()); } Loading @@ -89,10 +106,16 @@ public class AgentModuleGRPCProvider extends ModuleProvider { } @Override public String[] requiredModules() { return new String[] {ClusterModule.NAME, NamingModule.NAME, StorageModule.NAME, GRPCManagerModule.NAME}; return new String[] {ClusterModule.NAME, NamingModule.NAME, StorageModule.NAME, GRPCManagerModule.NAME, CacheModule.NAME, RemoteModule.NAME}; } private void addHandlers(DAOService daoService, Server gRPCServer) { private void addHandlers(DAOService daoService, Server gRPCServer, CacheServiceManager cacheServiceManager, AgentStreamSingleton agentStreamSingleton) { Graph<Application> applicationRegisterGraph = agentStreamSingleton.getApplicationRegisterGraph(); gRPCServer.addHandler(new ApplicationRegisterServiceHandler(cacheServiceManager, applicationRegisterGraph)); gRPCServer.addHandler(new InstanceDiscoveryServiceHandler(daoService, cacheServiceManager)); gRPCServer.addHandler(new ServiceNameDiscoveryServiceHandler(cacheServiceManager)); gRPCServer.addHandler(new JVMMetricsServiceHandler()); gRPCServer.addHandler(new TraceSegmentServiceHandler()); } }
apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/ApplicationRegisterServiceHandler.java 0 → 100644 +65 −0 Original line number Diff line number Diff line /* * Copyright 2017, OpenSkywalking Organization All rights reserved. * * Licensed 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. * * Project repository: https://github.com/OpenSkywalking/skywalking */ package org.skywalking.apm.collector.agent.grpc.handler; import com.google.protobuf.ProtocolStringList; import io.grpc.stub.StreamObserver; import org.skywalking.apm.collector.agent.stream.worker.register.ApplicationIDService; import org.skywalking.apm.collector.cache.CacheServiceManager; import org.skywalking.apm.collector.core.graph.Graph; 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; import org.skywalking.apm.network.proto.KeyWithIntegerValue; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ public class ApplicationRegisterServiceHandler extends ApplicationRegisterServiceGrpc.ApplicationRegisterServiceImplBase implements GRPCHandler { private final Logger logger = LoggerFactory.getLogger(ApplicationRegisterServiceHandler.class); private final ApplicationIDService applicationIDService; public ApplicationRegisterServiceHandler(CacheServiceManager cacheServiceManager, Graph<org.skywalking.apm.collector.storage.table.register.Application> applicationRegisterGraph) { applicationIDService = new ApplicationIDService(cacheServiceManager, applicationRegisterGraph); } @Override public void register(Application request, StreamObserver<ApplicationMapping> responseObserver) { logger.debug("register application"); ProtocolStringList applicationCodes = request.getApplicationCodeList(); ApplicationMapping.Builder builder = ApplicationMapping.newBuilder(); for (int i = 0; i < applicationCodes.size(); i++) { String applicationCode = applicationCodes.get(i); int applicationId = applicationIDService.getOrCreate(applicationCode); if (applicationId != 0) { KeyWithIntegerValue value = KeyWithIntegerValue.newBuilder().setKey(applicationCode).setValue(applicationId).build(); builder.addApplication(value); } } responseObserver.onNext(builder.build()); responseObserver.onCompleted(); } }
apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/InstanceDiscoveryServiceHandler.java 0 → 100644 +83 −0 Original line number Diff line number Diff line /* * Copyright 2017, OpenSkywalking Organization All rights reserved. * * Licensed 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. * * Project repository: https://github.com/OpenSkywalking/skywalking */ package org.skywalking.apm.collector.agent.grpc.handler; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import io.grpc.stub.StreamObserver; import org.skywalking.apm.collector.agent.stream.worker.register.InstanceIDService; import org.skywalking.apm.collector.cache.CacheServiceManager; import org.skywalking.apm.collector.core.util.TimeBucketUtils; import org.skywalking.apm.collector.server.grpc.GRPCHandler; import org.skywalking.apm.collector.storage.service.DAOService; import org.skywalking.apm.network.proto.ApplicationInstance; 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; import org.skywalking.apm.network.proto.OSInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ public class InstanceDiscoveryServiceHandler extends InstanceDiscoveryServiceGrpc.InstanceDiscoveryServiceImplBase implements GRPCHandler { private final Logger logger = LoggerFactory.getLogger(InstanceDiscoveryServiceHandler.class); private final InstanceIDService instanceIDService; public InstanceDiscoveryServiceHandler(DAOService daoService, CacheServiceManager cacheServiceManager) { this.instanceIDService = new InstanceIDService(daoService, cacheServiceManager); } @Override public void register(ApplicationInstance request, StreamObserver<ApplicationInstanceMapping> responseObserver) { long timeBucket = TimeBucketUtils.INSTANCE.getSecondTimeBucket(request.getRegisterTime()); int instanceId = instanceIDService.getOrCreate(request.getApplicationId(), request.getAgentUUID(), timeBucket, buildOsInfo(request.getOsinfo())); ApplicationInstanceMapping.Builder builder = ApplicationInstanceMapping.newBuilder(); builder.setApplicationId(request.getApplicationId()); builder.setApplicationInstanceId(instanceId); responseObserver.onNext(builder.build()); responseObserver.onCompleted(); } @Override public void registerRecover(ApplicationInstanceRecover request, StreamObserver<Downstream> responseObserver) { long timeBucket = TimeBucketUtils.INSTANCE.getSecondTimeBucket(request.getRegisterTime()); instanceIDService.recover(request.getApplicationInstanceId(), request.getApplicationId(), timeBucket, buildOsInfo(request.getOsinfo())); responseObserver.onNext(Downstream.newBuilder().build()); responseObserver.onCompleted(); } private String buildOsInfo(OSInfo osinfo) { JsonObject osInfoJson = new JsonObject(); osInfoJson.addProperty("osName", osinfo.getOsName()); osInfoJson.addProperty("hostName", osinfo.getHostname()); osInfoJson.addProperty("processId", osinfo.getProcessNo()); JsonArray ipv4Array = new JsonArray(); osinfo.getIpv4SList().forEach(ipv4 -> { ipv4Array.add(ipv4); }); osInfoJson.add("ipv4s", ipv4Array); return osInfoJson.toString(); } }
apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/ServiceNameDiscoveryServiceHandler.java 0 → 100644 +68 −0 Original line number Diff line number Diff line /* * Copyright 2017, OpenSkywalking Organization All rights reserved. * * Licensed 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. * * Project repository: https://github.com/OpenSkywalking/skywalking */ package org.skywalking.apm.collector.agent.grpc.handler; import io.grpc.stub.StreamObserver; import java.util.List; import org.skywalking.apm.collector.agent.stream.worker.register.ServiceNameService; import org.skywalking.apm.collector.cache.CacheServiceManager; 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.ServiceNameElement; import org.skywalking.apm.network.proto.ServiceNameMappingCollection; import org.skywalking.apm.network.proto.ServiceNameMappingElement; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ public class ServiceNameDiscoveryServiceHandler extends ServiceNameDiscoveryServiceGrpc.ServiceNameDiscoveryServiceImplBase implements GRPCHandler { private final Logger logger = LoggerFactory.getLogger(ServiceNameDiscoveryServiceHandler.class); private final ServiceNameService serviceNameService; public ServiceNameDiscoveryServiceHandler(CacheServiceManager cacheServiceManager) { this.serviceNameService = new ServiceNameService(cacheServiceManager); } @Override public void discovery(ServiceNameCollection request, StreamObserver<ServiceNameMappingCollection> responseObserver) { List<ServiceNameElement> serviceNameElementList = request.getElementsList(); ServiceNameMappingCollection.Builder builder = ServiceNameMappingCollection.newBuilder(); for (ServiceNameElement serviceNameElement : serviceNameElementList) { int applicationId = serviceNameElement.getApplicationId(); String serviceName = serviceNameElement.getServiceName(); int serviceId = serviceNameService.getOrCreate(applicationId, serviceName); if (serviceId != 0) { ServiceNameMappingElement.Builder mappingElement = ServiceNameMappingElement.newBuilder(); mappingElement.setServiceId(serviceId); mappingElement.setElement(serviceNameElement); builder.addElements(mappingElement); } } responseObserver.onNext(builder.build()); responseObserver.onCompleted(); } }
apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/naming/AgentGRPCNamingHandler.java +2 −1 Original line number Diff line number Diff line Loading @@ -37,7 +37,8 @@ public class AgentGRPCNamingHandler extends JettyHandler { } @Override public String pathSpec() { return "/agent/gRPC"; // return "/agent/gRPC"; return "/agentstream/grpc"; } @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { Loading