Skip to content

Commit 6525911

Browse files
Laurie T. Malauroboquat
Laurie T. Malau
authored andcommitted
add metrics
1 parent 9121279 commit 6525911

File tree

4 files changed

+31
-1
lines changed

4 files changed

+31
-1
lines changed

Diff for: components/server/ee/src/workspace/workspace-factory.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +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-
33+
import { increasePrebuildsStartedCounter } from "../../../src/prometheus-metrics";
3434
@injectable()
3535
export class WorkspaceFactoryEE extends WorkspaceFactory {
3636
@inject(LicenseEvaluator) protected readonly licenseEvaluator: LicenseEvaluator;
@@ -177,6 +177,10 @@ export class WorkspaceFactoryEE extends WorkspaceFactory {
177177
statusVersion: 0,
178178
});
179179

180+
if (pws) {
181+
increasePrebuildsStartedCounter();
182+
}
183+
180184
log.debug(
181185
{ userId: user.id, workspaceId: ws.id },
182186
`Registered workspace prebuild: ${pws.id} for ${commitContext.repository.cloneUrl}:${commitContext.revision}`,

Diff for: components/server/src/prometheus-metrics.ts

+10
Original file line numberDiff line numberDiff line change
@@ -151,3 +151,13 @@ const instanceStartsFailedTotal = new prometheusClient.Counter({
151151
export function increaseFailedInstanceStartCounter(reason: "clusterSelectionFailed" | "startOnClusterFailed") {
152152
instanceStartsFailedTotal.inc({ reason });
153153
}
154+
155+
const prebuildsStartedTotal = new prometheusClient.Counter({
156+
name: "gitpod_prebuilds_started_total",
157+
help: "Counter of total prebuilds started.",
158+
registers: [prometheusClient.register],
159+
});
160+
161+
export function increasePrebuildsStartedCounter() {
162+
prebuildsStartedTotal.inc();
163+
}

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

+5
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ export class PrebuildUpdaterDB implements PrebuildUpdater {
7070
prebuild.statusVersion = status.statusVersion;
7171

7272
const update = this.prebuildStateMapper.mapWorkspaceStatusToPrebuild(status);
73+
const terminatingStates = ["available", "timeout", "aborted", "failed"];
7374
if (update) {
7475
const updatedPrebuild = {
7576
...prebuild,
@@ -79,6 +80,10 @@ export class PrebuildUpdaterDB implements PrebuildUpdater {
7980
span.setTag("updatePrebuildWorkspace.prebuild.state", updatedPrebuild.state);
8081
span.setTag("updatePrebuildWorkspace.prebuild.error", updatedPrebuild.error);
8182

83+
if (writeToDB && updatedPrebuild.state && terminatingStates.includes(updatedPrebuild.state)) {
84+
this.prometheusExporter.increasePrebuildsCompletedCounter(updatedPrebuild.state);
85+
}
86+
8287
if (writeToDB) {
8388
await this.workspaceDB.trace({ span }).storePrebuiltWorkspace(updatedPrebuild);
8489
}

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

+11
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 prebuildsCompletedTotal: 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.prebuildsCompletedTotal = new prom.Counter({
79+
name: "gitpod_prebuilds_completed_total",
80+
help: "Counter of total prebuilds ended.",
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+
increasePrebuildsCompletedCounter(state: string) {
154+
this.prebuildsCompletedTotal.inc({ state });
155+
}
145156
}

0 commit comments

Comments
 (0)