package channelz

Import Path
	google.golang.org/grpc/internal/channelz (on go.dev)

Dependency Relation
	imports 9 packages, and imported by 3 packages

Involved Source Files Package channelz defines APIs for enabling channelz service, entry registration/deletion, and accessing channelz data. It also defines channelz metric struct formats. All APIs in this package are experimental. logging.go types.go types_nonlinux.go util_nonlinux.go
Package-Level Type Names (total 30, in which 16 are exported)
/* sort exporteds by: | */
Channel is the interface that should be satisfied in order to be tracked by channelz as Channel or SubChannel. ( T) ChannelzMetric() *ChannelInternalMetric func RegisterChannel(c Channel, pid int64, ref string) int64 func RegisterSubChannel(c Channel, pid int64, ref string) int64
ChannelInternalMetric defines the struct that the implementor of Channel interface should return from ChannelzMetric(). The number of calls that have a completed with a non-OK status. The number of calls started on the channel. The number of calls that have completed with an OK status. The last time a call was started on the channel. current connectivity state of the channel. The target this channel originally tried to connect to. May be absent func Channel.ChannelzMetric() *ChannelInternalMetric
ChannelMetric defines the info channelz provides for a specific Channel, which includes ChannelInternalMetric and channelz-specific data, such as channelz id, child list, etc. ChannelData contains channel internal metric reported by the channel through ChannelzMetric(). ID is the channelz id of this channel. NestedChans tracks the nested channel type children of this channel in the format of a map from nested channel channelz id to corresponding reference string. RefName is the human readable reference string of this channel. Sockets tracks the socket type children of this channel in the format of a map from socket channelz id to corresponding reference string. Note current grpc implementation doesn't allow channel having sockets directly, therefore, this is field is unused. SubChans tracks the subchannel type children of this channel in the format of a map from subchannel channelz id to corresponding reference string. Trace contains the most recent traced events. func GetChannel(id int64) *ChannelMetric func GetTopChannels(id int64, maxResults int64) ([]*ChannelMetric, bool)
ChannelTrace stores traced events on a channel/subchannel and related info. CreationTime is the creation time of the trace. EventNum is the number of events that ever got traced (i.e. including those that have been deleted) Events stores the most recent trace events (up to $maxTraceEntry, newer event will overwrite the oldest one)
RefChannelType is the type of the entity being referenced in a trace event. const RefChannel const RefSubChannel
Server is the interface to be satisfied in order to be tracked by channelz as Server. ( T) ChannelzMetric() *ServerInternalMetric func RegisterServer(s Server, ref string) int64
ServerInternalMetric defines the struct that the implementor of Server interface should return from ChannelzMetric(). The number of incoming calls that have a completed with a non-OK status. The number of incoming calls started on the server. The number of incoming calls that have completed with an OK status. The last time a call was started on the server. func Server.ChannelzMetric() *ServerInternalMetric
ServerMetric defines the info channelz provides for a specific Server, which includes ServerInternalMetric and channelz-specific data, such as channelz id, child list, etc. ID is the channelz id of this server. ListenSockets tracks the listener socket type children of this server in the format of a map from socket channelz id to corresponding reference string. RefName is the human readable reference string of this server. ServerData contains server internal metric reported by the server through ChannelzMetric(). func GetServer(id int64) *ServerMetric func GetServers(id int64, maxResults int64) ([]*ServerMetric, bool)
Severity is the severity level of a trace event. The canonical enumeration of all valid values is here: https://github.com/grpc/grpc-proto/blob/9b13d199cc0d4703c7ea26c9c330ba695866eb23/grpc/channelz/v1/channelz.proto#L126. const CtError const CtINFO const CtUNKNOWN const CtWarning
Socket is the interface that should be satisfied in order to be tracked by channelz as Socket. ( T) ChannelzMetric() *SocketInternalMetric func RegisterListenSocket(s Socket, pid int64, ref string) int64 func RegisterNormalSocket(s Socket, pid int64, ref string) int64
SocketInternalMetric defines the struct that the implementor of Socket interface should return from ChannelzMetric(). The number of keep alives sent. This is typically implemented with HTTP/2 ping messages. The last time a stream was created by this endpoint. Usually unset for servers. The last time a message was received by this endpoint. The last time a message was sent by this endpoint. The last time a stream was created by the remote endpoint. Usually unset for clients. The locally bound address. The amount of window, granted to the local endpoint by the remote endpoint. This may be slightly out of date due to network latency. This does NOT include stream level or TCP level flow control info. MessagesReceived int64 The number of messages successfully sent on this socket. The remote bound address. May be absent. The amount of window, granted to the remote endpoint by the local endpoint. This may be slightly out of date due to network latency. This does NOT include stream level or TCP level flow control info. Optional, represents the name of the remote endpoint, if different than the original target name. Security credentials.ChannelzSecurityValue SocketOptions *SocketOptionData The number of streams that have ended unsuccessfully: On client side, termination without receiving frame with eos bit set. On server side, termination without sending frame with eos bit set. The number of streams that have been started. The number of streams that have ended successfully: On client side, receiving frame with eos bit set. On server side, sending frame with eos bit set. func Socket.ChannelzMetric() *SocketInternalMetric
SocketMetric defines the info channelz provides for a specific Socket, which includes SocketInternalMetric and channelz-specific data, such as channelz id, etc. ID is the channelz id of this socket. RefName is the human readable reference string of this socket. SocketData contains socket internal metric reported by the socket through ChannelzMetric(). func GetServerSockets(id int64, startID int64, maxResults int64) ([]*SocketMetric, bool) func GetSocket(id int64) *SocketMetric
SocketOptionData defines the struct to hold socket option data, and related getter function to obtain info from fd. Windows OS doesn't support Socket Option Getsockopt defines the function to get socket options requested by channelz. It is to be passed to syscall.RawConn.Control(). Windows OS doesn't support Socket Option func GetSocketOption(c interface{}) *SocketOptionData
SubChannelMetric defines the info channelz provides for a specific SubChannel, which includes ChannelInternalMetric and channelz-specific data, such as channelz id, child list, etc. ChannelData contains channel internal metric reported by the channel through ChannelzMetric(). ID is the channelz id of this channel. NestedChans tracks the nested channel type children of this channel in the format of a map from nested channel channelz id to corresponding reference string. RefName is the human readable reference string of this channel. Sockets tracks the socket type children of this channel in the format of a map from socket channelz id to corresponding reference string. Note current grpc implementation doesn't allow channel having sockets directly, therefore, this is field is unused. SubChans tracks the subchannel type children of this channel in the format of a map from subchannel channelz id to corresponding reference string. Trace contains the most recent traced events. func GetSubChannel(id int64) *SubChannelMetric
TraceEvent represent a single trace event Desc is a simple description of the trace event. RefID is the id of the entity that gets referenced in the event. RefID is 0 if no other entity is involved in this event. e.g. SubChannel (id: 4[]) Created. --> RefID = 4, RefName = "" (inside []) RefName is the reference name for the entity that gets referenced in the event. RefType indicates the referenced entity type, i.e Channel or SubChannel. Severity states the severity of this trace event. Timestamp is the event time.
TraceEventDesc is what the caller of AddTraceEvent should provide to describe the event to be added to the channel trace. The Parent field is optional. It is used for event that will be recorded in the entity's parent trace also. Desc string Parent *TraceEventDesc Severity Severity func AddTraceEvent(l grpclog.DepthLoggerV2, id int64, depth int, desc *TraceEventDesc)
Package-Level Functions (total 29, in which 26 are exported)
AddTraceEvent adds trace related to the entity with specified id, using the provided TraceEventDesc.
Error logs and adds a trace event if channelz is on.
Errorf logs and adds a trace event if channelz is on.
GetChannel returns the ChannelMetric for the channel (identified by id).
GetServer returns the ServerMetric for the server (identified by id).
GetServers returns a slice of server's ServerMetric, along with a boolean indicating whether there's more servers to be queried for. The arg id specifies that only server with id at or above it will be included in the result. The returned slice is up to a length of the arg maxResults or EntryPerPage if maxResults is zero, and is sorted in ascending id order.
GetServerSockets returns a slice of server's (identified by id) normal socket's SocketMetric, along with a boolean indicating whether there's more sockets to be queried for. The arg startID specifies that only sockets with id at or above it will be included in the result. The returned slice is up to a length of the arg maxResults or EntryPerPage if maxResults is zero, and is sorted in ascending id order.
GetSocket returns the SocketInternalMetric for the socket (identified by id).
GetSocketOption gets the socket option info of the conn.
GetSubChannel returns the SubChannelMetric for the subchannel (identified by id).
GetTopChannels returns a slice of top channel's ChannelMetric, along with a boolean indicating whether there's more top channels to be queried for. The arg id specifies that only top channel with id at or above it will be included in the result. The returned slice is up to a length of the arg maxResults or EntryPerPage if maxResults is zero, and is sorted in ascending id order.
Info logs and adds a trace event if channelz is on.
Infof logs and adds a trace event if channelz is on.
IsOn returns whether channelz data collection is on.
NewChannelzStorage initializes channelz data storage and id generator. This function returns a cleanup function to wait for all channelz state to be reset by the grpc goroutines when those entities get closed. By using this cleanup function, we make sure tests don't mess up each other, i.e. lingering goroutine from previous test doing entity removal happen to remove some entity just register by the new test, since the id space is the same. Note: This function is exported for testing purpose only. User should not call it in most cases.
RegisterChannel registers the given channel c in channelz database with ref as its reference name, and add it to the child list of its parent (identified by pid). pid = 0 means no parent. It returns the unique channelz tracking id assigned to this channel.
RegisterListenSocket registers the given listen socket s in channelz database with ref as its reference name, and add it to the child list of its parent (identified by pid). It returns the unique channelz tracking id assigned to this listen socket.
RegisterNormalSocket registers the given normal socket s in channelz database with ref as its reference name, and add it to the child list of its parent (identified by pid). It returns the unique channelz tracking id assigned to this normal socket.
RegisterServer registers the given server s in channelz database. It returns the unique channelz tracking id assigned to this server.
RegisterSubChannel registers the given channel c in channelz database with ref as its reference name, and add it to the child list of its parent (identified by pid). It returns the unique channelz tracking id assigned to this subchannel.
RemoveEntry removes an entry with unique channelz trakcing id to be id from channelz database.
ResetMaxTraceEntryToDefault resets the maximum number of trace entry per entity to default.
SetMaxTraceEntry sets maximum number of trace entry per entity (i.e. channel/subchannel). Setting it to 0 will disable channel tracing.
TurnOn turns on channelz data collection.
Warning logs and adds a trace event if channelz is on.
Warningf logs and adds a trace event if channelz is on.
Package-Level Variables (total 7, in which 1 are exported)
EntryPerPage defines the number of channelz entries to be shown on a web page.
Package-Level Constants (total 7, in which 6 are exported)
CtError indicates error level severity of a trace event.
CtINFO indicates info level severity of a trace event.
CtUNKNOWN indicates unknown severity of a trace event.
CtWarning indicates warning level severity of a trace event.
RefChannel indicates the referenced entity is a Channel.
RefSubChannel indicates the referenced entity is a SubChannel.