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

[skywalking-data-collect-protocol] 01/01: Add package name in proto message and compat service

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

kezhenxu94 pushed a commit to branch add-pkg-name
in repository https://gitbox.apache.org/repos/asf/skywalking-data-collect-protocol.git

commit df2a0870ca0ce249ab29443a5c3cf6846968a3c3
Author: kezhenxu94 <ke...@apache.org>
AuthorDate: Thu Dec 17 15:14:29 2020 +0800

    Add package name in proto message and compat service
---
 browser/BrowserPerf.proto                          |  6 ++-
 .../BrowserPerfService.proto                       | 39 +++++--------------
 common/Common.proto                                |  2 +
 language-agent/CLRMetric.proto                     |  8 ++--
 .../{CLRMetric.proto => CLRMetricService.proto}    | 32 ++--------------
 language-agent/JVMMetric.proto                     |  6 ++-
 .../JVMMetricService.proto                         | 35 ++++-------------
 language-agent/Meter.proto                         |  6 ++-
 .../MeterService.proto                             | 35 ++++-------------
 language-agent/Tracing.proto                       | 32 ++++++++--------
 language-agent/TracingService.proto                | 44 ++++++++++++++++++++++
 logging/Logging.proto                              |  6 ++-
 .../LoggingService.proto                           | 40 +++++---------------
 management/Management.proto                        | 10 +++--
 .../{Management.proto => ManagementService.proto}  | 18 ++-------
 profile/Profile.proto                              | 10 +++--
 .../ProfileService.proto                           | 32 ++++++----------
 .../service-mesh-service.proto                     | 34 ++++-------------
 service-mesh-probe/service-mesh.proto              |  4 +-
 19 files changed, 159 insertions(+), 240 deletions(-)

diff --git a/browser/BrowserPerf.proto b/browser/BrowserPerf.proto
index eea162d..d7323b7 100644
--- a/browser/BrowserPerf.proto
+++ b/browser/BrowserPerf.proto
@@ -18,6 +18,8 @@
 
 syntax = "proto3";
 
+package org.apache.skywalking.apm.network.language.agent.v3;
+
 option java_multiple_files = true;
 option java_package = "org.apache.skywalking.apm.network.language.agent.v3";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
@@ -29,11 +31,11 @@ import "common/Common.proto";
 service BrowserPerfService {
 
     // report once per page
-    rpc collectPerfData (BrowserPerfData) returns (Commands) {
+    rpc collectPerfData (BrowserPerfData) returns (common.v3.Commands) {
     }
 
     // report one or more error logs for pages, could report multiple times.
-    rpc collectErrorLogs (stream BrowserErrorLog) returns (Commands) {
+    rpc collectErrorLogs (stream BrowserErrorLog) returns (common.v3.Commands) {
     }
 }
 
diff --git a/language-agent/CLRMetric.proto b/browser/BrowserPerfService.proto
similarity index 58%
copy from language-agent/CLRMetric.proto
copy to browser/BrowserPerfService.proto
index 6082f8c..2acb6dd 100644
--- a/language-agent/CLRMetric.proto
+++ b/browser/BrowserPerfService.proto
@@ -19,40 +19,21 @@
 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.v3.language.agent";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
 option go_package = "skywalking/network/language/agent/v3";
 
 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 (org.apache.skywalking.apm.network.language.agent.v3.BrowserPerfData) returns (org.apache.skywalking.apm.network.common.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 org.apache.skywalking.apm.network.language.agent.v3.BrowserErrorLog) returns (org.apache.skywalking.apm.network.common.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..f139aff 100644
--- a/common/Common.proto
+++ b/common/Common.proto
@@ -18,6 +18,8 @@
 
 syntax = "proto3";
 
+package org.apache.skywalking.apm.network.common.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..197cef6 100644
--- a/language-agent/CLRMetric.proto
+++ b/language-agent/CLRMetric.proto
@@ -18,6 +18,8 @@
 
 syntax = "proto3";
 
+package org.apache.skywalking.apm.network.language.agent.v3;
+
 option java_multiple_files = true;
 option java_package = "org.apache.skywalking.apm.network.language.agent.v3";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
@@ -26,7 +28,7 @@ option go_package = "skywalking/network/language/agent/v3";
 import "common/Common.proto";
 
 service CLRMetricReportService {
-    rpc collect (CLRMetricCollection) returns (Commands) {
+    rpc collect (CLRMetricCollection) returns (common.v3.Commands) {
     }
 }
 
@@ -38,7 +40,7 @@ message CLRMetricCollection {
 
 message CLRMetric {
     int64 time = 1;
-    CPU cpu = 2;
+    common.v3.CPU cpu = 2;
     ClrGC gc = 3;
     ClrThread thread = 4;
 }
@@ -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/CLRMetricService.proto
similarity index 60%
copy from language-agent/CLRMetric.proto
copy to language-agent/CLRMetricService.proto
index 6082f8c..193d14b 100644
--- a/language-agent/CLRMetric.proto
+++ b/language-agent/CLRMetricService.proto
@@ -19,40 +19,14 @@
 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.v3.language.agent";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
 option go_package = "skywalking/network/language/agent/v3";
 
 import "common/Common.proto";
+import "language-agent/CLRMetric.proto";
 
 service CLRMetricReportService {
-    rpc collect (CLRMetricCollection) returns (Commands) {
+    rpc collect (org.apache.skywalking.apm.network.language.agent.v3.CLRMetricCollection) returns (org.apache.skywalking.apm.network.common.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..697fd22 100644
--- a/language-agent/JVMMetric.proto
+++ b/language-agent/JVMMetric.proto
@@ -18,6 +18,8 @@
 
 syntax = "proto3";
 
+package org.apache.skywalking.apm.network.language.agent.v3;
+
 option java_multiple_files = true;
 option java_package = "org.apache.skywalking.apm.network.language.agent.v3";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
@@ -27,7 +29,7 @@ import "common/Common.proto";
 
 // Define the JVM metrics report service.
 service JVMMetricReportService {
-    rpc collect (JVMMetricCollection) returns (Commands) {
+    rpc collect (JVMMetricCollection) returns (common.v3.Commands) {
     }
 }
 
@@ -39,7 +41,7 @@ message JVMMetricCollection {
 
 message JVMMetric {
     int64 time = 1;
-    CPU cpu = 2;
+    common.v3.CPU cpu = 2;
     repeated Memory memory = 3;
     repeated MemoryPool memoryPool = 4;
     repeated GC gc = 5;
diff --git a/common/Common.proto b/language-agent/JVMMetricService.proto
similarity index 60%
copy from common/Common.proto
copy to language-agent/JVMMetricService.proto
index 807ecdf..7e959f0 100644
--- a/common/Common.proto
+++ b/language-agent/JVMMetricService.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.v3.language.agent";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
-option go_package = "skywalking/network/common/v3";
+option go_package = "skywalking/network/language/agent/v3";
 
-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/JVMMetric.proto";
 
-message Command {
-    string command = 1;
-    repeated KeyStringValuePair args = 2;
+// Define the JVM metrics report service.
+service JVMMetricReportService {
+    rpc collect (org.apache.skywalking.apm.network.language.agent.v3.JVMMetricCollection) returns (org.apache.skywalking.apm.network.common.v3.Commands) {
+    }
 }
-
diff --git a/language-agent/Meter.proto b/language-agent/Meter.proto
index b27b902..2a71790 100644
--- a/language-agent/Meter.proto
+++ b/language-agent/Meter.proto
@@ -18,6 +18,8 @@
 
 syntax = "proto3";
 
+package org.apache.skywalking.apm.network.language.agent.v3;
+
 option java_multiple_files = true;
 option java_package = "org.apache.skywalking.apm.network.language.agent.v3";
 
@@ -25,7 +27,7 @@ import "common/Common.proto";
 
 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 MeterData) returns (Commands) {
+    rpc collect (stream MeterData) returns (common.v3.Commands) {
     }
 }
 
@@ -82,4 +84,4 @@ message MeterData {
 
 message MeterDataCollection {
     repeated MeterData meterData = 1;
-}
\ No newline at end of file
+}
diff --git a/common/Common.proto b/language-agent/MeterService.proto
similarity index 56%
copy from common/Common.proto
copy to language-agent/MeterService.proto
index 807ecdf..a4b18ba 100644
--- a/common/Common.proto
+++ b/language-agent/MeterService.proto
@@ -19,34 +19,13 @@
 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.v3.language.agent";
 
-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 org.apache.skywalking.apm.network.language.agent.v3.MeterData) returns (org.apache.skywalking.apm.network.common.v3.Commands) {
+    }
 }
-
diff --git a/language-agent/Tracing.proto b/language-agent/Tracing.proto
index 8f123b1..2152974 100644
--- a/language-agent/Tracing.proto
+++ b/language-agent/Tracing.proto
@@ -18,6 +18,8 @@
 
 syntax = "proto3";
 
+package org.apache.skywalking.apm.network.language.agent.v3;
+
 option java_multiple_files = true;
 option java_package = "org.apache.skywalking.apm.network.language.agent.v3";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
@@ -31,20 +33,20 @@ service TraceSegmentReportService {
     // Recommended trace segment report channel.
     // gRPC streaming provides better performance.
     // All language agents should choose this.
-    rpc collect (stream SegmentObject) returns (Commands) {
+    rpc collect (stream SegmentObject) returns (common.v3.Commands) {
     }
 
     // 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 (SegmentCollection) returns (Commands) {
+    rpc collectInSync (SegmentCollection) returns (common.v3.Commands) {
     }
 }
 
 // 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.
@@ -156,13 +158,13 @@ message SpanObject {
     //
     // In the OAP backend analysis, some special tag or tag combination could provide other advanced features.
     // https://github.com/apache/skywalking/blob/master/docs/en/guides/Java-Plugin-Development-Guide.md#special-span-tags
-    repeated KeyStringValuePair tags = 12;
+    repeated common.v3.KeyStringValuePair tags = 12;
     // String key, String value pair with an accurate timestamp.
     // Logging some events happening in the context of the span duration.
     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;
 }
@@ -172,7 +174,7 @@ message Log {
     // measured between the current time and midnight, January 1, 1970 UTC.
     int64 time = 1;
     // String key, String value pair.
-    repeated KeyStringValuePair data = 2;
+    repeated common.v3.KeyStringValuePair data = 2;
 }
 
 // Map to the type of span
@@ -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/TracingService.proto b/language-agent/TracingService.proto
new file mode 100644
index 0000000..28adfa8
--- /dev/null
+++ b/language-agent/TracingService.proto
@@ -0,0 +1,44 @@
+/*
+ * 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";
+
+option java_multiple_files = true;
+option java_package = "org.apache.skywalking.apm.network.v3.language.agent";
+option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
+option go_package = "skywalking/network/language/agent/v3";
+
+import "common/Common.proto";
+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 org.apache.skywalking.apm.network.language.agent.v3.SegmentObject) returns (org.apache.skywalking.apm.network.common.v3.Commands) {
+    }
+
+    // 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 (org.apache.skywalking.apm.network.language.agent.v3.SegmentCollection) returns (org.apache.skywalking.apm.network.common.v3.Commands) {
+    }
+}
diff --git a/logging/Logging.proto b/logging/Logging.proto
index 6135db5..5e37210 100644
--- a/logging/Logging.proto
+++ b/logging/Logging.proto
@@ -18,6 +18,8 @@
 
 syntax = "proto3";
 
+package org.apache.skywalking.apm.network.logging.v3;
+
 option java_multiple_files = true;
 option java_package = "org.apache.skywalking.apm.network.logging.v3";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
@@ -30,7 +32,7 @@ service LogReportService {
     // Recommend to report log data in a stream mode.
     // The service/instance/endpoint of the log could share the previous value if they are not set.
     // Reporting the logs of same service in the batch mode could reduce the network cost.
-    rpc collect (stream LogData) returns (Commands) {
+    rpc collect (stream LogData) returns (common.v3.Commands) {
     }
 }
 
@@ -62,7 +64,7 @@ message LogData {
     // [Optional] Logs with trace context
     TraceContext traceContext = 6;
     // [Optional] The available tags. OAP server could provide search/analysis capabilities base on these.
-    repeated KeyStringValuePair tags = 7;
+    repeated common.v3.KeyStringValuePair tags = 7;
 }
 
 // The content of the log data
diff --git a/language-agent/CLRMetric.proto b/logging/LoggingService.proto
similarity index 58%
copy from language-agent/CLRMetric.proto
copy to logging/LoggingService.proto
index 6082f8c..0f80dda 100644
--- a/language-agent/CLRMetric.proto
+++ b/logging/LoggingService.proto
@@ -19,40 +19,18 @@
 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.v3.logging";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
 option go_package = "skywalking/network/language/agent/v3";
 
 import "common/Common.proto";
-
-service CLRMetricReportService {
-    rpc collect (CLRMetricCollection) returns (Commands) {
+import "logging/Logging.proto";
+
+// Report collected logs into the OAP backend
+service LogReportService {
+    // Recommend to report log data in a stream mode.
+    // The service/instance/endpoint of the log could share the previous value if they are not set.
+    // Reporting the logs of same service in the batch mode could reduce the network cost.
+    rpc collect (stream org.apache.skywalking.apm.network.logging.v3.LogData) returns (org.apache.skywalking.apm.network.common.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/management/Management.proto b/management/Management.proto
index 9589ba4..2c743c8 100644
--- a/management/Management.proto
+++ b/management/Management.proto
@@ -18,6 +18,8 @@
 
 syntax = "proto3";
 
+package org.apache.skywalking.apm.network.management.v3;
+
 option java_multiple_files = true;
 option java_package = "org.apache.skywalking.apm.network.management.v3";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
@@ -28,13 +30,13 @@ import "common/Common.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 (InstanceProperties) returns (common.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 (InstancePingPkg) returns (common.v3.Commands) {
 
     }
 }
@@ -42,10 +44,10 @@ service ManagementService {
 message InstanceProperties {
     string service = 1;
     string serviceInstance = 2;
-    repeated KeyStringValuePair properties = 3;
+    repeated common.v3.KeyStringValuePair properties = 3;
 }
 
 message InstancePingPkg {
     string service = 1;
     string serviceInstance = 2;
-}
\ No newline at end of file
+}
diff --git a/management/Management.proto b/management/ManagementService.proto
similarity index 76%
copy from management/Management.proto
copy to management/ManagementService.proto
index 9589ba4..f7199ce 100644
--- a/management/Management.proto
+++ b/management/ManagementService.proto
@@ -19,33 +19,23 @@
 syntax = "proto3";
 
 option java_multiple_files = true;
-option java_package = "org.apache.skywalking.apm.network.management.v3";
+option java_package = "org.apache.skywalking.apm.v3.network.management";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
 option go_package = "skywalking/network/management/v3";
 
 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 (org.apache.skywalking.apm.network.management.v3.InstanceProperties) returns (org.apache.skywalking.apm.network.common.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 (org.apache.skywalking.apm.network.management.v3.InstancePingPkg) returns (org.apache.skywalking.apm.network.common.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..827e305 100644
--- a/profile/Profile.proto
+++ b/profile/Profile.proto
@@ -18,6 +18,8 @@
 
 syntax = "proto3";
 
+package org.apache.skywalking.apm.network.v3.profile;
+
 option java_multiple_files = true;
 option java_package = "org.apache.skywalking.apm.network.language.profile.v3";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
@@ -28,15 +30,15 @@ import "common/Common.proto";
 service ProfileTask {
 
     // query all sniffer need to execute profile task commands
-    rpc getProfileTaskCommands (ProfileTaskCommandQuery) returns (Commands) {
+    rpc getProfileTaskCommands (ProfileTaskCommandQuery) returns (common.v3.Commands) {
     }
 
     // collect dumped thread snapshot
-    rpc collectSnapshot (stream ThreadSnapshot) returns (Commands) {
+    rpc collectSnapshot (stream ThreadSnapshot) returns (common.v3.Commands) {
     }
 
     // report profiling task finished
-    rpc reportTaskFinish (ProfileTaskFinishReport) returns (Commands) {
+    rpc reportTaskFinish (ProfileTaskFinishReport) returns (common.v3.Commands) {
     }
 
 }
@@ -77,4 +79,4 @@ message ProfileTaskFinishReport {
 
     // profile task
     string taskId = 3;
-}
\ No newline at end of file
+}
diff --git a/management/Management.proto b/profile/ProfileService.proto
similarity index 53%
copy from management/Management.proto
copy to profile/ProfileService.proto
index 9589ba4..c7f5982 100644
--- a/management/Management.proto
+++ b/profile/ProfileService.proto
@@ -19,33 +19,25 @@
 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.v3.language.profile";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
-option go_package = "skywalking/network/management/v3";
+option go_package = "skywalking/network/language/profile/v3";
 
 import "common/Common.proto";
+import "profile/Profile.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) {
+service ProfileTask {
+
+    // query all sniffer need to execute profile task commands
+    rpc getProfileTaskCommands (org.apache.skywalking.apm.network.v3.profile.ProfileTaskCommandQuery) returns (org.apache.skywalking.apm.network.common.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) {
+    // collect dumped thread snapshot
+    rpc collectSnapshot (stream org.apache.skywalking.apm.network.v3.profile.ThreadSnapshot) returns (org.apache.skywalking.apm.network.common.v3.Commands) {
+    }
 
+    // report profiling task finished
+    rpc reportTaskFinish (org.apache.skywalking.apm.network.v3.profile.ProfileTaskFinishReport) returns (org.apache.skywalking.apm.network.common.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/common/Common.proto b/service-mesh-probe/service-mesh-service.proto
similarity index 60%
copy from common/Common.proto
copy to service-mesh-probe/service-mesh-service.proto
index 807ecdf..4862346 100644
--- a/common/Common.proto
+++ b/service-mesh-probe/service-mesh-service.proto
@@ -19,34 +19,14 @@
 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.v3.servicemesh";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
-option go_package = "skywalking/network/common/v3";
+option go_package = "skywalking/network/servicemesh/v3";
 
-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 org.apache.skywalking.apm.network.servicemesh.v3.ServiceMeshMetric) returns (org.apache.skywalking.apm.network.servicemesh.v3.MeshProbeDownstream) {
+    }
 }
-
diff --git a/service-mesh-probe/service-mesh.proto b/service-mesh-probe/service-mesh.proto
index 859ea2d..2c81247 100644
--- a/service-mesh-probe/service-mesh.proto
+++ b/service-mesh-probe/service-mesh.proto
@@ -18,6 +18,8 @@
 
 syntax = "proto3";
 
+package org.apache.skywalking.apm.network.servicemesh.v3;
+
 option java_multiple_files = true;
 option java_package = "org.apache.skywalking.apm.network.servicemesh.v3";
 option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
@@ -48,7 +50,7 @@ message ServiceMeshMetric {
     // Status represents the response status of this calling.
     bool status = 10;
     Protocol protocol = 11;
-    DetectPoint detectPoint = 12;
+    common.v3.DetectPoint detectPoint = 12;
     // NONE, mTLS, or TLS
     string tlsMode = 13;
     // The sidecar/proxy internal error code, the value bases on the implementation.