Skip to content

Commit

Permalink
[APM] Fix query to mobile transactions main statistics (elastic#155895)
Browse files Browse the repository at this point in the history
When splitting the query to mobile transactions main statistics, the
sessions were left in the errors query and should have been retrieved in
the transactions events. This PR fix this issue

(cherry picked from commit 67b2110)
  • Loading branch information
MiriamAparicio committed Apr 28, 2023
1 parent d8718ff commit 42aca4e
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 47 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,11 @@ type MobileDetailedStatisticsByField =
APIReturnType<'GET /internal/apm/mobile-services/{serviceName}/detailed_statistics'>;

export function getColumns({
agentName,
detailedStatisticsLoading,
detailedStatistics,
comparisonEnabled,
offset,
}: {
agentName?: string;
detailedStatisticsLoading: boolean;
detailedStatistics: MobileDetailedStatisticsByField;
comparisonEnabled?: boolean;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,18 @@ export interface MobileMainStatisticsResponse {
name: string | number;
latency: number | null;
throughput: number;
crashRate?: number;
crashRate: number;
}>;
}

type MergedQueriesResponse = Array<{
name: string | number;
latency: number | null;
throughput: number;
sessions: number;
crashes?: number;
}>;

export async function getMobileMainStatisticsByField({
kuery,
apmEventClient,
Expand All @@ -55,7 +63,7 @@ export async function getMobileMainStatisticsByField({
}: Props) {
async function getMobileTransactionEventStatistics() {
const response = await apmEventClient.search(
`get_mobile_main_statistics_by_field`,
`get_mobile_transaction_events_main_statistics_by_field`,
{
apm: {
sources: [
Expand Down Expand Up @@ -90,6 +98,11 @@ export async function getMobileMainStatisticsByField({
field: TRANSACTION_DURATION,
},
},
sessions: {
cardinality: {
field: SESSION_ID,
},
},
},
},
},
Expand All @@ -110,66 +123,59 @@ export async function getMobileMainStatisticsByField({
end,
value: bucket.doc_count,
}),
sessions: bucket.sessions.value,
};
}) ?? []
);
}

async function getMobileErrorEventStatistics() {
const response = await apmEventClient.search(
`get_mobile_transaction_events_main_statistics_by_field`,
{
apm: {
sources: [
{
documentType: ApmDocumentType.ErrorEvent,
rollupInterval: RollupInterval.None,
},
],
const response = await apmEventClient.search(`get_mobile_crashes`, {
apm: {
sources: [
{
documentType: ApmDocumentType.ErrorEvent,
rollupInterval: RollupInterval.None,
},
],
},
body: {
track_total_hits: false,
size: 0,
query: {
bool: {
filter: [
...termQuery(SERVICE_NAME, serviceName),
...rangeQuery(start, end),
...environmentQuery(environment),
...kqlQuery(kuery),
],
},
},
body: {
track_total_hits: false,
size: 0,
query: {
bool: {
filter: [
...termQuery(SERVICE_NAME, serviceName),
...rangeQuery(start, end),
...environmentQuery(environment),
...kqlQuery(kuery),
],
aggs: {
main_statistics: {
terms: {
field,
size: 1000,
},
},
aggs: {
main_statistics: {
terms: {
field,
size: 1000,
},
aggs: {
sessions: {
cardinality: {
field: SESSION_ID,
},
},
crashes: {
filter: {
term: {
[ERROR_TYPE]: 'crash',
},
aggs: {
crashes: {
filter: {
term: {
[ERROR_TYPE]: 'crash',
},
},
},
},
},
},
}
);
},
});
return (
response.aggregations?.main_statistics.buckets.map((bucket) => {
return {
name: bucket.key,
crashRate: bucket.crashes.doc_count / bucket.sessions.value ?? 0,
crashes: bucket.crashes.doc_count ?? 0,
};
}) ?? []
);
Expand All @@ -180,7 +186,19 @@ export async function getMobileMainStatisticsByField({
getMobileErrorEventStatistics(),
]);

const mainStatistics = merge(transactioEventStatistics, errorEventStatistics);
const mainStatisticsMerged: MergedQueriesResponse = merge(
transactioEventStatistics,
errorEventStatistics
);

const mainStatistics = mainStatisticsMerged.map((item) => {
return {
name: item.name,
latency: item.latency,
throughput: item.throughput,
crashRate: item.crashes ? item.crashes / item.sessions : 0,
};
});

return { mainStatistics };
}

0 comments on commit 42aca4e

Please sign in to comment.