mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 09:48:58 -04:00
[7.x] [APM] Breakdown: use transaction type from URL instead o… (#41328)
* [APM] Breakdown: use transaction type from URL instead of hardcoded 'request' * Address review feedback
This commit is contained in:
parent
779dca3c27
commit
b54a2abc74
5 changed files with 42 additions and 34 deletions
|
@ -11,7 +11,7 @@ import { loadTransactionBreakdown } from '../services/rest/apm/transaction_group
|
|||
|
||||
export function useTransactionBreakdown() {
|
||||
const {
|
||||
urlParams: { serviceName, start, end, transactionName },
|
||||
urlParams: { serviceName, start, end, transactionName, transactionType },
|
||||
uiFilters
|
||||
} = useUrlParams();
|
||||
|
||||
|
@ -20,12 +20,13 @@ export function useTransactionBreakdown() {
|
|||
error,
|
||||
status
|
||||
} = useFetcher(() => {
|
||||
if (serviceName && start && end) {
|
||||
if (serviceName && start && end && transactionType) {
|
||||
return loadTransactionBreakdown({
|
||||
start,
|
||||
end,
|
||||
serviceName,
|
||||
transactionName,
|
||||
transactionType,
|
||||
uiFilters
|
||||
});
|
||||
}
|
||||
|
|
|
@ -101,12 +101,14 @@ export async function loadTransactionBreakdown({
|
|||
start,
|
||||
end,
|
||||
transactionName,
|
||||
transactionType,
|
||||
uiFilters
|
||||
}: {
|
||||
serviceName: string;
|
||||
start: string;
|
||||
end: string;
|
||||
transactionName?: string;
|
||||
transactionType: string;
|
||||
uiFilters: UIFilters;
|
||||
}) {
|
||||
return callApi<TransactionBreakdownAPIResponse>({
|
||||
|
@ -115,6 +117,7 @@ export async function loadTransactionBreakdown({
|
|||
start,
|
||||
end,
|
||||
transactionName,
|
||||
transactionType,
|
||||
uiFiltersES: await getUiFiltersES(uiFilters)
|
||||
}
|
||||
});
|
||||
|
|
|
@ -15,6 +15,7 @@ describe('getTransactionBreakdown', () => {
|
|||
|
||||
const response = await getTransactionBreakdown({
|
||||
serviceName: 'myServiceName',
|
||||
transactionType: 'request',
|
||||
setup: {
|
||||
start: 0,
|
||||
end: 500000,
|
||||
|
@ -37,6 +38,7 @@ describe('getTransactionBreakdown', () => {
|
|||
|
||||
const response = await getTransactionBreakdown({
|
||||
serviceName: 'myServiceName',
|
||||
transactionType: 'request',
|
||||
setup: {
|
||||
start: 0,
|
||||
end: 500000,
|
||||
|
@ -76,6 +78,7 @@ describe('getTransactionBreakdown', () => {
|
|||
|
||||
const response = await getTransactionBreakdown({
|
||||
serviceName: 'myServiceName',
|
||||
transactionType: 'request',
|
||||
setup: {
|
||||
start: 0,
|
||||
end: 500000,
|
||||
|
@ -114,6 +117,7 @@ describe('getTransactionBreakdown', () => {
|
|||
|
||||
const response = await getTransactionBreakdown({
|
||||
serviceName: 'myServiceName',
|
||||
transactionType: 'request',
|
||||
setup: {
|
||||
start: 0,
|
||||
end: 500000,
|
||||
|
|
|
@ -27,11 +27,13 @@ export type TransactionBreakdownAPIResponse = PromiseReturnType<
|
|||
export async function getTransactionBreakdown({
|
||||
setup,
|
||||
serviceName,
|
||||
transactionName
|
||||
transactionName,
|
||||
transactionType
|
||||
}: {
|
||||
setup: Setup;
|
||||
serviceName: string;
|
||||
transactionName?: string;
|
||||
transactionType: string;
|
||||
}) {
|
||||
const { uiFiltersES, client, config, start, end } = setup;
|
||||
|
||||
|
@ -76,41 +78,36 @@ export async function getTransactionBreakdown({
|
|||
}
|
||||
};
|
||||
|
||||
const filters = [
|
||||
{
|
||||
term: {
|
||||
[SERVICE_NAME]: {
|
||||
value: serviceName
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
term: {
|
||||
[TRANSACTION_TYPE]: {
|
||||
value: transactionType
|
||||
}
|
||||
}
|
||||
},
|
||||
{ range: rangeFilter(start, end) },
|
||||
...uiFiltersES
|
||||
];
|
||||
|
||||
if (transactionName) {
|
||||
filters.push({ term: { [TRANSACTION_NAME]: { value: transactionName } } });
|
||||
}
|
||||
|
||||
const params = {
|
||||
index: config.get<string>('apm_oss.metricsIndices'),
|
||||
body: {
|
||||
size: 0,
|
||||
query: {
|
||||
bool: {
|
||||
must: [
|
||||
{
|
||||
term: {
|
||||
[SERVICE_NAME]: {
|
||||
value: serviceName
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
term: {
|
||||
[TRANSACTION_TYPE]: {
|
||||
value: 'request'
|
||||
}
|
||||
}
|
||||
},
|
||||
{ range: rangeFilter(start, end) },
|
||||
...uiFiltersES,
|
||||
...(transactionName
|
||||
? [
|
||||
{
|
||||
term: {
|
||||
[TRANSACTION_NAME]: {
|
||||
value: transactionName
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
: [])
|
||||
]
|
||||
must: filters
|
||||
}
|
||||
},
|
||||
aggs: {
|
||||
|
|
|
@ -122,20 +122,23 @@ export function initTransactionGroupsApi(core: InternalCoreSetup) {
|
|||
options: {
|
||||
validate: {
|
||||
query: withDefaultValidators({
|
||||
transactionName: Joi.string()
|
||||
transactionName: Joi.string(),
|
||||
transactionType: Joi.string().required()
|
||||
})
|
||||
}
|
||||
},
|
||||
handler: req => {
|
||||
const setup = setupRequest(req);
|
||||
const { serviceName } = req.params;
|
||||
const { transactionName } = req.query as {
|
||||
const { transactionName, transactionType } = req.query as {
|
||||
transactionName?: string;
|
||||
transactionType: string;
|
||||
};
|
||||
|
||||
return getTransactionBreakdown({
|
||||
serviceName,
|
||||
transactionName,
|
||||
transactionType,
|
||||
setup
|
||||
}).catch(defaultErrorHandler);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue