Documentation ¶
Overview ¶
Package sockstats collects statistics about network sockets used by the Tailscale client. The context where sockets are used must be instrumented with the WithSockStats() function.
Only available on POSIX platforms when built with Tailscale's fork of Go.
Index ¶
Constants ¶
const IsAvailable = false
Variables ¶
This section is empty.
Functions ¶
func DebugInfo ¶ added in v1.40.0
func DebugInfo() string
DebugInfo returns a string containing debug information about the tracked statistics.
Types ¶
type InterfaceSockStat ¶ added in v1.40.0
type InterfaceSockStat struct { TxBytesByInterface map[string]uint64 RxBytesByInterface map[string]uint64 }
InterfaceSockStat contains the per-interface sent and received bytes for a socket instrumented with the WithSockStats() function.
type InterfaceSockStats ¶ added in v1.40.0
type InterfaceSockStats struct { Stats map[Label]InterfaceSockStat Interfaces []string }
InterfaceSockStats contains statistics for sockets instrumented with the WithSockStats() function, broken down by interface. The statistics may be a subset of the total if interfaces were added after the instrumented socket was created.
func GetInterfaces ¶ added in v1.40.0
func GetInterfaces() *InterfaceSockStats
GetWithInterfaces is a variant of Get that returns the current socket statistics broken down by interface. It is slightly more expensive than Get.
type Label ¶
type Label uint8
Label is an identifier for a socket that stats are collected for. A finite set of values that may be used to label a socket to encourage grouping and to make storage more efficient.
const ( LabelControlClientAuto Label = 0 // control/controlclient/auto.go LabelControlClientDialer Label = 1 // control/controlhttp/client.go LabelDERPHTTPClient Label = 2 // derp/derphttp/derphttp_client.go LabelLogtailLogger Label = 3 // logtail/logtail.go LabelDNSForwarderDoH Label = 4 // net/dns/resolver/forwarder.go LabelDNSForwarderUDP Label = 5 // net/dns/resolver/forwarder.go LabelNetcheckClient Label = 6 // net/netcheck/netcheck.go LabelPortmapperClient Label = 7 // net/portmapper/portmapper.go LabelMagicsockConnUDP4 Label = 8 // wgengine/magicsock/magicsock.go LabelMagicsockConnUDP6 Label = 9 // wgengine/magicsock/magicsock.go LabelNetlogLogger Label = 10 // wgengine/netlog/logger.go LabelSockstatlogLogger Label = 11 // log/sockstatlog/logger.go )
Labels are named after the package and function/struct that uses the socket. Values may be persisted and thus existing entries should not be re-numbered.
type SockStat ¶
SockStat contains the sent and received bytes for a socket instrumented with the WithSockStats() function.
type SockStats ¶
SockStats contains statistics for sockets instrumented with the WithSockStats() function
type ValidationSockStat ¶
ValidationSockStat contains the validation bytes for a socket instrumented with WithSockStats.
type ValidationSockStats ¶
type ValidationSockStats struct {
Stats map[Label]ValidationSockStat
}
ValidationSockStats contains external validation numbers for sockets instrumented with WithSockStats. It may be a subset of the all sockets, depending on what externa measurement mechanisms the platform supports.
func GetValidation ¶ added in v1.40.0
func GetValidation() *ValidationSockStats
GetValidation is a variant of Get that returns external validation numbers for stats. It is more expensive than Get and should be used in debug interfaces only.