diff --git a/public/app/features/dashboard/state/initDashboard.ts b/public/app/features/dashboard/state/initDashboard.ts index 49e436ac479..8f6865e6cbf 100644 --- a/public/app/features/dashboard/state/initDashboard.ts +++ b/public/app/features/dashboard/state/initDashboard.ts @@ -174,6 +174,8 @@ const getQueriesByDatasource = ( */ export function initDashboard(args: InitDashboardArgs): ThunkResult { return async (dispatch, getState) => { + const initStart = performance.now(); + // set fetching state dispatch(dashboardInitFetching()); @@ -283,7 +285,8 @@ export function initDashboard(args: InitDashboardArgs): ThunkResult { }) ); - trackDashboardLoaded(dashboard, versionBeforeMigration); + const duration = performance.now() - initStart; + trackDashboardLoaded(dashboard, duration, versionBeforeMigration); // yay we are done dispatch(dashboardInitCompleted(dashboard)); diff --git a/public/app/features/dashboard/utils/tracking.test.ts b/public/app/features/dashboard/utils/tracking.test.ts index b92aa5a87d5..79fc467fba9 100644 --- a/public/app/features/dashboard/utils/tracking.test.ts +++ b/public/app/features/dashboard/utils/tracking.test.ts @@ -33,9 +33,10 @@ describe('trackDashboardLoaded', () => { const model = getDashboardModel(dashboardJSON); const reportInteractionSpy = jest.spyOn(runtime, 'reportInteraction'); - trackDashboardLoaded(model, 16); + trackDashboardLoaded(model, 200, 16); expect(reportInteractionSpy).toHaveBeenCalledWith('dashboards_init_dashboard_completed', { + duration: 200, uid: 'dashboard-123', title: 'Test Dashboard', schemaVersion: model.schemaVersion, // This value is based on public/app/features/dashboard/state/DashboardMigrator.ts#L81 diff --git a/public/app/features/dashboard/utils/tracking.ts b/public/app/features/dashboard/utils/tracking.ts index 383e6412523..5031a396072 100644 --- a/public/app/features/dashboard/utils/tracking.ts +++ b/public/app/features/dashboard/utils/tracking.ts @@ -2,7 +2,7 @@ import { DashboardInteractions } from 'app/features/dashboard-scene/utils/intera import { DashboardModel } from '../state'; -export function trackDashboardLoaded(dashboard: DashboardModel, versionBeforeMigration?: number) { +export function trackDashboardLoaded(dashboard: DashboardModel, duration: number, versionBeforeMigration?: number) { // Count the different types of variables const variables = dashboard.templating.list .map((v) => v.type) @@ -30,6 +30,7 @@ export function trackDashboardLoaded(dashboard: DashboardModel, versionBeforeMig ...variables, settings_nowdelay: dashboard.timepicker.nowDelay, settings_livenow: !!dashboard.liveNow, + duration, }); }