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)
---
.../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,