Alerting: Track when switching from simplified routing to policies routing or vice versa (#83108)

Track when switching from simplified routing to policies routing or vice versa
This commit is contained in:
Sonia Aguilar 2024-03-11 08:47:22 +01:00 committed by GitHub
parent 57df3b84dc
commit 7a741a31bd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 29 additions and 1 deletions

View File

@ -225,6 +225,13 @@ export function trackRulesSearchComponentInteraction(filter: keyof RulesFilter)
export function trackRulesListViewChange(payload: { view: string }) {
reportInteraction('grafana_alerting_rules_list_mode', { ...payload });
}
export function trackSwitchToSimplifiedRouting() {
reportInteraction('grafana_alerting_switch_to_simplified_routing');
}
export function trackSwitchToPoliciesRouting() {
reportInteraction('grafana_alerting_switch_to_policies_routing');
}
export type AlertRuleTrackingProps = {
user_id: number;

View File

@ -37,6 +37,8 @@ import { backendSrv } from '../../../../core/services/backend_srv';
import {
logInfo,
LogMessages,
trackSwitchToPoliciesRouting,
trackSwitchToSimplifiedRouting,
withPerformanceLogging,
withPromRulesMetadataLogging,
withRulerRulesMetadataLogging,
@ -79,7 +81,7 @@ import { makeAMLink } from '../utils/misc';
import { AsyncRequestMapSlice, withAppEvents, withSerializedError } from '../utils/redux';
import * as ruleId from '../utils/rule-id';
import { getRulerClient } from '../utils/rulerClient';
import { getAlertInfo, isRulerNotSupportedResponse } from '../utils/rules';
import { getAlertInfo, isGrafanaRulerRule, isRulerNotSupportedResponse } from '../utils/rules';
import { safeParseDurationstr } from '../utils/time';
function getDataSourceConfig(getState: () => unknown, rulesSourceName: string) {
@ -452,6 +454,7 @@ export const saveRuleFormAction = createAsyncThunk(
const rulerConfig = getDataSourceRulerConfig(thunkAPI.getState, GRAFANA_RULES_SOURCE_NAME);
const rulerClient = getRulerClient(rulerConfig);
identifier = await rulerClient.saveGrafanaRule(values, evaluateEvery, existing);
reportSwitchingRoutingType(values, existing);
await thunkAPI.dispatch(fetchRulerRulesAction({ rulesSourceName: GRAFANA_RULES_SOURCE_NAME }));
} else {
throw new Error('Unexpected rule form type');
@ -486,6 +489,24 @@ export const saveRuleFormAction = createAsyncThunk(
)
);
function reportSwitchingRoutingType(values: RuleFormValues, existingRule: RuleWithLocation<RulerRuleDTO> | undefined) {
// track if the user switched from simplified routing to policies routing or vice versa
if (isGrafanaRulerRule(existingRule?.rule)) {
const ga = existingRule?.rule.grafana_alert;
const existingWasUsingSimplifiedRouting = Boolean(ga?.notification_settings?.receiver);
const newValuesUsesSimplifiedRouting = values.manualRouting;
const shouldTrackSwitchToSimplifiedRouting = !existingWasUsingSimplifiedRouting && newValuesUsesSimplifiedRouting;
const shouldTrackSwitchToPoliciesRouting = existingWasUsingSimplifiedRouting && !newValuesUsesSimplifiedRouting;
if (shouldTrackSwitchToSimplifiedRouting) {
trackSwitchToSimplifiedRouting();
}
if (shouldTrackSwitchToPoliciesRouting) {
trackSwitchToPoliciesRouting();
}
}
}
export const fetchGrafanaNotifiersAction = createAsyncThunk(
'unifiedalerting/fetchGrafanaNotifiers',
(): Promise<NotifierDTO[]> => withSerializedError(fetchNotifiers())