Skip to content

Commit 4563517

Browse files
committed
Add isContainer property to telemetry
1 parent b8cdab2 commit 4563517

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

patches/display-language.diff

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Index: code-server/lib/vscode/src/vs/server/node/serverServices.ts
3030
import { ProtocolConstants } from 'vs/base/parts/ipc/common/ipc.net';
3131
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
3232
import { ConfigurationService } from 'vs/platform/configuration/common/configurationService';
33-
@@ -228,6 +228,9 @@ export async function setupServerService
33+
@@ -239,6 +239,9 @@ export async function setupServerService
3434
const channel = new ExtensionManagementChannel(extensionManagementService, (ctx: RemoteAgentConnectionContext) => getUriTransformer(ctx.remoteAuthority));
3535
socketServer.registerChannel('extensions', channel);
3636

patches/telemetry.diff

+23-4
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,29 @@ Index: code-server/lib/vscode/src/vs/server/node/serverServices.ts
2020
import { NullPolicyService } from 'vs/platform/policy/common/policy';
2121
import { OneDataSystemAppender } from 'vs/platform/telemetry/node/1dsAppender';
2222
import { LoggerService } from 'vs/platform/log/node/loggerService';
23-
@@ -149,7 +150,10 @@ export async function setupServerService
23+
@@ -146,10 +147,25 @@ export async function setupServerService
24+
const requestService = new RequestService(configurationService, environmentService, logService, loggerService);
25+
services.set(IRequestService, requestService);
26+
27+
+ let isContainer = undefined;
28+
+ try {
29+
+ await Promises.stat('/run/.containerenv');
30+
+ isContainer = true;
31+
+ } catch (error) { /* Does not exist, probably. */ }
32+
+ if (!isContainer) {
33+
+ try {
34+
+ const content = await Promises.readFile('/proc/self/cgroup', 'utf8')
35+
+ isContainer = content.includes('docker');
36+
+ } catch (error) { /* Permission denied, probably. */ }
37+
+ }
38+
+
2439
let oneDsAppender: ITelemetryAppender = NullAppender;
2540
const isInternal = isInternalTelemetry(productService, configurationService);
2641
if (supportsTelemetry(productService, environmentService)) {
2742
- if (!isLoggingOnly(productService, environmentService) && productService.aiConfig?.ariaKey) {
2843
+ const telemetryEndpoint = process.env.CS_TELEMETRY_URL || "https://v1.telemetry.coder.com/track";
2944
+ if (telemetryEndpoint) {
30-
+ oneDsAppender = new OneDataSystemAppender(requestService, false, eventPrefix, null, () => new TelemetryClient(telemetryEndpoint));
45+
+ oneDsAppender = new OneDataSystemAppender(requestService, false, eventPrefix, null, () => new TelemetryClient(telemetryEndpoint, isContainer));
3146
+ } else if (!isLoggingOnly(productService, environmentService) && productService.aiConfig?.ariaKey) {
3247
oneDsAppender = new OneDataSystemAppender(requestService, isInternal, eventPrefix, null, productService.aiConfig.ariaKey);
3348
disposables.add(toDisposable(() => oneDsAppender?.flush())); // Ensure the AI appender is disposed so that it flushes remaining data
@@ -36,14 +51,16 @@ Index: code-server/lib/vscode/src/vs/server/node/telemetryClient.ts
3651
===================================================================
3752
--- /dev/null
3853
+++ code-server/lib/vscode/src/vs/server/node/telemetryClient.ts
39-
@@ -0,0 +1,49 @@
54+
@@ -0,0 +1,53 @@
4055
+import { AppInsightsCore, IExtendedTelemetryItem, ITelemetryItem } from '@microsoft/1ds-core-js';
4156
+import * as https from 'https';
4257
+import * as http from 'http';
4358
+import * as os from 'os';
4459
+
4560
+export class TelemetryClient extends AppInsightsCore {
46-
+ public constructor(private readonly endpoint: string) {
61+
+ public constructor(
62+
+ private readonly endpoint: string,
63+
+ private readonly isContainer: Boolean | undefined) {
4764
+ super();
4865
+ }
4966
+
@@ -73,6 +90,8 @@ Index: code-server/lib/vscode/src/vs/server/node/telemetryClient.ts
7390
+ options.properties['common.arch'] = os.arch();
7491
+ } catch (error) {}
7592
+
93+
+ options.properties['common.isContainer'] = this.isContainer;
94+
+
7695
+ try {
7796
+ const request = (/^http:/.test(this.endpoint) ? http : https).request(this.endpoint, {
7897
+ method: 'POST',

0 commit comments

Comments
 (0)