Skip to content

Commit

Permalink
Add telemetry
Browse files Browse the repository at this point in the history
  • Loading branch information
hop-dev authored and machadoum committed Apr 11, 2024
1 parent 04aec07 commit 22d3ddf
Show file tree
Hide file tree
Showing 16 changed files with 330 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@ export enum TelemetryEventTypes {
AssistantMessageSent = 'Assistant Message Sent',
AssistantQuickPrompt = 'Assistant Quick Prompt',
AssistantSettingToggled = 'Assistant Setting Toggled',
AssetCriticalityCsvPreviewGenerated = 'Asset Criticality Csv Preview Generated',
AssetCriticalityFileSelected = 'Asset Criticality File Selected',
AssetCriticalityCsvImported = 'Asset Criticality CSV Imported',
EntityDetailsClicked = 'Entity Details Clicked',
EntityAlertsClicked = 'Entity Alerts Clicked',
EntityRiskFiltered = 'Entity Risk Filtered',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,3 +99,118 @@ export const addRiskInputToTimelineClickedEvent: TelemetryEvent = {
},
},
};

export const assetCriticalityFileSelectedEvent: TelemetryEvent = {
eventType: TelemetryEventTypes.AssetCriticalityFileSelected,
schema: {
valid: {
type: 'boolean',
_meta: {
description: 'If the file is valid',
optional: false,
},
},
errorCode: {
type: 'keyword',
_meta: {
description: 'Error code if the file is invalid',
optional: true,
},
},
file: {
properties: {
size: {
type: 'long',
_meta: {
description: 'File size in bytes',
optional: false,
},
},
},
},
},
};

export const assetCriticalityCsvPreviewGeneratedEvent: TelemetryEvent = {
eventType: TelemetryEventTypes.AssetCriticalityCsvPreviewGenerated,
schema: {
file: {
properties: {
size: {
type: 'long',
_meta: {
description: 'File size in bytes',
optional: false,
},
},
},
},
processing: {
properties: {
startTime: {
type: 'date',
_meta: {
description: 'Processing start time',
optional: false,
},
},
endTime: {
type: 'date',
_meta: {
description: 'Processing end time',
optional: false,
},
},
tookMs: {
type: 'long',
_meta: {
description: 'Processing time in milliseconds',
optional: false,
},
},
},
},
stats: {
properties: {
validLines: {
type: 'long',
_meta: {
description: 'Number of valid lines',
optional: false,
},
},
invalidLines: {
type: 'long',
_meta: {
description: 'Number of invalid lines',
optional: false,
},
},
totalLines: {
type: 'long',
_meta: {
description: 'Total number of lines',
optional: false,
},
},
},
},
},
};

export const assetCriticalityCsvImportedEvent: TelemetryEvent = {
eventType: TelemetryEventTypes.AssetCriticalityCsvImported,
schema: {
file: {
properties: {
size: {
type: 'long',
_meta: {
description: 'File size in bytes',
optional: false,
},
},
},
},
},
};
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,46 @@ export interface ReportAddRiskInputToTimelineClickedParams {
quantity: number;
}

export interface ReportAssetCriticalityFileSelectedParams {
valid: boolean;
errorCode?: string;
file: {
size: number;
};
}

export interface ReportAssetCriticalityCsvPreviewGeneratedParams {
file: {
size: number;
};
processing: {
startTime: string;
endTime: string;
tookMs: number;
};
stats: {
validLines: number;
invalidLines: number;
totalLines: number;
};
}

export interface ReportAssetCriticalityCsvImportedParams {
file: {
size: number;
};
}

export type ReportEntityAnalyticsTelemetryEventParams =
| ReportEntityDetailsClickedParams
| ReportEntityAlertsClickedParams
| ReportEntityRiskFilteredParams
| ReportToggleRiskSummaryClickedParams
| ReportRiskInputsExpandedFlyoutOpenedParams
| ReportAddRiskInputToTimelineClickedParams;
| ReportAddRiskInputToTimelineClickedParams
| ReportAssetCriticalityCsvPreviewGeneratedParams
| ReportAssetCriticalityFileSelectedParams
| ReportAssetCriticalityCsvImportedParams;

export type EntityAnalyticsTelemetryEvent =
| {
Expand All @@ -61,4 +94,16 @@ export type EntityAnalyticsTelemetryEvent =
| {
eventType: TelemetryEventTypes.RiskInputsExpandedFlyoutOpened;
schema: RootSchema<ReportRiskInputsExpandedFlyoutOpenedParams>;
}
| {
eventType: TelemetryEventTypes.AssetCriticalityCsvPreviewGenerated;
schema: RootSchema<ReportAssetCriticalityCsvPreviewGeneratedParams>;
}
| {
eventType: TelemetryEventTypes.AssetCriticalityFileSelected;
schema: RootSchema<ReportAssetCriticalityFileSelectedParams>;
}
| {
eventType: TelemetryEventTypes.AssetCriticalityCsvImported;
schema: RootSchema<ReportAssetCriticalityCsvImportedParams>;
};
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ import {
addRiskInputToTimelineClickedEvent,
RiskInputsExpandedFlyoutOpenedEvent,
toggleRiskSummaryClickedEvent,
assetCriticalityCsvPreviewGeneratedEvent,
assetCriticalityFileSelectedEvent,
assetCriticalityCsvImportedEvent,
} from './entity_analytics';
import {
assistantInvokedEvent,
Expand Down Expand Up @@ -150,6 +153,9 @@ export const telemetryEvents = [
entityClickedEvent,
entityAlertsClickedEvent,
entityRiskFilteredEvent,
assetCriticalityCsvPreviewGeneratedEvent,
assetCriticalityFileSelectedEvent,
assetCriticalityCsvImportedEvent,
toggleRiskSummaryClickedEvent,
RiskInputsExpandedFlyoutOpenedEvent,
addRiskInputToTimelineClickedEvent,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,7 @@ export const createTelemetryClientMock = (): jest.Mocked<TelemetryClientStart> =
reportAddRiskInputToTimelineClicked: jest.fn(),
reportDetailsFlyoutOpened: jest.fn(),
reportDetailsFlyoutTabClicked: jest.fn(),
reportAssetCriticalityCsvPreviewGenerated: jest.fn(),
reportAssetCriticalityFileSelected: jest.fn(),
reportAssetCriticalityCsvImported: jest.fn(),
});
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,12 @@ import type {
ReportToggleRiskSummaryClickedParams,
ReportDetailsFlyoutOpenedParams,
ReportDetailsFlyoutTabClickedParams,
ReportAssetCriticalityCsvPreviewGeneratedParams,
ReportAssetCriticalityFileSelectedParams,
ReportAssetCriticalityCsvImportedParams,
ReportAddRiskInputToTimelineClickedParams,
} from './types';
import { TelemetryEventTypes } from './constants';
import type { ReportAddRiskInputToTimelineClickedParams } from './events/entity_analytics/types';

/**
* Client which aggregate all the available telemetry tracking functions
Expand Down Expand Up @@ -108,6 +111,22 @@ export class TelemetryClient implements TelemetryClientStart {
});
};

public reportAssetCriticalityCsvPreviewGenerated = (
params: ReportAssetCriticalityCsvPreviewGeneratedParams
) => {
this.analytics.reportEvent(TelemetryEventTypes.AssetCriticalityCsvPreviewGenerated, params);
};

public reportAssetCriticalityFileSelected = (
params: ReportAssetCriticalityFileSelectedParams
) => {
this.analytics.reportEvent(TelemetryEventTypes.AssetCriticalityFileSelected, params);
};

public reportAssetCriticalityCsvImported = (params: ReportAssetCriticalityCsvImportedParams) => {
this.analytics.reportEvent(TelemetryEventTypes.AssetCriticalityCsvImported, params);
};

public reportMLJobUpdate = (params: ReportMLJobUpdateParams) => {
this.analytics.reportEvent(TelemetryEventTypes.MLJobUpdate, params);
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ import type {
ReportEntityRiskFilteredParams,
ReportRiskInputsExpandedFlyoutOpenedParams,
ReportToggleRiskSummaryClickedParams,
ReportAssetCriticalityCsvPreviewGeneratedParams,
ReportAssetCriticalityFileSelectedParams,
ReportAssetCriticalityCsvImportedParams,
} from './events/entity_analytics/types';
import type {
AssistantTelemetryEvent,
Expand All @@ -56,6 +59,9 @@ export type {
ReportRiskInputsExpandedFlyoutOpenedParams,
ReportToggleRiskSummaryClickedParams,
ReportAddRiskInputToTimelineClickedParams,
ReportAssetCriticalityCsvPreviewGeneratedParams,
ReportAssetCriticalityFileSelectedParams,
ReportAssetCriticalityCsvImportedParams,
} from './events/entity_analytics/types';
export * from './events/document_details/types';

Expand Down Expand Up @@ -118,7 +124,12 @@ export interface TelemetryClientStart {
reportToggleRiskSummaryClicked(params: ReportToggleRiskSummaryClickedParams): void;
reportRiskInputsExpandedFlyoutOpened(params: ReportRiskInputsExpandedFlyoutOpenedParams): void;
reportAddRiskInputToTimelineClicked(params: ReportAddRiskInputToTimelineClickedParams): void;

// Entity Analytics Asset Criticality
reportAssetCriticalityFileSelected(params: ReportAssetCriticalityFileSelectedParams): void;
reportAssetCriticalityCsvPreviewGenerated(
params: ReportAssetCriticalityCsvPreviewGeneratedParams
): void;
reportAssetCriticalityCsvImported(params: ReportAssetCriticalityCsvImportedParams): void;
reportCellActionClicked(params: ReportCellActionClickedParams): void;

reportAnomaliesCountClicked(params: ReportAnomaliesCountClickedParams): void;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ export const ValidationStep: Story<void> = () => {
validLinesCount={5}
invalidLinesCount={3}
fileName="test.csv"
fileSize={100}
onConfirm={() => {}}
onReturn={() => {}}
validLinesAsText={validLinesAsText}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import { EuiSpacer, EuiStepsHorizontal } from '@elastic/eui';
import React, { useCallback, useReducer } from 'react';
import { i18n } from '@kbn/i18n';
import { useKibana } from '../../../common/lib/kibana/kibana_react';
import { AssetCriticalityFilePickerStep } from './components/file_picker_step';
import { AssetCriticalityValidationStep } from './components/validation_step';
import { reducer } from './reducer';
Expand All @@ -26,19 +27,42 @@ import { useFileValidation } from './hooks';
export const AssetCriticalityFileUploader: React.FC = () => {
const [state, dispatch] = useReducer(reducer, { isLoading: false, step: 1 });
const { uploadAssetCriticalityFile } = useEntityAnalyticsRoutes();
const { telemetry } = useKibana().services;

const onValidationComplete = useCallback(
({
fileName,
fileSize,
validLinesAsText,
invalidLinesAsText,
invalidLinesErrors,
validLinesCount,
invalidLinesCount,
processingStartTime,
processingEndTime,
tookMs,
}) => {
telemetry.reportAssetCriticalityCsvPreviewGenerated({
file: {
size: fileSize,
},
processing: {
startTime: processingStartTime,
endTime: processingEndTime,
tookMs,
},
stats: {
validLines: validLinesCount,
invalidLines: invalidLinesCount,
totalLines: validLinesCount + invalidLinesCount,
},
});

dispatch({
type: 'fileValidated',
payload: {
fileName,
fileSize,
validLinesAsText,
invalidLinesAsText,
invalidLinesErrors,
Expand All @@ -47,7 +71,7 @@ export const AssetCriticalityFileUploader: React.FC = () => {
},
});
},
[]
[telemetry]
);
const onValidationError = useCallback((message) => {
dispatch({ type: 'fileError', payload: { message } });
Expand Down Expand Up @@ -138,6 +162,7 @@ export const AssetCriticalityFileUploader: React.FC = () => {
invalidLinesAsText={state.invalidLinesAsText}
invalidLinesErrors={state.invalidLinesErrors ?? []}
fileName={state.fileName ?? ''}
fileSize={state.fileSize ?? 0}
onReturn={() => {
dispatch({ type: 'resetState' });
}}
Expand Down
Loading

0 comments on commit 22d3ddf

Please sign in to comment.