Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitb59ebad

Browse files
committed
chore: add provisionerdserver metrics
1 parent3cde491 commitb59ebad

File tree

8 files changed

+204
-183
lines changed

8 files changed

+204
-183
lines changed

‎cli/server.go‎

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ import (
5353
"gopkg.in/yaml.v3"
5454
"tailscale.com/tailcfg"
5555

56+
"github.com/coder/coder/v2/coderd/provisionerdserver"
57+
5658
"cdr.dev/slog"
5759
"cdr.dev/slog/sloggers/sloghuman"
5860
"github.com/coder/coder/v2/coderd/pproflabel"
@@ -236,12 +238,11 @@ func enablePrometheus(
236238
}
237239
afterCtx(ctx,closeUsersFunc)
238240

239-
closeWorkspacesFunc,updateWorkspaceTimingsMetrics,err:=prometheusmetrics.Workspaces(ctx,options.Logger.Named("workspaces_metrics"),options.PrometheusRegistry,options.Database,0)
241+
closeWorkspacesFunc,err:=prometheusmetrics.Workspaces(ctx,options.Logger.Named("workspaces_metrics"),options.PrometheusRegistry,options.Database,0)
240242
iferr!=nil {
241243
returnnil,xerrors.Errorf("register workspaces prometheus metric: %w",err)
242244
}
243245
afterCtx(ctx,closeWorkspacesFunc)
244-
options.UpdateWorkspaceTimingMetricsFn=updateWorkspaceTimingsMetrics
245246

246247
insightsMetricsCollector,err:=insights.NewMetricsCollector(options.Database,options.Logger,0,0)
247248
iferr!=nil {
@@ -281,6 +282,12 @@ func enablePrometheus(
281282
}
282283
}
283284

285+
provisionerdserverMetrics:=provisionerdserver.NewMetrics(logger)
286+
iferr:=provisionerdserverMetrics.Register(options.PrometheusRegistry);err!=nil {
287+
returnnil,xerrors.Errorf("failed to register provisionerd_server metrics: %w",err)
288+
}
289+
options.ProvisionerdServerMetrics=provisionerdserverMetrics
290+
284291
//nolint:revive
285292
returnServeHandler(
286293
ctx,logger,promhttp.InstrumentMetricHandler(

‎coderd/coderd.go‎

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -241,8 +241,7 @@ type Options struct {
241241
UpdateAgentMetricsfunc(ctx context.Context,labels prometheusmetrics.AgentMetricLabels,metrics []*agentproto.Stats_Metric)
242242
StatsBatcher workspacestats.Batcher
243243

244-
// Function to update workspace timing metrics from provisionerdserver
245-
UpdateWorkspaceTimingMetricsFn prometheusmetrics.UpdateWorkspaceTimingMetricsFn
244+
ProvisionerdServerMetrics*provisionerdserver.Metrics
246245

247246
// WorkspaceAppAuditSessionTimeout allows changing the timeout for audit
248247
// sessions. Raising or lowering this value will directly affect the write
@@ -1927,13 +1926,13 @@ func (api *API) CreateInMemoryTaggedProvisionerDaemon(dialCtx context.Context, n
19271926
api.UsageInserter,
19281927
api.DeploymentValues,
19291928
provisionerdserver.Options{
1930-
OIDCConfig:api.OIDCConfig,
1931-
ExternalAuthConfigs:api.ExternalAuthConfigs,
1932-
Clock:api.Clock,
1933-
UpdateWorkspaceTimingMetricsFn:api.UpdateWorkspaceTimingMetricsFn,
1929+
OIDCConfig:api.OIDCConfig,
1930+
ExternalAuthConfigs:api.ExternalAuthConfigs,
1931+
Clock:api.Clock,
19341932
},
19351933
api.NotificationsEnqueuer,
19361934
&api.PrebuildsReconciler,
1935+
api.ProvisionerdServerMetrics,
19371936
)
19381937
iferr!=nil {
19391938
returnnil,err

‎coderd/prometheusmetrics/prometheusmetrics.go‎

Lines changed: 6 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ func Users(ctx context.Context, logger slog.Logger, clk quartz.Clock, registerer
128128
}
129129

130130
// Workspaces tracks the total number of workspaces with labels on status.
131-
funcWorkspaces(ctx context.Context,logger slog.Logger,registerer prometheus.Registerer,db database.Store,duration time.Duration) (func(),UpdateWorkspaceTimingMetricsFn,error) {
131+
funcWorkspaces(ctx context.Context,logger slog.Logger,registerer prometheus.Registerer,db database.Store,duration time.Duration) (func(),error) {
132132
ifduration==0 {
133133
duration=defaultRefreshRate
134134
}
@@ -143,7 +143,7 @@ func Workspaces(ctx context.Context, logger slog.Logger, registerer prometheus.R
143143
Help:"DEPRECATED: use coderd_api_workspace_latest_build instead",
144144
}, []string{"status"})
145145
iferr:=registerer.Register(workspaceLatestBuildTotalsDeprecated);err!=nil {
146-
returnnil,nil,err
146+
returnnil,err
147147
}
148148

149149
workspaceLatestBuildTotals:=prometheus.NewGaugeVec(prometheus.GaugeOpts{
@@ -153,7 +153,7 @@ func Workspaces(ctx context.Context, logger slog.Logger, registerer prometheus.R
153153
Help:"The current number of workspace builds by status for all non-deleted workspaces.",
154154
}, []string{"status"})
155155
iferr:=registerer.Register(workspaceLatestBuildTotals);err!=nil {
156-
returnnil,nil,err
156+
returnnil,err
157157
}
158158

159159
workspaceLatestBuildStatuses:=prometheus.NewGaugeVec(prometheus.GaugeOpts{
@@ -162,7 +162,7 @@ func Workspaces(ctx context.Context, logger slog.Logger, registerer prometheus.R
162162
Help:"The current workspace statuses by template, transition, and owner for all non-deleted workspaces.",
163163
}, []string{"status","template_name","template_version","workspace_owner","workspace_transition"})
164164
iferr:=registerer.Register(workspaceLatestBuildStatuses);err!=nil {
165-
returnnil,nil,err
165+
returnnil,err
166166
}
167167

168168
workspaceCreationTotal:=prometheus.NewCounterVec(
@@ -175,65 +175,7 @@ func Workspaces(ctx context.Context, logger slog.Logger, registerer prometheus.R
175175
[]string{"organization_name","template_name","preset_name"},
176176
)
177177
iferr:=registerer.Register(workspaceCreationTotal);err!=nil {
178-
returnnil,nil,err
179-
}
180-
181-
workspaceCreationTimings:=prometheus.NewHistogramVec(prometheus.HistogramOpts{
182-
Namespace:"coderd",
183-
Subsystem:"",
184-
Name:"workspace_creation_duration_seconds",
185-
Help:"Time to create a workspace by organization, template, preset, and type (regular or prebuild).",
186-
Buckets: []float64{
187-
1,// 1s
188-
10,
189-
30,
190-
60,// 1min
191-
60*5,
192-
60*10,
193-
60*30,// 30min
194-
60*60,// 1hr
195-
},
196-
NativeHistogramBucketFactor:1.1,
197-
// Max number of native buckets kept at once to bound memory.
198-
NativeHistogramMaxBucketNumber:100,
199-
// Merge/flush small buckets periodically to control churn.
200-
NativeHistogramMinResetDuration:time.Hour,
201-
// Treat tiny values as zero (helps with noisy near-zero latencies).
202-
NativeHistogramZeroThreshold:0,
203-
NativeHistogramMaxZeroThreshold:0,
204-
}, []string{"organization_name","template_name","preset_name","type"})
205-
iferr:=registerer.Register(workspaceCreationTimings);err!=nil {
206-
returnnil,nil,err
207-
}
208-
209-
workspaceClaimTimings:=prometheus.NewHistogramVec(prometheus.HistogramOpts{
210-
Namespace:"coderd",
211-
Subsystem:"",
212-
Name:"prebuilt_workspace_claim_duration_seconds",
213-
Help:"Time to claim a prebuilt workspace by organization, template, and preset.",
214-
Buckets: []float64{
215-
1,// 1s
216-
5,
217-
10,
218-
20,
219-
30,
220-
60,// 1m
221-
120,// 2m
222-
180,// 3m
223-
240,// 4m
224-
300,// 5m
225-
},
226-
NativeHistogramBucketFactor:1.1,
227-
// Max number of native buckets kept at once to bound memory.
228-
NativeHistogramMaxBucketNumber:100,
229-
// Merge/flush small buckets periodically to control churn.
230-
NativeHistogramMinResetDuration:time.Hour,
231-
// Treat tiny values as zero (helps with noisy near-zero latencies).
232-
NativeHistogramZeroThreshold:0,
233-
NativeHistogramMaxZeroThreshold:0,
234-
}, []string{"organization_name","template_name","preset_name"})
235-
iferr:=registerer.Register(workspaceClaimTimings);err!=nil {
236-
returnnil,nil,err
178+
returnnil,err
237179
}
238180

239181
ctx,cancelFunc:=context.WithCancel(ctx)
@@ -318,71 +260,7 @@ func Workspaces(ctx context.Context, logger slog.Logger, registerer prometheus.R
318260
returnfunc() {
319261
cancelFunc()
320262
<-done
321-
},updateWorkspaceTimingsMetrics(workspaceCreationTimings,workspaceClaimTimings),nil
322-
}
323-
324-
typeWorkspaceTimingTypeint
325-
326-
const (
327-
UnsupportedWorkspaceTimingType=iota
328-
WorkspaceCreation
329-
PrebuildCreation
330-
PrebuildClaim
331-
)
332-
333-
const (
334-
workspaceTypeRegular="regular"
335-
workspaceTypePrebuild="prebuild"
336-
)
337-
338-
typeUpdateWorkspaceTimingMetricsFnfunc(
339-
workspaceTimingTypeWorkspaceTimingType,
340-
organizationNamestring,
341-
templateNamestring,
342-
presetNamestring,
343-
buildTimefloat64,
344-
)
345-
346-
funcGetTimingType(isPrebuildbool,isClaimbool,isWorkspaceFirstBuildbool)WorkspaceTimingType {
347-
switch {
348-
caseisPrebuild:
349-
returnPrebuildCreation
350-
caseisClaim:
351-
returnPrebuildClaim
352-
caseisWorkspaceFirstBuild:
353-
returnWorkspaceCreation
354-
default:
355-
returnUnsupported
356-
}
357-
}
358-
359-
funcupdateWorkspaceTimingsMetrics(
360-
workspaceCreationTimings*prometheus.HistogramVec,
361-
workspaceClaimTimings*prometheus.HistogramVec,
362-
)UpdateWorkspaceTimingMetricsFn {
363-
returnfunc(
364-
workspaceTimingTypeWorkspaceTimingType,
365-
organizationNamestring,
366-
templateNamestring,
367-
presetNamestring,
368-
buildTimefloat64,
369-
) {
370-
switchworkspaceTimingType {
371-
caseWorkspaceCreation:
372-
// Regular workspace creation (without prebuild pool)
373-
workspaceCreationTimings.
374-
WithLabelValues(organizationName,templateName,presetName,workspaceTypeRegular).Observe(buildTime)
375-
casePrebuildCreation:
376-
// Prebuilt workspace creation duration
377-
workspaceCreationTimings.
378-
WithLabelValues(organizationName,templateName,presetName,workspaceTypePrebuild).Observe(buildTime)
379-
casePrebuildClaim:
380-
// Prebuilt workspace claim duration
381-
workspaceClaimTimings.
382-
WithLabelValues(organizationName,templateName,presetName).Observe(buildTime)
383-
default:
384-
}
385-
}
263+
},nil
386264
}
387265

388266
// Agents tracks the total number of workspaces with labels on status.

‎coderd/prometheusmetrics/prometheusmetrics_test.go‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ func TestWorkspaceLatestBuildTotals(t *testing.T) {
277277
t.Run(tc.Name,func(t*testing.T) {
278278
t.Parallel()
279279
registry:=prometheus.NewRegistry()
280-
closeFunc,_,err:=prometheusmetrics.Workspaces(context.Background(),testutil.Logger(t).Leveled(slog.LevelWarn),registry,tc.Database(),testutil.IntervalFast)
280+
closeFunc,err:=prometheusmetrics.Workspaces(context.Background(),testutil.Logger(t).Leveled(slog.LevelWarn),registry,tc.Database(),testutil.IntervalFast)
281281
require.NoError(t,err)
282282
t.Cleanup(closeFunc)
283283

@@ -380,7 +380,7 @@ func TestWorkspaceLatestBuildStatuses(t *testing.T) {
380380
t.Run(tc.Name,func(t*testing.T) {
381381
t.Parallel()
382382
registry:=prometheus.NewRegistry()
383-
closeFunc,_,err:=prometheusmetrics.Workspaces(context.Background(),testutil.Logger(t),registry,tc.Database(),testutil.IntervalFast)
383+
closeFunc,err:=prometheusmetrics.Workspaces(context.Background(),testutil.Logger(t),registry,tc.Database(),testutil.IntervalFast)
384384
require.NoError(t,err)
385385
t.Cleanup(closeFunc)
386386

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp