From a3869871ad0358b4d22b9d3ba7ea1f6948d4d0f9 Mon Sep 17 00:00:00 2001 From: Jason Rhodes Date: Sun, 26 Jan 2020 21:00:46 -0500 Subject: [PATCH] Fixes APM trackEvent usage in NP context. --- .../AgentConfigurations/AddEditFlyout/index.tsx | 7 ++++++- .../AgentConfigurations/AddEditFlyout/saveConfig.ts | 8 +++++--- .../plugins/infra/public/hooks/use_track_metric.tsx | 11 +++++++++-- x-pack/plugins/infra/public/index.ts | 7 ++++++- 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/x-pack/legacy/plugins/apm/public/components/app/Settings/AgentConfigurations/AddEditFlyout/index.tsx b/x-pack/legacy/plugins/apm/public/components/app/Settings/AgentConfigurations/AddEditFlyout/index.tsx index e1cb07be3d37866..cdad10ac31efed1 100644 --- a/x-pack/legacy/plugins/apm/public/components/app/Settings/AgentConfigurations/AddEditFlyout/index.tsx +++ b/x-pack/legacy/plugins/apm/public/components/app/Settings/AgentConfigurations/AddEditFlyout/index.tsx @@ -34,6 +34,7 @@ import { isRumAgentName } from '../../../../../../common/agent_name'; import { ALL_OPTION_VALUE } from '../../../../../../common/agent_configuration_constants'; import { saveConfig } from './saveConfig'; import { useApmPluginContext } from '../../../../../hooks/useApmPluginContext'; +import { useUiTracker } from '../../../../../../../../../plugins/infra/public'; const defaultSettings = { TRANSACTION_SAMPLE_RATE: '1.0', @@ -59,6 +60,9 @@ export function AddEditFlyout({ const callApmApiFromHook = useCallApmApi(); + // get a telemetry UI event tracker + const trackApmEvent = useUiTracker({ app: 'apm' }); + // config conditions (service) const [serviceName, setServiceName] = useState( selectedConfig ? selectedConfig.service.name || ALL_OPTION_VALUE : '' @@ -133,7 +137,8 @@ export function AddEditFlyout({ transactionMaxSpans, configurationId: selectedConfig ? selectedConfig.id : undefined, agentName, - toasts + toasts, + trackApmEvent }); setIsSaving(false); onSaved(); diff --git a/x-pack/legacy/plugins/apm/public/components/app/Settings/AgentConfigurations/AddEditFlyout/saveConfig.ts b/x-pack/legacy/plugins/apm/public/components/app/Settings/AgentConfigurations/AddEditFlyout/saveConfig.ts index 7653080cacf8cec..47fdaf5a7d0e01c 100644 --- a/x-pack/legacy/plugins/apm/public/components/app/Settings/AgentConfigurations/AddEditFlyout/saveConfig.ts +++ b/x-pack/legacy/plugins/apm/public/components/app/Settings/AgentConfigurations/AddEditFlyout/saveConfig.ts @@ -12,6 +12,7 @@ import { getOptionLabel, omitAllOption } from '../../../../../../common/agent_configuration_constants'; +import { TrackMetricOptions } from '../../../../../../../../../plugins/infra/public'; interface Settings { transaction_sample_rate: number; @@ -28,7 +29,8 @@ export async function saveConfig({ transactionMaxSpans, configurationId, agentName, - toasts + toasts, + trackEvent }: { callApmApi: APMClient; serviceName: string; @@ -39,9 +41,9 @@ export async function saveConfig({ configurationId?: string; agentName?: string; toasts: NotificationsStart['toasts']; + trackEvent: (options: TrackMetricOptions) => void; }) { - // TODO: Migrate to useTrackMetric - // trackEvent({ app: 'apm', name: 'save_agent_configuration' }); + trackEvent({ metric: 'save_agent_configuration' }); try { const settings: Settings = { diff --git a/x-pack/plugins/infra/public/hooks/use_track_metric.tsx b/x-pack/plugins/infra/public/hooks/use_track_metric.tsx index b38493bd462dc45..a629998d74d4b9a 100644 --- a/x-pack/plugins/infra/public/hooks/use_track_metric.tsx +++ b/x-pack/plugins/infra/public/hooks/use_track_metric.tsx @@ -22,16 +22,23 @@ import { useKibana } from '../../../../../src/plugins/kibana_react/public'; type ObservabilityApp = 'infra_metrics' | 'infra_logs' | 'apm' | 'uptime'; interface TrackOptions { - app: ObservabilityApp; + app?: ObservabilityApp; metricType?: UiStatsMetricType; delay?: number; // in ms } type EffectDeps = unknown[]; -type TrackMetricOptions = TrackOptions & { metric: string }; +export type TrackMetricOptions = TrackOptions & { metric: string }; export { METRIC_TYPE }; +export function useUiTracker({ app: defaultApp }: { app?: ObservabilityApp } = {}) { + const { reportUiStats } = useKibana().services?.usageCollection; + return ({ app = defaultApp, metric, metricType = METRIC_TYPE.COUNT }: TrackMetricOptions) => { + reportUiStats(app, metricType, metric); + }; +} + export function useTrackMetric( { app, metric, metricType = METRIC_TYPE.COUNT, delay = 0 }: TrackMetricOptions, effectDependencies: EffectDeps = [] diff --git a/x-pack/plugins/infra/public/index.ts b/x-pack/plugins/infra/public/index.ts index 9e3c47c4a9a3eb4..85cfda0b89a7f40 100644 --- a/x-pack/plugins/infra/public/index.ts +++ b/x-pack/plugins/infra/public/index.ts @@ -16,6 +16,11 @@ export const plugin: PluginInitializer< return new Plugin(context); }; -export { useTrackPageview } from './hooks/use_track_metric'; +export { + useTrackPageview, + useUiTracker, + TrackMetricOptions, + METRIC_TYPE, +} from './hooks/use_track_metric'; export { FORMATTERS } from './utils/formatters'; export { InfraFormatterType } from './lib/lib';