Skip to content

Commit 08ece64

Browse files
kibanamachineJacek Kolezynski
andauthored
[8.18] [Security Solution] Add telemetry for upgrading rule using single UPDATE button (#236893) (#237343)
# Backport This will backport the following commits from `main` to `8.18`: - [[Security Solution] Add telemetry for upgrading rule using single UPDATE button (#236893)](#236893) <!--- Backport version: 9.6.6 --> ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sorenlouv/backport) <!--BACKPORT [{"author":{"name":"Jacek Kolezynski","email":"[email protected]"},"sourceCommit":{"committedDate":"2025-10-02T15:52:57Z","message":"[Security Solution] Add telemetry for upgrading rule using single UPDATE button (#236893)\n\n**Partially addresses:** #140369\n\n## Summary\n\nThis is another PR from of a series of PRs I am planning to create to\ncover the requirements in the\nhttps://github.com//issues/140369 ticket.\n\n\nThe requirement covered in this PR is: \"Collect events of singular rule\nupdates without opening review flyout, with information about missing\nbase version.\"","sha":"d486d45a69f3e6317647f820bb5d82a62e13b085","branchLabelMapping":{"^v9.3.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","Team:Detections and Resp","Team: SecuritySolution","Team:Detection Rule Management","Feature:Prebuilt Detection Rules","backport:version","v9.2.0","v8.18.8","v8.19.5","v9.0.8","v9.1.5","v9.3.0"],"title":"[Security Solution] Add telemetry for upgrading rule using single UPDATE button","number":236893,"url":"https://github.com/elastic/kibana/pull/236893","mergeCommit":{"message":"[Security Solution] Add telemetry for upgrading rule using single UPDATE button (#236893)\n\n**Partially addresses:** #140369\n\n## Summary\n\nThis is another PR from of a series of PRs I am planning to create to\ncover the requirements in the\nhttps://github.com//issues/140369 ticket.\n\n\nThe requirement covered in this PR is: \"Collect events of singular rule\nupdates without opening review flyout, with information about missing\nbase version.\"","sha":"d486d45a69f3e6317647f820bb5d82a62e13b085"}},"sourceBranch":"main","suggestedTargetBranches":["9.2","8.18","8.19","9.0","9.1"],"targetPullRequestStates":[{"branch":"9.2","label":"v9.2.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"8.18","label":"v8.18.8","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"8.19","label":"v8.19.5","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"9.0","label":"v9.0.8","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"9.1","label":"v9.1.5","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"main","label":"v9.3.0","branchLabelMappingKey":"^v9.3.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/236893","number":236893,"mergeCommit":{"message":"[Security Solution] Add telemetry for upgrading rule using single UPDATE button (#236893)\n\n**Partially addresses:** #140369\n\n## Summary\n\nThis is another PR from of a series of PRs I am planning to create to\ncover the requirements in the\nhttps://github.com//issues/140369 ticket.\n\n\nThe requirement covered in this PR is: \"Collect events of singular rule\nupdates without opening review flyout, with information about missing\nbase version.\"","sha":"d486d45a69f3e6317647f820bb5d82a62e13b085"}}]}] BACKPORT--> Co-authored-by: Jacek Kolezynski <[email protected]>
1 parent 0dd4819 commit 08ece64

File tree

3 files changed

+40
-7
lines changed

3 files changed

+40
-7
lines changed

x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/rule_upgrade/index.ts

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import type { RuleUpgradeTelemetryEvent } from './types';
99
import { RuleUpgradeEventTypes } from './types';
1010

11-
export const flyoutButtonClickEvent: RuleUpgradeTelemetryEvent = {
11+
export const ruleUpgradeFlyoutButtonClickEvent: RuleUpgradeTelemetryEvent = {
1212
eventType: RuleUpgradeEventTypes.RuleUpgradeFlyoutButtonClick,
1313
schema: {
1414
type: {
@@ -28,7 +28,20 @@ export const flyoutButtonClickEvent: RuleUpgradeTelemetryEvent = {
2828
},
2929
};
3030

31-
export const openFlyoutEvent: RuleUpgradeTelemetryEvent = {
31+
export const ruleUpgradeSingleButtonClickEvent: RuleUpgradeTelemetryEvent = {
32+
eventType: RuleUpgradeEventTypes.RuleUpgradeSingleButtonClick,
33+
schema: {
34+
hasBaseVersion: {
35+
type: 'boolean',
36+
_meta: {
37+
description: 'Indicates if the rule has base version',
38+
optional: false,
39+
},
40+
},
41+
},
42+
};
43+
44+
export const ruleUpgradeOpenFlyoutEvent: RuleUpgradeTelemetryEvent = {
3245
eventType: RuleUpgradeEventTypes.RuleUpgradeFlyoutOpen,
3346
schema: {
3447
hasMissingBaseVersion: {
@@ -41,4 +54,8 @@ export const openFlyoutEvent: RuleUpgradeTelemetryEvent = {
4154
},
4255
};
4356

44-
export const ruleUpgradeTelemetryEvents = [flyoutButtonClickEvent, openFlyoutEvent];
57+
export const ruleUpgradeTelemetryEvents = [
58+
ruleUpgradeFlyoutButtonClickEvent,
59+
ruleUpgradeOpenFlyoutEvent,
60+
ruleUpgradeSingleButtonClickEvent,
61+
];

x-pack/solutions/security/plugins/security_solution/public/common/lib/telemetry/events/rule_upgrade/types.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,25 @@ import type { RootSchema } from '@kbn/core/public';
88

99
export enum RuleUpgradeEventTypes {
1010
RuleUpgradeFlyoutButtonClick = 'Click Rule Upgrade Flyout Button',
11+
RuleUpgradeSingleButtonClick = 'Click Rule Upgrade Single Button',
1112
RuleUpgradeFlyoutOpen = 'Open Rule Upgrade Flyout',
1213
}
1314
interface ReportRuleUpgradeFlyoutButtonClickParams {
1415
type: 'update' | 'dismiss';
1516
hasMissingBaseVersion: boolean;
1617
}
1718

19+
interface ReportRuleUpgradeSingleButtonClickParams {
20+
hasBaseVersion: boolean;
21+
}
22+
1823
interface ReportRuleUpgradeFlyoutOpenParams {
1924
hasMissingBaseVersion: boolean;
2025
}
2126

2227
export interface RuleUpgradeTelemetryEventsMap {
2328
[RuleUpgradeEventTypes.RuleUpgradeFlyoutButtonClick]: ReportRuleUpgradeFlyoutButtonClickParams;
29+
[RuleUpgradeEventTypes.RuleUpgradeSingleButtonClick]: ReportRuleUpgradeSingleButtonClickParams;
2430
[RuleUpgradeEventTypes.RuleUpgradeFlyoutOpen]: ReportRuleUpgradeFlyoutOpenParams;
2531
}
2632

x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_prebuilt_rules_table_columns.tsx

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,14 @@ import {
1515
EuiToolTip,
1616
} from '@elastic/eui';
1717
import React, { useMemo } from 'react';
18+
import { RuleUpgradeEventTypes } from '../../../../../common/lib/telemetry/events/rule_upgrade/types';
1819
import { ThreeWayDiffConflict } from '../../../../../../common/api/detection_engine';
1920
import type { RuleUpgradeState } from '../../../../rule_management/model/prebuilt_rule_upgrade/rule_upgrade_state';
2021
import { RulesTableEmptyColumnName } from '../rules_table_empty_column_name';
2122
import { SHOW_RELATED_INTEGRATIONS_SETTING } from '../../../../../../common/constants';
2223
import type { RuleSignatureId } from '../../../../../../common/api/detection_engine/model/rule_schema';
2324
import { PopoverItems } from '../../../../../common/components/popover_items';
24-
import { useUiSetting$ } from '../../../../../common/lib/kibana';
25+
import { useKibana, useUiSetting$ } from '../../../../../common/lib/kibana';
2526
import { hasUserCRUDPermission } from '../../../../../common/utils/privileges';
2627
import { IntegrationsPopover } from '../../../../../detections/components/rules/related_integrations/integrations_popover';
2728
import { SeverityBadge } from '../../../../../common/components/severity_badge';
@@ -184,7 +185,8 @@ const createUpgradeButtonColumn = (
184185
openRulePreview: UpgradePrebuiltRulesTableActions['openRulePreview'],
185186
loadingRules: RuleSignatureId[],
186187
isDisabled: boolean,
187-
isPrebuiltRulesCustomizationEnabled: boolean
188+
isPrebuiltRulesCustomizationEnabled: boolean,
189+
telemetry: ReturnType<typeof useKibana>['services']['telemetry']
188190
): TableColumn => ({
189191
field: 'rule_id',
190192
name: <RulesTableEmptyColumnName name={i18n.UPDATE_RULE_BUTTON} />,
@@ -220,7 +222,12 @@ const createUpgradeButtonColumn = (
220222
<EuiButtonEmpty
221223
size="s"
222224
disabled={isUpgradeButtonDisabled}
223-
onClick={() => upgradeRules([ruleId])}
225+
onClick={() => {
226+
telemetry.reportEvent(RuleUpgradeEventTypes.RuleUpgradeSingleButtonClick, {
227+
hasBaseVersion: record.has_base_version === true,
228+
});
229+
upgradeRules([ruleId]);
230+
}}
224231
data-test-subj={`upgradeSinglePrebuiltRuleButton-${ruleId}`}
225232
>
226233
{isRuleUpgrading ? spinner : i18n.UPDATE_RULE_BUTTON}
@@ -241,6 +248,7 @@ export const useUpgradePrebuiltRulesTableColumns = (): TableColumn[] => {
241248
} = useUpgradePrebuiltRulesTableContext();
242249
const isDisabled = isRefetching || isUpgradingSecurityPackages;
243250
const { isRulesCustomizationEnabled } = usePrebuiltRulesCustomizationStatus();
251+
const { telemetry } = useKibana().services;
244252

245253
return useMemo(
246254
() => [
@@ -277,7 +285,8 @@ export const useUpgradePrebuiltRulesTableColumns = (): TableColumn[] => {
277285
openRulePreview,
278286
loadingRules,
279287
isDisabled,
280-
isRulesCustomizationEnabled
288+
isRulesCustomizationEnabled,
289+
telemetry
281290
),
282291
]
283292
: []),
@@ -290,6 +299,7 @@ export const useUpgradePrebuiltRulesTableColumns = (): TableColumn[] => {
290299
loadingRules,
291300
isDisabled,
292301
isRulesCustomizationEnabled,
302+
telemetry,
293303
]
294304
);
295305
};

0 commit comments

Comments
 (0)