You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2020/12/17 12:24:28 UTC

[skywalking-data-collect-protocol] branch master updated: Add package name in proto message and compat service (#37)

This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking-data-collect-protocol.git


The following commit(s) were added to refs/heads/master by this push:
     new 8c10f75  Add package name in proto message and compat service (#37)
8c10f75 is described below

commit 8c10f757a9088fef06d6d8b986b8a0650b7fa106
Author: Zhenxu Ke <ke...@apache.org>
AuthorDate: Thu Dec 17 20:24:22 2020 +0800

    Add package name in proto message and compat service (#37)
    
    * Add package name in proto message and compat service
    
    * update submodule to sync namespaced proto files
---
 browser/BrowserPerf.proto                          |  2 +
 .../BrowserPerfCompat.proto                        | 40 +++++-------------
 common/Common.proto                                |  2 +
 language-agent/CLRMetric.proto                     |  4 +-
 .../{CLRMetric.proto => CLRMetricCompat.proto}     | 33 ++-------------
 language-agent/JVMMetric.proto                     |  2 +
 .../{CLRMetric.proto => JVMMetricCompat.proto}     | 36 +++--------------
 language-agent/Meter.proto                         |  4 +-
 .../MeterCompat.proto                              | 36 ++++-------------
 language-agent/Tracing.proto                       | 24 ++++++-----
 .../{CLRMetric.proto => TracingCompat.proto}       | 47 ++++++++--------------
 logging/Logging.proto                              |  2 +
 management/Management.proto                        |  4 +-
 .../{Management.proto => ManagementCompat.proto}   | 19 +++------
 profile/Profile.proto                              |  4 +-
 .../CLRMetric.proto => profile/ProfileCompat.proto | 42 +++++++------------
 .../service-mesh-compat.proto                      | 35 ++++------------
 service-mesh-probe/service-mesh.proto              |  2 +
 18 files changed, 108 insertions(+), 230 deletions(-)

diff --git a/browser/BrowserPerf.proto b/browser/BrowserPerf.proto
index eea162d..6660558 100644
--- a/browser/BrowserPerf.proto
+++ b/browser/BrowserPerf.proto
@@ -18,6 +18,8 @@
 
 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";
diff --git a/language-agent/CLRMetric.proto b/browser/BrowserPerfCompat.proto
similarity index 62%
copy from language-agent/CLRMetric.proto
copy to browser/BrowserPerfCompat.proto
index 6082f8c..7a9d863 100644
--- a/language-agent/CLRMetric.proto
+++ b/browser/BrowserPerfCompat.proto
@@ -19,40 +19,22 @@
 syntax = "proto3";
 
 option java_multiple_files = true;
-option java_package = "org.apache.skywalking.apm.network.language.agent.v3";
+option java_package = "org.apache.skywalking.apm.network.language.agent.v3.compat";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
 option go_package = "skywalking/network/language/agent/v3";
+option deprecated = true;
 
 import "common/Common.proto";
+import "browser/BrowserPerf.proto";
 
-service CLRMetricReportService {
-    rpc collect (CLRMetricCollection) returns (Commands) {
-    }
-}
-
-message CLRMetricCollection {
-    repeated CLRMetric metrics = 1;
-    string service = 2;
-    string serviceInstance = 3;
-}
+// Collect performance raw data from browser.
+service BrowserPerfService {
 
-message CLRMetric {
-    int64 time = 1;
-    CPU cpu = 2;
-    ClrGC gc = 3;
-    ClrThread thread = 4;
-}
+    // report once per page
+    rpc collectPerfData (skywalking.v3.BrowserPerfData) returns (skywalking.v3.Commands) {
+    }
 
-message ClrGC {
-    int64 Gen0CollectCount = 1;
-    int64 Gen1CollectCount = 2;
-    int64 Gen2CollectCount = 3;
-    int64 HeapMemory = 4;
+    // report one or more error logs for pages, could report multiple times.
+    rpc collectErrorLogs (stream skywalking.v3.BrowserErrorLog) returns (skywalking.v3.Commands) {
+    }
 }
-
-message ClrThread {
-    int32 AvailableCompletionPortThreads = 1;
-    int32 AvailableWorkerThreads = 2;
-    int32 MaxCompletionPortThreads = 3;
-    int32 MaxWorkerThreads = 4;
-}
\ No newline at end of file
diff --git a/common/Common.proto b/common/Common.proto
index 807ecdf..09c50d4 100644
--- a/common/Common.proto
+++ b/common/Common.proto
@@ -18,6 +18,8 @@
 
 syntax = "proto3";
 
+package skywalking.v3;
+
 option java_multiple_files = true;
 option java_package = "org.apache.skywalking.apm.network.common.v3";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
diff --git a/language-agent/CLRMetric.proto b/language-agent/CLRMetric.proto
index 6082f8c..a719fb8 100644
--- a/language-agent/CLRMetric.proto
+++ b/language-agent/CLRMetric.proto
@@ -18,6 +18,8 @@
 
 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";
@@ -55,4 +57,4 @@ message ClrThread {
     int32 AvailableWorkerThreads = 2;
     int32 MaxCompletionPortThreads = 3;
     int32 MaxWorkerThreads = 4;
-}
\ No newline at end of file
+}
diff --git a/language-agent/CLRMetric.proto b/language-agent/CLRMetricCompat.proto
similarity index 64%
copy from language-agent/CLRMetric.proto
copy to language-agent/CLRMetricCompat.proto
index 6082f8c..ac7bc62 100644
--- a/language-agent/CLRMetric.proto
+++ b/language-agent/CLRMetricCompat.proto
@@ -19,40 +19,15 @@
 syntax = "proto3";
 
 option java_multiple_files = true;
-option java_package = "org.apache.skywalking.apm.network.language.agent.v3";
+option java_package = "org.apache.skywalking.apm.network.language.agent.v3.compat";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
 option go_package = "skywalking/network/language/agent/v3";
+option deprecated = true;
 
 import "common/Common.proto";
+import "language-agent/CLRMetric.proto";
 
 service CLRMetricReportService {
-    rpc collect (CLRMetricCollection) returns (Commands) {
+    rpc collect (skywalking.v3.CLRMetricCollection) returns (skywalking.v3.Commands) {
     }
 }
-
-message CLRMetricCollection {
-    repeated CLRMetric metrics = 1;
-    string service = 2;
-    string serviceInstance = 3;
-}
-
-message CLRMetric {
-    int64 time = 1;
-    CPU cpu = 2;
-    ClrGC gc = 3;
-    ClrThread thread = 4;
-}
-
-message ClrGC {
-    int64 Gen0CollectCount = 1;
-    int64 Gen1CollectCount = 2;
-    int64 Gen2CollectCount = 3;
-    int64 HeapMemory = 4;
-}
-
-message ClrThread {
-    int32 AvailableCompletionPortThreads = 1;
-    int32 AvailableWorkerThreads = 2;
-    int32 MaxCompletionPortThreads = 3;
-    int32 MaxWorkerThreads = 4;
-}
\ No newline at end of file
diff --git a/language-agent/JVMMetric.proto b/language-agent/JVMMetric.proto
index 0de1477..ec776fc 100644
--- a/language-agent/JVMMetric.proto
+++ b/language-agent/JVMMetric.proto
@@ -18,6 +18,8 @@
 
 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";
diff --git a/language-agent/CLRMetric.proto b/language-agent/JVMMetricCompat.proto
similarity index 62%
copy from language-agent/CLRMetric.proto
copy to language-agent/JVMMetricCompat.proto
index 6082f8c..3c60f6a 100644
--- a/language-agent/CLRMetric.proto
+++ b/language-agent/JVMMetricCompat.proto
@@ -19,40 +19,16 @@
 syntax = "proto3";
 
 option java_multiple_files = true;
-option java_package = "org.apache.skywalking.apm.network.language.agent.v3";
+option java_package = "org.apache.skywalking.apm.network.language.agent.v3.compat";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
 option go_package = "skywalking/network/language/agent/v3";
+option deprecated = true;
 
 import "common/Common.proto";
+import "language-agent/JVMMetric.proto";
 
-service CLRMetricReportService {
-    rpc collect (CLRMetricCollection) returns (Commands) {
+// Define the JVM metrics report service.
+service JVMMetricReportService {
+    rpc collect (skywalking.v3.JVMMetricCollection) returns (skywalking.v3.Commands) {
     }
 }
-
-message CLRMetricCollection {
-    repeated CLRMetric metrics = 1;
-    string service = 2;
-    string serviceInstance = 3;
-}
-
-message CLRMetric {
-    int64 time = 1;
-    CPU cpu = 2;
-    ClrGC gc = 3;
-    ClrThread thread = 4;
-}
-
-message ClrGC {
-    int64 Gen0CollectCount = 1;
-    int64 Gen1CollectCount = 2;
-    int64 Gen2CollectCount = 3;
-    int64 HeapMemory = 4;
-}
-
-message ClrThread {
-    int32 AvailableCompletionPortThreads = 1;
-    int32 AvailableWorkerThreads = 2;
-    int32 MaxCompletionPortThreads = 3;
-    int32 MaxWorkerThreads = 4;
-}
\ No newline at end of file
diff --git a/language-agent/Meter.proto b/language-agent/Meter.proto
index 1f34354..337b18e 100644
--- a/language-agent/Meter.proto
+++ b/language-agent/Meter.proto
@@ -18,6 +18,8 @@
 
 syntax = "proto3";
 
+package skywalking.v3;
+
 option java_multiple_files = true;
 option java_package = "org.apache.skywalking.apm.network.language.agent.v3";
 option go_package = "skywalking/network/language/agent/v3";
@@ -83,4 +85,4 @@ message MeterData {
 
 message MeterDataCollection {
     repeated MeterData meterData = 1;
-}
\ No newline at end of file
+}
diff --git a/common/Common.proto b/language-agent/MeterCompat.proto
similarity index 56%
copy from common/Common.proto
copy to language-agent/MeterCompat.proto
index 807ecdf..894e1f2 100644
--- a/common/Common.proto
+++ b/language-agent/MeterCompat.proto
@@ -19,34 +19,14 @@
 syntax = "proto3";
 
 option java_multiple_files = true;
-option java_package = "org.apache.skywalking.apm.network.common.v3";
-option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
-option go_package = "skywalking/network/common/v3";
+option java_package = "org.apache.skywalking.apm.network.language.agent.v3.compat";
+option deprecated = true;
 
-message KeyStringValuePair {
-    string key = 1;
-    string value = 2;
-}
-
-message CPU {
-    double usagePercent = 2;
-}
-
-// In most cases, detect point should be `server` or `client`.
-// Even in service mesh, this means `server`/`client` side sidecar
-// `proxy` is reserved only.
-enum DetectPoint {
-    client = 0;
-    server = 1;
-    proxy = 2;
-}
-
-message Commands {
-    repeated Command commands = 1;
-}
+import "common/Common.proto";
+import "language-agent/Meter.proto";
 
-message Command {
-    string command = 1;
-    repeated KeyStringValuePair args = 2;
+service MeterReportService {
+    // Meter data is reported in a certain period. The agent/SDK should report all collected metrics in this period through one stream.
+    rpc collect (stream skywalking.v3.MeterData) returns (skywalking.v3.Commands) {
+    }
 }
-
diff --git a/language-agent/Tracing.proto b/language-agent/Tracing.proto
index 8f123b1..79af24f 100644
--- a/language-agent/Tracing.proto
+++ b/language-agent/Tracing.proto
@@ -18,6 +18,8 @@
 
 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";
@@ -44,7 +46,7 @@ service TraceSegmentReportService {
 
 // The segment is a collection of spans. It includes all collected spans in a simple one request context, such as a HTTP request process.
 //
-// We recommend the agent/SDK report all tracked data of one request once for all, such as, 
+// We recommend the agent/SDK report all tracked data of one request once for all, such as,
 // typically, such as in Java, one segment represent all tracked operations(spans) of one request context in the same thread.
 // At the same time, in some language there is not a clear concept like golang, it could represent all tracked operations of one request context.
 message SegmentObject {
@@ -55,11 +57,11 @@ message SegmentObject {
     // Span collections included in this segment.
     repeated SpanObject spans = 3;
     // **Service**. Represents a set/group of workloads which provide the same behaviours for incoming requests.
-    // 
+    //
     // The logic name represents the service. This would show as a separate node in the topology.
     // The metrics analyzed from the spans, would be aggregated for this entity as the service level.
     string service = 4;
-    // **Service Instance**. Each individual workload in the Service group is known as an instance. Like `pods` in Kubernetes, it 
+    // **Service Instance**. Each individual workload in the Service group is known as an instance. Like `pods` in Kubernetes, it
     // doesn't need to be a single OS process, however, if you are using instrument agents, an instance is actually a real OS process.
     //
     // The logic name represents the service instance. This would show as a separate node in the instance relationship.
@@ -67,7 +69,7 @@ message SegmentObject {
     string serviceInstance = 5;
     // Whether the segment includes all tracked spans.
     // In the production environment tracked, some tasks could include too many spans for one request context, such as a batch update for a cache, or an async job.
-    // The agent/SDK could optimize or ignore some tracked spans for better performance. 
+    // The agent/SDK could optimize or ignore some tracked spans for better performance.
     // In this case, the value should be flagged as TRUE.
     bool isSizeLimited = 6;
 }
@@ -84,10 +86,10 @@ message SegmentReference {
     string parentTraceSegmentId = 3;
     // The span id in the parent trace segment.
     int32 parentSpanId = 4;
-    // The service logic name of the parent segment. 
+    // The service logic name of the parent segment.
     // If refType == CrossThread, this name is as same as the trace segment.
     string parentService = 5;
-    // The service logic name instance of the parent segment. 
+    // The service logic name instance of the parent segment.
     // If refType == CrossThread, this name is as same as the trace segment.
     string parentServiceInstance = 6;
     // The endpoint name of the parent segment.
@@ -120,7 +122,7 @@ message SpanObject {
     // End timestamp in milliseconds of this span,
     // measured between the current time and midnight, January 1, 1970 UTC.
     int64 endTime = 4;
-    // <Optional> 
+    // <Optional>
     // In the across thread and across process, these references targeting the parent segments.
     // The references usually have only one element, but in batch consumer case, such as in MQ or async batch process, it could be multiple.
     repeated SegmentReference refs = 5;
@@ -129,7 +131,7 @@ message SpanObject {
     // We don't recommend to include the parameter, such as HTTP request parameters, as a part of the operation, especially this is the name of the entry span.
     // All statistic for the endpoints are aggregated base on this name. Those parameters should be added in the tags if necessary.
     // If in some cases, it have to be a part of the operation name,
-    // users should use the Group Parameterized Endpoints capability at the backend to get the meaningful metrics. 
+    // users should use the Group Parameterized Endpoints capability at the backend to get the meaningful metrics.
     // Read https://github.com/apache/skywalking/blob/master/docs/en/setup/backend/endpoint-grouping-rules.md
     string operationName = 6;
     // Remote address of the peer in RPC/MQ case.
@@ -162,7 +164,7 @@ message SpanObject {
     repeated Log logs = 13;
     // Force the backend don't do analysis, if the value is TRUE.
     // The backend has its own configurations to follow or override this.
-    // 
+    //
     // Use this mostly because the agent/SDK could know more context of the service role.
     bool skipAnalysis = 14;
 }
@@ -195,7 +197,7 @@ enum RefType {
     // Map to the reference targeting the segment in another OS process.
     CrossProcess = 0;
     // Map to the reference targeting the segment in the same process of the current one, just across thread.
-    // This is only used when the coding language has the thread concept. 
+    // This is only used when the coding language has the thread concept.
     CrossThread = 1;
 }
 
@@ -218,4 +220,4 @@ enum SpanLayer {
 // The segment collections for trace report in batch and sync mode.
 message SegmentCollection {
     repeated SegmentObject segments = 1;
-}
\ No newline at end of file
+}
diff --git a/language-agent/CLRMetric.proto b/language-agent/TracingCompat.proto
similarity index 53%
copy from language-agent/CLRMetric.proto
copy to language-agent/TracingCompat.proto
index 6082f8c..ff3c234 100644
--- a/language-agent/CLRMetric.proto
+++ b/language-agent/TracingCompat.proto
@@ -19,40 +19,27 @@
 syntax = "proto3";
 
 option java_multiple_files = true;
-option java_package = "org.apache.skywalking.apm.network.language.agent.v3";
+option java_package = "org.apache.skywalking.apm.network.language.agent.v3.compat";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
 option go_package = "skywalking/network/language/agent/v3";
+option deprecated = true;
 
 import "common/Common.proto";
-
-service CLRMetricReportService {
-    rpc collect (CLRMetricCollection) returns (Commands) {
+import "language-agent/Tracing.proto";
+
+// Define a trace segment report service.
+// All language agents or any trace collecting component, could use this service to send span collection to the SkyWalking OAP backend.
+service TraceSegmentReportService {
+    // Recommended trace segment report channel.
+    // gRPC streaming provides better performance.
+    // All language agents should choose this.
+    rpc collect (stream skywalking.v3.SegmentObject) returns (skywalking.v3.Commands) {
     }
-}
-
-message CLRMetricCollection {
-    repeated CLRMetric metrics = 1;
-    string service = 2;
-    string serviceInstance = 3;
-}
 
-message CLRMetric {
-    int64 time = 1;
-    CPU cpu = 2;
-    ClrGC gc = 3;
-    ClrThread thread = 4;
-}
-
-message ClrGC {
-    int64 Gen0CollectCount = 1;
-    int64 Gen1CollectCount = 2;
-    int64 Gen2CollectCount = 3;
-    int64 HeapMemory = 4;
+    // An alternative for trace report by using gRPC unary
+    // This is provided for some 3rd-party integration, if and only if they prefer the unary mode somehow.
+    // The performance of SkyWalking OAP server would be very similar with streaming report,
+    // the performance of the network and client side are affected
+    rpc collectInSync (skywalking.v3.SegmentCollection) returns (skywalking.v3.Commands) {
+    }
 }
-
-message ClrThread {
-    int32 AvailableCompletionPortThreads = 1;
-    int32 AvailableWorkerThreads = 2;
-    int32 MaxCompletionPortThreads = 3;
-    int32 MaxWorkerThreads = 4;
-}
\ No newline at end of file
diff --git a/logging/Logging.proto b/logging/Logging.proto
index 010651a..e227cb7 100644
--- a/logging/Logging.proto
+++ b/logging/Logging.proto
@@ -18,6 +18,8 @@
 
 syntax = "proto3";
 
+package skywalking.v3;
+
 option java_multiple_files = true;
 option java_package = "org.apache.skywalking.apm.network.logging.v3";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
diff --git a/management/Management.proto b/management/Management.proto
index 9589ba4..ab7885f 100644
--- a/management/Management.proto
+++ b/management/Management.proto
@@ -18,6 +18,8 @@
 
 syntax = "proto3";
 
+package skywalking.v3;
+
 option java_multiple_files = true;
 option java_package = "org.apache.skywalking.apm.network.management.v3";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
@@ -48,4 +50,4 @@ message InstanceProperties {
 message InstancePingPkg {
     string service = 1;
     string serviceInstance = 2;
-}
\ No newline at end of file
+}
diff --git a/management/Management.proto b/management/ManagementCompat.proto
similarity index 79%
copy from management/Management.proto
copy to management/ManagementCompat.proto
index 9589ba4..194ebfb 100644
--- a/management/Management.proto
+++ b/management/ManagementCompat.proto
@@ -19,33 +19,24 @@
 syntax = "proto3";
 
 option java_multiple_files = true;
-option java_package = "org.apache.skywalking.apm.network.management.v3";
+option java_package = "org.apache.skywalking.apm.network.management.v3.compat";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
 option go_package = "skywalking/network/management/v3";
+option deprecated = true;
 
 import "common/Common.proto";
+import "management/Management.proto";
 
 // Define the service reporting the extra information of the instance.
 service ManagementService {
     // Report custom properties of a service instance.
-    rpc reportInstanceProperties (InstanceProperties) returns (Commands) {
+    rpc reportInstanceProperties (skywalking.v3.InstanceProperties) returns (skywalking.v3.Commands) {
     }
 
     // Keep the instance alive in the backend analysis.
     // Only recommend to do separate keepAlive report when no trace and metrics needs to be reported.
     // Otherwise, it is duplicated.
-    rpc keepAlive (InstancePingPkg) returns (Commands) {
+    rpc keepAlive (skywalking.v3.InstancePingPkg) returns (skywalking.v3.Commands) {
 
     }
 }
-
-message InstanceProperties {
-    string service = 1;
-    string serviceInstance = 2;
-    repeated KeyStringValuePair properties = 3;
-}
-
-message InstancePingPkg {
-    string service = 1;
-    string serviceInstance = 2;
-}
\ No newline at end of file
diff --git a/profile/Profile.proto b/profile/Profile.proto
index 1043893..1fa6812 100644
--- a/profile/Profile.proto
+++ b/profile/Profile.proto
@@ -18,6 +18,8 @@
 
 syntax = "proto3";
 
+package skywalking.v3;
+
 option java_multiple_files = true;
 option java_package = "org.apache.skywalking.apm.network.language.profile.v3";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
@@ -77,4 +79,4 @@ message ProfileTaskFinishReport {
 
     // profile task
     string taskId = 3;
-}
\ No newline at end of file
+}
diff --git a/language-agent/CLRMetric.proto b/profile/ProfileCompat.proto
similarity index 59%
copy from language-agent/CLRMetric.proto
copy to profile/ProfileCompat.proto
index 6082f8c..8c4f932 100644
--- a/language-agent/CLRMetric.proto
+++ b/profile/ProfileCompat.proto
@@ -19,40 +19,26 @@
 syntax = "proto3";
 
 option java_multiple_files = true;
-option java_package = "org.apache.skywalking.apm.network.language.agent.v3";
+option java_package = "org.apache.skywalking.apm.network.language.profile.v3.compat";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
-option go_package = "skywalking/network/language/agent/v3";
+option go_package = "skywalking/network/language/profile/v3";
+option deprecated = true;
 
 import "common/Common.proto";
+import "profile/Profile.proto";
 
-service CLRMetricReportService {
-    rpc collect (CLRMetricCollection) returns (Commands) {
+service ProfileTask {
+
+    // query all sniffer need to execute profile task commands
+    rpc getProfileTaskCommands (skywalking.v3.ProfileTaskCommandQuery) returns (skywalking.v3.Commands) {
     }
-}
 
-message CLRMetricCollection {
-    repeated CLRMetric metrics = 1;
-    string service = 2;
-    string serviceInstance = 3;
-}
+    // collect dumped thread snapshot
+    rpc collectSnapshot (stream skywalking.v3.ThreadSnapshot) returns (skywalking.v3.Commands) {
+    }
 
-message CLRMetric {
-    int64 time = 1;
-    CPU cpu = 2;
-    ClrGC gc = 3;
-    ClrThread thread = 4;
-}
+    // report profiling task finished
+    rpc reportTaskFinish (skywalking.v3.ProfileTaskFinishReport) returns (skywalking.v3.Commands) {
+    }
 
-message ClrGC {
-    int64 Gen0CollectCount = 1;
-    int64 Gen1CollectCount = 2;
-    int64 Gen2CollectCount = 3;
-    int64 HeapMemory = 4;
 }
-
-message ClrThread {
-    int32 AvailableCompletionPortThreads = 1;
-    int32 AvailableWorkerThreads = 2;
-    int32 MaxCompletionPortThreads = 3;
-    int32 MaxWorkerThreads = 4;
-}
\ No newline at end of file
diff --git a/common/Common.proto b/service-mesh-probe/service-mesh-compat.proto
similarity index 60%
copy from common/Common.proto
copy to service-mesh-probe/service-mesh-compat.proto
index 807ecdf..2e081fa 100644
--- a/common/Common.proto
+++ b/service-mesh-probe/service-mesh-compat.proto
@@ -19,34 +19,15 @@
 syntax = "proto3";
 
 option java_multiple_files = true;
-option java_package = "org.apache.skywalking.apm.network.common.v3";
+option java_package = "org.apache.skywalking.apm.network.servicemesh.v3.compat";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
-option go_package = "skywalking/network/common/v3";
+option go_package = "skywalking/network/servicemesh/v3";
+option deprecated = true;
 
-message KeyStringValuePair {
-    string key = 1;
-    string value = 2;
-}
-
-message CPU {
-    double usagePercent = 2;
-}
-
-// In most cases, detect point should be `server` or `client`.
-// Even in service mesh, this means `server`/`client` side sidecar
-// `proxy` is reserved only.
-enum DetectPoint {
-    client = 0;
-    server = 1;
-    proxy = 2;
-}
-
-message Commands {
-    repeated Command commands = 1;
-}
+import "service-mesh-probe/service-mesh.proto";
 
-message Command {
-    string command = 1;
-    repeated KeyStringValuePair args = 2;
+// Define metrics report service. The metrics format is typically representing the data model collected in the service mesh case.
+service ServiceMeshMetricService {
+    rpc collect(stream skywalking.v3.ServiceMeshMetric) returns (skywalking.v3.MeshProbeDownstream) {
+    }
 }
-
diff --git a/service-mesh-probe/service-mesh.proto b/service-mesh-probe/service-mesh.proto
index 859ea2d..ebf8cb1 100644
--- a/service-mesh-probe/service-mesh.proto
+++ b/service-mesh-probe/service-mesh.proto
@@ -18,6 +18,8 @@
 
 syntax = "proto3";
 
+package skywalking.v3;
+
 option java_multiple_files = true;
 option java_package = "org.apache.skywalking.apm.network.servicemesh.v3";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";