From 1b1c41506b9ce6f7048ad646914023bf1c795717 Mon Sep 17 00:00:00 2001 From: Irene Blanco Date: Mon, 2 Dec 2024 14:21:32 +0100 Subject: [PATCH] [Infra] Display "Add metrics" callout for all containers without metrics (#202220) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Closes https://github.com/elastic/kibana/issues/196553. In this PR, we removed the restriction that prevented the "Add metrics" callout from appearing on containers that aren't Docker or Kubernetes, even if they didn’t have metrics. Previously, this was done to only show the callout on Docker/Kubernetes containers with available metrics. Now, the callout will be displayed for all containers lacking metrics, ensuring a more consistent user experience across different container types, regardless of the underlying technology. |View|Before|After| |-|-|-| |Overview|![Screenshot 2024-11-29 at 13 35 23](https://github.com/user-attachments/assets/b3d916e6-ee2b-4f1f-8d93-90c8ae595ac1)|![Screenshot 2024-11-29 at 13 33 15](https://github.com/user-attachments/assets/23bb44cf-41bc-4274-b204-8a3c9ceecea5)| |Metrics|![Screenshot 2024-11-29 at 13 35 30](https://github.com/user-attachments/assets/3fbfb81e-d61c-4f28-b9a4-55b8009df8e1)|![Screenshot 2024-11-29 at 13 33 09](https://github.com/user-attachments/assets/1fb48b2f-457e-4453-8758-41f3ceadf794)| The PR also addresses an issue with the onboarding link used in the callout, where the `url` parameter was not properly preselecting any options. |Before|After| |-|-| |![Screen Recording 2024-11-29 at 13 37 05](https://github.com/user-attachments/assets/37f04535-ba4a-428b-b988-2ac4d5c0449a)|![Screen Recording 2024-11-29 at 13 33 26](https://github.com/user-attachments/assets/b52b5b55-a387-40c8-80cd-54aedc9acfc7)| --- .../asset_details/add_metrics_callout/constants.ts | 2 +- .../tabs/metrics/container_metrics.tsx | 3 ++- .../asset_details/tabs/overview/overview.tsx | 14 +------------- .../components/shared/templates/no_data_config.ts | 2 +- x-pack/test/functional/apps/infra/hosts_view.ts | 2 +- 5 files changed, 6 insertions(+), 17 deletions(-) diff --git a/x-pack/plugins/observability_solution/infra/public/components/asset_details/add_metrics_callout/constants.ts b/x-pack/plugins/observability_solution/infra/public/components/asset_details/add_metrics_callout/constants.ts index ca56a58875220..01da12c5f59ad 100644 --- a/x-pack/plugins/observability_solution/infra/public/components/asset_details/add_metrics_callout/constants.ts +++ b/x-pack/plugins/observability_solution/infra/public/components/asset_details/add_metrics_callout/constants.ts @@ -62,7 +62,7 @@ const containerDefaultActions = ( return { actions: { primary: { - href: locator?.getRedirectUrl({ category: OnboardingFlow.Infra }), + href: locator?.getRedirectUrl({ category: OnboardingFlow.Hosts }), label: defaultPrimaryActionLabel, }, link: { diff --git a/x-pack/plugins/observability_solution/infra/public/components/asset_details/tabs/metrics/container_metrics.tsx b/x-pack/plugins/observability_solution/infra/public/components/asset_details/tabs/metrics/container_metrics.tsx index f49fa026892b1..65d19f7693740 100644 --- a/x-pack/plugins/observability_solution/infra/public/components/asset_details/tabs/metrics/container_metrics.tsx +++ b/x-pack/plugins/observability_solution/infra/public/components/asset_details/tabs/metrics/container_metrics.tsx @@ -14,6 +14,7 @@ import { MetricsTemplate } from './metrics_template'; import { DockerCharts, KubernetesContainerCharts } from '../../charts'; import { DOCKER_METRIC_TYPES, INTEGRATIONS, KUBERNETES_METRIC_TYPES } from '../../constants'; import { useIntegrationCheck } from '../../hooks/use_integration_check'; +import { AddMetricsCallout } from '../../add_metrics_callout'; export const ContainerMetrics = () => { const ref = useRef(null); @@ -29,7 +30,7 @@ export const ContainerMetrics = () => { }); if (!isDockerContainer && !isKubernetesContainer) { - return null; + return ; } return ( diff --git a/x-pack/plugins/observability_solution/infra/public/components/asset_details/tabs/overview/overview.tsx b/x-pack/plugins/observability_solution/infra/public/components/asset_details/tabs/overview/overview.tsx index e4f0eee51dbc0..9ace5606599d7 100644 --- a/x-pack/plugins/observability_solution/infra/public/components/asset_details/tabs/overview/overview.tsx +++ b/x-pack/plugins/observability_solution/infra/public/components/asset_details/tabs/overview/overview.tsx @@ -27,8 +27,6 @@ import { AddMetricsCallout } from '../../add_metrics_callout'; import { AddMetricsCalloutKey } from '../../add_metrics_callout/constants'; import { useEntitySummary } from '../../hooks/use_entity_summary'; import { isMetricsSignal } from '../../utils/get_data_stream_types'; -import { INTEGRATIONS } from '../../constants'; -import { useIntegrationCheck } from '../../hooks/use_integration_check'; export const Overview = () => { const { dateRange } = useDatePickerContext(); @@ -50,10 +48,6 @@ export const Overview = () => { `infra.dismissedAddMetricsCallout.${addMetricsCalloutId}`, false ); - const isDockerContainer = useIntegrationCheck({ dependsOn: INTEGRATIONS.docker }); - const isKubernetesContainer = useIntegrationCheck({ - dependsOn: INTEGRATIONS.kubernetesContainer, - }); const metadataSummarySection = isFullPageView ? ( @@ -74,13 +68,7 @@ export const Overview = () => { return false; } - const { type } = asset; - const baseCondition = !isMetricsSignal(dataStreams); - - const isRelevantContainer = - type === 'container' && (isDockerContainer || isKubernetesContainer); - - return baseCondition && (type === 'host' || isRelevantContainer); + return !isMetricsSignal(dataStreams); }; const showAddMetricsCallout = shouldShowCallout(); diff --git a/x-pack/plugins/observability_solution/infra/public/components/shared/templates/no_data_config.ts b/x-pack/plugins/observability_solution/infra/public/components/shared/templates/no_data_config.ts index 3859f93ddc437..28e0d00c751a8 100644 --- a/x-pack/plugins/observability_solution/infra/public/components/shared/templates/no_data_config.ts +++ b/x-pack/plugins/observability_solution/infra/public/components/shared/templates/no_data_config.ts @@ -18,7 +18,7 @@ import { noMetricIndicesPromptDescription, noMetricIndicesPromptTitle } from '.. export enum OnboardingFlow { Infra = 'infra', - Hosts = 'logs', + Hosts = 'host', } interface NoDataConfigDetails { diff --git a/x-pack/test/functional/apps/infra/hosts_view.ts b/x-pack/test/functional/apps/infra/hosts_view.ts index dd6a420d27fbe..52b3484ed50e5 100644 --- a/x-pack/test/functional/apps/infra/hosts_view.ts +++ b/x-pack/test/functional/apps/infra/hosts_view.ts @@ -341,7 +341,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const currentUrl = await browser.getCurrentUrl(); const parsedUrl = new URL(currentUrl); const baseUrl = `${parsedUrl.protocol}//${parsedUrl.host}`; - const expectedUrlPattern = `${baseUrl}/app/observabilityOnboarding/?category=logs`; + const expectedUrlPattern = `${baseUrl}/app/observabilityOnboarding/?category=host`; expect(currentUrl).to.equal(expectedUrlPattern); }); });