@@ -168,6 +168,18 @@ func Agents(ctx context.Context, logger slog.Logger, registerer prometheus.Regis
168
168
return nil , err
169
169
}
170
170
171
+ metricsCollectorAgents := prometheus .NewHistogram (prometheus.HistogramOpts {
172
+ Namespace : "coderd" ,
173
+ Subsystem : "prometheusmetrics" ,
174
+ Name : "agents_execution_seconds" ,
175
+ Help : "Histogram for duration of agents metrics collection in seconds." ,
176
+ Buckets : []float64 {0.001 , 0.005 , 0.010 , 0.025 , 0.050 , 0.100 , 0.500 , 1 , 5 , 10 , 30 },
177
+ })
178
+ err = registerer .Register (metricsCollectorAgents )
179
+ if err != nil {
180
+ return nil , err
181
+ }
182
+
171
183
// nolint:gocritic // Prometheus must collect metrics for all Coder users.
172
184
ctx , cancelFunc := context .WithCancel (dbauthz .AsSystemRestricted (ctx ))
173
185
ticker := time .NewTicker (duration )
@@ -180,7 +192,8 @@ func Agents(ctx context.Context, logger slog.Logger, registerer prometheus.Regis
180
192
case <- ticker .C :
181
193
}
182
194
183
- logger .Debug (ctx , "Collect agent metrics now" )
195
+ logger .Debug (ctx , "Agent metrics collection is starting" )
196
+ timer := prometheus .NewTimer (metricsCollectorAgents )
184
197
185
198
workspaceRows , err := db .GetWorkspaces (ctx , database.GetWorkspacesParams {
186
199
AgentInactiveDisconnectTimeoutSeconds : int64 (agentInactiveDisconnectTimeout .Seconds ()),
@@ -269,6 +282,9 @@ func Agents(ctx context.Context, logger slog.Logger, registerer prometheus.Regis
269
282
}
270
283
}
271
284
}
285
+
286
+ logger .Debug (ctx , "Agent metrics collection is done" )
287
+ metricsCollectorAgents .Observe (timer .ObserveDuration ().Seconds ())
272
288
}
273
289
}()
274
290
return cancelFunc , nil
0 commit comments