Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Change apm-collector-stream from collector module to common codes.
Make agent gRPC to be a collector module. Make agent jetty to be a collector module. Make agent stream to be a collector module.
- Loading branch information
1 parent
8658ca7
commit f3e85ef
Showing
177 changed files
with
1,218 additions
and
373 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
60 changes: 60 additions & 0 deletions
60
apm-collector/apm-collector-agent-grpc/collector-agent-grpc-provider/pom.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<!-- | ||
~ 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 | ||
--> | ||
|
||
<project xmlns="http://maven.apache.org/POM/4.0.0" | ||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<parent> | ||
<artifactId>apm-collector-agent-grpc</artifactId> | ||
<groupId>org.skywalking</groupId> | ||
<version>3.2.5-2017</version> | ||
</parent> | ||
<modelVersion>4.0.0</modelVersion> | ||
|
||
<artifactId>collector-agent-grpc-provider</artifactId> | ||
<packaging>jar</packaging> | ||
|
||
<dependencies> | ||
<dependency> | ||
<groupId>org.skywalking</groupId> | ||
<artifactId>collector-agent-grpc-define</artifactId> | ||
<version>${project.version}</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.skywalking</groupId> | ||
<artifactId>collector-grpc-manager-define</artifactId> | ||
<version>${project.version}</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.skywalking</groupId> | ||
<artifactId>collector-cluster-define</artifactId> | ||
<version>${project.version}</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.skywalking</groupId> | ||
<artifactId>collector-naming-define</artifactId> | ||
<version>${project.version}</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.skywalking</groupId> | ||
<artifactId>collector-agent-stream-define</artifactId> | ||
<version>${project.version}</version> | ||
</dependency> | ||
</dependencies> | ||
</project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
101 changes: 101 additions & 0 deletions
101
...c/main/java/org/skywalking/apm/collector/agent/grpc/handler/JVMMetricsServiceHandler.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
/* | ||
* 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.AgentStreamModule; | ||
import org.skywalking.apm.collector.agent.stream.service.jvm.ICpuMetricService; | ||
import org.skywalking.apm.collector.agent.stream.service.jvm.IGCMetricService; | ||
import org.skywalking.apm.collector.agent.stream.service.jvm.IInstanceHeartBeatService; | ||
import org.skywalking.apm.collector.agent.stream.service.jvm.IMemoryMetricService; | ||
import org.skywalking.apm.collector.agent.stream.service.jvm.IMemoryPoolMetricService; | ||
import org.skywalking.apm.collector.core.module.ModuleManager; | ||
import org.skywalking.apm.collector.core.util.TimeBucketUtils; | ||
import org.skywalking.apm.collector.server.grpc.GRPCHandler; | ||
import org.skywalking.apm.network.proto.CPU; | ||
import org.skywalking.apm.network.proto.Downstream; | ||
import org.skywalking.apm.network.proto.GC; | ||
import org.skywalking.apm.network.proto.JVMMetrics; | ||
import org.skywalking.apm.network.proto.JVMMetricsServiceGrpc; | ||
import org.skywalking.apm.network.proto.Memory; | ||
import org.skywalking.apm.network.proto.MemoryPool; | ||
import org.slf4j.Logger; | ||
import org.slf4j.LoggerFactory; | ||
|
||
/** | ||
* @author peng-yongsheng | ||
*/ | ||
public class JVMMetricsServiceHandler extends JVMMetricsServiceGrpc.JVMMetricsServiceImplBase implements GRPCHandler { | ||
|
||
private final Logger logger = LoggerFactory.getLogger(JVMMetricsServiceHandler.class); | ||
|
||
private final ICpuMetricService cpuMetricService; | ||
private final IGCMetricService gcMetricService; | ||
private final IMemoryMetricService memoryMetricService; | ||
private final IMemoryPoolMetricService memoryPoolMetricService; | ||
private final IInstanceHeartBeatService instanceHeartBeatService; | ||
|
||
public JVMMetricsServiceHandler(ModuleManager moduleManager) { | ||
this.cpuMetricService = moduleManager.find(AgentStreamModule.NAME).getService(ICpuMetricService.class); | ||
this.gcMetricService = moduleManager.find(AgentStreamModule.NAME).getService(IGCMetricService.class); | ||
this.memoryMetricService = moduleManager.find(AgentStreamModule.NAME).getService(IMemoryMetricService.class); | ||
this.memoryPoolMetricService = moduleManager.find(AgentStreamModule.NAME).getService(IMemoryPoolMetricService.class); | ||
this.instanceHeartBeatService = moduleManager.find(AgentStreamModule.NAME).getService(IInstanceHeartBeatService.class); | ||
} | ||
|
||
@Override public void collect(JVMMetrics request, StreamObserver<Downstream> responseObserver) { | ||
int instanceId = request.getApplicationInstanceId(); | ||
logger.debug("receive the jvm metric from application instance, id: {}", instanceId); | ||
|
||
request.getMetricsList().forEach(metric -> { | ||
long time = TimeBucketUtils.INSTANCE.getSecondTimeBucket(metric.getTime()); | ||
sendToInstanceHeartBeatService(instanceId, metric.getTime()); | ||
sendToCpuMetricService(instanceId, time, metric.getCpu()); | ||
sendToMemoryMetricService(instanceId, time, metric.getMemoryList()); | ||
sendToMemoryPoolMetricService(instanceId, time, metric.getMemoryPoolList()); | ||
sendToGCMetricService(instanceId, time, metric.getGcList()); | ||
}); | ||
|
||
responseObserver.onNext(Downstream.newBuilder().build()); | ||
responseObserver.onCompleted(); | ||
} | ||
|
||
private void sendToInstanceHeartBeatService(int instanceId, long heartBeatTime) { | ||
instanceHeartBeatService.send(instanceId, heartBeatTime); | ||
} | ||
|
||
private void sendToMemoryMetricService(int instanceId, long timeBucket, List<Memory> memories) { | ||
memories.forEach(memory -> memoryMetricService.send(instanceId, timeBucket, memory.getIsHeap(), memory.getInit(), memory.getMax(), memory.getUsed(), memory.getCommitted())); | ||
} | ||
|
||
private void sendToMemoryPoolMetricService(int instanceId, long timeBucket, | ||
List<MemoryPool> memoryPools) { | ||
|
||
memoryPools.forEach(memoryPool -> memoryPoolMetricService.send(instanceId, timeBucket, memoryPool.getType().getNumber(), memoryPool.getInit(), memoryPool.getMax(), memoryPool.getUsed(), memoryPool.getCommited())); | ||
} | ||
|
||
private void sendToCpuMetricService(int instanceId, long timeBucket, CPU cpu) { | ||
cpuMetricService.send(instanceId, timeBucket, cpu.getUsagePercent()); | ||
} | ||
|
||
private void sendToGCMetricService(int instanceId, long timeBucket, List<GC> gcs) { | ||
gcs.forEach(gc -> gcMetricService.send(instanceId, timeBucket, gc.getPhraseValue(), gc.getCount(), gc.getTime())); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.