Files
azuredatastudio/extensions/sql-migration/src/telemetry.ts
junierch e741fa0bbd telemetry for tde user actions (#22474)
* telemetry for user actions

* remove unused action

* try catch around admin function
2023-03-27 17:48:47 -04:00

121 lines
5.3 KiB
TypeScript

/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import AdsTelemetryReporter, { TelemetryEventMeasures, TelemetryEventProperties } from '@microsoft/ads-extension-telemetry';
import { MigrationStateModel } from './models/stateMachine';
const packageJson = require('../package.json');
let packageInfo = {
name: packageJson.name,
version: packageJson.version,
aiKey: packageJson.aiKey
};
export const TelemetryReporter = new AdsTelemetryReporter<TelemetryViews, TelemetryAction>(packageInfo.name, packageInfo.version, packageInfo.aiKey);
export enum TelemetryViews {
SqlServerDashboard = 'SqlServerDashboard',
CreateDataMigrationServiceDialog = 'CreateDataMigrationServiceDialog',
AssessmentsDialog = 'AssessmentsDialog',
DatabaseBackupPage = 'DatabaseBackupPage',
IntegrationRuntimePage = 'IntegrationRuntimePage',
MigrationCutoverDialog = 'MigrationCutoverDialog',
MigrationStatusDialog = 'MigrationStatusDialog',
DashboardTab = 'DashboardTab',
MigrationsTab = 'MigrationsTab',
MigrationDetailsTab = 'MigrationDetailsTab',
MigrationWizardAccountSelectionPage = 'MigrationWizardAccountSelectionPage',
MigrationWizardSkuRecommendationPage = 'MigrationWizardSkuRecommendationPage',
MigrationWizardTargetSelectionPage = 'MigrationWizardTargetSelectionPage',
MigrationWizardIntegrationRuntimePage = 'MigrationWizardIntegrationRuntimePage',
MigrationWizardSummaryPage = 'MigrationWizardSummaryPage',
MigrationWizardController = 'MigrationWizardController',
StartMigrationService = 'StartMigrationSerivce',
SqlMigrationWizard = 'SqlMigrationWizard',
MigrationLocalStorage = 'MigrationLocalStorage',
SkuRecommendationWizard = 'SkuRecommendationWizard',
DataCollectionWizard = 'GetAzureRecommendationDialog',
SelectMigrationServiceDialog = 'SelectMigrationServiceDialog',
Utils = 'Utils',
LoginMigrationWizardController = 'LoginMigrationWizardController',
LoginMigrationWizard = 'LoginMigrationWizard',
LoginMigrationTargetSelectionPage = 'LoginMigrationTargetSelectionPage',
LoginMigrationSelectorPage = 'LoginMigrationSelectorPage',
LoginMigrationStatusPage = 'LoginMigrationStatusPage',
TdeConfigurationDialog = 'TdeConfigurationDialog',
TdeMigrationDialog = 'TdeMigrationDialog',
ValidIrDialog = 'validIrDialog',
}
export enum TelemetryAction {
ServerAssessment = 'ServerAssessment',
ServerAssessmentIssues = 'ServerAssessmentIssues',
ServerAssessmentError = 'ServerAssessmentError',
DatabaseAssessment = 'DatabaseAsssessment',
DatabaseAssessmentWarning = 'DatabaseAssessmentWarning',
DatabaseAssessmentError = 'DatabaseAssessmentError',
StartMigration = 'StartMigration',
CutoverMigration = 'CutoverMigration',
CancelMigration = 'CancelMigration',
DeleteMigration = 'DeleteMigration',
MigrationStatus = 'MigrationStatus',
PageButtonClick = 'PageButtonClick',
Prev = 'prev',
Next = 'next',
Done = 'done',
Cancel = 'cancel',
OnPageLeave = 'OnPageLeave',
GetMISkuRecommendation = 'GetMISkuRecommendation',
GetVMSkuRecommendation = 'GetVMSkuRecommendation',
GetDBSkuRecommendation = 'GetDBSkuRecommendation',
GetInstanceRequirements = 'GetInstanceRequirements',
StartDataCollection = 'StartDataCollection',
StopDataCollection = 'StopDataCollection',
GetDatabasesListFailed = 'GetDatabasesListFailed',
ConnectToTarget = 'ConnectToTarget',
OpenLoginMigrationWizard = 'OpenLoginMigrationWizard',
LoginMigrationStarted = 'LoginMigrationStarted',
LoginMigrationCompleted = 'LoginMigrationCompleted',
TdeMigrationSuccess = 'TdeMigrationSuccess',
TdeMigrationFailures = 'TdeMigrationFailures',
TdeMigrationClientException = 'TdeMigrationClientException',
TdeConfigurationUseADS = 'TdeConfigurationUseADS',
TdeConfigurationIgnoreADS = 'TdeConfigurationIgnoreADS'
}
export function logError(telemetryView: TelemetryViews, err: string, error: any): void {
console.log(error);
TelemetryReporter.sendErrorEvent(telemetryView, err);
}
export function sendSqlMigrationActionEvent(telemetryView: TelemetryViews, telemetryAction: TelemetryAction, additionalProps: TelemetryEventProperties, additionalMeasurements: TelemetryEventMeasures): void {
TelemetryReporter.createActionEvent(telemetryView, telemetryAction)
.withAdditionalProperties(additionalProps)
.withAdditionalMeasurements(additionalMeasurements)
.send();
}
export function getTelemetryProps(migrationStateModel: MigrationStateModel): TelemetryEventProperties {
return {
'sessionId': migrationStateModel._sessionId,
'subscriptionId': migrationStateModel._targetSubscription?.id,
'resourceGroup': migrationStateModel._resourceGroup?.name,
'targetType': migrationStateModel._targetType,
'tenantId': migrationStateModel._azureAccount?.properties?.tenants[0]?.id,
};
}
export function sendButtonClickEvent(migrationStateModel: MigrationStateModel, telemetryView: TelemetryViews, buttonPressed: TelemetryAction, pageTitle: string, newPageTitle: string): void {
sendSqlMigrationActionEvent(
telemetryView,
TelemetryAction.PageButtonClick,
{
...getTelemetryProps(migrationStateModel),
'buttonPressed': buttonPressed,
'pageTitle': pageTitle,
'newPageTitle': newPageTitle
},
{});
}