[APM] When using search bar UI should fall back to transactions (#103987)

* adding kuery bar to search transactions metrics

* addressig PR comments

* fixing api test

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
Cauê Marcondes 2021-07-05 16:15:50 -04:00 committed by GitHub
parent f9c52277fb
commit b0b0584b55
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 62 additions and 52 deletions

View file

@ -6,7 +6,7 @@
*/
import { SearchAggregatedTransactionSetting } from '../../../../common/aggregated_transactions';
import { rangeQuery } from '../../../../server/utils/queries';
import { kqlQuery, rangeQuery } from '../../../../server/utils/queries';
import { ProcessorEvent } from '../../../../common/processor_event';
import {
TRANSACTION_DURATION,
@ -19,10 +19,12 @@ export async function getHasAggregatedTransactions({
start,
end,
apmEventClient,
kuery,
}: {
start?: number;
end?: number;
apmEventClient: APMEventClient;
kuery?: string;
}) {
const response = await apmEventClient.search(
'get_has_aggregated_transactions',
@ -36,6 +38,7 @@ export async function getHasAggregatedTransactions({
filter: [
{ exists: { field: TRANSACTION_DURATION_HISTOGRAM } },
...(start && end ? rangeQuery(start, end) : []),
...kqlQuery(kuery),
],
},
},
@ -56,19 +59,22 @@ export async function getSearchAggregatedTransactions({
start,
end,
apmEventClient,
kuery,
}: {
config: APMConfig;
start?: number;
end?: number;
apmEventClient: APMEventClient;
kuery?: string;
}): Promise<boolean> {
const searchAggregatedTransactions =
config['xpack.apm.searchAggregatedTransactions'];
if (
kuery ||
searchAggregatedTransactions === SearchAggregatedTransactionSetting.auto
) {
return getHasAggregatedTransactions({ start, end, apmEventClient });
return getHasAggregatedTransactions({ start, end, apmEventClient, kuery });
}
return (

View file

@ -51,9 +51,10 @@ const servicesRoute = createApmServerRoute({
const setup = await setupRequest(resources);
const { params, logger } = resources;
const { environment, kuery } = params.query;
const searchAggregatedTransactions = await getSearchAggregatedTransactions(
setup
);
const searchAggregatedTransactions = await getSearchAggregatedTransactions({
...setup,
kuery,
});
return getServices({
environment,
@ -405,9 +406,10 @@ const serviceThroughputRoute = createApmServerRoute({
comparisonStart,
comparisonEnd,
} = params.query;
const searchAggregatedTransactions = await getSearchAggregatedTransactions(
setup
);
const searchAggregatedTransactions = await getSearchAggregatedTransactions({
...setup,
kuery,
});
const { start, end } = setup;
@ -477,9 +479,10 @@ const serviceInstancesMainStatisticsRoute = createApmServerRoute({
comparisonEnd,
} = params.query;
const searchAggregatedTransactions = await getSearchAggregatedTransactions(
setup
);
const searchAggregatedTransactions = await getSearchAggregatedTransactions({
...setup,
kuery,
});
const { start, end } = setup;
@ -552,9 +555,10 @@ const serviceInstancesDetailedStatisticsRoute = createApmServerRoute({
latencyAggregationType,
} = params.query;
const searchAggregatedTransactions = await getSearchAggregatedTransactions(
setup
);
const searchAggregatedTransactions = await getSearchAggregatedTransactions({
...setup,
kuery,
});
return getServiceInstancesDetailedStatisticsPeriods({
environment,
@ -593,9 +597,10 @@ export const serviceInstancesMetadataDetails = createApmServerRoute({
const { serviceName, serviceNodeName } = resources.params.path;
const { transactionType, environment, kuery } = resources.params.query;
const searchAggregatedTransactions = await getSearchAggregatedTransactions(
setup
);
const searchAggregatedTransactions = await getSearchAggregatedTransactions({
...setup,
kuery,
});
return await getServiceInstanceMetadataDetails({
searchAggregatedTransactions,

View file

@ -26,9 +26,10 @@ const tracesRoute = createApmServerRoute({
const setup = await setupRequest(resources);
const { params } = resources;
const { environment, kuery } = params.query;
const searchAggregatedTransactions = await getSearchAggregatedTransactions(
setup
);
const searchAggregatedTransactions = await getSearchAggregatedTransactions({
...setup,
kuery,
});
return getTransactionGroupList(
{ environment, kuery, type: 'top_traces', searchAggregatedTransactions },

View file

@ -56,9 +56,10 @@ const transactionGroupsRoute = createApmServerRoute({
const { serviceName } = params.path;
const { environment, kuery, transactionType } = params.query;
const searchAggregatedTransactions = await getSearchAggregatedTransactions(
setup
);
const searchAggregatedTransactions = await getSearchAggregatedTransactions({
...setup,
kuery,
});
return getTransactionGroupList(
{
@ -95,16 +96,16 @@ const transactionGroupsMainStatisticsRoute = createApmServerRoute({
handler: async (resources) => {
const { params } = resources;
const setup = await setupRequest(resources);
const searchAggregatedTransactions = await getSearchAggregatedTransactions(
setup
);
const {
path: { serviceName },
query: { environment, kuery, latencyAggregationType, transactionType },
} = params;
const searchAggregatedTransactions = await getSearchAggregatedTransactions({
...setup,
kuery,
});
return getServiceTransactionGroups({
environment,
kuery,
@ -140,11 +141,6 @@ const transactionGroupsDetailedStatisticsRoute = createApmServerRoute({
},
handler: async (resources) => {
const setup = await setupRequest(resources);
const searchAggregatedTransactions = await getSearchAggregatedTransactions(
setup
);
const { params } = resources;
const {
@ -161,6 +157,11 @@ const transactionGroupsDetailedStatisticsRoute = createApmServerRoute({
},
} = params;
const searchAggregatedTransactions = await getSearchAggregatedTransactions({
...setup,
kuery,
});
return await getServiceTransactionGroupDetailedStatisticsPeriods({
environment,
kuery,
@ -208,9 +209,10 @@ const transactionLatencyChartsRoute = createApmServerRoute({
comparisonEnd,
} = params.query;
const searchAggregatedTransactions = await getSearchAggregatedTransactions(
setup
);
const searchAggregatedTransactions = await getSearchAggregatedTransactions({
...setup,
kuery,
});
const options = {
environment,
@ -276,9 +278,10 @@ const transactionThroughputChartsRoute = createApmServerRoute({
transactionName,
} = params.query;
const searchAggregatedTransactions = await getSearchAggregatedTransactions(
setup
);
const searchAggregatedTransactions = await getSearchAggregatedTransactions({
...setup,
kuery,
});
return await getThroughputCharts({
environment,
@ -327,9 +330,10 @@ const transactionChartsDistributionRoute = createApmServerRoute({
traceId = '',
} = params.query;
const searchAggregatedTransactions = await getSearchAggregatedTransactions(
setup
);
const searchAggregatedTransactions = await getSearchAggregatedTransactions({
...setup,
kuery,
});
return getTransactionDistribution({
environment,
@ -411,9 +415,10 @@ const transactionChartsErrorRateRoute = createApmServerRoute({
comparisonEnd,
} = params.query;
const searchAggregatedTransactions = await getSearchAggregatedTransactions(
setup
);
const searchAggregatedTransactions = await getSearchAggregatedTransactions({
...setup,
kuery,
});
return getErrorRatePeriods({
environment,

View file

@ -286,13 +286,6 @@ export default function ApiTest({ getService }: FtrProviderContext) {
expect(unfilteredServiceNames).to.eql(filteredServiceNames);
expect(
filteredResponse.body.items.every((item) => {
// make sure it did not query transaction data
return isEmpty(item.avgResponseTime);
})
).to.be(true);
expect(filteredResponse.body.items.every((item) => !!item.agentName)).to.be(true);
});
}