[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:
Dario Gieselaar 2019-07-17 16:06:19 +02:00 committed by GitHub
parent 779dca3c27
commit b54a2abc74
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 42 additions and 34 deletions

View file

@ -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
});
}

View file

@ -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)
}
});

View file

@ -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,

View file

@ -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: {

View file

@ -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);
}