From aa065b710c411064befc166311a01ac46cba380a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cau=C3=AA=20Marcondes?= <55978943+cauemarcondes@users.noreply.github.com> Date: Fri, 29 Sep 2023 16:48:22 +0100 Subject: [PATCH] [APM] Hidding UP tab for RUM (#167608) Screenshot 2023-09-29 at 10 12 24 Screenshot 2023-09-29 at 10 12 30 --- .../profiling_flamegraph.tsx | 46 ++++++++++++++----- .../templates/apm_service_template/index.tsx | 6 ++- .../apm/server/routes/profiling/route.ts | 8 ++++ 3 files changed, 48 insertions(+), 12 deletions(-) diff --git a/x-pack/plugins/apm/public/components/app/profiling_overview/profiling_flamegraph.tsx b/x-pack/plugins/apm/public/components/app/profiling_overview/profiling_flamegraph.tsx index 2df8eb2e28c8..3db934039a76 100644 --- a/x-pack/plugins/apm/public/components/app/profiling_overview/profiling_flamegraph.tsx +++ b/x-pack/plugins/apm/public/components/app/profiling_overview/profiling_flamegraph.tsx @@ -5,17 +5,28 @@ * 2.0. */ -import { EuiFlexGroup, EuiFlexItem, EuiLink, EuiSpacer } from '@elastic/eui'; +import { + EuiEmptyPrompt, + EuiFlexGroup, + EuiFlexItem, + EuiLink, + EuiSpacer, +} from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { EmbeddableFlamegraph } from '@kbn/observability-shared-plugin/public'; +import { isEmpty } from 'lodash'; import React from 'react'; -import { HOST_NAME } from '../../../../common/es_fields/apm'; -import { toKueryFilterFormat } from '../../../../common/utils/to_kuery_filter_format'; -import { isPending, useFetcher } from '../../../hooks/use_fetcher'; -import { useProfilingPlugin } from '../../../hooks/use_profiling_plugin'; -import { HostnamesFilterWarning } from './host_names_filter_warning'; import { ApmDataSourceWithSummary } from '../../../../common/data_source'; import { ApmDocumentType } from '../../../../common/document_type'; +import { HOST_NAME } from '../../../../common/es_fields/apm'; +import { toKueryFilterFormat } from '../../../../common/utils/to_kuery_filter_format'; +import { + FETCH_STATUS, + isPending, + useFetcher, +} from '../../../hooks/use_fetcher'; +import { useProfilingPlugin } from '../../../hooks/use_profiling_plugin'; +import { HostnamesFilterWarning } from './host_names_filter_warning'; interface Props { serviceName: string; @@ -86,11 +97,24 @@ export function ProfilingFlamegraph({ - + {status === FETCH_STATUS.SUCCESS && isEmpty(data) ? ( + + {i18n.translate('xpack.apm.profiling.flamegraph.noDataFound', { + defaultMessage: 'No data found', + })} + + } + /> + ) : ( + + )} ); } diff --git a/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/index.tsx b/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/index.tsx index c797550c1617..2e97a0e6156c 100644 --- a/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/index.tsx +++ b/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/index.tsx @@ -27,6 +27,7 @@ import { isAWSLambdaAgent, isAzureFunctionsAgent, isServerlessAgent, + isRumOrMobileAgent, } from '../../../../../common/agent_name'; import { useApmPluginContext } from '../../../../context/apm_plugin/use_apm_plugin_context'; import { ApmServiceContextProvider } from '../../../../context/apm_service/apm_service_context'; @@ -404,7 +405,10 @@ function useTabs({ selectedTab }: { selectedTab: Tab['key'] }) { label: i18n.translate('xpack.apm.home.profilingTabLabel', { defaultMessage: 'Universal Profiling', }), - hidden: !isProfilingAvailable, + hidden: + !isProfilingAvailable || + isRumOrMobileAgent(agentName) || + isAWSLambdaAgent(serverlessType), append: ( {i18n.translate('xpack.apm.universalProfiling.newLabel', { diff --git a/x-pack/plugins/apm/server/routes/profiling/route.ts b/x-pack/plugins/apm/server/routes/profiling/route.ts index 78c605cb2f45..b3e0a78ea5f2 100644 --- a/x-pack/plugins/apm/server/routes/profiling/route.ts +++ b/x-pack/plugins/apm/server/routes/profiling/route.ts @@ -57,6 +57,10 @@ const profilingFlamegraphRoute = createApmServerRoute({ rollupInterval, }); + if (!serviceHostNames.length) { + return undefined; + } + const flamegraph = await profilingDataAccessStart?.services.fetchFlamechartData({ esClient: esClient.asCurrentUser, @@ -116,6 +120,10 @@ const profilingFunctionsRoute = createApmServerRoute({ rollupInterval, }); + if (!serviceHostNames.length) { + return undefined; + } + const functions = await profilingDataAccessStart?.services.fetchFunction({ esClient: esClient.asCurrentUser, rangeFromMs: start,