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 2023/02/14 08:18:34 UTC

[skywalking-goapi] branch main updated: Sync data collect protocol for continuous profiling (#50)

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

wusheng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-goapi.git


The following commit(s) were added to refs/heads/main by this push:
     new d2d49a0  Sync data collect protocol for continuous profiling (#50)
d2d49a0 is described below

commit d2d49a01c8227b70873c7ca3eb9c8f54bd23d01b
Author: mrproliu <74...@qq.com>
AuthorDate: Tue Feb 14 16:18:28 2023 +0800

    Sync data collect protocol for continuous profiling (#50)
---
 collect/common/v3/Command.pb.go                 |   22 +
 collect/ebpf/profiling/v3/Continuous.pb.go      | 1039 +++++++++++++++++++++++
 collect/ebpf/profiling/v3/Continuous_grpc.pb.go |  145 ++++
 collect/language/agent/v3/Tracing.pb.go         |    7 +-
 dependencies.sh                                 |    2 +-
 go.mod                                          |    2 +-
 go.sum                                          |   10 +-
 7 files changed, 1221 insertions(+), 6 deletions(-)

diff --git a/collect/common/v3/Command.pb.go b/collect/common/v3/Command.pb.go
index f148766..5145fb9 100644
--- a/collect/common/v3/Command.pb.go
+++ b/collect/common/v3/Command.pb.go
@@ -84,6 +84,28 @@ const (
 //                 MaxResponseSize: Integer
 //         ------------------------
 //     FixedTriggerDuration: Long
+//
+// Name: ContinuousProfilingPolicyQuery
+// Args:
+//     ServiceWithPolicyJSON: List JSON serialization of ServiceWithPolicy.
+//         --- ServiceWithPolicy ---
+//         ServiceName: String
+//         UUID: String
+//         Profiling: Multiple profiling configuration. Map
+//             Key: Profiling type. Enum, value = ON_CPU, OFF_CPU, NETWORK
+//             Value: Profiling policies. Map
+//                 Key: Monitoring type. Enum, value = PROCESS_CPU, PROCESS_THREAD_COUNT, SYSTEM_LOAD, HTTP_ERROR_RATE, HTTP_AVG_RESPONSE_TIME
+//                 Value: Policy configuration. Object.
+//                     Threshold: String
+//                     Period(s): Integer
+//                     Count: Integer
+//                     URIList: List<String>
+//                     URIRegex: String
+//         ---------------------------
+//
+// Name: ContinuousProfilingReportTask
+// Args:
+//     TaskId: String
 type Command struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
diff --git a/collect/ebpf/profiling/v3/Continuous.pb.go b/collect/ebpf/profiling/v3/Continuous.pb.go
new file mode 100644
index 0000000..7a04a1b
--- /dev/null
+++ b/collect/ebpf/profiling/v3/Continuous.pb.go
@@ -0,0 +1,1039 @@
+//
+// 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.
+//
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.26.0
+// 	protoc        v3.14.0
+// source: ebpf/profiling/Continuous.proto
+
+package v3
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	v3 "skywalking.apache.org/repo/goapi/collect/common/v3"
+	sync "sync"
+)
+
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+type ContinuousProfilingCauseType int32
+
+const (
+	// Current process CPU usage percent(0-100).
+	ContinuousProfilingCauseType_ProcessCPU ContinuousProfilingCauseType = 0
+	// The number of threads in the process.
+	ContinuousProfilingCauseType_ProcessThreadCount ContinuousProfilingCauseType = 1
+	// System load value.
+	ContinuousProfilingCauseType_SystemLoad ContinuousProfilingCauseType = 2
+	// Process response error rate(0-100).
+	// HTTP response codes in [500-600) are considered errors.
+	// Formula: ErrorCount / TotalCount * 100
+	ContinuousProfilingCauseType_HTTPErrorRate ContinuousProfilingCauseType = 3
+	// Process response average time(ms).
+	// Formula: TotalResponseTime(ms) / TotalCount
+	ContinuousProfilingCauseType_HTTPAvgResponseTime ContinuousProfilingCauseType = 4
+)
+
+// Enum value maps for ContinuousProfilingCauseType.
+var (
+	ContinuousProfilingCauseType_name = map[int32]string{
+		0: "ProcessCPU",
+		1: "ProcessThreadCount",
+		2: "SystemLoad",
+		3: "HTTPErrorRate",
+		4: "HTTPAvgResponseTime",
+	}
+	ContinuousProfilingCauseType_value = map[string]int32{
+		"ProcessCPU":          0,
+		"ProcessThreadCount":  1,
+		"SystemLoad":          2,
+		"HTTPErrorRate":       3,
+		"HTTPAvgResponseTime": 4,
+	}
+)
+
+func (x ContinuousProfilingCauseType) Enum() *ContinuousProfilingCauseType {
+	p := new(ContinuousProfilingCauseType)
+	*p = x
+	return p
+}
+
+func (x ContinuousProfilingCauseType) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ContinuousProfilingCauseType) Descriptor() protoreflect.EnumDescriptor {
+	return file_ebpf_profiling_Continuous_proto_enumTypes[0].Descriptor()
+}
+
+func (ContinuousProfilingCauseType) Type() protoreflect.EnumType {
+	return &file_ebpf_profiling_Continuous_proto_enumTypes[0]
+}
+
+func (x ContinuousProfilingCauseType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ContinuousProfilingCauseType.Descriptor instead.
+func (ContinuousProfilingCauseType) EnumDescriptor() ([]byte, []int) {
+	return file_ebpf_profiling_Continuous_proto_rawDescGZIP(), []int{0}
+}
+
+type ContinuousProfilingPolicyQuery struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// current agent contains service and policies
+	Policies []*ContinuousProfilingServicePolicyQuery `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
+}
+
+func (x *ContinuousProfilingPolicyQuery) Reset() {
+	*x = ContinuousProfilingPolicyQuery{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_ebpf_profiling_Continuous_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ContinuousProfilingPolicyQuery) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ContinuousProfilingPolicyQuery) ProtoMessage() {}
+
+func (x *ContinuousProfilingPolicyQuery) ProtoReflect() protoreflect.Message {
+	mi := &file_ebpf_profiling_Continuous_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ContinuousProfilingPolicyQuery.ProtoReflect.Descriptor instead.
+func (*ContinuousProfilingPolicyQuery) Descriptor() ([]byte, []int) {
+	return file_ebpf_profiling_Continuous_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *ContinuousProfilingPolicyQuery) GetPolicies() []*ContinuousProfilingServicePolicyQuery {
+	if x != nil {
+		return x.Policies
+	}
+	return nil
+}
+
+type ContinuousProfilingServicePolicyQuery struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// service name of the each process
+	ServiceName string `protobuf:"bytes,1,opt,name=serviceName,proto3" json:"serviceName,omitempty"`
+	// UUID represents the version(hash/shasum) of the current policies for the service.
+	// This is blank in the initialization stage and is set through the `ContinuousProfilingPolicyQuery` command response for the following rounds of queries.
+	Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"`
+}
+
+func (x *ContinuousProfilingServicePolicyQuery) Reset() {
+	*x = ContinuousProfilingServicePolicyQuery{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_ebpf_profiling_Continuous_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ContinuousProfilingServicePolicyQuery) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ContinuousProfilingServicePolicyQuery) ProtoMessage() {}
+
+func (x *ContinuousProfilingServicePolicyQuery) ProtoReflect() protoreflect.Message {
+	mi := &file_ebpf_profiling_Continuous_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ContinuousProfilingServicePolicyQuery.ProtoReflect.Descriptor instead.
+func (*ContinuousProfilingServicePolicyQuery) Descriptor() ([]byte, []int) {
+	return file_ebpf_profiling_Continuous_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *ContinuousProfilingServicePolicyQuery) GetServiceName() string {
+	if x != nil {
+		return x.ServiceName
+	}
+	return ""
+}
+
+func (x *ContinuousProfilingServicePolicyQuery) GetUuid() string {
+	if x != nil {
+		return x.Uuid
+	}
+	return ""
+}
+
+type ContinuousProfilingReport struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// over threshold process entity
+	Layer        string `protobuf:"bytes,1,opt,name=layer,proto3" json:"layer,omitempty"`
+	ServiceName  string `protobuf:"bytes,2,opt,name=serviceName,proto3" json:"serviceName,omitempty"`
+	InstanceName string `protobuf:"bytes,3,opt,name=instanceName,proto3" json:"instanceName,omitempty"`
+	ProcessName  string `protobuf:"bytes,4,opt,name=processName,proto3" json:"processName,omitempty"`
+	// reached thresholds causes
+	Causes []*ContinuousProfilingCause `protobuf:"bytes,5,rep,name=causes,proto3" json:"causes,omitempty"`
+	// The execution duration for this triggered profiling.
+	// This is set at the agent side.
+	Duration int32 `protobuf:"varint,6,opt,name=duration,proto3" json:"duration,omitempty"`
+	// target profiling task
+	//
+	// Types that are assignable to TargetTask:
+	//	*ContinuousProfilingReport_OnCPU
+	//	*ContinuousProfilingReport_OffCPU
+	//	*ContinuousProfilingReport_Network
+	TargetTask isContinuousProfilingReport_TargetTask `protobuf_oneof:"targetTask"`
+}
+
+func (x *ContinuousProfilingReport) Reset() {
+	*x = ContinuousProfilingReport{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_ebpf_profiling_Continuous_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ContinuousProfilingReport) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ContinuousProfilingReport) ProtoMessage() {}
+
+func (x *ContinuousProfilingReport) ProtoReflect() protoreflect.Message {
+	mi := &file_ebpf_profiling_Continuous_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ContinuousProfilingReport.ProtoReflect.Descriptor instead.
+func (*ContinuousProfilingReport) Descriptor() ([]byte, []int) {
+	return file_ebpf_profiling_Continuous_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *ContinuousProfilingReport) GetLayer() string {
+	if x != nil {
+		return x.Layer
+	}
+	return ""
+}
+
+func (x *ContinuousProfilingReport) GetServiceName() string {
+	if x != nil {
+		return x.ServiceName
+	}
+	return ""
+}
+
+func (x *ContinuousProfilingReport) GetInstanceName() string {
+	if x != nil {
+		return x.InstanceName
+	}
+	return ""
+}
+
+func (x *ContinuousProfilingReport) GetProcessName() string {
+	if x != nil {
+		return x.ProcessName
+	}
+	return ""
+}
+
+func (x *ContinuousProfilingReport) GetCauses() []*ContinuousProfilingCause {
+	if x != nil {
+		return x.Causes
+	}
+	return nil
+}
+
+func (x *ContinuousProfilingReport) GetDuration() int32 {
+	if x != nil {
+		return x.Duration
+	}
+	return 0
+}
+
+func (m *ContinuousProfilingReport) GetTargetTask() isContinuousProfilingReport_TargetTask {
+	if m != nil {
+		return m.TargetTask
+	}
+	return nil
+}
+
+func (x *ContinuousProfilingReport) GetOnCPU() *ContinuousOnCPUProfilingTask {
+	if x, ok := x.GetTargetTask().(*ContinuousProfilingReport_OnCPU); ok {
+		return x.OnCPU
+	}
+	return nil
+}
+
+func (x *ContinuousProfilingReport) GetOffCPU() *ContinuousOffCPUProfilingTask {
+	if x, ok := x.GetTargetTask().(*ContinuousProfilingReport_OffCPU); ok {
+		return x.OffCPU
+	}
+	return nil
+}
+
+func (x *ContinuousProfilingReport) GetNetwork() *ContinuousNetworkProfilingTask {
+	if x, ok := x.GetTargetTask().(*ContinuousProfilingReport_Network); ok {
+		return x.Network
+	}
+	return nil
+}
+
+type isContinuousProfilingReport_TargetTask interface {
+	isContinuousProfilingReport_TargetTask()
+}
+
+type ContinuousProfilingReport_OnCPU struct {
+	OnCPU *ContinuousOnCPUProfilingTask `protobuf:"bytes,7,opt,name=onCPU,proto3,oneof"`
+}
+
+type ContinuousProfilingReport_OffCPU struct {
+	OffCPU *ContinuousOffCPUProfilingTask `protobuf:"bytes,8,opt,name=offCPU,proto3,oneof"`
+}
+
+type ContinuousProfilingReport_Network struct {
+	Network *ContinuousNetworkProfilingTask `protobuf:"bytes,9,opt,name=network,proto3,oneof"`
+}
+
+func (*ContinuousProfilingReport_OnCPU) isContinuousProfilingReport_TargetTask() {}
+
+func (*ContinuousProfilingReport_OffCPU) isContinuousProfilingReport_TargetTask() {}
+
+func (*ContinuousProfilingReport_Network) isContinuousProfilingReport_TargetTask() {}
+
+type ContinuousProfilingCause struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Type ContinuousProfilingCauseType `protobuf:"varint,1,opt,name=type,proto3,enum=skywalking.v3.ContinuousProfilingCauseType" json:"type,omitempty"`
+	// Types that are assignable to Cause:
+	//	*ContinuousProfilingCause_SingleValue
+	//	*ContinuousProfilingCause_Uri
+	Cause isContinuousProfilingCause_Cause `protobuf_oneof:"cause"`
+}
+
+func (x *ContinuousProfilingCause) Reset() {
+	*x = ContinuousProfilingCause{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_ebpf_profiling_Continuous_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ContinuousProfilingCause) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ContinuousProfilingCause) ProtoMessage() {}
+
+func (x *ContinuousProfilingCause) ProtoReflect() protoreflect.Message {
+	mi := &file_ebpf_profiling_Continuous_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ContinuousProfilingCause.ProtoReflect.Descriptor instead.
+func (*ContinuousProfilingCause) Descriptor() ([]byte, []int) {
+	return file_ebpf_profiling_Continuous_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *ContinuousProfilingCause) GetType() ContinuousProfilingCauseType {
+	if x != nil {
+		return x.Type
+	}
+	return ContinuousProfilingCauseType_ProcessCPU
+}
+
+func (m *ContinuousProfilingCause) GetCause() isContinuousProfilingCause_Cause {
+	if m != nil {
+		return m.Cause
+	}
+	return nil
+}
+
+func (x *ContinuousProfilingCause) GetSingleValue() *ContinuousProfilingSingleValueCause {
+	if x, ok := x.GetCause().(*ContinuousProfilingCause_SingleValue); ok {
+		return x.SingleValue
+	}
+	return nil
+}
+
+func (x *ContinuousProfilingCause) GetUri() *ContinuousProfilingURICause {
+	if x, ok := x.GetCause().(*ContinuousProfilingCause_Uri); ok {
+		return x.Uri
+	}
+	return nil
+}
+
+type isContinuousProfilingCause_Cause interface {
+	isContinuousProfilingCause_Cause()
+}
+
+type ContinuousProfilingCause_SingleValue struct {
+	SingleValue *ContinuousProfilingSingleValueCause `protobuf:"bytes,2,opt,name=singleValue,proto3,oneof"`
+}
+
+type ContinuousProfilingCause_Uri struct {
+	Uri *ContinuousProfilingURICause `protobuf:"bytes,3,opt,name=uri,proto3,oneof"`
+}
+
+func (*ContinuousProfilingCause_SingleValue) isContinuousProfilingCause_Cause() {}
+
+func (*ContinuousProfilingCause_Uri) isContinuousProfilingCause_Cause() {}
+
+type ContinuousProfilingSingleValueCause struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Threshold float64 `protobuf:"fixed64,1,opt,name=threshold,proto3" json:"threshold,omitempty"`
+	Current   float64 `protobuf:"fixed64,2,opt,name=current,proto3" json:"current,omitempty"`
+}
+
+func (x *ContinuousProfilingSingleValueCause) Reset() {
+	*x = ContinuousProfilingSingleValueCause{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_ebpf_profiling_Continuous_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ContinuousProfilingSingleValueCause) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ContinuousProfilingSingleValueCause) ProtoMessage() {}
+
+func (x *ContinuousProfilingSingleValueCause) ProtoReflect() protoreflect.Message {
+	mi := &file_ebpf_profiling_Continuous_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ContinuousProfilingSingleValueCause.ProtoReflect.Descriptor instead.
+func (*ContinuousProfilingSingleValueCause) Descriptor() ([]byte, []int) {
+	return file_ebpf_profiling_Continuous_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *ContinuousProfilingSingleValueCause) GetThreshold() float64 {
+	if x != nil {
+		return x.Threshold
+	}
+	return 0
+}
+
+func (x *ContinuousProfilingSingleValueCause) GetCurrent() float64 {
+	if x != nil {
+		return x.Current
+	}
+	return 0
+}
+
+type ContinuousProfilingURICause struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to Uri:
+	//	*ContinuousProfilingURICause_Regex
+	//	*ContinuousProfilingURICause_Path
+	Uri       isContinuousProfilingURICause_Uri `protobuf_oneof:"uri"`
+	Threshold float64                           `protobuf:"fixed64,3,opt,name=threshold,proto3" json:"threshold,omitempty"`
+	Current   float64                           `protobuf:"fixed64,4,opt,name=current,proto3" json:"current,omitempty"`
+}
+
+func (x *ContinuousProfilingURICause) Reset() {
+	*x = ContinuousProfilingURICause{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_ebpf_profiling_Continuous_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ContinuousProfilingURICause) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ContinuousProfilingURICause) ProtoMessage() {}
+
+func (x *ContinuousProfilingURICause) ProtoReflect() protoreflect.Message {
+	mi := &file_ebpf_profiling_Continuous_proto_msgTypes[5]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ContinuousProfilingURICause.ProtoReflect.Descriptor instead.
+func (*ContinuousProfilingURICause) Descriptor() ([]byte, []int) {
+	return file_ebpf_profiling_Continuous_proto_rawDescGZIP(), []int{5}
+}
+
+func (m *ContinuousProfilingURICause) GetUri() isContinuousProfilingURICause_Uri {
+	if m != nil {
+		return m.Uri
+	}
+	return nil
+}
+
+func (x *ContinuousProfilingURICause) GetRegex() string {
+	if x, ok := x.GetUri().(*ContinuousProfilingURICause_Regex); ok {
+		return x.Regex
+	}
+	return ""
+}
+
+func (x *ContinuousProfilingURICause) GetPath() string {
+	if x, ok := x.GetUri().(*ContinuousProfilingURICause_Path); ok {
+		return x.Path
+	}
+	return ""
+}
+
+func (x *ContinuousProfilingURICause) GetThreshold() float64 {
+	if x != nil {
+		return x.Threshold
+	}
+	return 0
+}
+
+func (x *ContinuousProfilingURICause) GetCurrent() float64 {
+	if x != nil {
+		return x.Current
+	}
+	return 0
+}
+
+type isContinuousProfilingURICause_Uri interface {
+	isContinuousProfilingURICause_Uri()
+}
+
+type ContinuousProfilingURICause_Regex struct {
+	Regex string `protobuf:"bytes,1,opt,name=regex,proto3,oneof"`
+}
+
+type ContinuousProfilingURICause_Path struct {
+	Path string `protobuf:"bytes,2,opt,name=path,proto3,oneof"`
+}
+
+func (*ContinuousProfilingURICause_Regex) isContinuousProfilingURICause_Uri() {}
+
+func (*ContinuousProfilingURICause_Path) isContinuousProfilingURICause_Uri() {}
+
+// eBPF on CPU profiling task
+type ContinuousOnCPUProfilingTask struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+}
+
+func (x *ContinuousOnCPUProfilingTask) Reset() {
+	*x = ContinuousOnCPUProfilingTask{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_ebpf_profiling_Continuous_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ContinuousOnCPUProfilingTask) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ContinuousOnCPUProfilingTask) ProtoMessage() {}
+
+func (x *ContinuousOnCPUProfilingTask) ProtoReflect() protoreflect.Message {
+	mi := &file_ebpf_profiling_Continuous_proto_msgTypes[6]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ContinuousOnCPUProfilingTask.ProtoReflect.Descriptor instead.
+func (*ContinuousOnCPUProfilingTask) Descriptor() ([]byte, []int) {
+	return file_ebpf_profiling_Continuous_proto_rawDescGZIP(), []int{6}
+}
+
+// eBPF off CPU profiling task
+type ContinuousOffCPUProfilingTask struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+}
+
+func (x *ContinuousOffCPUProfilingTask) Reset() {
+	*x = ContinuousOffCPUProfilingTask{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_ebpf_profiling_Continuous_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ContinuousOffCPUProfilingTask) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ContinuousOffCPUProfilingTask) ProtoMessage() {}
+
+func (x *ContinuousOffCPUProfilingTask) ProtoReflect() protoreflect.Message {
+	mi := &file_ebpf_profiling_Continuous_proto_msgTypes[7]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ContinuousOffCPUProfilingTask.ProtoReflect.Descriptor instead.
+func (*ContinuousOffCPUProfilingTask) Descriptor() ([]byte, []int) {
+	return file_ebpf_profiling_Continuous_proto_rawDescGZIP(), []int{7}
+}
+
+// eBPF Network profiling task
+type ContinuousNetworkProfilingTask struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	SamplingURIRegex string `protobuf:"bytes,1,opt,name=samplingURIRegex,proto3" json:"samplingURIRegex,omitempty"`
+}
+
+func (x *ContinuousNetworkProfilingTask) Reset() {
+	*x = ContinuousNetworkProfilingTask{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_ebpf_profiling_Continuous_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ContinuousNetworkProfilingTask) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ContinuousNetworkProfilingTask) ProtoMessage() {}
+
+func (x *ContinuousNetworkProfilingTask) ProtoReflect() protoreflect.Message {
+	mi := &file_ebpf_profiling_Continuous_proto_msgTypes[8]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ContinuousNetworkProfilingTask.ProtoReflect.Descriptor instead.
+func (*ContinuousNetworkProfilingTask) Descriptor() ([]byte, []int) {
+	return file_ebpf_profiling_Continuous_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *ContinuousNetworkProfilingTask) GetSamplingURIRegex() string {
+	if x != nil {
+		return x.SamplingURIRegex
+	}
+	return ""
+}
+
+var File_ebpf_profiling_Continuous_proto protoreflect.FileDescriptor
+
+var file_ebpf_profiling_Continuous_proto_rawDesc = []byte{
+	0x0a, 0x1f, 0x65, 0x62, 0x70, 0x66, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67,
+	0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x12, 0x0d, 0x73, 0x6b, 0x79, 0x77, 0x61, 0x6c, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33,
+	0x1a, 0x14, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x72, 0x0a, 0x1e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e,
+	0x75, 0x6f, 0x75, 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c,
+	0x69, 0x63, 0x79, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x50, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69,
+	0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x6b, 0x79,
+	0x77, 0x61, 0x6c, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x69,
+	0x6e, 0x75, 0x6f, 0x75, 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x65,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x51, 0x75, 0x65, 0x72, 0x79,
+	0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x25, 0x43, 0x6f,
+	0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e,
+	0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x51, 0x75,
+	0x65, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61,
+	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
+	0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0xdc, 0x03, 0x0a, 0x19, 0x43, 0x6f,
+	0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e,
+	0x67, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x79, 0x65, 0x72,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x20, 0x0a,
+	0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12,
+	0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e,
+	0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x4e, 0x61,
+	0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73,
+	0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x06, 0x63, 0x61, 0x75, 0x73, 0x65, 0x73, 0x18,
+	0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x6b, 0x79, 0x77, 0x61, 0x6c, 0x6b, 0x69,
+	0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73,
+	0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x75, 0x73, 0x65, 0x52, 0x06,
+	0x63, 0x61, 0x75, 0x73, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x12, 0x43, 0x0a, 0x05, 0x6f, 0x6e, 0x43, 0x50, 0x55, 0x18, 0x07, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x6b, 0x79, 0x77, 0x61, 0x6c, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76,
+	0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x4f, 0x6e, 0x43, 0x50,
+	0x55, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00,
+	0x52, 0x05, 0x6f, 0x6e, 0x43, 0x50, 0x55, 0x12, 0x46, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x43, 0x50,
+	0x55, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x6b, 0x79, 0x77, 0x61, 0x6c,
+	0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f,
+	0x75, 0x73, 0x4f, 0x66, 0x66, 0x43, 0x50, 0x55, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e,
+	0x67, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x43, 0x50, 0x55, 0x12,
+	0x49, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x2d, 0x2e, 0x73, 0x6b, 0x79, 0x77, 0x61, 0x6c, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33,
+	0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x4e, 0x65, 0x74, 0x77, 0x6f,
+	0x72, 0x6b, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x73, 0x6b, 0x48,
+	0x00, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x42, 0x0c, 0x0a, 0x0a, 0x74, 0x61,
+	0x72, 0x67, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x22, 0xfc, 0x01, 0x0a, 0x18, 0x43, 0x6f, 0x6e,
+	0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67,
+	0x43, 0x61, 0x75, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x73, 0x6b, 0x79, 0x77, 0x61, 0x6c, 0x6b, 0x69, 0x6e, 0x67,
+	0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x50, 0x72,
+	0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x75, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65,
+	0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x56, 0x0a, 0x0b, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65,
+	0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x6b,
+	0x79, 0x77, 0x61, 0x6c, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74,
+	0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x53,
+	0x69, 0x6e, 0x67, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x61, 0x75, 0x73, 0x65, 0x48,
+	0x00, 0x52, 0x0b, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3e,
+	0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x6b,
+	0x79, 0x77, 0x61, 0x6c, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74,
+	0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x55,
+	0x52, 0x49, 0x43, 0x61, 0x75, 0x73, 0x65, 0x48, 0x00, 0x52, 0x03, 0x75, 0x72, 0x69, 0x42, 0x07,
+	0x0a, 0x05, 0x63, 0x61, 0x75, 0x73, 0x65, 0x22, 0x5d, 0x0a, 0x23, 0x43, 0x6f, 0x6e, 0x74, 0x69,
+	0x6e, 0x75, 0x6f, 0x75, 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x69,
+	0x6e, 0x67, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x61, 0x75, 0x73, 0x65, 0x12, 0x1c,
+	0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x01, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x18, 0x0a, 0x07,
+	0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x63,
+	0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x22, 0x8a, 0x01, 0x0a, 0x1b, 0x43, 0x6f, 0x6e, 0x74, 0x69,
+	0x6e, 0x75, 0x6f, 0x75, 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x55, 0x52,
+	0x49, 0x43, 0x61, 0x75, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x12, 0x14,
+	0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04,
+	0x70, 0x61, 0x74, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c,
+	0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f,
+	0x6c, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20,
+	0x01, 0x28, 0x01, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x05, 0x0a, 0x03,
+	0x75, 0x72, 0x69, 0x22, 0x1e, 0x0a, 0x1c, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75,
+	0x73, 0x4f, 0x6e, 0x43, 0x50, 0x55, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x54,
+	0x61, 0x73, 0x6b, 0x22, 0x1f, 0x0a, 0x1d, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75,
+	0x73, 0x4f, 0x66, 0x66, 0x43, 0x50, 0x55, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67,
+	0x54, 0x61, 0x73, 0x6b, 0x22, 0x4c, 0x0a, 0x1e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f,
+	0x75, 0x73, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69,
+	0x6e, 0x67, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69,
+	0x6e, 0x67, 0x55, 0x52, 0x49, 0x52, 0x65, 0x67, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x10, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x55, 0x52, 0x49, 0x52, 0x65, 0x67,
+	0x65, 0x78, 0x2a, 0x82, 0x01, 0x0a, 0x1c, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75,
+	0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x75, 0x73, 0x65, 0x54,
+	0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, 0x50,
+	0x55, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x54, 0x68,
+	0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x53,
+	0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x6f, 0x61, 0x64, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x48,
+	0x54, 0x54, 0x50, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x61, 0x74, 0x65, 0x10, 0x03, 0x12, 0x17,
+	0x0a, 0x13, 0x48, 0x54, 0x54, 0x50, 0x41, 0x76, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x54, 0x69, 0x6d, 0x65, 0x10, 0x04, 0x32, 0xd3, 0x01, 0x0a, 0x1a, 0x43, 0x6f, 0x6e, 0x74,
+	0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x53,
+	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x59, 0x0a, 0x0d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50,
+	0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x2d, 0x2e, 0x73, 0x6b, 0x79, 0x77, 0x61, 0x6c,
+	0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f,
+	0x75, 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+	0x79, 0x51, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x17, 0x2e, 0x73, 0x6b, 0x79, 0x77, 0x61, 0x6c, 0x6b,
+	0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x22,
+	0x00, 0x12, 0x5a, 0x0a, 0x13, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69,
+	0x6c, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x28, 0x2e, 0x73, 0x6b, 0x79, 0x77, 0x61,
+	0x6c, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75,
+	0x6f, 0x75, 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, 0x6f,
+	0x72, 0x74, 0x1a, 0x17, 0x2e, 0x73, 0x6b, 0x79, 0x77, 0x61, 0x6c, 0x6b, 0x69, 0x6e, 0x67, 0x2e,
+	0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x22, 0x00, 0x42, 0x73, 0x0a,
+	0x33, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x73, 0x6b, 0x79, 0x77,
+	0x61, 0x6c, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x61, 0x70, 0x6d, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f,
+	0x72, 0x6b, 0x2e, 0x65, 0x62, 0x70, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e,
+	0x67, 0x2e, 0x76, 0x33, 0x50, 0x01, 0x5a, 0x3a, 0x73, 0x6b, 0x79, 0x77, 0x61, 0x6c, 0x6b, 0x69,
+	0x6e, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x72, 0x65,
+	0x70, 0x6f, 0x2f, 0x67, 0x6f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74,
+	0x2f, 0x65, 0x62, 0x70, 0x66, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x2f,
+	0x76, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_ebpf_profiling_Continuous_proto_rawDescOnce sync.Once
+	file_ebpf_profiling_Continuous_proto_rawDescData = file_ebpf_profiling_Continuous_proto_rawDesc
+)
+
+func file_ebpf_profiling_Continuous_proto_rawDescGZIP() []byte {
+	file_ebpf_profiling_Continuous_proto_rawDescOnce.Do(func() {
+		file_ebpf_profiling_Continuous_proto_rawDescData = protoimpl.X.CompressGZIP(file_ebpf_profiling_Continuous_proto_rawDescData)
+	})
+	return file_ebpf_profiling_Continuous_proto_rawDescData
+}
+
+var file_ebpf_profiling_Continuous_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_ebpf_profiling_Continuous_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
+var file_ebpf_profiling_Continuous_proto_goTypes = []interface{}{
+	(ContinuousProfilingCauseType)(0),             // 0: skywalking.v3.ContinuousProfilingCauseType
+	(*ContinuousProfilingPolicyQuery)(nil),        // 1: skywalking.v3.ContinuousProfilingPolicyQuery
+	(*ContinuousProfilingServicePolicyQuery)(nil), // 2: skywalking.v3.ContinuousProfilingServicePolicyQuery
+	(*ContinuousProfilingReport)(nil),             // 3: skywalking.v3.ContinuousProfilingReport
+	(*ContinuousProfilingCause)(nil),              // 4: skywalking.v3.ContinuousProfilingCause
+	(*ContinuousProfilingSingleValueCause)(nil),   // 5: skywalking.v3.ContinuousProfilingSingleValueCause
+	(*ContinuousProfilingURICause)(nil),           // 6: skywalking.v3.ContinuousProfilingURICause
+	(*ContinuousOnCPUProfilingTask)(nil),          // 7: skywalking.v3.ContinuousOnCPUProfilingTask
+	(*ContinuousOffCPUProfilingTask)(nil),         // 8: skywalking.v3.ContinuousOffCPUProfilingTask
+	(*ContinuousNetworkProfilingTask)(nil),        // 9: skywalking.v3.ContinuousNetworkProfilingTask
+	(*v3.Commands)(nil),                           // 10: skywalking.v3.Commands
+}
+var file_ebpf_profiling_Continuous_proto_depIdxs = []int32{
+	2,  // 0: skywalking.v3.ContinuousProfilingPolicyQuery.policies:type_name -> skywalking.v3.ContinuousProfilingServicePolicyQuery
+	4,  // 1: skywalking.v3.ContinuousProfilingReport.causes:type_name -> skywalking.v3.ContinuousProfilingCause
+	7,  // 2: skywalking.v3.ContinuousProfilingReport.onCPU:type_name -> skywalking.v3.ContinuousOnCPUProfilingTask
+	8,  // 3: skywalking.v3.ContinuousProfilingReport.offCPU:type_name -> skywalking.v3.ContinuousOffCPUProfilingTask
+	9,  // 4: skywalking.v3.ContinuousProfilingReport.network:type_name -> skywalking.v3.ContinuousNetworkProfilingTask
+	0,  // 5: skywalking.v3.ContinuousProfilingCause.type:type_name -> skywalking.v3.ContinuousProfilingCauseType
+	5,  // 6: skywalking.v3.ContinuousProfilingCause.singleValue:type_name -> skywalking.v3.ContinuousProfilingSingleValueCause
+	6,  // 7: skywalking.v3.ContinuousProfilingCause.uri:type_name -> skywalking.v3.ContinuousProfilingURICause
+	1,  // 8: skywalking.v3.ContinuousProfilingService.queryPolicies:input_type -> skywalking.v3.ContinuousProfilingPolicyQuery
+	3,  // 9: skywalking.v3.ContinuousProfilingService.reportProfilingTask:input_type -> skywalking.v3.ContinuousProfilingReport
+	10, // 10: skywalking.v3.ContinuousProfilingService.queryPolicies:output_type -> skywalking.v3.Commands
+	10, // 11: skywalking.v3.ContinuousProfilingService.reportProfilingTask:output_type -> skywalking.v3.Commands
+	10, // [10:12] is the sub-list for method output_type
+	8,  // [8:10] is the sub-list for method input_type
+	8,  // [8:8] is the sub-list for extension type_name
+	8,  // [8:8] is the sub-list for extension extendee
+	0,  // [0:8] is the sub-list for field type_name
+}
+
+func init() { file_ebpf_profiling_Continuous_proto_init() }
+func file_ebpf_profiling_Continuous_proto_init() {
+	if File_ebpf_profiling_Continuous_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_ebpf_profiling_Continuous_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ContinuousProfilingPolicyQuery); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_ebpf_profiling_Continuous_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ContinuousProfilingServicePolicyQuery); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_ebpf_profiling_Continuous_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ContinuousProfilingReport); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_ebpf_profiling_Continuous_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ContinuousProfilingCause); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_ebpf_profiling_Continuous_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ContinuousProfilingSingleValueCause); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_ebpf_profiling_Continuous_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ContinuousProfilingURICause); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_ebpf_profiling_Continuous_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ContinuousOnCPUProfilingTask); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_ebpf_profiling_Continuous_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ContinuousOffCPUProfilingTask); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_ebpf_profiling_Continuous_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ContinuousNetworkProfilingTask); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_ebpf_profiling_Continuous_proto_msgTypes[2].OneofWrappers = []interface{}{
+		(*ContinuousProfilingReport_OnCPU)(nil),
+		(*ContinuousProfilingReport_OffCPU)(nil),
+		(*ContinuousProfilingReport_Network)(nil),
+	}
+	file_ebpf_profiling_Continuous_proto_msgTypes[3].OneofWrappers = []interface{}{
+		(*ContinuousProfilingCause_SingleValue)(nil),
+		(*ContinuousProfilingCause_Uri)(nil),
+	}
+	file_ebpf_profiling_Continuous_proto_msgTypes[5].OneofWrappers = []interface{}{
+		(*ContinuousProfilingURICause_Regex)(nil),
+		(*ContinuousProfilingURICause_Path)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_ebpf_profiling_Continuous_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   9,
+			NumExtensions: 0,
+			NumServices:   1,
+		},
+		GoTypes:           file_ebpf_profiling_Continuous_proto_goTypes,
+		DependencyIndexes: file_ebpf_profiling_Continuous_proto_depIdxs,
+		EnumInfos:         file_ebpf_profiling_Continuous_proto_enumTypes,
+		MessageInfos:      file_ebpf_profiling_Continuous_proto_msgTypes,
+	}.Build()
+	File_ebpf_profiling_Continuous_proto = out.File
+	file_ebpf_profiling_Continuous_proto_rawDesc = nil
+	file_ebpf_profiling_Continuous_proto_goTypes = nil
+	file_ebpf_profiling_Continuous_proto_depIdxs = nil
+}
diff --git a/collect/ebpf/profiling/v3/Continuous_grpc.pb.go b/collect/ebpf/profiling/v3/Continuous_grpc.pb.go
new file mode 100644
index 0000000..09ababf
--- /dev/null
+++ b/collect/ebpf/profiling/v3/Continuous_grpc.pb.go
@@ -0,0 +1,145 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+
+package v3
+
+import (
+	context "context"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+	v3 "skywalking.apache.org/repo/goapi/collect/common/v3"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+// ContinuousProfilingServiceClient is the client API for ContinuousProfilingService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type ContinuousProfilingServiceClient interface {
+	// Query continuous profiling policy
+	QueryPolicies(ctx context.Context, in *ContinuousProfilingPolicyQuery, opts ...grpc.CallOption) (*v3.Commands, error)
+	// Report the profiling task when the policy threshold is reached
+	// Use the returned task ID to perform the profiling task through EBPFProfilingService#collectProfilingData.
+	ReportProfilingTask(ctx context.Context, in *ContinuousProfilingReport, opts ...grpc.CallOption) (*v3.Commands, error)
+}
+
+type continuousProfilingServiceClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewContinuousProfilingServiceClient(cc grpc.ClientConnInterface) ContinuousProfilingServiceClient {
+	return &continuousProfilingServiceClient{cc}
+}
+
+func (c *continuousProfilingServiceClient) QueryPolicies(ctx context.Context, in *ContinuousProfilingPolicyQuery, opts ...grpc.CallOption) (*v3.Commands, error) {
+	out := new(v3.Commands)
+	err := c.cc.Invoke(ctx, "/skywalking.v3.ContinuousProfilingService/queryPolicies", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *continuousProfilingServiceClient) ReportProfilingTask(ctx context.Context, in *ContinuousProfilingReport, opts ...grpc.CallOption) (*v3.Commands, error) {
+	out := new(v3.Commands)
+	err := c.cc.Invoke(ctx, "/skywalking.v3.ContinuousProfilingService/reportProfilingTask", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// ContinuousProfilingServiceServer is the server API for ContinuousProfilingService service.
+// All implementations must embed UnimplementedContinuousProfilingServiceServer
+// for forward compatibility
+type ContinuousProfilingServiceServer interface {
+	// Query continuous profiling policy
+	QueryPolicies(context.Context, *ContinuousProfilingPolicyQuery) (*v3.Commands, error)
+	// Report the profiling task when the policy threshold is reached
+	// Use the returned task ID to perform the profiling task through EBPFProfilingService#collectProfilingData.
+	ReportProfilingTask(context.Context, *ContinuousProfilingReport) (*v3.Commands, error)
+	mustEmbedUnimplementedContinuousProfilingServiceServer()
+}
+
+// UnimplementedContinuousProfilingServiceServer must be embedded to have forward compatible implementations.
+type UnimplementedContinuousProfilingServiceServer struct {
+}
+
+func (UnimplementedContinuousProfilingServiceServer) QueryPolicies(context.Context, *ContinuousProfilingPolicyQuery) (*v3.Commands, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method QueryPolicies not implemented")
+}
+func (UnimplementedContinuousProfilingServiceServer) ReportProfilingTask(context.Context, *ContinuousProfilingReport) (*v3.Commands, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ReportProfilingTask not implemented")
+}
+func (UnimplementedContinuousProfilingServiceServer) mustEmbedUnimplementedContinuousProfilingServiceServer() {
+}
+
+// UnsafeContinuousProfilingServiceServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to ContinuousProfilingServiceServer will
+// result in compilation errors.
+type UnsafeContinuousProfilingServiceServer interface {
+	mustEmbedUnimplementedContinuousProfilingServiceServer()
+}
+
+func RegisterContinuousProfilingServiceServer(s grpc.ServiceRegistrar, srv ContinuousProfilingServiceServer) {
+	s.RegisterService(&ContinuousProfilingService_ServiceDesc, srv)
+}
+
+func _ContinuousProfilingService_QueryPolicies_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ContinuousProfilingPolicyQuery)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ContinuousProfilingServiceServer).QueryPolicies(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/skywalking.v3.ContinuousProfilingService/queryPolicies",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ContinuousProfilingServiceServer).QueryPolicies(ctx, req.(*ContinuousProfilingPolicyQuery))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ContinuousProfilingService_ReportProfilingTask_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ContinuousProfilingReport)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ContinuousProfilingServiceServer).ReportProfilingTask(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/skywalking.v3.ContinuousProfilingService/reportProfilingTask",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ContinuousProfilingServiceServer).ReportProfilingTask(ctx, req.(*ContinuousProfilingReport))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+// ContinuousProfilingService_ServiceDesc is the grpc.ServiceDesc for ContinuousProfilingService service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var ContinuousProfilingService_ServiceDesc = grpc.ServiceDesc{
+	ServiceName: "skywalking.v3.ContinuousProfilingService",
+	HandlerType: (*ContinuousProfilingServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "queryPolicies",
+			Handler:    _ContinuousProfilingService_QueryPolicies_Handler,
+		},
+		{
+			MethodName: "reportProfilingTask",
+			Handler:    _ContinuousProfilingService_ReportProfilingTask_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "ebpf/profiling/Continuous.proto",
+}
diff --git a/collect/language/agent/v3/Tracing.pb.go b/collect/language/agent/v3/Tracing.pb.go
index 87cac66..1807479 100644
--- a/collect/language/agent/v3/Tracing.pb.go
+++ b/collect/language/agent/v3/Tracing.pb.go
@@ -258,9 +258,10 @@ func (SpanAttachedEvent_SpanReferenceType) EnumDescriptor() ([]byte, []int) {
 
 // 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,
-// 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.
+// We recommend the agent/SDK report all tracked data of one request once for all.
+// 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 `thread` concept like golang.
+// Then, it could represent all tracked operations of one request context cross threads/goroutines.
 type SegmentObject struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
diff --git a/dependencies.sh b/dependencies.sh
index f3e9734..9f8976d 100644
--- a/dependencies.sh
+++ b/dependencies.sh
@@ -17,7 +17,7 @@
 # specific language governing permissions and limitations
 # under the License.
 
-export COLLECT_PROTOCOL_SHA=b561375576d97a061e4bc3bf30f0f1ae66e2a436
+export COLLECT_PROTOCOL_SHA=9b2f4a5fb5694381924674d6c15cbead6a388d97
 export QUERY_PROTOCOL_SHA=34937ef582edd38319f57ff2bda09688b1af708e
 export ENVOY_SERVICE_PROTOCOL_SHA=533b32f1b390a3a88ec2008d0561e07c926d879a
 export XDS_SERVICE_PROTOCOL_SHA=25de7278fc844d392d607214f36dbedf50f167ee
diff --git a/go.mod b/go.mod
index 69a4fdb..90c63b0 100644
--- a/go.mod
+++ b/go.mod
@@ -4,8 +4,8 @@ go 1.16
 
 require (
 	github.com/google/go-cmp v0.5.6 // indirect
-	golang.org/x/net v0.0.0-20220722155237-a158d28d115b // indirect
 	golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab // indirect
+	golang.org/x/text v0.3.8 // indirect
 	google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84 // indirect
 	google.golang.org/grpc v1.40.0
 	google.golang.org/protobuf v1.28.1
diff --git a/go.sum b/go.sum
index 88946a5..de4de3d 100644
--- a/go.sum
+++ b/go.sum
@@ -51,10 +51,12 @@ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasO
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
 github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
 go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
 golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
@@ -62,6 +64,7 @@ golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHl
 golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
 golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
 golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
 golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -70,6 +73,7 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn
 golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
 golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
 golang.org/x/net v0.0.0-20220722155237-a158d28d115b h1:PxfKdU9lEEDYjdIzOtC4qFWgkU2rGHdKlKowJSMN9h0=
 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
@@ -80,6 +84,7 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ
 golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -89,6 +94,7 @@ golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab h1:2QkjZIsXupsJbJIdSjjUOgWK3aEtzyuh2mPt3l/CkeU=
 golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
@@ -96,8 +102,9 @@ golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuX
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/text v0.3.8 h1:nAL+RVCQ9uMn3vJZbV+MRnydTJFPf8qqY42YiA6MrqY=
+golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
@@ -106,6 +113,7 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn
 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
 golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
+golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=