Documentation
¶
Overview ¶
Package conndump 提供通用的流量 dump 的功能
Index ¶
- Variables
- func Scan(rd io.Reader, fn func(msg *Message) bool) error
- type ChanScanner
- type Dumper
- func (d *Dumper) ClientConnInterceptor() *fsconn.Interceptor
- func (d *Dumper) DumpAll(enable bool)
- func (d *Dumper) DumpAllClientRead(enable bool)
- func (d *Dumper) DumpAllClientWrite(enable bool)
- func (d *Dumper) DumpAllServerRead(enable bool)
- func (d *Dumper) DumpAllServerWrite(enable bool)
- func (d *Dumper) DumpClientRead(name string, enable bool)
- func (d *Dumper) DumpClientWrite(name string, enable bool)
- func (d *Dumper) DumpServerRead(name string, enable bool)
- func (d *Dumper) DumpServerWrite(name string, enable bool)
- func (d *Dumper) ServerConnInterceptor() *fsconn.Interceptor
- func (d *Dumper) Stop()
- func (d *Dumper) WrapListener(name string, l net.Listener) net.Listener
- type Message
- func (*Message) Descriptor() ([]byte, []int)deprecated
- func (x *Message) GetAction() MessageAction
- func (x *Message) GetAddr() string
- func (x *Message) GetConnID() int64
- func (x *Message) GetID() int64
- func (x *Message) GetPayload() []byte
- func (x *Message) GetService() string
- func (x *Message) GetSubID() int64
- func (x *Message) GetTime() *timestamppb.Timestamp
- func (*Message) ProtoMessage()
- func (x *Message) ProtoReflect() protoreflect.Message
- func (x *Message) Reset()
- func (x *Message) String() string
- type MessageAction
- func (MessageAction) Descriptor() protoreflect.EnumDescriptor
- func (x MessageAction) Enum() *MessageAction
- func (MessageAction) EnumDescriptor() ([]byte, []int)deprecated
- func (x MessageAction) Number() protoreflect.EnumNumber
- func (x MessageAction) String() string
- func (MessageAction) Type() protoreflect.EnumType
Constants ¶
This section is empty.
Variables ¶
var ( MessageAction_name = map[int32]string{ 0: "Unknown", 1: "Read", 2: "Write", 3: "Close", } MessageAction_value = map[string]int32{ "Unknown": 0, "Read": 1, "Write": 2, "Close": 3, } )
Enum value maps for MessageAction.
var File_message_proto protoreflect.FileDescriptor
Functions ¶
Types ¶
type ChanScanner ¶
type ChanScanner struct { // Filter 可选,消息过滤器,若返回 false,则这条消息忽略掉 Filter func(msg *Message) bool // Receiver 必填,接收消息 channel 的回调,此 channel 内的消息是同一个网络连接内 Receiver func(<-chan *Message) bool // Timeout 可选,Message 消息超时时间 // 若有较多不完整的消息,可以配置该参数 // 若一条消息有 Read 或者 Write,但是超过 Timeout 没有 Close,则将此消息的 channel 关闭 // 默认为 0-不检查超时情况 Timeout time.Duration // contains filtered or unexported fields }
ChanScanner 将有多个连接(ConnID)的数据流按照同一个连接分组筛选输出
比如数据流里的数据是: conn1.ReadData、conn1.ReadData、conn2.ReadData、conn1.ReadData、conn1.CLose、conn2.CLose 最终输出为: 数据流 1:conn1.ReadData、conn1.ReadData、conn1.ReadData、conn1.CLose 数据流 2:conn2.ReadData、conn2.CLose
type Dumper ¶
type Dumper struct { // RotatorConfig 可选,用于配置 dump 的 Rotator RotatorConfig func(client bool, r *fsfs.Rotator) // DataDir 数据存放目录,可选 DataDir string // contains filtered or unexported fields }
Dumper 流量 dump
func (*Dumper) ClientConnInterceptor ¶
func (d *Dumper) ClientConnInterceptor() *fsconn.Interceptor
ClientConnInterceptor 返回 client 的 conn Interceptor
func (*Dumper) DumpAllClientRead ¶
DumpAllClientRead 设置所有的 client 是否允许 dump Read 的数据
func (*Dumper) DumpAllClientWrite ¶
DumpAllClientWrite 设置所有的 client 是否允许 dump Write 的数据
func (*Dumper) DumpAllServerRead ¶
DumpAllServerRead 设置所有 server 是否都允许 dump Read 的数据
func (*Dumper) DumpAllServerWrite ¶
DumpAllServerWrite 设置所有 server 是否都允许 dump Write 的数据
func (*Dumper) DumpClientRead ¶
DumpClientRead 设置是否允许 dump Read 的数据
func (*Dumper) DumpClientWrite ¶
DumpClientWrite 设置是否允许 dump Write 的数据
func (*Dumper) DumpServerRead ¶
DumpServerRead 设置所有 server 是否都允许 dump Read 的数据
func (*Dumper) DumpServerWrite ¶
DumpServerWrite 设置所有 server 是否都允许 dump Write 的数据
func (*Dumper) ServerConnInterceptor ¶
func (d *Dumper) ServerConnInterceptor() *fsconn.Interceptor
ServerConnInterceptor 返回 server 的 conn Interceptor
对于 server,建议使用 WrapListener 方法,而不是直接使用这个方法
type Message ¶
type Message struct { // 消息 ID,累计递增 ID int64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` // 消息行为类型 Action MessageAction `protobuf:"varint,2,opt,name=Action,proto3,enum=conndump.MessageAction" json:"Action,omitempty"` // 所属服务的名称 Service string `protobuf:"bytes,3,opt,name=Service,proto3" json:"Service,omitempty"` // 连接(net.Conn) ID,用于区分是否同一个数据流 ConnID int64 `protobuf:"varint,4,opt,name=ConnID,proto3" json:"ConnID,omitempty"` // 消息 iD,同一个 ConnID 内,依次递增 SubID int64 `protobuf:"varint,5,opt,name=SubID,proto3" json:"SubID,omitempty"` // 消息的目的地址 Addr string `protobuf:"bytes,6,opt,name=Addr,proto3" json:"Addr,omitempty"` // 消息的时间,UnixNano Time *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=Time,proto3" json:"Time,omitempty"` // 消息内容 Payload []byte `protobuf:"bytes,8,opt,name=Payload,proto3" json:"Payload,omitempty"` // contains filtered or unexported fields }
Message net.Conn 一次读写(调用一次 Read 或者 Write 方法)的内容
func (*Message) Descriptor
deprecated
func (*Message) GetAction ¶
func (x *Message) GetAction() MessageAction
func (*Message) GetPayload ¶
func (*Message) GetService ¶
func (*Message) GetTime ¶
func (x *Message) GetTime() *timestamppb.Timestamp
func (*Message) ProtoMessage ¶
func (*Message) ProtoMessage()
func (*Message) ProtoReflect ¶
func (x *Message) ProtoReflect() protoreflect.Message
type MessageAction ¶
type MessageAction int32
MessageAction 消息类型
const ( MessageAction_Unknown MessageAction = 0 // 调用 Read 方法的行为 MessageAction_Read MessageAction = 1 // 调用 Write 方法的行为 MessageAction_Write MessageAction = 2 // 调用 Close 方法的行为 MessageAction_Close MessageAction = 3 )
func (MessageAction) Descriptor ¶
func (MessageAction) Descriptor() protoreflect.EnumDescriptor
func (MessageAction) Enum ¶
func (x MessageAction) Enum() *MessageAction
func (MessageAction) EnumDescriptor
deprecated
func (MessageAction) EnumDescriptor() ([]byte, []int)
Deprecated: Use MessageAction.Descriptor instead.
func (MessageAction) Number ¶
func (x MessageAction) Number() protoreflect.EnumNumber
func (MessageAction) String ¶
func (x MessageAction) String() string
func (MessageAction) Type ¶
func (MessageAction) Type() protoreflect.EnumType