kibana/x-pack/plugins/apm/server/routes/traces.ts
Dario Gieselaar 8169ed173b
[APM] Metrics-powered UI (#73953)
* [APM] Optimize service overview queries

* Review feedback

* Use correct indices/filters for service overview metrics

* [APM] Optimize traces overview

* Separate queries into separate file

* Support union types for aggregations

* [APM] Don't fetch dynamic index pattern in setupRequest

We don't need a dynamic index pattern for parsing the filters from the query bar. Additionally, instead of fetching uiIndices in `getParamsForSearchRequest`, we can use `indices` that we already fetched in `setupRequest`.

* use join utility function to merge requests

* Correct path for UI_SETTINGS import

* Query transaction indices in getEnvironments()

* [APM] Introduce apm.types

Instead of using a combination of index + terms filters on processor.event, add a top-level setting that allows you to define a type, which can be a processor event type, agent configuration or custom link. This allows us to more easily compose queries.

* Set size of terms agg on error rate aggregation

* Metrics

* Use separate clients for apm events and other uses

* Separate function for calculating relative impact

* use UIProcessorEvent type in IURLParams type

* Remove unused import

* Split out strategy in helper functions

* Use cloneDeep in apmEventClient.search

* Consistent usage of getUseAggregatedTransactions

* Update traces functional test

* Update API tests

* Update responses for functional tests

* Review feedback

* Fix type for filter/filters aggregation

* Review feedback

* Rename useAggregatedTransactions > searchAggregatedTransactions

* Use correct route name for transaction redirect page

* Closes #67744.

* Review feedback; offer other strategies than 'auto'

* Fix functional tests

* [APM] Always load esarchives from common

Instead of requiring every test suite to store its archives under {suite}/fixtures/es_archiver, always load them from common/fixtures/es_archiver.

* Update script

* Make sure tests pass

* Update snapshots for API tests

* Filter for transaction.root when fetching top traces

* Make sure must_not clause is formatted correctly

Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
2020-09-16 19:20:08 +02:00

45 lines
1.4 KiB
TypeScript

/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
import * as t from 'io-ts';
import { setupRequest } from '../lib/helpers/setup_request';
import { getTrace } from '../lib/traces/get_trace';
import { getTransactionGroupList } from '../lib/transaction_groups';
import { createRoute } from './create_route';
import { rangeRt, uiFiltersRt } from './default_api_types';
import { getSearchAggregatedTransactions } from '../lib/helpers/aggregated_transactions';
export const tracesRoute = createRoute(() => ({
path: '/api/apm/traces',
params: {
query: t.intersection([rangeRt, uiFiltersRt]),
},
handler: async ({ context, request }) => {
const setup = await setupRequest(context, request);
const searchAggregatedTransactions = await getSearchAggregatedTransactions(
setup
);
return getTransactionGroupList(
{ type: 'top_traces', searchAggregatedTransactions },
setup
);
},
}));
export const tracesByIdRoute = createRoute(() => ({
path: '/api/apm/traces/{traceId}',
params: {
path: t.type({
traceId: t.string,
}),
query: rangeRt,
},
handler: async ({ context, request }) => {
const setup = await setupRequest(context, request);
return getTrace(context.params.path.traceId, setup);
},
}));