Skip to content

Commit 3c6029a

Browse files
committed
Add galleryHost label
1 parent 3a6aac2 commit 3c6029a

File tree

4 files changed

+25
-8
lines changed

4 files changed

+25
-8
lines changed

src/vs/gitpod/browser/gitpodInsightsAppender.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ export class GitpodInsightsAppender implements ITelemetryAppender {
2020
private readonly _baseProperties: { appName: string; uiKind: 'web'; version: string };
2121
private readonly devMode = this.productService.nameShort.endsWith(' Dev');
2222
private gitpodUserId: string | undefined;
23+
private galleryHost: string | undefined;
24+
2325
constructor(
2426
@IProductService private readonly productService: IProductService
2527
) {
@@ -28,6 +30,8 @@ export class GitpodInsightsAppender implements ITelemetryAppender {
2830
uiKind: 'web',
2931
version: this.productService.version,
3032
};
33+
this.galleryHost = this.productService.extensionsGallery?.serviceUrl ? new URL(this.productService.extensionsGallery?.serviceUrl).host : undefined;
34+
3135
window.gitpod?.service.server.getLoggedInUser().then((user) => {
3236
this.gitpodUserId = user.id;
3337
}).catch((e) => {
@@ -71,7 +75,7 @@ export class GitpodInsightsAppender implements ITelemetryAppender {
7175

7276
private async sendMetrics(eventName: string, data: any): Promise<void> {
7377
try {
74-
const metrics = mapMetrics('window', eventName, data);
78+
const metrics = mapMetrics('window', eventName, data, { galleryHost: this.galleryHost });
7579
if (!metrics || !metrics.length) {
7680
return;
7781
}

src/vs/gitpod/common/insightsHelper.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,12 @@ function getEventName(name: string) {
3737
let readAccessTracked = false;
3838
let writeAccessTracked = false;
3939

40-
export function mapMetrics(source: 'window' | 'remote-server', eventName: string, data: any): IDEMetric[] | undefined {
40+
export function mapMetrics(source: 'window' | 'remote-server', eventName: string, data: any, extraData?: any): IDEMetric[] | undefined {
4141
const maybeMetrics = doMapMetrics(source, eventName, data);
4242
return maybeMetrics instanceof Array ? maybeMetrics : typeof maybeMetrics === 'object' ? [maybeMetrics] : undefined;
4343
}
4444

45-
function doMapMetrics(source: 'window' | 'remote-server', eventName: string, data: any): IDEMetric[] | IDEMetric | undefined {
45+
function doMapMetrics(source: 'window' | 'remote-server', eventName: string, data: any, extraData?: any): IDEMetric[] | IDEMetric | undefined {
4646
if (source === 'remote-server') {
4747
if (eventName.startsWith('extensionGallery:')) {
4848
const operation = eventName.split(':')[1];
@@ -53,6 +53,7 @@ function doMapMetrics(source: 'window' | 'remote-server', eventName: string, dat
5353
labels: {
5454
operation,
5555
status: data.success ? 'success' : 'failure',
56+
galleryHost: extraData.galleryHost
5657
// TODO errorCode
5758
}
5859
}];
@@ -61,7 +62,8 @@ function doMapMetrics(source: 'window' | 'remote-server', eventName: string, dat
6162
kind: 'histogram',
6263
name: 'gitpod_vscode_extension_gallery_operation_duration_seconds',
6364
labels: {
64-
operation
65+
operation,
66+
galleryHost: extraData.galleryHost
6567
},
6668
value: data.duration / 1000
6769
});
@@ -77,11 +79,14 @@ function doMapMetrics(source: 'window' | 'remote-server', eventName: string, dat
7779
status: data.success ? 'success' : 'failure',
7880
statusCode: data.statusCode,
7981
errorCode: data.errorCode,
82+
galleryHost: extraData.galleryHost
8083
}
8184
}, {
8285
kind: 'histogram',
8386
name: 'gitpod_vscode_extension_gallery_query_duration_seconds',
84-
labels: {},
87+
labels: {
88+
galleryHost: extraData.galleryHost
89+
},
8590
value: data.duration / 1000
8691
}];
8792
return metrics;

src/vs/gitpod/node/gitpodInsightsAppender.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,22 @@ export class GitpodInsightsAppender implements ITelemetryAppender {
5656
private readonly supervisor = new SupervisorConnection();
5757
private readonly devMode = this.productName.endsWith(' Dev');
5858
private gitpodUserId: string | undefined;
59+
private galleryHost: string | undefined;
5960

60-
constructor(private productName: string, private productVersion: string, private readonly gitpodPreview?: IGitpodPreviewConfiguration) {
61+
constructor(
62+
private productName: string,
63+
private productVersion: string,
64+
private readonly gitpodPreview?: IGitpodPreviewConfiguration,
65+
readonly galleryServiceUrl?: string
66+
) {
6167
this._asyncAIClient = null;
6268
this._baseProperties = {
6369
appName: productName,
6470
uiKind: 'web',
6571
version: productVersion,
6672
};
73+
this.galleryHost = galleryServiceUrl ? new URL(galleryServiceUrl).host : undefined;
74+
6775
this._withAIClient(async (client) => {
6876
this.gitpodUserId = (await client.getLoggedInUser()).id;
6977
});
@@ -136,7 +144,7 @@ export class GitpodInsightsAppender implements ITelemetryAppender {
136144

137145
private async sendMetrics(data: any, eventName: string): Promise<void> {
138146
try {
139-
const metrics = mapMetrics('remote-server', eventName, data);
147+
const metrics = mapMetrics('remote-server', eventName, data, { galleryHost: this.galleryHost });
140148
if (!metrics || !metrics.length) {
141149
return;
142150
}

src/vs/server/node/serverServices.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ export async function setupServerServices(connectionToken: ServerConnectionToken
146146
disposables.add(toDisposable(() => oneDsAppender?.flush())); // Ensure the AI appender is disposed so that it flushes remaining data
147147
}
148148

149-
oneDsAppender = new GitpodInsightsAppender(productService.nameShort, productService.version, productService.gitpodPreview);
149+
oneDsAppender = new GitpodInsightsAppender(productService.nameShort, productService.version, productService.gitpodPreview, productService.extensionsGallery?.serviceUrl);
150150

151151
const config: ITelemetryServiceConfig = {
152152
appenders: [oneDsAppender],

0 commit comments

Comments
 (0)