From 0f331e74cebb530680c1dc79cf0587c69f7f3b21 Mon Sep 17 00:00:00 2001 From: Kevin Ha Date: Fri, 6 Dec 2024 12:09:20 +1100 Subject: [PATCH 1/3] Add workspace build timing metrics --- provisionerd/provisionerd.go | 16 ++++++++++++++++ provisionerd/runner/runner.go | 11 ++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/provisionerd/provisionerd.go b/provisionerd/provisionerd.go index deac80466b48d..ae6ebc63524c2 100644 --- a/provisionerd/provisionerd.go +++ b/provisionerd/provisionerd.go @@ -178,6 +178,22 @@ func NewMetrics(reg prometheus.Registerer) Metrics { Name: "workspace_builds_total", Help: "The number of workspaces started, updated, or deleted.", }, []string{"workspace_owner", "workspace_name", "template_name", "template_version", "workspace_transition", "status"}), + WorkspaceBuildTimings: auto.NewHistogramVec(prometheus.HistogramOpts{ + Namespace: "coderd", + Subsystem: "provisionerd", + Name: "workspace_build_timings_seconds", + Help: "workspace build time in seconds.", + Buckets: []float64{ + 1, // 1s + 10, + 30, + 60, // 1min + 60 * 5, + 60 * 10, + 60 * 30, // 30min + 60 * 60, // 1hr + }, + }, []string{"workspace_owner", "workspace_name", "template_name", "template_version", "workspace_transition", "status"}), }, } } diff --git a/provisionerd/runner/runner.go b/provisionerd/runner/runner.go index d8b4149ec075f..97a2d261a27e8 100644 --- a/provisionerd/runner/runner.go +++ b/provisionerd/runner/runner.go @@ -86,7 +86,8 @@ type Metrics struct { // JobTimings also counts the total amount of jobs. JobTimings *prometheus.HistogramVec // WorkspaceBuilds counts workspace build successes and failures. - WorkspaceBuilds *prometheus.CounterVec + WorkspaceBuilds *prometheus.CounterVec + WorkspaceBuildTimings *prometheus.HistogramVec } type JobUpdater interface { @@ -189,6 +190,14 @@ func (r *Runner) Run() { build.Metadata.WorkspaceTransition.String(), status, ).Inc() + r.metrics.WorkspaceBuildTimings.WithLabelValues( + build.Metadata.WorkspaceOwner, + build.Metadata.WorkspaceName, + build.Metadata.TemplateName, + build.Metadata.TemplateVersion, + build.Metadata.WorkspaceTransition.String(), + status, + ).Observe(time.Since(start).Seconds()) } r.metrics.JobTimings.WithLabelValues(r.job.Provisioner, status).Observe(time.Since(start).Seconds()) }() From 455c61c9a21849bbfa3f110ec65ffc6127aac04b Mon Sep 17 00:00:00 2001 From: Kevin Ha Date: Mon, 9 Dec 2024 13:59:39 +1100 Subject: [PATCH 2/3] rc --- provisionerd/provisionerd.go | 2 +- provisionerd/runner/runner.go | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/provisionerd/provisionerd.go b/provisionerd/provisionerd.go index ae6ebc63524c2..e9f35eb213dc3 100644 --- a/provisionerd/provisionerd.go +++ b/provisionerd/provisionerd.go @@ -193,7 +193,7 @@ func NewMetrics(reg prometheus.Registerer) Metrics { 60 * 30, // 30min 60 * 60, // 1hr }, - }, []string{"workspace_owner", "workspace_name", "template_name", "template_version", "workspace_transition", "status"}), + }, []string{"template_name", "template_version", "workspace_transition", "status"}), }, } } diff --git a/provisionerd/runner/runner.go b/provisionerd/runner/runner.go index 97a2d261a27e8..ebecc3c89099e 100644 --- a/provisionerd/runner/runner.go +++ b/provisionerd/runner/runner.go @@ -191,8 +191,6 @@ func (r *Runner) Run() { status, ).Inc() r.metrics.WorkspaceBuildTimings.WithLabelValues( - build.Metadata.WorkspaceOwner, - build.Metadata.WorkspaceName, build.Metadata.TemplateName, build.Metadata.TemplateVersion, build.Metadata.WorkspaceTransition.String(), From 2f77a603f369b651eef138f9928b7ce3d02d609c Mon Sep 17 00:00:00 2001 From: Danny Kopping Date: Mon, 9 Dec 2024 08:41:52 +0200 Subject: [PATCH 3/3] Nit: consistency Signed-off-by: Danny Kopping --- provisionerd/provisionerd.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/provisionerd/provisionerd.go b/provisionerd/provisionerd.go index e9f35eb213dc3..4cf2436ea1267 100644 --- a/provisionerd/provisionerd.go +++ b/provisionerd/provisionerd.go @@ -182,7 +182,7 @@ func NewMetrics(reg prometheus.Registerer) Metrics { Namespace: "coderd", Subsystem: "provisionerd", Name: "workspace_build_timings_seconds", - Help: "workspace build time in seconds.", + Help: "The time taken for a workspace to build.", Buckets: []float64{ 1, // 1s 10,