Skip to content

Commit a5d4916

Browse files
committed
chore(coderd): add logging to agent rpc yamux conn
1 parent 76e7328 commit a5d4916

File tree

2 files changed

+16
-10
lines changed

2 files changed

+16
-10
lines changed

coderd/files.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ import (
1212
"io"
1313
"net/http"
1414

15-
"cdr.dev/slog"
1615
"github.com/go-chi/chi/v5"
1716
"github.com/google/uuid"
1817

18+
"cdr.dev/slog"
1919
"github.com/coder/coder/v2/coderd/database"
2020
"github.com/coder/coder/v2/coderd/database/dbtime"
2121
"github.com/coder/coder/v2/coderd/httpapi"

coderd/workspaceagentsrpc.go

+15-9
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import (
3737
// @x-apidocgen {"skip": true}
3838
func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
3939
ctx := r.Context()
40+
logger := api.Logger.Named("agentrpc")
4041

4142
version := r.URL.Query().Get("version")
4243
if version == "" {
@@ -61,7 +62,7 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
6162
defer api.WebsocketWaitGroup.Done()
6263
workspaceAgent := httpmw.WorkspaceAgent(r)
6364

64-
build, ok := ensureLatestBuild(ctx, api.Database, api.Logger, rw, workspaceAgent)
65+
build, ok := ensureLatestBuild(ctx, api.Database, logger, rw, workspaceAgent)
6566
if !ok {
6667
return
6768
}
@@ -84,6 +85,12 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
8485
return
8586
}
8687

88+
logger = logger.With(
89+
slog.F("owner", owner.Username),
90+
slog.F("workspace_name", workspace.Name),
91+
slog.F("agent_name", workspaceAgent.Name),
92+
)
93+
8794
conn, err := websocket.Accept(rw, r, nil)
8895
if err != nil {
8996
httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
@@ -96,6 +103,10 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
96103
ctx, wsNetConn := websocketNetConn(ctx, conn, websocket.MessageBinary)
97104
defer wsNetConn.Close()
98105

106+
ycfg := yamux.DefaultConfig()
107+
ycfg.LogOutput = nil
108+
ycfg.Logger = slog.Stdlib(ctx, logger.Named("yamux"), slog.LevelDebug)
109+
99110
mux, err := yamux.Server(wsNetConn, nil)
100111
if err != nil {
101112
httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
@@ -106,12 +117,7 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
106117
}
107118
defer mux.Close()
108119

109-
api.Logger.Debug(ctx, "accepting agent RPC connection",
110-
slog.F("owner", owner.Username),
111-
slog.F("workspace", workspace.Name),
112-
slog.F("name", workspaceAgent.Name),
113-
)
114-
api.Logger.Debug(ctx, "accepting agent details", slog.F("agent", workspaceAgent))
120+
logger.Debug(ctx, "accepting agent RPC connection")
115121

116122
defer conn.Close(websocket.StatusNormalClosure, "")
117123

@@ -124,7 +130,7 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
124130
AgentID: workspaceAgent.ID,
125131

126132
Ctx: api.ctx,
127-
Log: api.Logger,
133+
Log: logger,
128134
Database: api.Database,
129135
Pubsub: api.Pubsub,
130136
DerpMapFn: api.DERPMap,
@@ -157,7 +163,7 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
157163
ctx = agentapi.WithAPIVersion(ctx, version)
158164
err = agentAPI.Serve(ctx, mux)
159165
if err != nil {
160-
api.Logger.Warn(ctx, "workspace agent RPC listen error", slog.Error(err))
166+
logger.Warn(ctx, "workspace agent RPC listen error", slog.Error(err))
161167
_ = conn.Close(websocket.StatusInternalError, err.Error())
162168
return
163169
}

0 commit comments

Comments
 (0)