package sockstats
import "tailscale.com/net/sockstats"
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
- func DebugInfo() string
- func SetNetMon(netMon *netmon.Monitor)
- func WithSockStats(ctx context.Context, label Label, logf logger.Logf) context.Context
- type InterfaceSockStat
- type InterfaceSockStats
- type Label
- type SockStat
- type SockStats
- type ValidationSockStat
- type ValidationSockStats
Constants ¶
const IsAvailable = false
Functions ¶
func DebugInfo ¶
func DebugInfo() string
DebugInfo returns a string containing debug information about the tracked statistics.
func SetNetMon ¶
SetNetMon configures the sockstats package to monitor the active interface, so that per-interface stats can be collected.
func WithSockStats ¶
WithSockStats instruments a context so that sockets created with it will have their statistics collected.
Types ¶
type InterfaceSockStat ¶
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 ¶
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 ¶
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 LabelDNSForwarderTCP Label = 12 // net/dns/resolver/forwarder.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.
func (Label) String ¶
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
func Get ¶
func Get() *SockStats
Get returns the current socket statistics.
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 ¶
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.
Source Files ¶
label_string.go sockstats.go sockstats_noop.go
- Version
- v1.84.1 (latest)
- Published
- May 29, 2025
- Platform
- linux/amd64
- Imports
- 4 packages
- Last checked
- 8 hours ago –
Tools for package owners.