stats

package
v1.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 2, 2016 License: BSD-3-Clause Imports: 5 Imported by: 0

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

Constants

This section is empty.

Variables

This section is empty.

Functions

func HandleConn

func HandleConn(ctx context.Context, s ConnStats)

HandleConn processes the stats using the call back function registered by user.

func HandleRPC

func HandleRPC(ctx context.Context, s RPCStats)

HandleRPC processes the RPC stats using the rpc handler registered by the user.

func On

func On() bool

On indicates whether the stats collection and processing is on.

func RegisterConnHandler

func RegisterConnHandler(f func(context.Context, ConnStats))

RegisterConnHandler registers the user handler function for conn stats. It should be called only once. The later call will overwrite the former value if it is called multiple times. This handler function will be called to process the conn stats.

func RegisterConnTagger

func RegisterConnTagger(t func(context.Context, *ConnTagInfo) context.Context)

RegisterConnTagger registers the user connection context tagger function. The connection context tagger 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 connHandler for this connection will be derived from the context returned. For RPC stats handling,

  • On server side, the context used in rpcHandler 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.

func RegisterRPCHandler

func RegisterRPCHandler(f func(context.Context, RPCStats))

RegisterRPCHandler registers the user handler function for RPC stats processing. It should be called only once. The later call will overwrite the former value if it is called multiple times. This handler function will be called to process the rpc stats.

func RegisterRPCTagger

func RegisterRPCTagger(t func(context.Context, *RPCTagInfo) context.Context)

RegisterRPCTagger registers the user RPC context tagger function. The RPC context tagger can attach some information to the given context. The context used in stats rpcHandler for this RPC will be derived from the context returned.

func Start

func Start()

Start starts the stats collection and processing if there is a registered stats handle.

func Stop

func Stop()

Stop stops the stats collection and processing. Stop does not unregister the handlers.

func TagConn

func TagConn(ctx context.Context, info *ConnTagInfo) context.Context

TagConn calls user registered connection context tagger.

func TagRPC

func TagRPC(ctx context.Context, info *RPCTagInfo) context.Context

TagRPC calls the user registered RPC context tagger.

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 are only valid if Client is true.

func (*Begin) IsClient

func (s *Begin) IsClient() bool

IsClient indicates if this 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.

func (*ConnBegin) IsClient

func (s *ConnBegin) IsClient() bool

IsClient indicates if this is from client side.

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.

func (*ConnEnd) IsClient

func (s *ConnEnd) IsClient() bool

IsClient indicates if this is from client side.

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
	// EndTime is the time when the RPC ends.
	EndTime time.Time
	// Error is the error just happened. Its type is gRPC error.
	Error error
}

End contains stats when an RPC ends.

func (*End) IsClient

func (s *End) IsClient() bool

IsClient indicates if this is from client side.

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

	// 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. FullMethod, addresses and Compression are only valid if Client is false.

func (*InHeader) IsClient

func (s *InHeader) IsClient() bool

IsClient indicates if this is from client side.

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.

func (*InPayload) IsClient

func (s *InPayload) IsClient() bool

IsClient indicates if this is from client side.

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.

func (*InTrailer) IsClient

func (s *InTrailer) IsClient() bool

IsClient indicates if this is from client side.

type OutHeader

type OutHeader struct {
	// Client is true if this OutHeader is from client side.
	Client bool
	// WireLength is the wire length of header.
	WireLength int

	// 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. FullMethod, addresses and Compression are only valid if Client is true.

func (*OutHeader) IsClient

func (s *OutHeader) IsClient() bool

IsClient indicates if this is from client side.

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 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 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
}

RPCTagInfo defines the relevant information needed by RPC context tagger.

Directories

Path Synopsis
Package grpc_testing is a generated protocol buffer package.
Package grpc_testing is a generated protocol buffer package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL