Skip to content

Commit a3c29a7

Browse files
committed
DB calls
1 parent bfcd8f4 commit a3c29a7

File tree

1 file changed

+51
-5
lines changed

1 file changed

+51
-5
lines changed

coderd/prometheusmetrics/insights/metricscollector.go

Lines changed: 51 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"time"
66

77
"github.com/prometheus/client_golang/prometheus"
8+
"golang.org/x/sync/errgroup"
89
"golang.org/x/xerrors"
910

1011
"cdr.dev/slog"
@@ -52,19 +53,61 @@ func (mc *MetricsCollector) Run(ctx context.Context) (func(), error) {
5253
defer ticker.Reset(mc.duration)
5354

5455
now := time.Now()
56+
startTime := now.Add(-mc.duration)
57+
endTime := now
5558

5659
// TODO collect iteration time
5760

58-
parameterRows, err := mc.database.GetTemplateInsights(ctx, database.GetTemplateInsightsParams{
59-
StartTime: now.Add(-mc.duration),
60-
EndTime: now,
61+
var templateInsights database.GetTemplateInsightsRow
62+
var appInsights []database.GetTemplateAppInsightsRow
63+
var parameterInsights []database.GetTemplateParameterInsightsRow
64+
65+
// Phase I: Fetch insights from database
66+
eg, egCtx := errgroup.WithContext(ctx)
67+
eg.SetLimit(3)
68+
69+
eg.Go(func() error {
70+
var err error
71+
templateInsights, err = mc.database.GetTemplateInsights(egCtx, database.GetTemplateInsightsParams{
72+
StartTime: startTime,
73+
EndTime: endTime,
74+
})
75+
if err != nil {
76+
mc.logger.Error(ctx, "unable to fetch template insights from database", slog.Error(err))
77+
}
78+
return err
79+
})
80+
eg.Go(func() error {
81+
var err error
82+
appInsights, err = mc.database.GetTemplateAppInsights(ctx, database.GetTemplateAppInsightsParams{
83+
StartTime: startTime,
84+
EndTime: endTime,
85+
})
86+
if err != nil {
87+
mc.logger.Error(ctx, "unable to fetch app insights from database", slog.Error(err))
88+
}
89+
return err
90+
})
91+
eg.Go(func() error {
92+
var err error
93+
parameterInsights, err = mc.database.GetTemplateParameterInsights(ctx, database.GetTemplateParameterInsightsParams{
94+
StartTime: startTime,
95+
EndTime: endTime,
96+
})
97+
if err != nil {
98+
mc.logger.Error(ctx, "unable to fetch parameter insights from database", slog.Error(err))
99+
}
100+
return err
61101
})
102+
103+
err := eg.Wait()
62104
if err != nil {
63-
mc.logger.Error(ctx, "unable to fetch template insights from database", slog.Error(err))
64105
return
65106
}
66107

67-
mc.logger.Info(ctx, "debug", slog.F("parameter_rows", parameterRows))
108+
// Phase 2: Collect resource IDs (templates, applications, parameters), and fetch relevant details
109+
110+
// TODO
68111
}
69112

70113
go func() {
@@ -92,4 +135,7 @@ func (*MetricsCollector) Describe(descCh chan<- *prometheus.Desc) {
92135
}
93136

94137
func (mc *MetricsCollector) Collect(metricsCh chan<- prometheus.Metric) {
138+
// Phase 3: Collect metrics
139+
140+
// TODO
95141
}

0 commit comments

Comments
 (0)