diff --git a/net/sockstats/sockstats_tsgo.go b/net/sockstats/sockstats_tsgo.go index 7a699fab1..9011d2027 100644 --- a/net/sockstats/sockstats_tsgo.go +++ b/net/sockstats/sockstats_tsgo.go @@ -25,7 +25,7 @@ type sockStatCounters struct { txBytes, rxBytes atomic.Uint64 rxBytesByInterface, txBytesByInterface map[int]*atomic.Uint64 - txBytesMetric, rxBytesMetric *clientmetric.Metric + txBytesMetric, rxBytesMetric, txBytesCellularMetric, rxBytesCellularMetric *clientmetric.Metric // Validate counts for TCP sockets by using the TCP_CONNECTION_INFO // getsockopt. We get current counts, as well as save final values when @@ -65,10 +65,12 @@ func withSockStats(ctx context.Context, label Label) context.Context { counters, ok := sockStats.countersByLabel[label] if !ok { counters = &sockStatCounters{ - rxBytesByInterface: make(map[int]*atomic.Uint64), - txBytesByInterface: make(map[int]*atomic.Uint64), - txBytesMetric: clientmetric.NewCounter(fmt.Sprintf("sockstats_tx_bytes_%s", label)), - rxBytesMetric: clientmetric.NewCounter(fmt.Sprintf("sockstats_rx_bytes_%s", label)), + rxBytesByInterface: make(map[int]*atomic.Uint64), + txBytesByInterface: make(map[int]*atomic.Uint64), + txBytesMetric: clientmetric.NewCounter(fmt.Sprintf("sockstats_tx_bytes_%s", label)), + rxBytesMetric: clientmetric.NewCounter(fmt.Sprintf("sockstats_rx_bytes_%s", label)), + txBytesCellularMetric: clientmetric.NewCounter(fmt.Sprintf("sockstats_tx_bytes_cellular_%s", label)), + rxBytesCellularMetric: clientmetric.NewCounter(fmt.Sprintf("sockstats_rx_bytes_cellular_%s", label)), } // We might be called before setLinkMonitor has been called (and we've @@ -119,6 +121,7 @@ func withSockStats(ctx context.Context, label Label) context.Context { } if sockStats.currentInterfaceCellular.Load() { sockStats.rxBytesCellularMetric.Add(int64(n)) + counters.rxBytesCellularMetric.Add(int64(n)) } } didWrite := func(n int) { @@ -132,6 +135,7 @@ func withSockStats(ctx context.Context, label Label) context.Context { } if sockStats.currentInterfaceCellular.Load() { sockStats.txBytesCellularMetric.Add(int64(n)) + counters.txBytesCellularMetric.Add(int64(n)) } } willOverwrite := func(trace *net.SockTrace) {