8000 chore: add DRPC tailnet & cli network telemetry by ethanndickson · Pull Request #13687 · coder/coder · GitHub
[go: up one dir, main page]

Skip to content

chore: add DRPC tailnet & cli network telemetry #13687

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 19 commits into from
Jul 3, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
remove logs
  • Loading branch information
ethanndickson committed Jul 2, 2024
commit 6a3480cdc9ad00e2e9fef78e3f5e67ba6e9eb7d1
7 changes: 0 additions & 7 deletions coderd/telemetry/telemetry.go
Original file line number Diff line number Diff line change
Expand Up @@ -1278,11 +1278,6 @@ func NetworkEventFromProto(proto *tailnetproto.TelemetryEvent) (NetworkEvent, er
return NetworkEvent{}, xerrors.Errorf("parse id %q: %w", proto.Id, err)
}

logIPHashes := make(map[string]NetworkEventIPFields, len(proto.LogIpHashes))
for k, v := range proto.LogIpHashes {
logIPHashes[k] = ipFieldsFromProto(v)
}

return NetworkEvent{
ID: id,
Time: proto.Time.AsTime(),
Expand All @@ -1293,9 +1288,7 @@ func NetworkEventFromProto(proto *tailnetproto.TelemetryEvent) (NetworkEvent, er
NodeIDSelf: proto.NodeIdSelf,
NodeIDRemote: proto.NodeIdRemote,
P2PEndpoint: p2pEndpointFromProto(proto.P2PEndpoint),
LogIPHashes: logIPHashes,
HomeDERP: proto.HomeDerp,
Logs: proto.Logs,
DERPMap: derpMapFromProto(proto.DerpMap),
LatestNetcheck: netcheckFromProto(proto.LatestNetcheck),

Expand Down
4 changes: 2 additions & 2 deletions codersdk/workspacesdk/workspacesdk.go
10000
Original file line number Diff line number Diff line change
Expand Up @@ -181,8 +181,8 @@ type DialAgentOptions struct {
// CaptureHook is a callback that captures Disco packets and packets sent
// into the tailnet tunnel.
CaptureHook capture.Callback
// Whether the client will send network telemetry events
// Enable instead of Disable so it's initialized to false
// Whether the client will send network telemetry events.
// Enable instead of Disable so it's initialized to false (in tests).
EnableTelemetry bool
}

Expand Down
4 changes: 2 additions & 2 deletions tailnet/configmaps.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,14 +66,14 @@ type configMaps struct {
peers map[uuid.UUID]*peerLifecycle
addresses []netip.Prefix
derpMap *tailcfg.DERPMap
logger multiLogger
logger slog.Logger
blockEndpoints bool

// for testing
clock clock.Clock
}

func newConfigMaps(logger multiLogger, engine engineConfigurable, nodeID tailcfg.NodeID, nodeKey key.NodePrivate, discoKey key.DiscoPublic) *configMaps {
func newConfigMaps(logger slog.Logger, engine engineConfigurable, nodeID tailcfg.NodeID, nodeKey key.NodePrivate, discoKey key.DiscoPublic) *configMaps {
pubKey := nodeKey.Public()
c := &configMaps{
phased: phased{Cond: *(sync.NewCond(&sync.Mutex{}))},
Expand Down
36 changes: 18 additions & 18 deletions tailnet/configmaps_internal_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import (
func TestConfigMaps_setAddresses_different(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitShort)
logger := newMultiLogger(slogtest.Make(t, nil).Leveled(slog.LevelDebug))
logger := slogtest.Make(t, nil).Leveled(slog.LevelDebug)
fEng := newFakeEngineConfigurable()
nodePrivateKey := key.NewNode()
nodeID := tailcfg.NodeID(5)
Expand Down Expand Up @@ -87,7 +87,7 @@ func TestConfigMaps_setAddresses_different(t *testing.T) {
func TestConfigMaps_setAddresses_same(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitShort)
logger := newMultiLogger(slogtest.Make(t, nil).Leveled(slog.LevelDebug))
logger := slogtest.Make(t, nil).Leveled(slog.LevelDebug)
fEng := newFakeEngineConfigurable()
nodePrivateKey := key.NewNode()
nodeID := tailcfg.NodeID(5)
Expand Down Expand Up @@ -118,7 +118,7 @@ func TestConfigMaps_setAddresses_same(t *testing.T) {
func TestConfigMaps_updatePeers_new(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitShort)
logger := newMultiLogger(slogtest.Make(t, nil).Leveled(slog.LevelDebug))
logger := slogtest.Make(t, nil).Leveled(slog.LevelDebug)
fEng := newFakeEngineConfigurable()
nodePrivateKey := key.NewNode()
nodeID := tailcfg.NodeID(5)
Expand Down Expand Up @@ -188,7 +188,7 @@ func TestConfigMaps_updatePeers_new(t *testing.T) {
func TestConfigMaps_updatePeers_new_waitForHandshake_neverConfigures(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitShort)
logger := newMultiLogger(slogtest.Make(t, nil).Leveled(slog.LevelDebug))
logger := slogtest.Make(t, nil).Leveled(slog.LevelDebug)
fEng := newFakeEngineConfigurable()
nodePrivateKey := key.NewNode()
nodeID := tailcfg.NodeID(5)
Expand Down Expand Up @@ -232,7 +232,7 @@ func TestConfigMaps_updatePeers_new_waitForHandshake_neverConfigures(t *testing.
func TestConfigMaps_updatePeers_new_waitForHandshake_outOfOrder(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitShort)
logger := newMultiLogger(slogtest.Make(t, nil).Leveled(slog.LevelDebug))
logger := slogtest.Make(t, nil).Leveled(slog.LevelDebug)
fEng := newFakeEngineConfigurable()
nodePrivateKey := key.NewNode()
nodeID := tailcfg.NodeID(5)
Expand Down Expand Up @@ -303,7 +303,7 @@ func TestConfigMaps_updatePeers_new_waitForHandshake_outOfOrder(t *testing.T) {
func TestConfigMaps_updatePeers_new_waitForHandshake(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitShort)
logger := newMultiLogger(slogtest.Make(t, nil).Leveled(slog.LevelDebug))
logger := slogtest.Make(t, nil).Leveled(slog.LevelDebug)
fEng := newFakeEngineConfigurable()
nodePrivateKey := key.NewNode()
nodeID := tailcfg.NodeID(5)
Expand Down Expand Up @@ -374,7 +374,7 @@ func T 6D47 estConfigMaps_updatePeers_new_waitForHandshake(t *testing.T) {
func TestConfigMaps_updatePeers_new_waitForHandshake_timeout(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitShort)
logger := newMultiLogger(slogtest.Make(t, nil).Leveled(slog.LevelDebug))
logger := slogtest.Make(t, nil).Leveled(slog.LevelDebug)
fEng := newFakeEngineConfigurable()
nodePrivateKey := key.NewNode()
nodeID := tailcfg.NodeID(5)
Expand Down Expand Up @@ -432,7 +432,7 @@ func TestConfigMaps_updatePeers_new_waitForHandshake_timeout(t *testing.T) {
func TestConfigMaps_updatePeers_same(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitShort)
logger := newMultiLogger(slogtest.Make(t, nil).Leveled(slog.LevelDebug))
logger := slogtest.Make(t, nil).Leveled(slog.LevelDebug)
fEng := newFakeEngineConfigurable()
nodePrivateKey := key.NewNode()
nodeID := tailcfg.NodeID(5)
Expand Down Expand Up @@ -491,7 +491,7 @@ func TestConfigMaps_updatePeers_same(t *testing.T) {
func TestConfigMaps_updatePeers_disconnect(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitShort)
logger := newMultiLogger(slogtest.Make(t, nil).Leveled(slog.LevelDebug))
logger := slogtest.Make(t, nil).Leveled(slog.LevelDebug)
fEng := newFakeEngineConfigurable()
nodePrivateKey := key.NewNode()
nodeID := tailcfg.NodeID(5)
Expand Down Expand Up @@ -559,7 +559,7 @@ func TestConfigMaps_updatePeers_disconnect(t *testing.T) {
func TestConfigMaps_updatePeers_lost(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitShort)
logger := newMultiLogger(slogtest.Make(t, nil).Leveled(slog.LevelDebug))
logger := slogtest.Make(t, nil).Leveled(slog.LevelDebug)
fEng := newFakeEngineConfigurable()
nodePrivateKey := key.NewNode()
nodeID := tailcfg.NodeID(5)
Expand Down Expand Up @@ -644,7 +644,7 @@ func TestConfigMaps_updatePeers_lost(t *testing.T) {
func TestConfigMaps_updatePeers_lost_and_found(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitShort)
logger := newMultiLogger(slogtest.Make(t, nil).Leveled(slog.LevelDebug))
logger := slogtest.Make(t, nil).Leveled(slog.LevelDebug)
fEng := newFakeEngineConfigurable()
nodePrivateKey := key.NewNode()
nodeID := tailcfg.NodeID(5)
Expand Down Expand Up @@ -729,7 +729,7 @@ func TestConfigMaps_updatePeers_lost_and_found(t *testing.T) {
func TestConfigMaps_setAllPeersLost(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitShort)
logger := newMultiLogger(slogtest.Make(t, nil).Leveled(slog.LevelDebug))
logger := slogtest.Make(t, nil).Leveled(slog.LevelDebug)
fEng := newFakeEngineConfigurable()
nodePrivateKey := key.NewNode()
nodeID := tailcfg.NodeID(5)
Expand Down Expand Up @@ -815,7 +815,7 @@ func TestConfigMaps_setAllPeersLost(t *testing.T) {
func TestConfigMaps_setBlockEndpoints_different(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitShort)
logger := newMultiLogger(slogtest.Make(t, nil).Leveled(slog.LevelDebug))
logger := slogtest.Make(t, nil).Leveled(slog.LevelDebug)
fEng := newFakeEngineConfigurable()
nodePrivateKey := key.NewNode()
nodeID := tailcfg.NodeID(5)
Expand Down Expand Up @@ -859,7 +859,7 @@ func TestConfigMaps_setBlockEndpoints_different(t *testing.T) {
func TestConfigMaps_setBlockEndpoints_same(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitShort)
logger := newMultiLogger(slogtest.Make(t, nil).Leveled(slog.LevelDebug))
logger := slogtest.Make(t, nil).Leveled(slog.LevelDebug)
fEng := newFakeEngineConfigurable()
nodePrivateKey := key.NewNode()
nodeID := tailcfg.NodeID(5)
Expand Down Expand Up @@ -902,7 +902,7 @@ func TestConfigMaps_setBlockEndpoints_same(t *testing.T) {
func TestConfigMaps_setDERPMap_different(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitShort)
logger := newMultiLogger(slogtest.Make(t, nil).Leveled(slog.LevelDebug))
logger := slogtest.Make(t, nil).Leveled(slog.LevelDebug)
fEng := newFakeEngineConfigurable()
nodePrivateKey := key.NewNode()
nodeID := tailcfg.NodeID(5)
Expand Down Expand Up @@ -943,7 +943,7 @@ func TestConfigMaps_setDERPMap_different(t *testing.T) {
func TestConfigMaps_setDERPMap_same(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitShort)
logger := newMultiLogger(slogtest.Make(t, nil).Leveled(slog.LevelDebug))
logger := slogtest.Make(t, nil).Leveled(slog.LevelDebug)
fEng := newFakeEngineConfigurable()
nodePrivateKey := key.NewNode()
nodeID := tailcfg.NodeID(5)
Expand Down Expand Up @@ -1012,7 +1012,7 @@ func TestConfigMaps_setDERPMap_same(t *testing.T) {
func TestConfigMaps_fillPeerDiagnostics(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitShort)
logger := newMultiLogger(slogtest.Make(t, nil).Leveled(slog.LevelDebug))
logger := slogtest.Make(t, nil).Leveled(slog.LevelDebug)
fEng := newFakeEngineConfigurable()
nodePrivateKey := key.NewNode()
nodeID := tailcfg.NodeID(5)
Expand Down Expand Up @@ -1120,7 +1120,7 @@ func TestConfigMaps_updatePeers_nonexist(t *testing.T) {
t.Run(k.String(), func(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitShort)
logger := newMultiLogger(slogtest.Make(t, nil).Leveled(slog.LevelDebug))
logger := slogtest.Make(t, nil).Leveled(slog.LevelDebug)
fEng := newFakeEngineConfigurable()
nodePrivateKey := key.NewNode()
nodeID := tailcfg.NodeID(5)
Expand Down
30 changes: 13 additions & 17 deletions tailnet/conn.go
Original file line number Diff line number Diff line change
Expand Up @@ -135,17 +135,13 @@ func NewConn(options *Options) (conn *Conn, err error) {
return nil, xerrors.New("At least one IP range must be provided")
}

var (
logger = newMultiLogger(options.Logger)
telemetryStore *TelemetryStore
)
var telemetryStore *TelemetryStore
if options.TelemetrySink != nil {
var err error
telemetryStore, err = newTelemetryStore()
if err != nil {
return nil, xerrors.Errorf("create telemetry log store: %w", err)
return nil, xerrors.Errorf("create telemetry store: %w", err)
}
logger = logger.appendLogger(slog.Make(telemetryStore).Leveled(slog.LevelDebug))
}

nodePrivateKey := key.NewNode()
Expand All @@ -162,7 +158,7 @@ func NewConn(options *Options) (conn *Conn, err error) {
nodeID = tailcfg.NodeID(uid)
}

wireguardMonitor, err := netmon.New(Logger(logger.Named("net.wgmonitor")))
wireguardMonitor, err := netmon.New(Logger(options.Logger.Named("net.wgmonitor")))
if err != nil {
return nil, xerrors.Errorf("create wireguard link monitor: %w", err)
}
Expand All @@ -173,10 +169,10 @@ func NewConn(options *Options) (conn *Conn, err error) {
}()

dialer := &tsdial.Dialer{
Logf: Logger(logger.Named("net.tsdial")),
Logf: Logger(options.Logger.Named("net.tsdial")),
}
sys := new(tsd.System)
wireguardEngine, err := wgengine.NewUserspaceEngine(Logger(logger.Named("net.wgengine")), wgengine.Config{
wireguardEngine, err := wgengine.NewUserspaceEngine(Logger(options.Logger.Named("net.wgengine")), wgengine.Config{
NetMon: wireguardMonitor,
Dialer: dialer,
ListenPort: options.ListenPort,
Expand Down Expand Up @@ -211,13 +207,13 @@ func NewConn(options *Options) (conn *Conn, err error) {
if v, ok := os.LookupEnv(EnvMagicsockDebugLogging); ok {
vBool, err := strconv.ParseBool(v)
if err != nil {
logger.Debug(context.Background(), fmt.Sprintf("magicsock debug logging disabled due to invalid value %s=%q, use true or false", EnvMagicsockDebugLogging, v))
options.Logger.Debug(context.Background(), fmt.Sprintf("magicsock debug logging disabled due to invalid value %s=%q, use true or false", EnvMagicsockDebugLogging, v))
} else {
magicConn.SetDebugLoggingEnabled(vBool)
logger.Debug(context.Background(), fmt.Sprintf("magicsock debug logging set by %s=%t", EnvMagicsockDebugLogging, vBool))
options.Logger.Debug(context.Background(), fmt.Sprintf("magicsock debug logging set by %s=%t", EnvMagicsockDebugLogging, vBool))
}
} else {
logger.Debug(context.Background(), fmt.Sprintf("magicsock debug logging disabled, use %s=true to enable", EnvMagicsockDebugLogging))
options.Logger.Debug(context.Background(), fmt.Sprintf("magicsock debug logging disabled, use %s=true to enable", EnvMagicsockDebugLogging))
}

// Update the keys for the magic connection!
Expand All @@ -227,7 +223,7 @@ func NewConn(options *Options) (conn *Conn, err error) {
}

netStack, err := netstack.Create(
Logger(logger.Named("net.netstack")),
Logger(options.Logger.Named("net.netstack")),
sys.Tun.Get(),
wireguardEngine,
magicConn,
Expand All @@ -245,7 +241,7 @@ func NewConn(options *Options) (conn *Conn, err error) {
wireguardEngine = wgengine.NewWatchdog(wireguardEngine)

cfgMaps := newConfigMaps(
logger,
options.Logger,
wireguardEngine,
nodeID,
nodePrivateKey,
Expand All @@ -258,7 +254,7 @@ func NewConn(options *Options) (conn *Conn, err error) {
cfgMaps.setBlockEndpoints(options.BlockEndpoints)

nodeUp := newNodeUpdater(
logger,
options.Logger,
nil,
nodeID,
nodePrivateKey.Public(),
Expand All @@ -281,7 +277,7 @@ func NewConn(options *Options) (conn *Conn, err error) {
id: uuid.New(),
nodeID: nodeID,
closed: make(chan struct{}),
logger: logger,
logger: options.Logger,
magicConn: magicConn,
dialer: dialer,
listeners: map[listenKey]*listener{},
Expand Down Expand Up @@ -344,7 +340,7 @@ type Conn struct {
nodeID tailcfg.NodeID
mutex sync.Mutex
closed chan struct{}
logger multiLogger
logger slog.Logger

dialer *tsdial.Dialer
tunDevice *tstun.Wrapper
Expand Down
4 changes: 2 additions & 2 deletions tailnet/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ type nodeUpdater struct {
closing bool

// static
logger multiLogger
logger slog.Logger
id tailcfg.NodeID
key key.NodePublic
discoKey key.DiscoPublic
Expand Down Expand Up @@ -96,7 +96,7 @@ func (u *nodeUpdater) close() {
}

func newNodeUpdater(
logger multiLogger, callback func(n *Node),
logger slog.Logger, callback func(n *Node),
id tailcfg.NodeID, np key.NodePublic, dp key.DiscoPublic,
) *nodeUpdater {
u := &nodeUpdater{
Expand Down
Loading
Loading
0