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:04 UTC

[skywalking-data-collect-protocol] branch add-pkg-name created (now df2a087)

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

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


      at df2a087  Add package name in proto message and compat service

This branch includes the following new commits:

     new df2a087  Add package name in proto message and compat service

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



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

Posted by ke...@apache.org.
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.