MCPcopy Index your code
hub / github.com/coder/coder / enablePrometheus

Function enablePrometheus

cli/server.go:292–368  ·  view source on GitHub ↗
(
	ctx context.Context,
	logger slog.Logger,
	vals *codersdk.DeploymentValues,
	options *coderd.Options,
)

Source from the content-addressed store, hash-verified

290}
291
292func enablePrometheus(
293 ctx context.Context,
294 logger slog.Logger,
295 vals *codersdk.DeploymentValues,
296 options *coderd.Options,
297) (closeFn func(), err error) {
298 options.PrometheusRegistry.MustRegister(collectors.NewGoCollector())
299 options.PrometheusRegistry.MustRegister(collectors.NewProcessCollector(collectors.ProcessCollectorOpts{}))
300
301 closeActiveUsersFunc, err := prometheusmetrics.ActiveUsers(ctx, options.Logger.Named("active_user_metrics"), options.PrometheusRegistry, options.Database, 0)
302 if err != nil {
303 return nil, xerrors.Errorf("register active users prometheus metric: %w", err)
304 }
305 afterCtx(ctx, closeActiveUsersFunc)
306
307 closeUsersFunc, err := prometheusmetrics.Users(ctx, options.Logger.Named("user_metrics"), quartz.NewReal(), options.PrometheusRegistry, options.Database, 0)
308 if err != nil {
309 return nil, xerrors.Errorf("register users prometheus metric: %w", err)
310 }
311 afterCtx(ctx, closeUsersFunc)
312
313 closeWorkspacesFunc, err := prometheusmetrics.Workspaces(ctx, options.Logger.Named("workspaces_metrics"), options.PrometheusRegistry, options.Database, 0)
314 if err != nil {
315 return nil, xerrors.Errorf("register workspaces prometheus metric: %w", err)
316 }
317 afterCtx(ctx, closeWorkspacesFunc)
318
319 insightsMetricsCollector, err := insights.NewMetricsCollector(options.Database, options.Logger, 0, 0)
320 if err != nil {
321 return nil, xerrors.Errorf("unable to initialize insights metrics collector: %w", err)
322 }
323 err = options.PrometheusRegistry.Register(insightsMetricsCollector)
324 if err != nil {
325 return nil, xerrors.Errorf("unable to register insights metrics collector: %w", err)
326 }
327
328 closeInsightsMetricsCollector, err := insightsMetricsCollector.Run(ctx)
329 if err != nil {
330 return nil, xerrors.Errorf("unable to run insights metrics collector: %w", err)
331 }
332 afterCtx(ctx, closeInsightsMetricsCollector)
333
334 if vals.Prometheus.CollectAgentStats {
335 experiments := coderd.ReadExperiments(options.Logger, options.DeploymentValues.Experiments.Value())
336 closeAgentStatsFunc, err := prometheusmetrics.AgentStats(ctx, logger, options.PrometheusRegistry, options.Database, time.Now(), 0, options.DeploymentValues.Prometheus.AggregateAgentStatsBy.Value(), experiments.Enabled(codersdk.ExperimentWorkspaceUsage))
337 if err != nil {
338 return nil, xerrors.Errorf("register agent stats prometheus metric: %w", err)
339 }
340 afterCtx(ctx, closeAgentStatsFunc)
341
342 metricsAggregator, err := prometheusmetrics.NewMetricsAggregator(logger, options.PrometheusRegistry, 0, options.DeploymentValues.Prometheus.AggregateAgentStatsBy.Value())
343 if err != nil {
344 return nil, xerrors.Errorf("can't initialize metrics aggregator: %w", err)
345 }
346
347 cancelMetricsAggregator := metricsAggregator.Run(ctx)
348 afterCtx(ctx, cancelMetricsAggregator)
349

Callers 1

ServerMethod · 0.85

Calls 15

RegisterMethod · 0.95
RunMethod · 0.95
RunMethod · 0.95
ActiveUsersFunction · 0.92
UsersFunction · 0.92
WorkspacesFunction · 0.92
NewMetricsCollectorFunction · 0.92
ReadExperimentsFunction · 0.92
AgentStatsFunction · 0.92
NewMetricsAggregatorFunction · 0.92
NewMetricsFunction · 0.92
afterCtxFunction · 0.85

Tested by

no test coverage detected