Skip to content

Commit f2e58d8

Browse files
author
Laurie T. Malau
committed
add metrics
1 parent aafb99b commit f2e58d8

File tree

4 files changed

+28
-0
lines changed

4 files changed

+28
-0
lines changed

components/server/ee/src/workspace/workspace-factory.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import { ErrorCodes } from "@gitpod/gitpod-protocol/lib/messaging/error";
3030
import { HostContextProvider } from "../../../src/auth/host-context-provider";
3131
import { UserDB } from "@gitpod/gitpod-db/lib";
3232
import { UserCounter } from "../user/user-counter";
33+
import { increasePrebuildsCounter } from "../../../src/prometheus-metrics";
3334

3435
@injectable()
3536
export class WorkspaceFactoryEE extends WorkspaceFactory {
@@ -177,6 +178,10 @@ export class WorkspaceFactoryEE extends WorkspaceFactory {
177178
statusVersion: 0,
178179
});
179180

181+
if (pws) {
182+
increasePrebuildsCounter(pws.state);
183+
}
184+
180185
log.debug(
181186
{ userId: user.id, workspaceId: ws.id },
182187
`Registered workspace prebuild: ${pws.id} for ${commitContext.repository.cloneUrl}:${commitContext.revision}`,

components/server/src/prometheus-metrics.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,3 +151,14 @@ const instanceStartsFailedTotal = new prometheusClient.Counter({
151151
export function increaseFailedInstanceStartCounter(reason: "clusterSelectionFailed" | "startOnClusterFailed") {
152152
instanceStartsFailedTotal.inc({ reason });
153153
}
154+
155+
const prebuildsTotal = new prometheusClient.Counter({
156+
name: "gitpod_prebuilds_total",
157+
help: "Counter of total prebuilds.",
158+
labelNames: ["state"],
159+
registers: [prometheusClient.register],
160+
});
161+
162+
export function increasePrebuildsCounter(state: string) {
163+
prebuildsTotal.inc({ state });
164+
}

components/ws-manager-bridge/ee/src/prebuild-updater-db.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ export class PrebuildUpdaterDB implements PrebuildUpdater {
7878

7979
span.setTag("updatePrebuildWorkspace.prebuild.state", updatedPrebuild.state);
8080
span.setTag("updatePrebuildWorkspace.prebuild.error", updatedPrebuild.error);
81+
this.prometheusExporter.increasePrebuildsCounter(updatedPrebuild.state);
8182

8283
if (writeToDB) {
8384
await this.workspaceDB.trace({ span }).storePrebuiltWorkspace(updatedPrebuild);

components/ws-manager-bridge/src/prometheus-metrics-exporter.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export class PrometheusMetricsExporter {
1818
protected readonly clusterCordoned: prom.Gauge<string>;
1919
protected readonly statusUpdatesTotal: prom.Counter<string>;
2020
protected readonly stalePrebuildEventsTotal: prom.Counter<string>;
21+
protected readonly prebuildsTotal: prom.Counter<string>;
2122

2223
protected readonly workspaceInstanceUpdateStartedTotal: prom.Counter<string>;
2324
protected readonly workspaceInstanceUpdateCompletedSeconds: prom.Histogram<string>;
@@ -73,6 +74,12 @@ export class PrometheusMetricsExporter {
7374
labelNames: ["db_write", "workspace_cluster", "workspace_instance_type", "outcome"],
7475
buckets: prom.exponentialBuckets(2, 2, 8),
7576
});
77+
78+
this.prebuildsTotal = new prom.Counter({
79+
name: "gitpod_prebuilds_total",
80+
help: "Counter of total prebuilds.",
81+
labelNames: ["state"],
82+
});
7683
}
7784

7885
observeWorkspaceStartupTime(instance: WorkspaceInstance): void {
@@ -142,4 +149,8 @@ export class PrometheusMetricsExporter {
142149
.labels(String(dbWrite), workspaceCluster, WorkspaceType[type], outcome)
143150
.observe(durationSeconds);
144151
}
152+
153+
increasePrebuildsCounter(state: string) {
154+
this.prebuildsTotal.inc({ state });
155+
}
145156
}

0 commit comments

Comments
 (0)