diff --git a/components/server/src/prometheus-metrics.ts b/components/server/src/prometheus-metrics.ts index 756fc6e0e54076..c8d13d5fe62f58 100644 --- a/components/server/src/prometheus-metrics.ts +++ b/components/server/src/prometheus-metrics.ts @@ -21,6 +21,7 @@ export function registerServerMetrics(registry: prometheusClient.Registry) { registry.registerMetric(instanceStartsFailedTotal); registry.registerMetric(prebuildsStartedTotal); registry.registerMetric(stripeClientRequestsCompletedDurationSeconds); + registry.registerMetric(imageBuildsStartedTotal); } const loginCounter = new prometheusClient.Counter({ @@ -176,3 +177,12 @@ export const stripeClientRequestsCompletedDurationSeconds = new prometheusClient export function observeStripeClientRequestsCompleted(operation: string, outcome: string, durationInSeconds: number) { stripeClientRequestsCompletedDurationSeconds.observe({ operation, outcome }, durationInSeconds); } + +export const imageBuildsStartedTotal = new prometheusClient.Counter({ + name: "gitpod_server_image_builds_started_total", + help: "counter of the total number of image builds started on server", +}); + +export function increaseImageBuildsStartedTotal() { + imageBuildsStartedTotal.inc(); +} diff --git a/components/server/src/workspace/workspace-starter.ts b/components/server/src/workspace/workspace-starter.ts index fe058aab3f09a5..bcd6152bcb8eed 100644 --- a/components/server/src/workspace/workspace-starter.ts +++ b/components/server/src/workspace/workspace-starter.ts @@ -114,6 +114,7 @@ import { ExtendedUser } from "@gitpod/ws-manager/lib/constraints"; import { FailedInstanceStartReason, increaseFailedInstanceStartCounter, + increaseImageBuildsStartedTotal, increaseSuccessfulInstanceStartCounter, } from "../prometheus-metrics"; import { ContextParser } from "./context-parser-service"; @@ -1205,6 +1206,7 @@ export class WorkspaceStarter { const span = TraceContext.startSpan("buildWorkspaceImage", ctx); try { + increaseImageBuildsStartedTotal(); // Start build... const client = await this.getImageBuilderClient(user, workspace, instance); const { src, auth, disposable } = await this.prepareBuildRequest(