mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-29 04:55:31 +00:00
wgengine/{,magicsock}: add metrics for rebinds and restuns
Signed-off-by: Maisem Ali <maisem@tailscale.com>
This commit is contained in:
parent
78fededaa5
commit
2265587d38
@ -54,8 +54,8 @@
|
||||
"tailscale.com/types/netmap"
|
||||
"tailscale.com/types/nettype"
|
||||
"tailscale.com/util/clientmetric"
|
||||
"tailscale.com/util/netconv"
|
||||
"tailscale.com/util/mak"
|
||||
"tailscale.com/util/netconv"
|
||||
"tailscale.com/util/uniq"
|
||||
"tailscale.com/version"
|
||||
"tailscale.com/wgengine/monitor"
|
||||
@ -603,6 +603,7 @@ func (c *Conn) stopPeriodicReSTUNTimerLocked() {
|
||||
|
||||
// c.mu must NOT be held.
|
||||
func (c *Conn) updateEndpoints(why string) {
|
||||
metricUpdateEndpoints.Add(1)
|
||||
defer func() {
|
||||
c.mu.Lock()
|
||||
defer c.mu.Unlock()
|
||||
@ -1048,7 +1049,7 @@ func (c *Conn) determineEndpoints(ctx context.Context) ([]tailcfg.Endpoint, erro
|
||||
}
|
||||
|
||||
var already map[netaddr.IPPort]tailcfg.EndpointType // endpoint -> how it was found
|
||||
var eps []tailcfg.Endpoint // unique endpoints
|
||||
var eps []tailcfg.Endpoint // unique endpoints
|
||||
|
||||
ipp := func(s string) (ipp netaddr.IPPort) {
|
||||
ipp, _ = netaddr.ParseIPPort(s)
|
||||
@ -2768,6 +2769,7 @@ func (c *Conn) ReSTUN(why string) {
|
||||
// raced with a shutdown.
|
||||
return
|
||||
}
|
||||
metricReSTUNCalls.Add(1)
|
||||
|
||||
// If the user stopped the app, stop doing work. (When the
|
||||
// user stops Tailscale via the GUI apps, ipn/local.go
|
||||
@ -2917,6 +2919,7 @@ func (c *Conn) rebind(curPortFate currentPortFate) error {
|
||||
// Rebind closes and re-binds the UDP sockets and resets the DERP connection.
|
||||
// It should be followed by a call to ReSTUN.
|
||||
func (c *Conn) Rebind() {
|
||||
metricRebindCalls.Add(1)
|
||||
if err := c.rebind(keepCurrentPort); err != nil {
|
||||
c.logf("%w", err)
|
||||
return
|
||||
@ -4138,6 +4141,10 @@ func (s derpAddrFamSelector) PreferIPv6() bool {
|
||||
metricNumPeers = clientmetric.NewGauge("magicsock_netmap_num_peers")
|
||||
metricNumDERPConns = clientmetric.NewGauge("magicsock_num_derp_conns")
|
||||
|
||||
metricRebindCalls = clientmetric.NewCounter("magicsock_rebind_calls")
|
||||
metricReSTUNCalls = clientmetric.NewCounter("magicsock_restun_calls")
|
||||
metricUpdateEndpoints = clientmetric.NewCounter("magicsock_update_endpoints")
|
||||
|
||||
// Sends (data or disco)
|
||||
metricSendDERPQueued = clientmetric.NewCounter("magicsock_send_derp_queued")
|
||||
metricSendDERPErrorChan = clientmetric.NewCounter("magicsock_send_derp_error_chan")
|
||||
|
@ -1203,7 +1203,10 @@ func (e *userspaceEngine) linkChange(changed bool, cur *interfaces.State) {
|
||||
why := "link-change-minor"
|
||||
if changed {
|
||||
why = "link-change-major"
|
||||
metricNumMajorChanges.Add(1)
|
||||
e.magicConn.Rebind()
|
||||
} else {
|
||||
metricNumMinorChanges.Add(1)
|
||||
}
|
||||
e.magicConn.ReSTUN(why)
|
||||
}
|
||||
@ -1551,4 +1554,7 @@ func (ls fwdDNSLinkSelector) PickLink(ip netaddr.IP) (linkName string) {
|
||||
var (
|
||||
metricMagicDNSPacketIn = clientmetric.NewGauge("magicdns_packet_in") // for 100.100.100.100
|
||||
metricReflectToOS = clientmetric.NewGauge("packet_reflect_to_os")
|
||||
|
||||
metricNumMajorChanges = clientmetric.NewCounter("wgengine_major_changes")
|
||||
metricNumMinorChanges = clientmetric.NewCounter("wgengine_minor_changes")
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user