From 5f0f474024dc086f98a1ccfa25b92e2cead1aae8 Mon Sep 17 00:00:00 2001 From: Dominik Buszowiecki Date: Thu, 5 Dec 2024 11:28:25 -0500 Subject: [PATCH 1/2] wip --- .../http/components/httpSamplesPanel.tsx | 87 +++++++++++--- .../http/components/tables/domainCell.tsx | 10 +- .../http/components/tables/domainsTable.tsx | 110 +++++++++++------- .../http/views/httpDomainSummaryPage.tsx | 50 ++++++-- .../insights/http/views/httpLandingPage.tsx | 59 ++++++++-- 5 files changed, 233 insertions(+), 83 deletions(-) diff --git a/static/app/views/insights/http/components/httpSamplesPanel.tsx b/static/app/views/insights/http/components/httpSamplesPanel.tsx index 3b1a45185491d4..001144567756b7 100644 --- a/static/app/views/insights/http/components/httpSamplesPanel.tsx +++ b/static/app/views/insights/http/components/httpSamplesPanel.tsx @@ -32,6 +32,7 @@ import * as ModuleLayout from 'sentry/views/insights/common/components/moduleLay import {ReadoutRibbon} from 'sentry/views/insights/common/components/ribbon'; import {getTimeSpentExplanation} from 'sentry/views/insights/common/components/tableCells/timeSpentCell'; import { + useEAPSpans, useSpanMetrics, useSpansIndexed, } from 'sentry/views/insights/common/queries/useDiscover'; @@ -54,6 +55,7 @@ import {BASE_FILTERS} from 'sentry/views/insights/http/settings'; import decodePanel from 'sentry/views/insights/http/utils/queryParameterDecoders/panel'; import decodeResponseCodeClass from 'sentry/views/insights/http/utils/queryParameterDecoders/responseCodeClass'; import {useDebouncedState} from 'sentry/views/insights/http/utils/useDebouncedState'; +import {USE_EAP_HTTP_MODULE} from 'sentry/views/insights/http/views/httpLandingPage'; import {useDomainViewFilters} from 'sentry/views/insights/pages/useFilters'; import { ModuleName, @@ -78,6 +80,7 @@ export function HTTPSamplesPanel() { panel: decodePanel, responseCodeClass: decodeResponseCodeClass, spanSearchQuery: decodeScalar, + url: decodeScalar, [SpanMetricsField.USER_GEO_SUBREGION]: decodeList, }, }); @@ -137,9 +140,13 @@ export function HTTPSamplesPanel() { const isPanelOpen = Boolean(detailKey); const ADDITONAL_FILTERS = { - 'span.domain': - query.domain === '' ? EMPTY_OPTION_VALUE : escapeFilterValue(query.domain), - transaction: query.transaction, + ...(query.url + ? {url: query.url} + : { + 'span.domain': + query.domain === '' ? EMPTY_OPTION_VALUE : escapeFilterValue(query.domain), + transaction: query.transaction, + }), ...(query[SpanMetricsField.USER_GEO_SUBREGION].length > 0 ? { [SpanMetricsField.USER_GEO_SUBREGION]: `[${query[SpanMetricsField.USER_GEO_SUBREGION].join(',')}]`, @@ -228,12 +235,28 @@ export function HTTPSamplesPanel() { const durationAxisMax = computeAxisMax([durationData?.[`avg(span.self_time)`]]); - const { - data: durationSamplesData, - isFetching: isDurationSamplesDataFetching, - error: durationSamplesDataError, - refetch: refetchDurationSpanSamples, - } = useSpanSamples({ + const durationEAPSamplesRes = useEAPSpans( + { + search, + fields: [ + SpanIndexedField.TRACE, + SpanIndexedField.TRANSACTION_ID, + SpanIndexedField.SPAN_DESCRIPTION, + SpanIndexedField.RESPONSE_CODE, + SpanIndexedField.PROJECT, + SpanIndexedField.TRANSACTION_ID, + SpanIndexedField.TIMESTAMP, + SpanIndexedField.ID, + SpanIndexedField.SPAN_SELF_TIME, + ], + sorts: [SPAN_SAMPLES_SORT], + limit: SPAN_SAMPLE_LIMIT, + enabled: isPanelOpen && query.panel === 'duration' && USE_EAP_HTTP_MODULE, + }, + Referrer.SAMPLES_PANEL_DURATION_SAMPLES + ); + + const durationSamples = useSpanSamples({ search, fields: [ SpanIndexedField.TRACE, @@ -243,16 +266,22 @@ export function HTTPSamplesPanel() { ], min: 0, max: durationAxisMax, - enabled: isPanelOpen && query.panel === 'duration' && durationAxisMax > 0, + enabled: + isPanelOpen && + query.panel === 'duration' && + durationAxisMax > 0 && + !USE_EAP_HTTP_MODULE, referrer: Referrer.SAMPLES_PANEL_DURATION_SAMPLES, }); const { - data: responseCodeSamplesData, - isFetching: isResponseCodeSamplesDataFetching, - error: responseCodeSamplesDataError, - refetch: refetchResponseCodeSpanSamples, - } = useSpansIndexed( + data: durationSamplesData, + isFetching: isDurationSamplesDataFetching, + error: durationSamplesDataError, + refetch: refetchDurationSpanSamples, + } = USE_EAP_HTTP_MODULE ? durationEAPSamplesRes : durationSamples; + + const eapResponse = useEAPSpans( { search, fields: [ @@ -266,11 +295,37 @@ export function HTTPSamplesPanel() { ], sorts: [SPAN_SAMPLES_SORT], limit: SPAN_SAMPLE_LIMIT, - enabled: isPanelOpen && query.panel === 'status', + enabled: isPanelOpen && query.panel === 'status' && USE_EAP_HTTP_MODULE, }, Referrer.SAMPLES_PANEL_RESPONSE_CODE_SAMPLES ); + const spanIndexedResponse = useSpansIndexed( + { + search, + fields: [ + SpanIndexedField.PROJECT, + SpanIndexedField.TRACE, + SpanIndexedField.TRANSACTION_ID, + SpanIndexedField.ID, + SpanIndexedField.TIMESTAMP, + SpanIndexedField.SPAN_DESCRIPTION, + SpanIndexedField.RESPONSE_CODE, + ], + sorts: [SPAN_SAMPLES_SORT], + limit: SPAN_SAMPLE_LIMIT, + enabled: isPanelOpen && query.panel === 'status' && !USE_EAP_HTTP_MODULE, + }, + Referrer.SAMPLES_PANEL_RESPONSE_CODE_SAMPLES + ); + + const { + data: responseCodeSamplesData, + isFetching: isResponseCodeSamplesDataFetching, + error: responseCodeSamplesDataError, + refetch: refetchResponseCodeSpanSamples, + } = USE_EAP_HTTP_MODULE ? spanIndexedResponse : eapResponse; + const sampledSpanDataSeries = useSampleScatterPlotSeries( durationSamplesData, domainTransactionMetrics?.[0]?.['avg(span.self_time)'], diff --git a/static/app/views/insights/http/components/tables/domainCell.tsx b/static/app/views/insights/http/components/tables/domainCell.tsx index 475f6fa94ff71f..36cf77a431667c 100644 --- a/static/app/views/insights/http/components/tables/domainCell.tsx +++ b/static/app/views/insights/http/components/tables/domainCell.tsx @@ -11,9 +11,10 @@ import {NULL_DOMAIN_DESCRIPTION} from 'sentry/views/insights/http/settings'; interface Props { domain?: string[]; projectId?: string; + url?: string; } -export function DomainCell({projectId, domain}: Props) { +export function DomainCell({projectId, domain, url}: Props) { const moduleURL = useModuleURL('http'); const location = useLocation(); @@ -21,15 +22,16 @@ export function DomainCell({projectId, domain}: Props) { ...location.query, project: projectId, 'span.domain': undefined, + url, domain, }; + const text = url ? url : domain && domain.length > 0 ? domain : NULL_DOMAIN_DESCRIPTION; + return ( - - {domain && domain.length > 0 ? domain : NULL_DOMAIN_DESCRIPTION} - + {text} ); diff --git a/static/app/views/insights/http/components/tables/domainsTable.tsx b/static/app/views/insights/http/components/tables/domainsTable.tsx index 19d3deb76aa750..3d6c833f6652ac 100644 --- a/static/app/views/insights/http/components/tables/domainsTable.tsx +++ b/static/app/views/insights/http/components/tables/domainsTable.tsx @@ -37,6 +37,7 @@ type Row = Pick< type Column = GridColumnHeader< | 'span.domain' + | 'url' | 'project' | 'spm()' | 'http_response_rate(3)' @@ -46,49 +47,6 @@ type Column = GridColumnHeader< | 'time_spent_percentage()' >; -const COLUMN_ORDER: Column[] = [ - { - key: 'span.domain', - name: t('Domain'), - width: COL_WIDTH_UNDEFINED, - }, - { - key: 'project', - name: t('Project'), - width: COL_WIDTH_UNDEFINED, - }, - { - key: 'spm()', - name: `${t('Requests')} ${RATE_UNIT_TITLE[RateUnit.PER_MINUTE]}`, - width: COL_WIDTH_UNDEFINED, - }, - { - key: `http_response_rate(3)`, - name: t('3XXs'), - width: 50, - }, - { - key: `http_response_rate(4)`, - name: t('4XXs'), - width: 50, - }, - { - key: `http_response_rate(5)`, - name: t('5XXs'), - width: 50, - }, - { - key: `avg(span.self_time)`, - name: DataTitles.avg, - width: COL_WIDTH_UNDEFINED, - }, - { - key: 'time_spent_percentage()', - name: DataTitles.timeSpent, - width: COL_WIDTH_UNDEFINED, - }, -]; - const SORTABLE_FIELDS = [ 'avg(span.self_time)', 'spm()', @@ -114,14 +72,68 @@ interface Props { meta?: EventsMetaType; pageLinks?: string; }; + showRoutes: boolean; sort: ValidSort; } -export function DomainsTable({response, sort}: Props) { +export function DomainsTable({response, showRoutes, sort}: Props) { const {data, isLoading, meta, pageLinks} = response; const location = useLocation(); const organization = useOrganization(); + const COLUMN_ORDER: Column[] = [ + ...(showRoutes + ? [ + { + key: 'url', + name: t('URL'), + width: COL_WIDTH_UNDEFINED, + }, + ] + : [ + { + key: 'span.domain', + name: t('Domain'), + width: COL_WIDTH_UNDEFINED, + }, + ]), + { + key: 'project', + name: t('Project'), + width: COL_WIDTH_UNDEFINED, + }, + { + key: 'spm()', + name: `${t('Requests')} ${RATE_UNIT_TITLE[RateUnit.PER_MINUTE]}`, + width: COL_WIDTH_UNDEFINED, + }, + { + key: `http_response_rate(3)`, + name: t('3XXs'), + width: 50, + }, + { + key: `http_response_rate(4)`, + name: t('4XXs'), + width: 50, + }, + { + key: `http_response_rate(5)`, + name: t('5XXs'), + width: 50, + }, + { + key: `avg(span.self_time)`, + name: DataTitles.avg, + width: COL_WIDTH_UNDEFINED, + }, + { + key: 'time_spent_percentage()', + name: DataTitles.timeSpent, + width: COL_WIDTH_UNDEFINED, + }, + ]; + const handleCursor: CursorHandler = (newCursor, pathname, query) => { browserHistory.push({ pathname, @@ -187,6 +199,16 @@ function renderBodyCell( ); } + if (column.key === 'url') { + return ( + + ); + } + if (!meta?.fields) { return row[column.key]; } diff --git a/static/app/views/insights/http/views/httpDomainSummaryPage.tsx b/static/app/views/insights/http/views/httpDomainSummaryPage.tsx index ba87393737dc22..ad4332f4f80456 100644 --- a/static/app/views/insights/http/views/httpDomainSummaryPage.tsx +++ b/static/app/views/insights/http/views/httpDomainSummaryPage.tsx @@ -24,7 +24,10 @@ import {ModulePageProviders} from 'sentry/views/insights/common/components/modul import {ModuleBodyUpsellHook} from 'sentry/views/insights/common/components/moduleUpsellHookWrapper'; import {ReadoutRibbon, ToolRibbon} from 'sentry/views/insights/common/components/ribbon'; import {getTimeSpentExplanation} from 'sentry/views/insights/common/components/tableCells/timeSpentCell'; -import {useSpanMetrics} from 'sentry/views/insights/common/queries/useDiscover'; +import { + useEAPSpans, + useSpanMetrics, +} from 'sentry/views/insights/common/queries/useDiscover'; import {useSpanMetricsSeries} from 'sentry/views/insights/common/queries/useDiscoverSeries'; import {QueryParameterNames} from 'sentry/views/insights/common/views/queryParameters'; import SubregionSelector from 'sentry/views/insights/common/views/spans/selectors/subregionSelector'; @@ -47,6 +50,7 @@ import { MODULE_DOC_LINK, NULL_DOMAIN_DESCRIPTION, } from 'sentry/views/insights/http/settings'; +import {USE_EAP_HTTP_MODULE} from 'sentry/views/insights/http/views/httpLandingPage'; import {BackendHeader} from 'sentry/views/insights/pages/backend/backendPageHeader'; import {BACKEND_LANDING_SUB_PATH} from 'sentry/views/insights/pages/backend/settings'; import {FrontendHeader} from 'sentry/views/insights/pages/frontend/frontendPageHeader'; @@ -76,18 +80,22 @@ export function HTTPDomainSummaryPage() { domain, project: projectId, 'user.geo.subregion': subregions, + url, } = useLocationQuery({ fields: { project: decodeScalar, domain: decodeScalar, [SpanMetricsField.USER_GEO_SUBREGION]: decodeList, + url: decodeScalar, }, }); const project = projects.find(p => projectId === p.id); const filters: SpanMetricsQueryFilters = { ...BASE_FILTERS, - 'span.domain': domain === '' ? EMPTY_OPTION_VALUE : escapeFilterValue(domain), + ...(url + ? {url} + : {'span.domain': domain === '' ? EMPTY_OPTION_VALUE : escapeFilterValue(domain)}), ...(subregions.length > 0 ? { [SpanMetricsField.USER_GEO_SUBREGION]: `[${subregions.join(',')}]`, @@ -149,13 +157,26 @@ export function HTTPDomainSummaryPage() { Referrer.DOMAIN_SUMMARY_RESPONSE_CODE_CHART ); - const { - isPending: isTransactionsListLoading, - data: transactionsList, - meta: transactionsListMeta, - error: transactionsListError, - pageLinks: transactionsListPageLinks, - } = useSpanMetrics( + const eapTableResponse = useEAPSpans( + { + search: MutableSearch.fromQueryObject(filters), + fields: [ + 'project.id', + 'transaction', + 'transaction.method', + 'spm()', + 'avg(span.self_time)', + 'sum(span.self_time)', + ], + sorts: [sort], + limit: TRANSACTIONS_TABLE_ROW_COUNT, + cursor, + enabled: USE_EAP_HTTP_MODULE, + }, + Referrer.DOMAIN_SUMMARY_TRANSACTIONS_LIST + ); + + const spanMetricsTableResponse = useSpanMetrics( { search: MutableSearch.fromQueryObject(filters), fields: [ @@ -173,10 +194,19 @@ export function HTTPDomainSummaryPage() { sorts: [sort], limit: TRANSACTIONS_TABLE_ROW_COUNT, cursor, + enabled: !USE_EAP_HTTP_MODULE, }, Referrer.DOMAIN_SUMMARY_TRANSACTIONS_LIST ); + const { + isPending: isTransactionsListLoading, + data: transactionsList, + meta: transactionsListMeta, + error: transactionsListError, + pageLinks: transactionsListPageLinks, + } = USE_EAP_HTTP_MODULE ? eapTableResponse : spanMetricsTableResponse; + useSynchronizeCharts( 3, !isThroughputDataLoading && !isDurationDataLoading && !isResponseCodeDataLoading @@ -345,7 +375,7 @@ export function HTTPDomainSummaryPage() { } const DEFAULT_SORT = { - field: 'time_spent_percentage()' as const, + field: 'spm()' as const, kind: 'desc' as const, }; diff --git a/static/app/views/insights/http/views/httpLandingPage.tsx b/static/app/views/insights/http/views/httpLandingPage.tsx index 87f42a338c7771..5e84aeeb96c1bc 100644 --- a/static/app/views/insights/http/views/httpLandingPage.tsx +++ b/static/app/views/insights/http/views/httpLandingPage.tsx @@ -1,8 +1,9 @@ -import React, {Fragment} from 'react'; +import React, {Fragment, useState} from 'react'; import * as Layout from 'sentry/components/layouts/thirds'; import {PageHeadingQuestionTooltip} from 'sentry/components/pageHeadingQuestionTooltip'; import SearchBar from 'sentry/components/searchBar'; +import SwitchButton from 'sentry/components/switchButton'; import {t} from 'sentry/locale'; import {trackAnalytics} from 'sentry/utils/analytics'; import {browserHistory} from 'sentry/utils/browserHistory'; @@ -18,7 +19,10 @@ import {ModulePageProviders} from 'sentry/views/insights/common/components/modul import {ModulesOnboarding} from 'sentry/views/insights/common/components/modulesOnboarding'; import {ModuleBodyUpsellHook} from 'sentry/views/insights/common/components/moduleUpsellHookWrapper'; import {ToolRibbon} from 'sentry/views/insights/common/components/ribbon'; -import {useSpanMetrics} from 'sentry/views/insights/common/queries/useDiscover'; +import { + useEAPSpans, + useSpanMetrics, +} from 'sentry/views/insights/common/queries/useDiscover'; import {useSpanMetricsSeries} from 'sentry/views/insights/common/queries/useDiscoverSeries'; import {useModuleTitle} from 'sentry/views/insights/common/utils/useModuleTitle'; import {QueryParameterNames} from 'sentry/views/insights/common/views/queryParameters'; @@ -45,11 +49,14 @@ import {MOBILE_LANDING_SUB_PATH} from 'sentry/views/insights/pages/mobile/settin import {useDomainViewFilters} from 'sentry/views/insights/pages/useFilters'; import {ModuleName, SpanMetricsField} from 'sentry/views/insights/types'; +export const USE_EAP_HTTP_MODULE = true; + export function HTTPLandingPage() { const organization = useOrganization(); const location = useLocation(); const {view} = useDomainViewFilters(); const moduleTitle = useModuleTitle(ModuleName.HTTP); + const [shouldShowRoutes, setShowRoutes] = useState(false); const sortField = decodeScalar(location.query?.[QueryParameterNames.DOMAINS_SORT]); @@ -135,7 +142,7 @@ export function HTTPLandingPage() { Referrer.LANDING_RESPONSE_CODE_CHART ); - const domainsListResponse = useSpanMetrics( + const spanMetricsDomainListRes = useSpanMetrics( { search: MutableSearch.fromQueryObject(tableFilters), fields: [ @@ -153,6 +160,7 @@ export function HTTPLandingPage() { sorts: [sort], limit: DOMAIN_TABLE_ROW_COUNT, cursor, + enabled: !USE_EAP_HTTP_MODULE, }, Referrer.LANDING_DOMAINS_LIST ); @@ -162,6 +170,31 @@ export function HTTPLandingPage() { !isThroughputDataLoading && !isDurationDataLoading && !isResponseCodeDataLoading ); + const eapDomainListRes = useEAPSpans( + { + cursor, + search: MutableSearch.fromQueryObject(tableFilters), + limit: DOMAIN_TABLE_ROW_COUNT, + fields: [ + 'project', + 'project.id', + ...(shouldShowRoutes ? ['url'] : ['span.domain']), + 'spm()', + 'avg(span.self_time)', + 'sum(span.self_time)', + ], + enabled: USE_EAP_HTTP_MODULE, + sorts: [sort], + }, + Referrer.LANDING_DOMAINS_LIST + ); + + console.log(eapDomainListRes); + + const domainsListResponse = USE_EAP_HTTP_MODULE + ? eapDomainListRes + : spanMetricsDomainListRes; + const headerTitle = ( {moduleTitle} @@ -174,6 +207,10 @@ export function HTTPLandingPage() { module: ModuleName.HTTP, }; + const handleRouteToggle = () => { + setShowRoutes(!shouldShowRoutes); + }; + return ( {view === FRONTEND_LANDING_SUB_PATH && } @@ -202,7 +239,6 @@ export function HTTPLandingPage() { filters={chartFilters} /> - - - - - + + {' Show full urls'} + + + @@ -255,7 +296,7 @@ export function HTTPLandingPage() { } const DEFAULT_SORT = { - field: 'time_spent_percentage()' as const, + field: 'spm()' as const, kind: 'desc' as const, }; From d9428335224e9c19c53ab66472ef5393ab5dc850 Mon Sep 17 00:00:00 2001 From: Dominik Buszowiecki Date: Thu, 12 Dec 2024 12:38:07 -0500 Subject: [PATCH 2/2] wip --- .../insights/http/components/tables/domainsTable.tsx | 9 +++++---- .../insights/http/views/httpDomainSummaryPage.tsx | 11 +++++++---- .../app/views/insights/http/views/httpLandingPage.tsx | 3 ++- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/static/app/views/insights/http/components/tables/domainsTable.tsx b/static/app/views/insights/http/components/tables/domainsTable.tsx index 3d6c833f6652ac..809d0fde760dc7 100644 --- a/static/app/views/insights/http/components/tables/domainsTable.tsx +++ b/static/app/views/insights/http/components/tables/domainsTable.tsx @@ -19,6 +19,7 @@ import {renderHeadCell} from 'sentry/views/insights/common/components/tableCells import {QueryParameterNames} from 'sentry/views/insights/common/views/queryParameters'; import {DataTitles} from 'sentry/views/insights/common/views/spans/types'; import {DomainCell} from 'sentry/views/insights/http/components/tables/domainCell'; +import {HTTP_MODULE_URL_FIELD} from 'sentry/views/insights/http/views/httpLandingPage'; import {ModuleName, type SpanMetricsResponse} from 'sentry/views/insights/types'; type Row = Pick< @@ -37,7 +38,7 @@ type Row = Pick< type Column = GridColumnHeader< | 'span.domain' - | 'url' + | 'span.description' | 'project' | 'spm()' | 'http_response_rate(3)' @@ -85,7 +86,7 @@ export function DomainsTable({response, showRoutes, sort}: Props) { ...(showRoutes ? [ { - key: 'url', + key: HTTP_MODULE_URL_FIELD, name: t('URL'), width: COL_WIDTH_UNDEFINED, }, @@ -199,12 +200,12 @@ function renderBodyCell( ); } - if (column.key === 'url') { + if (column.key === HTTP_MODULE_URL_FIELD) { return ( ); } diff --git a/static/app/views/insights/http/views/httpDomainSummaryPage.tsx b/static/app/views/insights/http/views/httpDomainSummaryPage.tsx index ad4332f4f80456..3047a0f72bb253 100644 --- a/static/app/views/insights/http/views/httpDomainSummaryPage.tsx +++ b/static/app/views/insights/http/views/httpDomainSummaryPage.tsx @@ -50,7 +50,10 @@ import { MODULE_DOC_LINK, NULL_DOMAIN_DESCRIPTION, } from 'sentry/views/insights/http/settings'; -import {USE_EAP_HTTP_MODULE} from 'sentry/views/insights/http/views/httpLandingPage'; +import { + HTTP_MODULE_URL_FIELD, + USE_EAP_HTTP_MODULE, +} from 'sentry/views/insights/http/views/httpLandingPage'; import {BackendHeader} from 'sentry/views/insights/pages/backend/backendPageHeader'; import {BACKEND_LANDING_SUB_PATH} from 'sentry/views/insights/pages/backend/settings'; import {FrontendHeader} from 'sentry/views/insights/pages/frontend/frontendPageHeader'; @@ -94,7 +97,7 @@ export function HTTPDomainSummaryPage() { const filters: SpanMetricsQueryFilters = { ...BASE_FILTERS, ...(url - ? {url} + ? {[HTTP_MODULE_URL_FIELD]: url} : {'span.domain': domain === '' ? EMPTY_OPTION_VALUE : escapeFilterValue(domain)}), ...(subregions.length > 0 ? { @@ -216,7 +219,7 @@ export function HTTPDomainSummaryPage() { headerTitle: ( {project && } - {domain || NULL_DOMAIN_DESCRIPTION} + {domain || url || NULL_DOMAIN_DESCRIPTION} ), @@ -237,7 +240,7 @@ export function HTTPDomainSummaryPage() { - {domain === '' && ( + {domain === '' && !url && ( {tct( '"Unknown Domain" entries can be caused by instrumentation errors. Please refer to our [link] for more information.', diff --git a/static/app/views/insights/http/views/httpLandingPage.tsx b/static/app/views/insights/http/views/httpLandingPage.tsx index 5e84aeeb96c1bc..70bd548b37e221 100644 --- a/static/app/views/insights/http/views/httpLandingPage.tsx +++ b/static/app/views/insights/http/views/httpLandingPage.tsx @@ -50,6 +50,7 @@ import {useDomainViewFilters} from 'sentry/views/insights/pages/useFilters'; import {ModuleName, SpanMetricsField} from 'sentry/views/insights/types'; export const USE_EAP_HTTP_MODULE = true; +export const HTTP_MODULE_URL_FIELD = 'span.description'; export function HTTPLandingPage() { const organization = useOrganization(); @@ -178,7 +179,7 @@ export function HTTPLandingPage() { fields: [ 'project', 'project.id', - ...(shouldShowRoutes ? ['url'] : ['span.domain']), + ...(shouldShowRoutes ? [HTTP_MODULE_URL_FIELD] : ['span.domain']), 'spm()', 'avg(span.self_time)', 'sum(span.self_time)',