Skip to content

Commit a6c9c1a

Browse files
committed
Use db
1 parent 24e4ff3 commit a6c9c1a

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

cli/server.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,10 @@ func enablePrometheus(
199199
}
200200
afterCtx(ctx, closeWorkspacesFunc)
201201

202-
insightsMetricsCollector := insights.NewMetricsCollector(options.Database, 0)
202+
insightsMetricsCollector, err := insights.NewMetricsCollector(options.Database, options.Logger, 0)
203+
if err != nil {
204+
return nil, xerrors.Errorf("unable to initialize insights metrics collector: %w", err)
205+
}
203206
err = options.PrometheusRegistry.Register(insightsMetricsCollector)
204207
if err != nil {
205208
return nil, xerrors.Errorf("unable to register insights metrics collector: %w", err)

coderd/prometheusmetrics/insights/metricscollector.go

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ import (
44
"context"
55
"time"
66

7+
"cdr.dev/slog"
78
"github.com/prometheus/client_golang/prometheus"
9+
"golang.org/x/xerrors"
810

911
"github.com/coder/coder/v2/coderd/database"
1012
)
@@ -17,20 +19,25 @@ var (
1719

1820
type MetricsCollector struct {
1921
database database.Store
22+
logger slog.Logger
2023
duration time.Duration
2124
}
2225

2326
var _ prometheus.Collector = new(MetricsCollector)
2427

25-
func NewMetricsCollector(db database.Store, duration time.Duration) *MetricsCollector {
28+
func NewMetricsCollector(db database.Store, logger slog.Logger, duration time.Duration) (*MetricsCollector, error) {
2629
if duration == 0 {
2730
duration = 5 * time.Minute
2831
}
32+
if duration < 5*time.Minute {
33+
return nil, xerrors.Errorf("refresh interval must be at least 5 mins")
34+
}
2935

3036
return &MetricsCollector{
3137
database: db,
38+
logger: logger.Named("insights_metrics_collector"),
3239
duration: duration,
33-
}
40+
}, nil
3441
}
3542

3643
func (mc *MetricsCollector) Run(ctx context.Context) (func(), error) {
@@ -42,6 +49,18 @@ func (mc *MetricsCollector) Run(ctx context.Context) (func(), error) {
4249
ticker := time.NewTicker(time.Nanosecond)
4350
doTick := func() {
4451
defer ticker.Reset(mc.duration)
52+
53+
now := time.Now()
54+
55+
parameterRows, err := mc.database.GetTemplateInsights(ctx, database.GetTemplateInsightsParams{
56+
StartTime: now.Add(-mc.duration),
57+
EndTime: now,
58+
})
59+
if err != nil {
60+
mc.logger.Error(ctx, "unable to fetch template insights from database: %w", err)
61+
return
62+
}
63+
4564
}
4665

4766
go func() {

0 commit comments

Comments
 (0)