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 2021/10/01 06:52:29 UTC

[skywalking-goapi] 17/26: update collect protocol to support the JVM params (#10)

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

commit 561b14f437f731109f1389b31ae86f3dcbeb0901
Author: mrproliu <74...@qq.com>
AuthorDate: Mon Jul 12 14:32:36 2021 +0800

    update collect protocol to support the JVM params (#10)
    
    * update collect protocol to support JVM params
    
    Co-authored-by: Mrproliu <mr...@lagou.com>
---
 collect/language/agent/v3/JVMMetric.pb.go | 297 ++++++++++++++++++++++--------
 collect/servicemesh/v3/service-mesh.pb.go | 165 +++++++++++++----
 dependencies.sh                           |   2 +-
 go.mod                                    |   2 +-
 go.sum                                    |   4 +-
 5 files changed, 354 insertions(+), 116 deletions(-)

diff --git a/collect/language/agent/v3/JVMMetric.pb.go b/collect/language/agent/v3/JVMMetric.pb.go
index 1cef5ab..6cadf5f 100644
--- a/collect/language/agent/v3/JVMMetric.pb.go
+++ b/collect/language/agent/v3/JVMMetric.pb.go
@@ -216,6 +216,7 @@ type JVMMetric struct {
 	MemoryPool []*MemoryPool `protobuf:"bytes,4,rep,name=memoryPool,proto3" json:"memoryPool,omitempty"`
 	Gc         []*GC         `protobuf:"bytes,5,rep,name=gc,proto3" json:"gc,omitempty"`
 	Thread     *Thread       `protobuf:"bytes,6,opt,name=thread,proto3" json:"thread,omitempty"`
+	Clazz      *Class        `protobuf:"bytes,7,opt,name=clazz,proto3" json:"clazz,omitempty"`
 }
 
 func (x *JVMMetric) Reset() {
@@ -292,6 +293,13 @@ func (x *JVMMetric) GetThread() *Thread {
 	return nil
 }
 
+func (x *JVMMetric) GetClazz() *Class {
+	if x != nil {
+		return x.Clazz
+	}
+	return nil
+}
+
 type Memory struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -513,14 +521,19 @@ func (x *GC) GetTime() int64 {
 	return 0
 }
 
+// See: https://docs.oracle.com/javase/8/docs/api/java/lang/management/ThreadMXBean.html
 type Thread struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	LiveCount   int64 `protobuf:"varint,1,opt,name=liveCount,proto3" json:"liveCount,omitempty"`
-	DaemonCount int64 `protobuf:"varint,2,opt,name=daemonCount,proto3" json:"daemonCount,omitempty"`
-	PeakCount   int64 `protobuf:"varint,3,opt,name=peakCount,proto3" json:"peakCount,omitempty"`
+	LiveCount                    int64 `protobuf:"varint,1,opt,name=liveCount,proto3" json:"liveCount,omitempty"`
+	DaemonCount                  int64 `protobuf:"varint,2,opt,name=daemonCount,proto3" json:"daemonCount,omitempty"`
+	PeakCount                    int64 `protobuf:"varint,3,opt,name=peakCount,proto3" json:"peakCount,omitempty"`
+	RunnableStateThreadCount     int64 `protobuf:"varint,4,opt,name=runnableStateThreadCount,proto3" json:"runnableStateThreadCount,omitempty"`
+	BlockedStateThreadCount      int64 `protobuf:"varint,5,opt,name=blockedStateThreadCount,proto3" json:"blockedStateThreadCount,omitempty"`
+	WaitingStateThreadCount      int64 `protobuf:"varint,6,opt,name=waitingStateThreadCount,proto3" json:"waitingStateThreadCount,omitempty"`
+	TimedWaitingStateThreadCount int64 `protobuf:"varint,7,opt,name=timedWaitingStateThreadCount,proto3" json:"timedWaitingStateThreadCount,omitempty"`
 }
 
 func (x *Thread) Reset() {
@@ -576,6 +589,98 @@ func (x *Thread) GetPeakCount() int64 {
 	return 0
 }
 
+func (x *Thread) GetRunnableStateThreadCount() int64 {
+	if x != nil {
+		return x.RunnableStateThreadCount
+	}
+	return 0
+}
+
+func (x *Thread) GetBlockedStateThreadCount() int64 {
+	if x != nil {
+		return x.BlockedStateThreadCount
+	}
+	return 0
+}
+
+func (x *Thread) GetWaitingStateThreadCount() int64 {
+	if x != nil {
+		return x.WaitingStateThreadCount
+	}
+	return 0
+}
+
+func (x *Thread) GetTimedWaitingStateThreadCount() int64 {
+	if x != nil {
+		return x.TimedWaitingStateThreadCount
+	}
+	return 0
+}
+
+// See: https://docs.oracle.com/javase/8/docs/api/java/lang/management/ClassLoadingMXBean.html
+type Class struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	LoadedClassCount        int64 `protobuf:"varint,1,opt,name=loadedClassCount,proto3" json:"loadedClassCount,omitempty"`
+	TotalUnloadedClassCount int64 `protobuf:"varint,2,opt,name=totalUnloadedClassCount,proto3" json:"totalUnloadedClassCount,omitempty"`
+	TotalLoadedClassCount   int64 `protobuf:"varint,3,opt,name=totalLoadedClassCount,proto3" json:"totalLoadedClassCount,omitempty"`
+}
+
+func (x *Class) Reset() {
+	*x = Class{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_language_agent_JVMMetric_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Class) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Class) ProtoMessage() {}
+
+func (x *Class) ProtoReflect() protoreflect.Message {
+	mi := &file_language_agent_JVMMetric_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 Class.ProtoReflect.Descriptor instead.
+func (*Class) Descriptor() ([]byte, []int) {
+	return file_language_agent_JVMMetric_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *Class) GetLoadedClassCount() int64 {
+	if x != nil {
+		return x.LoadedClassCount
+	}
+	return 0
+}
+
+func (x *Class) GetTotalUnloadedClassCount() int64 {
+	if x != nil {
+		return x.TotalUnloadedClassCount
+	}
+	return 0
+}
+
+func (x *Class) GetTotalLoadedClassCount() int64 {
+	if x != nil {
+		return x.TotalLoadedClassCount
+	}
+	return 0
+}
+
 var File_language_agent_JVMMetric_proto protoreflect.FileDescriptor
 
 var file_language_agent_JVMMetric_proto_rawDesc = []byte{
@@ -592,7 +697,7 @@ var file_language_agent_JVMMetric_proto_rawDesc = []byte{
 	0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x65,
 	0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20,
 	0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74,
-	0x61, 0x6e, 0x63, 0x65, 0x22, 0x81, 0x02, 0x0a, 0x09, 0x4a, 0x56, 0x4d, 0x4d, 0x65, 0x74, 0x72,
+	0x61, 0x6e, 0x63, 0x65, 0x22, 0xad, 0x02, 0x0a, 0x09, 0x4a, 0x56, 0x4d, 0x4d, 0x65, 0x74, 0x72,
 	0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
 	0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x02, 0x20,
 	0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x6b, 0x79, 0x77, 0x61, 0x6c, 0x6b, 0x69, 0x6e, 0x67,
@@ -608,63 +713,91 @@ var file_language_agent_JVMMetric_proto_rawDesc = []byte{
 	0x76, 0x33, 0x2e, 0x47, 0x43, 0x52, 0x02, 0x67, 0x63, 0x12, 0x2d, 0x0a, 0x06, 0x74, 0x68, 0x72,
 	0x65, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x6b, 0x79, 0x77,
 	0x61, 0x6c, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64,
-	0x52, 0x06, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x22, 0x78, 0x0a, 0x06, 0x4d, 0x65, 0x6d, 0x6f,
-	0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x48, 0x65, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x48, 0x65, 0x61, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x6e,
+	0x52, 0x06, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x12, 0x2a, 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x7a,
+	0x7a, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x6b, 0x79, 0x77, 0x61, 0x6c,
+	0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x05, 0x63,
+	0x6c, 0x61, 0x7a, 0x7a, 0x22, 0x78, 0x0a, 0x06, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x16,
+	0x0a, 0x06, 0x69, 0x73, 0x48, 0x65, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06,
+	0x69, 0x73, 0x48, 0x65, 0x61, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x6e, 0x69, 0x74, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x69, 0x6e, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61,
+	0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x12, 0x0a, 0x04,
+	0x75, 0x73, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x75, 0x73, 0x65, 0x64,
+	0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x22, 0x91,
+	0x01, 0x0a, 0x0a, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x2b, 0x0a,
+	0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x73, 0x6b,
+	0x79, 0x77, 0x61, 0x6c, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x6f, 0x6f, 0x6c,
+	0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x6e,
 	0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x69, 0x6e, 0x69, 0x74, 0x12, 0x10,
 	0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6d, 0x61, 0x78,
 	0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04,
 	0x75, 0x73, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65,
 	0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74,
-	0x65, 0x64, 0x22, 0x91, 0x01, 0x0a, 0x0a, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x50, 0x6f, 0x6f,
-	0x6c, 0x12, 0x2b, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
-	0x17, 0x2e, 0x73, 0x6b, 0x79, 0x77, 0x61, 0x6c, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e,
-	0x50, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12,
-	0x0a, 0x04, 0x69, 0x6e, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x69, 0x6e,
-	0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x03, 0x6d, 0x61, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x04, 0x75, 0x73, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d,
-	0x69, 0x74, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x6d,
-	0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x22, 0x5f, 0x0a, 0x02, 0x47, 0x43, 0x12, 0x2f, 0x0a, 0x06,
-	0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x73,
-	0x6b, 0x79, 0x77, 0x61, 0x6c, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x43, 0x50,
-	0x68, 0x72, 0x61, 0x73, 0x65, 0x52, 0x06, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x12, 0x14, 0x0a,
-	0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f,
-	0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x66, 0x0a, 0x06, 0x54, 0x68, 0x72, 0x65, 0x61,
-	0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6c, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12,
-	0x20, 0x0a, 0x0b, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e,
-	0x74, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x65, 0x61, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x65, 0x61, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x2a,
-	0x80, 0x01, 0x0a, 0x08, 0x50, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10,
-	0x43, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f, 0x55, 0x53, 0x41, 0x47, 0x45,
-	0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x45, 0x57, 0x47, 0x45, 0x4e, 0x5f, 0x55, 0x53, 0x41,
-	0x47, 0x45, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x4c, 0x44, 0x47, 0x45, 0x4e, 0x5f, 0x55,
-	0x53, 0x41, 0x47, 0x45, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x55, 0x52, 0x56, 0x49, 0x56,
-	0x4f, 0x52, 0x5f, 0x55, 0x53, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x45,
-	0x52, 0x4d, 0x47, 0x45, 0x4e, 0x5f, 0x55, 0x53, 0x41, 0x47, 0x45, 0x10, 0x04, 0x12, 0x13, 0x0a,
-	0x0f, 0x4d, 0x45, 0x54, 0x41, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x55, 0x53, 0x41, 0x47, 0x45,
-	0x10, 0x05, 0x2a, 0x1c, 0x0a, 0x08, 0x47, 0x43, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x12, 0x07,
-	0x0a, 0x03, 0x4e, 0x45, 0x57, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x4c, 0x44, 0x10, 0x01,
-	0x32, 0x62, 0x0a, 0x16, 0x4a, 0x56, 0x4d, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x70,
-	0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x48, 0x0a, 0x07, 0x63, 0x6f,
-	0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x22, 0x2e, 0x73, 0x6b, 0x79, 0x77, 0x61, 0x6c, 0x6b, 0x69,
-	0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x56, 0x4d, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x43,
-	0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x93, 0x01, 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, 0x6c, 0x61, 0x6e, 0x67, 0x75,
-	0x61, 0x67, 0x65, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 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, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67,
-	0x65, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2f, 0x76, 0x33, 0xaa, 0x02, 0x1d, 0x53, 0x6b, 0x79,
-	0x57, 0x61, 0x6c, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50,
-	0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x56, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x33,
+	0x65, 0x64, 0x22, 0x5f, 0x0a, 0x02, 0x47, 0x43, 0x12, 0x2f, 0x0a, 0x06, 0x70, 0x68, 0x72, 0x61,
+	0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x73, 0x6b, 0x79, 0x77, 0x61,
+	0x6c, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x43, 0x50, 0x68, 0x72, 0x61, 0x73,
+	0x65, 0x52, 0x06, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75,
+	0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12,
+	0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74,
+	0x69, 0x6d, 0x65, 0x22, 0xda, 0x02, 0x0a, 0x06, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x12, 0x1c,
+	0x0a, 0x09, 0x6c, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x09, 0x6c, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b,
+	0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x0b, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c,
+	0x0a, 0x09, 0x70, 0x65, 0x61, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x09, 0x70, 0x65, 0x61, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x18,
+	0x72, 0x75, 0x6e, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x68, 0x72,
+	0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18,
+	0x72, 0x75, 0x6e, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x68, 0x72,
+	0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x17, 0x62, 0x6c, 0x6f, 0x63,
+	0x6b, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f,
+	0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
+	0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75,
+	0x6e, 0x74, 0x12, 0x38, 0x0a, 0x17, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61,
+	0x74, 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x17, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74,
+	0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x1c,
+	0x74, 0x69, 0x6d, 0x65, 0x64, 0x57, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74,
+	0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x1c, 0x74, 0x69, 0x6d, 0x65, 0x64, 0x57, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67,
+	0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74,
+	0x22, 0xa3, 0x01, 0x0a, 0x05, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x6c, 0x6f,
+	0x61, 0x64, 0x65, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x43, 0x6c, 0x61, 0x73,
+	0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x17, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55,
+	0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e,
+	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x6e,
+	0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74,
+	0x12, 0x34, 0x0a, 0x15, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x43,
+	0x6c, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
+	0x15, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x43, 0x6c, 0x61, 0x73,
+	0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x2a, 0x80, 0x01, 0x0a, 0x08, 0x50, 0x6f, 0x6f, 0x6c, 0x54,
+	0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x41, 0x43, 0x48,
+	0x45, 0x5f, 0x55, 0x53, 0x41, 0x47, 0x45, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x45, 0x57,
+	0x47, 0x45, 0x4e, 0x5f, 0x55, 0x53, 0x41, 0x47, 0x45, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x4f,
+	0x4c, 0x44, 0x47, 0x45, 0x4e, 0x5f, 0x55, 0x53, 0x41, 0x47, 0x45, 0x10, 0x02, 0x12, 0x12, 0x0a,
+	0x0e, 0x53, 0x55, 0x52, 0x56, 0x49, 0x56, 0x4f, 0x52, 0x5f, 0x55, 0x53, 0x41, 0x47, 0x45, 0x10,
+	0x03, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x45, 0x52, 0x4d, 0x47, 0x45, 0x4e, 0x5f, 0x55, 0x53, 0x41,
+	0x47, 0x45, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x45, 0x54, 0x41, 0x53, 0x50, 0x41, 0x43,
+	0x45, 0x5f, 0x55, 0x53, 0x41, 0x47, 0x45, 0x10, 0x05, 0x2a, 0x1c, 0x0a, 0x08, 0x47, 0x43, 0x50,
+	0x68, 0x72, 0x61, 0x73, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x4e, 0x45, 0x57, 0x10, 0x00, 0x12, 0x07,
+	0x0a, 0x03, 0x4f, 0x4c, 0x44, 0x10, 0x01, 0x32, 0x62, 0x0a, 0x16, 0x4a, 0x56, 0x4d, 0x4d, 0x65,
+	0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
+	0x65, 0x12, 0x48, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x22, 0x2e, 0x73,
+	0x6b, 0x79, 0x77, 0x61, 0x6c, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x56, 0x4d,
+	0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+	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, 0x93, 0x01, 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, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74,
+	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,
+	0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2f, 0x76,
+	0x33, 0xaa, 0x02, 0x1d, 0x53, 0x6b, 0x79, 0x57, 0x61, 0x6c, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x4e,
+	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x56,
+	0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
@@ -680,7 +813,7 @@ func file_language_agent_JVMMetric_proto_rawDescGZIP() []byte {
 }
 
 var file_language_agent_JVMMetric_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_language_agent_JVMMetric_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
+var file_language_agent_JVMMetric_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
 var file_language_agent_JVMMetric_proto_goTypes = []interface{}{
 	(PoolType)(0),               // 0: skywalking.v3.PoolType
 	(GCPhrase)(0),               // 1: skywalking.v3.GCPhrase
@@ -690,25 +823,27 @@ var file_language_agent_JVMMetric_proto_goTypes = []interface{}{
 	(*MemoryPool)(nil),          // 5: skywalking.v3.MemoryPool
 	(*GC)(nil),                  // 6: skywalking.v3.GC
 	(*Thread)(nil),              // 7: skywalking.v3.Thread
-	(*v3.CPU)(nil),              // 8: skywalking.v3.CPU
-	(*v3.Commands)(nil),         // 9: skywalking.v3.Commands
+	(*Class)(nil),               // 8: skywalking.v3.Class
+	(*v3.CPU)(nil),              // 9: skywalking.v3.CPU
+	(*v3.Commands)(nil),         // 10: skywalking.v3.Commands
 }
 var file_language_agent_JVMMetric_proto_depIdxs = []int32{
-	3, // 0: skywalking.v3.JVMMetricCollection.metrics:type_name -> skywalking.v3.JVMMetric
-	8, // 1: skywalking.v3.JVMMetric.cpu:type_name -> skywalking.v3.CPU
-	4, // 2: skywalking.v3.JVMMetric.memory:type_name -> skywalking.v3.Memory
-	5, // 3: skywalking.v3.JVMMetric.memoryPool:type_name -> skywalking.v3.MemoryPool
-	6, // 4: skywalking.v3.JVMMetric.gc:type_name -> skywalking.v3.GC
-	7, // 5: skywalking.v3.JVMMetric.thread:type_name -> skywalking.v3.Thread
-	0, // 6: skywalking.v3.MemoryPool.type:type_name -> skywalking.v3.PoolType
-	1, // 7: skywalking.v3.GC.phrase:type_name -> skywalking.v3.GCPhrase
-	2, // 8: skywalking.v3.JVMMetricReportService.collect:input_type -> skywalking.v3.JVMMetricCollection
-	9, // 9: skywalking.v3.JVMMetricReportService.collect:output_type -> skywalking.v3.Commands
-	9, // [9:10] is the sub-list for method output_type
-	8, // [8:9] 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
+	3,  // 0: skywalking.v3.JVMMetricCollection.metrics:type_name -> skywalking.v3.JVMMetric
+	9,  // 1: skywalking.v3.JVMMetric.cpu:type_name -> skywalking.v3.CPU
+	4,  // 2: skywalking.v3.JVMMetric.memory:type_name -> skywalking.v3.Memory
+	5,  // 3: skywalking.v3.JVMMetric.memoryPool:type_name -> skywalking.v3.MemoryPool
+	6,  // 4: skywalking.v3.JVMMetric.gc:type_name -> skywalking.v3.GC
+	7,  // 5: skywalking.v3.JVMMetric.thread:type_name -> skywalking.v3.Thread
+	8,  // 6: skywalking.v3.JVMMetric.clazz:type_name -> skywalking.v3.Class
+	0,  // 7: skywalking.v3.MemoryPool.type:type_name -> skywalking.v3.PoolType
+	1,  // 8: skywalking.v3.GC.phrase:type_name -> skywalking.v3.GCPhrase
+	2,  // 9: skywalking.v3.JVMMetricReportService.collect:input_type -> skywalking.v3.JVMMetricCollection
+	10, // 10: skywalking.v3.JVMMetricReportService.collect:output_type -> skywalking.v3.Commands
+	10, // [10:11] is the sub-list for method output_type
+	9,  // [9:10] is the sub-list for method input_type
+	9,  // [9:9] is the sub-list for extension type_name
+	9,  // [9:9] is the sub-list for extension extendee
+	0,  // [0:9] is the sub-list for field type_name
 }
 
 func init() { file_language_agent_JVMMetric_proto_init() }
@@ -789,6 +924,18 @@ func file_language_agent_JVMMetric_proto_init() {
 				return nil
 			}
 		}
+		file_language_agent_JVMMetric_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Class); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
 	}
 	type x struct{}
 	out := protoimpl.TypeBuilder{
@@ -796,7 +943,7 @@ func file_language_agent_JVMMetric_proto_init() {
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: file_language_agent_JVMMetric_proto_rawDesc,
 			NumEnums:      2,
-			NumMessages:   6,
+			NumMessages:   7,
 			NumExtensions: 0,
 			NumServices:   1,
 		},
diff --git a/collect/servicemesh/v3/service-mesh.pb.go b/collect/servicemesh/v3/service-mesh.pb.go
index cba2e50..6792885 100644
--- a/collect/servicemesh/v3/service-mesh.pb.go
+++ b/collect/servicemesh/v3/service-mesh.pb.go
@@ -43,6 +43,7 @@ type Protocol int32
 const (
 	Protocol_HTTP Protocol = 0
 	Protocol_gRPC Protocol = 1
+	Protocol_TCP  Protocol = 2
 )
 
 // Enum value maps for Protocol.
@@ -50,10 +51,12 @@ var (
 	Protocol_name = map[int32]string{
 		0: "HTTP",
 		1: "gRPC",
+		2: "TCP",
 	}
 	Protocol_value = map[string]int32{
 		"HTTP": 0,
 		"gRPC": 1,
+		"TCP":  2,
 	}
 )
 
@@ -111,6 +114,8 @@ type ServiceMeshMetric struct {
 	// The sidecar/proxy internal error code, the value bases on the implementation.
 	// The envoy internal error codes are listed here, https://www.envoyproxy.io/docs/envoy/latest/api-v2/data/accesslog/v2/accesslog.proto#data-accesslog-v2-responseflags
 	InternalErrorCode string `protobuf:"bytes,14,opt,name=internalErrorCode,proto3" json:"internalErrorCode,omitempty"`
+	// The tcp detail of the mesh metrics if it's a TCP metrics, otherwise should be empty.
+	Tcp *TCPInfo `protobuf:"bytes,15,opt,name=tcp,proto3" json:"tcp,omitempty"`
 }
 
 func (x *ServiceMeshMetric) Reset() {
@@ -243,6 +248,70 @@ func (x *ServiceMeshMetric) GetInternalErrorCode() string {
 	return ""
 }
 
+func (x *ServiceMeshMetric) GetTcp() *TCPInfo {
+	if x != nil {
+		return x.Tcp
+	}
+	return nil
+}
+
+type TCPInfo struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// The received data in bytes
+	ReceivedBytes int64 `protobuf:"varint,1,opt,name=receivedBytes,proto3" json:"receivedBytes,omitempty"`
+	// The sent data in bytes
+	SentBytes int64 `protobuf:"varint,2,opt,name=sentBytes,proto3" json:"sentBytes,omitempty"`
+}
+
+func (x *TCPInfo) Reset() {
+	*x = TCPInfo{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_service_mesh_probe_service_mesh_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *TCPInfo) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TCPInfo) ProtoMessage() {}
+
+func (x *TCPInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_service_mesh_probe_service_mesh_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 TCPInfo.ProtoReflect.Descriptor instead.
+func (*TCPInfo) Descriptor() ([]byte, []int) {
+	return file_service_mesh_probe_service_mesh_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *TCPInfo) GetReceivedBytes() int64 {
+	if x != nil {
+		return x.ReceivedBytes
+	}
+	return 0
+}
+
+func (x *TCPInfo) GetSentBytes() int64 {
+	if x != nil {
+		return x.SentBytes
+	}
+	return 0
+}
+
 type MeshProbeDownstream struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -252,7 +321,7 @@ type MeshProbeDownstream struct {
 func (x *MeshProbeDownstream) Reset() {
 	*x = MeshProbeDownstream{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_service_mesh_probe_service_mesh_proto_msgTypes[1]
+		mi := &file_service_mesh_probe_service_mesh_proto_msgTypes[2]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -265,7 +334,7 @@ func (x *MeshProbeDownstream) String() string {
 func (*MeshProbeDownstream) ProtoMessage() {}
 
 func (x *MeshProbeDownstream) ProtoReflect() protoreflect.Message {
-	mi := &file_service_mesh_probe_service_mesh_proto_msgTypes[1]
+	mi := &file_service_mesh_probe_service_mesh_proto_msgTypes[2]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -278,7 +347,7 @@ func (x *MeshProbeDownstream) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use MeshProbeDownstream.ProtoReflect.Descriptor instead.
 func (*MeshProbeDownstream) Descriptor() ([]byte, []int) {
-	return file_service_mesh_probe_service_mesh_proto_rawDescGZIP(), []int{1}
+	return file_service_mesh_probe_service_mesh_proto_rawDescGZIP(), []int{2}
 }
 
 var File_service_mesh_probe_service_mesh_proto protoreflect.FileDescriptor
@@ -288,7 +357,7 @@ var file_service_mesh_probe_service_mesh_proto_rawDesc = []byte{
 	0x72, 0x6f, 0x62, 0x65, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2d, 0x6d, 0x65, 0x73,
 	0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x73, 0x6b, 0x79, 0x77, 0x61, 0x6c, 0x6b,
 	0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x1a, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x43,
-	0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb8, 0x04, 0x0a, 0x11,
+	0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe2, 0x04, 0x0a, 0x11,
 	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x73, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69,
 	0x63, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01,
 	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12,
@@ -324,27 +393,35 @@ var file_service_mesh_probe_service_mesh_proto_rawDesc = []byte{
 	0x07, 0x74, 0x6c, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x69, 0x6e, 0x74, 0x65,
 	0x72, 0x6e, 0x61, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x0e, 0x20,
 	0x01, 0x28, 0x09, 0x52, 0x11, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x45, 0x72, 0x72,
-	0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x4d, 0x65, 0x73, 0x68, 0x50, 0x72,
-	0x6f, 0x62, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2a, 0x1e, 0x0a,
-	0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54, 0x54,
-	0x50, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x67, 0x52, 0x50, 0x43, 0x10, 0x01, 0x32, 0x6f, 0x0a,
-	0x18, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x73, 0x68, 0x4d, 0x65, 0x74, 0x72,
-	0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x53, 0x0a, 0x07, 0x63, 0x6f, 0x6c,
-	0x6c, 0x65, 0x63, 0x74, 0x12, 0x20, 0x2e, 0x73, 0x6b, 0x79, 0x77, 0x61, 0x6c, 0x6b, 0x69, 0x6e,
-	0x67, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x73, 0x68,
-	0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x1a, 0x22, 0x2e, 0x73, 0x6b, 0x79, 0x77, 0x61, 0x6c, 0x6b,
-	0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x68, 0x50, 0x72, 0x6f, 0x62, 0x65,
-	0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x22, 0x00, 0x28, 0x01, 0x42, 0x8d,
-	0x01, 0x0a, 0x30, 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, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x6d, 0x65, 0x73, 0x68,
-	0x2e, 0x76, 0x33, 0x50, 0x01, 0x5a, 0x37, 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,
-	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x76, 0x33, 0xaa, 0x02,
-	0x1d, 0x53, 0x6b, 0x79, 0x57, 0x61, 0x6c, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x4e, 0x65, 0x74, 0x77,
-	0x6f, 0x72, 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x56, 0x33, 0x62, 0x06,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x28, 0x0a, 0x03, 0x74, 0x63, 0x70, 0x18, 0x0f, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x6b, 0x79, 0x77, 0x61, 0x6c, 0x6b, 0x69, 0x6e, 0x67,
+	0x2e, 0x76, 0x33, 0x2e, 0x54, 0x43, 0x50, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x03, 0x74, 0x63, 0x70,
+	0x22, 0x4d, 0x0a, 0x07, 0x54, 0x43, 0x50, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x0d, 0x72,
+	0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65,
+	0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22,
+	0x15, 0x0a, 0x13, 0x4d, 0x65, 0x73, 0x68, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x44, 0x6f, 0x77, 0x6e,
+	0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2a, 0x27, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63,
+	0x6f, 0x6c, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54, 0x54, 0x50, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04,
+	0x67, 0x52, 0x50, 0x43, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x43, 0x50, 0x10, 0x02, 0x32,
+	0x6f, 0x0a, 0x18, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x73, 0x68, 0x4d, 0x65,
+	0x74, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x53, 0x0a, 0x07, 0x63,
+	0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x20, 0x2e, 0x73, 0x6b, 0x79, 0x77, 0x61, 0x6c, 0x6b,
+	0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65,
+	0x73, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x1a, 0x22, 0x2e, 0x73, 0x6b, 0x79, 0x77, 0x61,
+	0x6c, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x68, 0x50, 0x72, 0x6f,
+	0x62, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x22, 0x00, 0x28, 0x01,
+	0x42, 0x8d, 0x01, 0x0a, 0x30, 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, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x6d, 0x65,
+	0x73, 0x68, 0x2e, 0x76, 0x33, 0x50, 0x01, 0x5a, 0x37, 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, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x76, 0x33,
+	0xaa, 0x02, 0x1d, 0x53, 0x6b, 0x79, 0x57, 0x61, 0x6c, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x4e, 0x65,
+	0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x56, 0x33,
+	0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
@@ -360,23 +437,25 @@ func file_service_mesh_probe_service_mesh_proto_rawDescGZIP() []byte {
 }
 
 var file_service_mesh_probe_service_mesh_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_service_mesh_probe_service_mesh_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_service_mesh_probe_service_mesh_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
 var file_service_mesh_probe_service_mesh_proto_goTypes = []interface{}{
 	(Protocol)(0),               // 0: skywalking.v3.Protocol
 	(*ServiceMeshMetric)(nil),   // 1: skywalking.v3.ServiceMeshMetric
-	(*MeshProbeDownstream)(nil), // 2: skywalking.v3.MeshProbeDownstream
-	(v3.DetectPoint)(0),         // 3: skywalking.v3.DetectPoint
+	(*TCPInfo)(nil),             // 2: skywalking.v3.TCPInfo
+	(*MeshProbeDownstream)(nil), // 3: skywalking.v3.MeshProbeDownstream
+	(v3.DetectPoint)(0),         // 4: skywalking.v3.DetectPoint
 }
 var file_service_mesh_probe_service_mesh_proto_depIdxs = []int32{
 	0, // 0: skywalking.v3.ServiceMeshMetric.protocol:type_name -> skywalking.v3.Protocol
-	3, // 1: skywalking.v3.ServiceMeshMetric.detectPoint:type_name -> skywalking.v3.DetectPoint
-	1, // 2: skywalking.v3.ServiceMeshMetricService.collect:input_type -> skywalking.v3.ServiceMeshMetric
-	2, // 3: skywalking.v3.ServiceMeshMetricService.collect:output_type -> skywalking.v3.MeshProbeDownstream
-	3, // [3:4] is the sub-list for method output_type
-	2, // [2:3] is the sub-list for method input_type
-	2, // [2:2] is the sub-list for extension type_name
-	2, // [2:2] is the sub-list for extension extendee
-	0, // [0:2] is the sub-list for field type_name
+	4, // 1: skywalking.v3.ServiceMeshMetric.detectPoint:type_name -> skywalking.v3.DetectPoint
+	2, // 2: skywalking.v3.ServiceMeshMetric.tcp:type_name -> skywalking.v3.TCPInfo
+	1, // 3: skywalking.v3.ServiceMeshMetricService.collect:input_type -> skywalking.v3.ServiceMeshMetric
+	3, // 4: skywalking.v3.ServiceMeshMetricService.collect:output_type -> skywalking.v3.MeshProbeDownstream
+	4, // [4:5] is the sub-list for method output_type
+	3, // [3:4] is the sub-list for method input_type
+	3, // [3:3] is the sub-list for extension type_name
+	3, // [3:3] is the sub-list for extension extendee
+	0, // [0:3] is the sub-list for field type_name
 }
 
 func init() { file_service_mesh_probe_service_mesh_proto_init() }
@@ -398,6 +477,18 @@ func file_service_mesh_probe_service_mesh_proto_init() {
 			}
 		}
 		file_service_mesh_probe_service_mesh_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TCPInfo); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_service_mesh_probe_service_mesh_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*MeshProbeDownstream); i {
 			case 0:
 				return &v.state
@@ -416,7 +507,7 @@ func file_service_mesh_probe_service_mesh_proto_init() {
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: file_service_mesh_probe_service_mesh_proto_rawDesc,
 			NumEnums:      1,
-			NumMessages:   2,
+			NumMessages:   3,
 			NumExtensions: 0,
 			NumServices:   1,
 		},
diff --git a/dependencies.sh b/dependencies.sh
index 9eb4b83..d7120c8 100644
--- a/dependencies.sh
+++ b/dependencies.sh
@@ -17,5 +17,5 @@
 # specific language governing permissions and limitations
 # under the License.
 
-export COLLECT_PROTOCOL_SHA=743f33119dc5621ae98b596eb8b131dd443445c7
+export COLLECT_PROTOCOL_SHA=e626ee04850703c220f64b642d2893fa65572943
 export QUERY_PROTOCOL_SHA=42d6783d8c1a0d0d4c2b28e58dc1f47dd554964e
diff --git a/go.mod b/go.mod
index b8390ac..765432c 100644
--- a/go.mod
+++ b/go.mod
@@ -6,5 +6,5 @@ require (
 	golang.org/x/net v0.0.0-20190620200207-3b0461eec859 // indirect
 	golang.org/x/sys v0.0.0-20200116001909-b77594299b42 // indirect
 	google.golang.org/grpc v1.38.0
-	google.golang.org/protobuf v1.27.0
+	google.golang.org/protobuf v1.27.1
 )
diff --git a/go.sum b/go.sum
index 2a839ca..ebed216 100644
--- a/go.sum
+++ b/go.sum
@@ -82,8 +82,8 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
 google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
 google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
-google.golang.org/protobuf v1.27.0 h1:KhgSLlr/moiqjv0qUsSnLvdUL7NH7PHW8aZGn7Jpjko=
-google.golang.org/protobuf v1.27.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
+google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=