blob: e0d55edd7096c24e0f20c9c1b4a205e83bb9e9b4 [file] [log] [blame]
/*
* 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.
*
*/
syntax = "proto3";
package skywalking.v3;
option java_multiple_files = true;
option java_package = "org.apache.skywalking.apm.network.language.agent.v3";
option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
option go_package = "skywalking.apache.org/repo/goapi/collect/language/agent/v3";
import "common/Common.proto";
import "common/Command.proto";
// Define the JVM metrics report service.
service JVMMetricReportService {
rpc collect (JVMMetricCollection) returns (Commands) {
}
}
message JVMMetricCollection {
repeated JVMMetric metrics = 1;
string service = 2;
string serviceInstance = 3;
}
message JVMMetric {
int64 time = 1;
CPU cpu = 2;
repeated Memory memory = 3;
repeated MemoryPool memoryPool = 4;
repeated GC gc = 5;
Thread thread = 6;
Class clazz = 7;
}
message Memory {
bool isHeap = 1;
int64 init = 2;
int64 max = 3;
int64 used = 4;
int64 committed = 5;
}
message MemoryPool {
PoolType type = 1;
int64 init = 2;
int64 max = 3;
int64 used = 4;
int64 committed = 5;
}
enum PoolType {
CODE_CACHE_USAGE = 0;
NEWGEN_USAGE = 1;
OLDGEN_USAGE = 2;
SURVIVOR_USAGE = 3;
PERMGEN_USAGE = 4;
METASPACE_USAGE = 5;
ZHEAP_USAGE = 6;
COMPRESSED_CLASS_SPACE_USAGE = 7;
CODEHEAP_NON_NMETHODS_USAGE = 8;
CODEHEAP_PROFILED_NMETHODS_USAGE = 9;
CODEHEAP_NON_PROFILED_NMETHODS_USAGE = 10;
}
message GC {
GCPhase phase = 1;
int64 count = 2;
int64 time = 3;
}
enum GCPhase {
NEW = 0;
OLD = 1;
NORMAL = 2; // The type of GC doesn't have new and old phases, like Z Garbage Collector (ZGC)
}
// See: https://docs.oracle.com/javase/8/docs/api/java/lang/management/ThreadMXBean.html
message Thread {
int64 liveCount = 1;
int64 daemonCount = 2;
int64 peakCount = 3;
int64 runnableStateThreadCount = 4;
int64 blockedStateThreadCount = 5;
int64 waitingStateThreadCount = 6;
int64 timedWaitingStateThreadCount = 7;
}
// See: https://docs.oracle.com/javase/8/docs/api/java/lang/management/ClassLoadingMXBean.html
message Class {
int64 loadedClassCount = 1;
int64 totalUnloadedClassCount = 2;
int64 totalLoadedClassCount = 3;
}