@@ -151,7 +151,7 @@ func Agents(ctx context.Context, logger slog.Logger, registerer prometheus.Regis
151
151
Subsystem : "agents" ,
152
152
Name : "connection_latencies_seconds" ,
153
153
Help : "Agent connection latencies in seconds." ,
154
- }, []string {"agent_id " , "username" , "workspace_name" , "derp_region" , "preferred" }))
154
+ }, []string {"agent_name " , "username" , "workspace_name" , "derp_region" , "preferred" }))
155
155
err = registerer .Register (agentsConnectionLatenciesGauge )
156
156
if err != nil {
157
157
return nil , err
@@ -308,6 +308,28 @@ func AgentStats(ctx context.Context, logger slog.Logger, registerer prometheus.R
308
308
return nil , err
309
309
}
310
310
311
+ agentStatsTxBytesGauge := NewCachedGaugeVec (prometheus .NewGaugeVec (prometheus.GaugeOpts {
312
+ Namespace : "coderd" ,
313
+ Subsystem : "agentstats" ,
314
+ Name : "tx_bytes" ,
315
+ Help : "Agent Tx bytes" ,
316
+ }, []string {"agent_name" , "username" , "workspace_name" }))
317
+ err = registerer .Register (agentStatsTxBytesGauge )
318
+ if err != nil {
319
+ return nil , err
320
+ }
321
+
322
+ agentStatsRxBytesGauge := NewCachedGaugeVec (prometheus .NewGaugeVec (prometheus.GaugeOpts {
323
+ Namespace : "coderd" ,
324
+ Subsystem : "agentstats" ,
325
+ Name : "rx_bytes" ,
326
+ Help : "Agent Rx bytes" ,
327
+ }, []string {"agent_name" , "username" , "workspace_name" }))
328
+ err = registerer .Register (agentStatsRxBytesGauge )
329
+ if err != nil {
330
+ return nil , err
331
+ }
332
+
311
333
createdAfter := database .Now ().Add (- duration )
312
334
ctx , cancelFunc := context .WithCancel (ctx )
313
335
ticker := time .NewTicker (duration )
@@ -323,12 +345,20 @@ func AgentStats(ctx context.Context, logger slog.Logger, registerer prometheus.R
323
345
logger .Debug (ctx , "Agent metrics collection is starting" )
324
346
timer := prometheus .NewTimer (metricsCollectorAgentStats )
325
347
326
- _ , err := db .GetWorkspaceAgentStats (ctx , createdAfter )
348
+ stats , err := db .GetWorkspaceAgentStatsAndLabels (ctx , createdAfter )
327
349
if err != nil {
328
350
logger .Error (ctx , "can't get agent stats" , slog .Error (err ))
329
351
goto done
330
352
}
331
353
354
+ for _ , agentStat := range stats {
355
+ agentStatsRxBytesGauge .WithLabelValues (VectorOperationAdd , float64 (agentStat .WorkspaceTxBytes ), agentStat .AgentName , agentStat .Username , agentStat .WorkspaceName )
356
+ agentStatsTxBytesGauge .WithLabelValues (VectorOperationAdd , float64 (agentStat .WorkspaceRxBytes ), agentStat .AgentName , agentStat .Username , agentStat .WorkspaceName )
357
+ }
358
+
359
+ agentStatsRxBytesGauge .Commit ()
360
+ agentStatsTxBytesGauge .Commit ()
361
+
332
362
done:
333
363
logger .Debug (ctx , "Agent metrics collection is done" )
334
364
metricsCollectorAgentStats .Observe (timer .ObserveDuration ().Seconds ())
0 commit comments