package stats
import "google.golang.org/grpc/stats"
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 HandleConn(ctx context.Context, s ConnStats)
- func HandleRPC(ctx context.Context, s RPCStats)
- func On() bool
- func RegisterConnHandler(f func(context.Context, ConnStats))
- func RegisterConnTagger(t func(context.Context, *ConnTagInfo) context.Context)
- func RegisterRPCHandler(f func(context.Context, RPCStats))
- func RegisterRPCTagger(t func(context.Context, *RPCTagInfo) context.Context)
- func Start()
- func Stop()
- func TagConn(ctx context.Context, info *ConnTagInfo) context.Context
- func TagRPC(ctx context.Context, info *RPCTagInfo) context.Context
- type Begin
- type ConnBegin
- type ConnEnd
- type ConnStats
- type ConnTagInfo
- type End
- type InHeader
- type InPayload
- type InTrailer
- type OutHeader
- type OutPayload
- type OutTrailer
- type RPCStats
- type RPCTagInfo
Functions ¶
func HandleConn ¶
HandleConn processes the stats using the call back function registered by user.
func HandleRPC ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
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.
Source Files ¶
handlers.go stats.go
Directories ¶
Path | Synopsis |
---|---|
stats/grpc_testing | Package grpc_testing is a generated protocol buffer package. |
- Version
- v1.0.5
- Published
- Dec 2, 2016
- Platform
- linux/amd64
- Imports
- 5 packages
- Last checked
- 52 minutes ago –
Tools for package owners.