Documentation
¶
Overview ¶
Package stats is for collecting and reporting various network and RPC stats. This package is for monitoring purpose only. All fields are read-only. All APIs are experimental.
Index ¶
- func OutgoingTags(ctx context.Context) []byte
- func OutgoingTrace(ctx context.Context) []byte
- func SetIncomingTags(ctx context.Context, b []byte) context.Context
- func SetIncomingTrace(ctx context.Context, b []byte) context.Context
- func SetTags(ctx context.Context, b []byte) context.Context
- func SetTrace(ctx context.Context, b []byte) context.Context
- func Tags(ctx context.Context) []byte
- func Trace(ctx context.Context) []byte
- type Begin
- type ConnBegin
- type ConnEnd
- type ConnStats
- type ConnTagInfo
- type End
- type Handler
- type InHeader
- type InPayload
- type InTrailer
- type OutHeader
- type OutPayload
- type OutTrailer
- type RPCStats
- type RPCTagInfo
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func OutgoingTags ¶ added in v1.6.0
OutgoingTags returns the tags from the context for the outbound RPC.
This is intended for gRPC-internal use ONLY.
func OutgoingTrace ¶ added in v1.6.0
OutgoingTrace returns the trace from the context for the outbound RPC. It is intended for gRPC-internal use.
func SetIncomingTags ¶ added in v1.6.0
SetIncomingTags attaches stats tagging data to the context, to be read by the application (not sent in outgoing RPCs).
This is intended for gRPC-internal use ONLY.
func SetIncomingTrace ¶ added in v1.6.0
SetIncomingTrace attaches stats tagging data to the context, to be read by the application (not sent in outgoing RPCs). It is intended for gRPC-internal use.
func SetTags ¶ added in v1.6.0
SetTags attaches stats tagging data to the context, which will be sent in the outgoing RPC with the header grpc-tags-bin. Subsequent calls to SetTags will overwrite the values from earlier calls.
NOTE: this is provided only for backward compatibility with existing clients and will likely be removed in an upcoming release. New uses should transmit this type of data using metadata with a different, non-reserved (i.e. does not begin with "grpc-") header name.
func SetTrace ¶ added in v1.6.0
SetTrace attaches stats tagging data to the context, which will be sent in the outgoing RPC with the header grpc-trace-bin. Subsequent calls to SetTrace will overwrite the values from earlier calls.
NOTE: this is provided only for backward compatibility with existing clients and will likely be removed in an upcoming release. New uses should transmit this type of data using metadata with a different, non-reserved (i.e. does not begin with "grpc-") header name.
func Tags ¶ added in v1.6.0
Tags returns the tags from the context for the inbound RPC.
NOTE: this is provided only for backward compatibility with existing clients and will likely be removed in an upcoming release. New uses should transmit this type of data using metadata with a different, non-reserved (i.e. does not begin with "grpc-") header name.
func Trace ¶ added in v1.6.0
Trace returns the trace from the context for the inbound RPC.
NOTE: this is provided only for backward compatibility with existing clients and will likely be removed in an upcoming release. New uses should transmit this type of data using metadata with a different, non-reserved (i.e. does not begin with "grpc-") header name.
Types ¶
type Begin ¶
type Begin struct {
// Client is true if this Begin is from client side.
Client bool
// BeginTime is the time when the RPC begins.
BeginTime time.Time
// FailFast indicates if this RPC is failfast.
FailFast bool
}
Begin contains stats when an RPC begins. FailFast is only valid if this Begin is from client side.
type ConnBegin ¶
type ConnBegin struct {
// Client is true if this ConnBegin is from client side.
Client bool
}
ConnBegin contains the stats of a connection when it is established.
type ConnEnd ¶
type ConnEnd struct {
// Client is true if this ConnEnd is from client side.
Client bool
}
ConnEnd contains the stats of a connection when it ends.
type ConnStats ¶
type ConnStats interface {
// IsClient returns true if this ConnStats is from client side.
IsClient() bool
// contains filtered or unexported methods
}
ConnStats contains stats information about connections.
type ConnTagInfo ¶
type ConnTagInfo struct {
// RemoteAddr is the remote address of the corresponding connection.
RemoteAddr net.Addr
// LocalAddr is the local address of the corresponding connection.
LocalAddr net.Addr
}
ConnTagInfo defines the relevant information needed by connection context tagger.
type End ¶
type End struct {
// Client is true if this End is from client side.
Client bool
// BeginTime is the time when the RPC began.
BeginTime time.Time
// EndTime is the time when the RPC ends.
EndTime time.Time
// Error is the error the RPC ended with. It is an error generated from
// status.Status and can be converted back to status.Status using
// status.FromError if non-nil.
Error error
}
End contains stats when an RPC ends.
type Handler ¶ added in v1.2.0
type Handler interface {
// TagRPC can attach some information to the given context.
// The context used for the rest lifetime of the RPC will be derived from
// the returned context.
TagRPC(context.Context, *RPCTagInfo) context.Context
// HandleRPC processes the RPC stats.
HandleRPC(context.Context, RPCStats)
// TagConn can attach some information to the given context.
// The returned context will be used for stats handling.
// For conn stats handling, the context used in HandleConn for this
// connection will be derived from the context returned.
// For RPC stats handling,
// - On server side, the context used in HandleRPC for all RPCs on this
// connection will be derived from the context returned.
// - On client side, the context is not derived from the context returned.
TagConn(context.Context, *ConnTagInfo) context.Context
// HandleConn processes the Conn stats.
HandleConn(context.Context, ConnStats)
}
Handler defines the interface for the related stats handling (e.g., RPCs, connections).
type InHeader ¶
type InHeader struct {
// Client is true if this InHeader is from client side.
Client bool
// WireLength is the wire length of header.
WireLength int
// The following fields are valid only if Client is false.
// FullMethod is the full RPC method string, i.e., /package.service/method.
FullMethod string
// RemoteAddr is the remote address of the corresponding connection.
RemoteAddr net.Addr
// LocalAddr is the local address of the corresponding connection.
LocalAddr net.Addr
// Compression is the compression algorithm used for the RPC.
Compression string
}
InHeader contains stats when a header is received.
type InPayload ¶
type InPayload struct {
// Client is true if this InPayload is from client side.
Client bool
// Payload is the payload with original type.
Payload interface{}
// Data is the serialized message payload.
Data []byte
// Length is the length of uncompressed data.
Length int
// WireLength is the length of data on wire (compressed, signed, encrypted).
WireLength int
// RecvTime is the time when the payload is received.
RecvTime time.Time
}
InPayload contains the information for an incoming payload.
type InTrailer ¶
type InTrailer struct {
// Client is true if this InTrailer is from client side.
Client bool
// WireLength is the wire length of trailer.
WireLength int
}
InTrailer contains stats when a trailer is received.
type OutHeader ¶
type OutHeader struct {
// Client is true if this OutHeader is from client side.
Client bool
// The following fields are valid only if Client is true.
// FullMethod is the full RPC method string, i.e., /package.service/method.
FullMethod string
// RemoteAddr is the remote address of the corresponding connection.
RemoteAddr net.Addr
// LocalAddr is the local address of the corresponding connection.
LocalAddr net.Addr
// Compression is the compression algorithm used for the RPC.
Compression string
}
OutHeader contains stats when a header is sent.
type OutPayload ¶
type OutPayload struct {
// Client is true if this OutPayload is from client side.
Client bool
// Payload is the payload with original type.
Payload interface{}
// Data is the serialized message payload.
Data []byte
// Length is the length of uncompressed data.
Length int
// WireLength is the length of data on wire (compressed, signed, encrypted).
WireLength int
// SentTime is the time when the payload is sent.
SentTime time.Time
}
OutPayload contains the information for an outgoing payload.
func (*OutPayload) IsClient ¶
func (s *OutPayload) IsClient() bool
IsClient indicates if this stats information is from client side.
type OutTrailer ¶
type OutTrailer struct {
// Client is true if this OutTrailer is from client side.
Client bool
// WireLength is the wire length of trailer.
WireLength int
}
OutTrailer contains stats when a trailer is sent.
func (*OutTrailer) IsClient ¶
func (s *OutTrailer) IsClient() bool
IsClient indicates if this stats information is from client side.
type RPCStats ¶
type RPCStats interface {
// IsClient returns true if this RPCStats is from client side.
IsClient() bool
// contains filtered or unexported methods
}
RPCStats contains stats information about RPCs.
type RPCTagInfo ¶
type RPCTagInfo struct {
// FullMethodName is the RPC method in the format of /package.service/method.
FullMethodName string
// FailFast indicates if this RPC is failfast.
// This field is only valid on client side, it's always false on server side.
FailFast bool
}
RPCTagInfo defines the relevant information needed by RPC context tagger.