diff --git a/packages/backend/src/helpers/telemetry.ts b/packages/backend/src/helpers/telemetry/index.ts similarity index 65% rename from packages/backend/src/helpers/telemetry.ts rename to packages/backend/src/helpers/telemetry/index.ts index d2ab6c9f..6c3e78f2 100644 --- a/packages/backend/src/helpers/telemetry.ts +++ b/packages/backend/src/helpers/telemetry/index.ts @@ -1,19 +1,31 @@ import Analytics, { apiObject } from '@rudderstack/rudder-sdk-node'; +import organizationId from './organization-id'; +import instanceId from './instance-id'; +import appConfig from '../../config/app'; const WRITE_KEY = '284Py4VgK2MsNYV7xlKzyrALx0v'; const DATA_PLANE_URL = 'https://telemetry.automatisch.io/v1/batch'; class Telemetry { + organizationId: string; instanceId: string; client: Analytics; constructor() { this.client = new Analytics(WRITE_KEY, DATA_PLANE_URL); + this.organizationId = organizationId(); + this.instanceId = instanceId(); } track(name: string, properties: apiObject) { + properties = { + ...properties, + appEnv: appConfig.appEnv, + instanceId: this.instanceId, + }; + this.client.track({ - userId: 'sample', + userId: this.organizationId, event: name, properties, }); diff --git a/packages/backend/src/helpers/telemetry/instance-id.ts b/packages/backend/src/helpers/telemetry/instance-id.ts new file mode 100644 index 00000000..ce0b3024 --- /dev/null +++ b/packages/backend/src/helpers/telemetry/instance-id.ts @@ -0,0 +1,7 @@ +import Crypto from 'crypto'; + +const instanceId = () => { + return Crypto.randomUUID(); +}; + +export default instanceId; diff --git a/packages/backend/src/helpers/telemetry/organization-id.ts b/packages/backend/src/helpers/telemetry/organization-id.ts new file mode 100644 index 00000000..34407375 --- /dev/null +++ b/packages/backend/src/helpers/telemetry/organization-id.ts @@ -0,0 +1,13 @@ +import CryptoJS from 'crypto-js'; +import appConfig from '../../config/app'; + +const organizationId = () => { + const key = appConfig.encryptionKey; + const hash = CryptoJS.SHA3(key, { outputLength: 256 }).toString( + CryptoJS.enc.Hex + ); + + return hash; +}; + +export default organizationId;