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 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 MetricSet
- func NewMetricSet(metricNames ...string) *MetricSet
- func (m *MetricSet) Add(metricNames ...string) *MetricSet
- func (m *MetricSet) Join(metrics *MetricSet) *MetricSet
- func (m *MetricSet) Metrics() map[string]bool
- func (m *MetricSet) Remove(metricNames ...string) *MetricSet
- type OutHeader
- type OutPayload
- type OutTrailer
- type PickerUpdated
- type RPCStats
- type RPCTagInfo
Functions ¶
func SetTags ¶
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.
Deprecated: set the `grpc-tags-bin` header in the metadata instead.
func SetTrace ¶
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.
Deprecated: set the `grpc-trace-bin` header in the metadata instead.
func Tags ¶
Tags returns the tags from the context for the inbound RPC.
Deprecated: obtain the `grpc-tags-bin` header from metadata instead.
func Trace ¶
Trace returns the trace from the context for the inbound RPC.
Deprecated: obtain the `grpc-trace-bin` header from metadata instead.
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 attempt begins. BeginTime time.Time // FailFast indicates if this RPC is failfast. FailFast bool // IsClientStream indicates whether the RPC is a client streaming RPC. IsClientStream bool // IsServerStream indicates whether the RPC is a server streaming RPC. IsServerStream bool // IsTransparentRetryAttempt indicates whether this attempt was initiated // due to transparently retrying a previous attempt. IsTransparentRetryAttempt bool }
Begin contains stats when an RPC attempt begins. FailFast is only valid if this Begin is from client side.
func (*Begin) IsClient ¶
IsClient indicates if the stats information 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 // BeginTime is the time when the RPC began. BeginTime time.Time // EndTime is the time when the RPC ends. EndTime time.Time // Trailer contains the trailer metadata received from the server. This // field is only valid if this End is from the client side. // Deprecated: use Trailer in InTrailer instead. Trailer metadata.MD // 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.
func (*End) IsClient ¶
IsClient indicates if this is from client side.
type Handler ¶
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 // Compression is the compression algorithm used for the RPC. Compression string // Header contains the header metadata received. Header metadata.MD // 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 }
InHeader contains stats when a header is received.
func (*InHeader) IsClient ¶
IsClient indicates if the stats information 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. This may be modified after // the call to HandleRPC which provides the InPayload returns and must be // copied if needed later. Payload any // Length is the size of the uncompressed payload data. Does not include any // framing (gRPC or HTTP/2). Length int // CompressedLength is the size of the compressed payload data. Does not // include any framing (gRPC or HTTP/2). Same as Length if compression not // enabled. CompressedLength int // WireLength is the size of the compressed payload data plus gRPC framing. // Does not include HTTP/2 framing. 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 the stats information 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 // Trailer contains the trailer metadata received from the server. This // field is only valid if this InTrailer is from the client side. Trailer metadata.MD }
InTrailer contains stats when a trailer is received.
func (*InTrailer) IsClient ¶
IsClient indicates if the stats information is from client side.
type MetricSet ¶
type MetricSet struct {
// contains filtered or unexported fields
}
MetricSet is a set of metrics to record. Once created, MetricSet is immutable, however Add and Remove can make copies with specific metrics added or removed, respectively.
Do not construct directly; use NewMetricSet instead.
func NewMetricSet ¶
NewMetricSet returns a MetricSet containing metricNames.
func (*MetricSet) Add ¶
Add adds the metricNames to the metrics set and returns a new copy with the additional metrics.
func (*MetricSet) Join ¶
Join joins the metrics passed in with the metrics set, and returns a new copy with the merged metrics.
func (*MetricSet) Metrics ¶
Metrics returns the metrics set. The returned map is read-only and must not be modified.
func (*MetricSet) Remove ¶
Remove removes the metricNames from the metrics set and returns a new copy with the metrics removed.
type OutHeader ¶
type OutHeader struct { // Client is true if this OutHeader is from client side. Client bool // Compression is the compression algorithm used for the RPC. Compression string // Header contains the header metadata sent. Header metadata.MD // 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 }
OutHeader contains stats when a header is sent.
func (*OutHeader) IsClient ¶
IsClient indicates if this stats information 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. This may be modified after // the call to HandleRPC which provides the OutPayload returns and must be // copied if needed later. Payload any // Length is the size of the uncompressed payload data. Does not include any // framing (gRPC or HTTP/2). Length int // CompressedLength is the size of the compressed payload data. Does not // include any framing (gRPC or HTTP/2). Same as Length if compression not // enabled. CompressedLength int // WireLength is the size of the compressed payload data plus gRPC framing. // Does not include HTTP/2 framing. 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. // // Deprecated: This field is never set. The length is not known when this message is // emitted because the trailer fields are compressed with hpack after that. WireLength int // Trailer contains the trailer metadata sent to the client. This // field is only valid if this OutTrailer is from the server side. Trailer metadata.MD }
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 PickerUpdated ¶
type PickerUpdated struct{}
PickerUpdated indicates that the LB policy provided a new picker while the RPC was waiting for one.
func (*PickerUpdated) IsClient ¶
func (*PickerUpdated) IsClient() bool
IsClient indicates if the stats information is from client side. Only Client Side interfaces with a Picker, thus always returns true.
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.
Source Files ¶
handlers.go metrics.go stats.go
Directories ¶
Path | Synopsis |
---|---|
stats/opentelemetry | Package opentelemetry implements opentelemetry instrumentation code for gRPC-Go clients and servers. |
stats/opentelemetry/csm | Package csm contains utilities for Google Cloud Service Mesh observability. |
stats/opentelemetry/internal | Package internal defines the PluginOption interface. |
- Version
- v1.70.0 (latest)
- Published
- Jan 23, 2025
- Platform
- linux/amd64
- Imports
- 5 packages
- Last checked
- 17 hours ago –
Tools for package owners.