From f92ae51c91df00638927b1db47efa06d1d4ab590 Mon Sep 17 00:00:00 2001
From: Colin Adler <colin1adler@gmail.com>
Date: Wed, 31 Jan 2024 20:03:48 +0000
Subject: [PATCH 1/2] chore(coderd): add logging to agent rpc yamux conn

---
 coderd/files.go              |  2 +-
 coderd/workspaceagentsrpc.go | 24 +++++++++++++++---------
 2 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/coderd/files.go b/coderd/files.go
index d5379c4d8b036..3ce2152b46dfc 100644
--- a/coderd/files.go
+++ b/coderd/files.go
@@ -12,10 +12,10 @@ import (
 	"io"
 	"net/http"
 
-	"cdr.dev/slog"
 	"github.com/go-chi/chi/v5"
 	"github.com/google/uuid"
 
+	"cdr.dev/slog"
 	"github.com/coder/coder/v2/coderd/database"
 	"github.com/coder/coder/v2/coderd/database/dbtime"
 	"github.com/coder/coder/v2/coderd/httpapi"
diff --git a/coderd/workspaceagentsrpc.go b/coderd/workspaceagentsrpc.go
index c59e50387f784..497267fc7bb84 100644
--- a/coderd/workspaceagentsrpc.go
+++ b/coderd/workspaceagentsrpc.go
@@ -37,6 +37,7 @@ import (
 // @x-apidocgen {"skip": true}
 func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
 	ctx := r.Context()
+	logger := api.Logger.Named("agentrpc")
 
 	version := r.URL.Query().Get("version")
 	if version == "" {
@@ -61,7 +62,7 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
 	defer api.WebsocketWaitGroup.Done()
 	workspaceAgent := httpmw.WorkspaceAgent(r)
 
-	build, ok := ensureLatestBuild(ctx, api.Database, api.Logger, rw, workspaceAgent)
+	build, ok := ensureLatestBuild(ctx, api.Database, logger, rw, workspaceAgent)
 	if !ok {
 		return
 	}
@@ -84,6 +85,12 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
 		return
 	}
 
+	logger = logger.With(
+		slog.F("owner", owner.Username),
+		slog.F("workspace_name", workspace.Name),
+		slog.F("agent_name", workspaceAgent.Name),
+	)
+
 	conn, err := websocket.Accept(rw, r, nil)
 	if err != nil {
 		httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
@@ -96,6 +103,10 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
 	ctx, wsNetConn := websocketNetConn(ctx, conn, websocket.MessageBinary)
 	defer wsNetConn.Close()
 
+	ycfg := yamux.DefaultConfig()
+	ycfg.LogOutput = nil
+	ycfg.Logger = slog.Stdlib(ctx, logger.Named("yamux"), slog.LevelDebug)
+
 	mux, err := yamux.Server(wsNetConn, nil)
 	if err != nil {
 		httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
@@ -106,12 +117,7 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
 	}
 	defer mux.Close()
 
-	api.Logger.Debug(ctx, "accepting agent RPC connection",
-		slog.F("owner", owner.Username),
-		slog.F("workspace", workspace.Name),
-		slog.F("name", workspaceAgent.Name),
-	)
-	api.Logger.Debug(ctx, "accepting agent details", slog.F("agent", workspaceAgent))
+	logger.Debug(ctx, "accepting agent RPC connection", slog.F("agent", workspaceAgent))
 
 	defer conn.Close(websocket.StatusNormalClosure, "")
 
@@ -124,7 +130,7 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
 		AgentID: workspaceAgent.ID,
 
 		Ctx:                               api.ctx,
-		Log:                               api.Logger,
+		Log:                               logger,
 		Database:                          api.Database,
 		Pubsub:                            api.Pubsub,
 		DerpMapFn:                         api.DERPMap,
@@ -157,7 +163,7 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
 	ctx = agentapi.WithAPIVersion(ctx, version)
 	err = agentAPI.Serve(ctx, mux)
 	if err != nil {
-		api.Logger.Warn(ctx, "workspace agent RPC listen error", slog.Error(err))
+		logger.Warn(ctx, "workspace agent RPC listen error", slog.Error(err))
 		_ = conn.Close(websocket.StatusInternalError, err.Error())
 		return
 	}

From 09f7ff1ec5fa2d70af935066ebd46a77c8f00f1a Mon Sep 17 00:00:00 2001
From: Colin Adler <colin1adler@gmail.com>
Date: Thu, 1 Feb 2024 05:02:03 +0000
Subject: [PATCH 2/2] spike comments

---
 coderd/workspaceagentsrpc.go | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/coderd/workspaceagentsrpc.go b/coderd/workspaceagentsrpc.go
index 497267fc7bb84..3a8195fe43e14 100644
--- a/coderd/workspaceagentsrpc.go
+++ b/coderd/workspaceagentsrpc.go
@@ -105,9 +105,9 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
 
 	ycfg := yamux.DefaultConfig()
 	ycfg.LogOutput = nil
-	ycfg.Logger = slog.Stdlib(ctx, logger.Named("yamux"), slog.LevelDebug)
+	ycfg.Logger = slog.Stdlib(ctx, logger.Named("yamux"), slog.LevelInfo)
 
-	mux, err := yamux.Server(wsNetConn, nil)
+	mux, err := yamux.Server(wsNetConn, ycfg)
 	if err != nil {
 		httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
 			Message: "Failed to start yamux over websocket.",