From 5d0d418e62839676a5e90727b72ea299854b2358 Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Wed, 15 Sep 2021 15:25:57 -0400 Subject: [PATCH 01/26] fixing rate aggregation bug --- .../service_overview_throughput_chart.tsx | 35 ++----------------- .../get_throughput_charts_for_backend.ts | 16 ++------- .../get_transactions_per_minute.ts | 5 +-- ...e_transaction_group_detailed_statistics.ts | 8 ++--- .../apm/server/lib/services/get_throughput.ts | 16 ++++----- x-pack/plugins/apm/server/routes/services.ts | 10 +----- 6 files changed, 16 insertions(+), 74 deletions(-) diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx index 718d6878c7c99..00aad114c9452 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx @@ -5,21 +5,15 @@ * 2.0. */ -import { - EuiPanel, - EuiTitle, - EuiIconTip, - EuiFlexItem, - EuiFlexGroup, -} from '@elastic/eui'; +import { EuiPanel, EuiTitle, EuiFlexItem, EuiFlexGroup } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React from 'react'; -import { asExactTransactionRate } from '../../../../common/utils/formatters'; import { useApmServiceContext } from '../../../context/apm_service/use_apm_service_context'; import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { useFetcher } from '../../../hooks/use_fetcher'; import { useTheme } from '../../../hooks/use_theme'; import { TimeseriesChart } from '../../shared/charts/timeseries_chart'; +import { asTransactionRate } from '../../../../common/utils/formatters'; import { getComparisonChartTheme, getTimeRangeComparison, @@ -123,32 +117,9 @@ export function ServiceOverviewThroughputChart({ 'xpack.apm.serviceOverview.throughtputChartTitle', { defaultMessage: 'Throughput' } )} - {data.throughputUnit === 'second' - ? i18n.translate( - 'xpack.apm.serviceOverview.throughtputPerSecondChartTitle', - { defaultMessage: ' (per second)' } - ) - : ''} - - - - asExactTransactionRate(y, data.throughputUnit)} + yLabelFormat={asTransactionRate} customTheme={comparisonChartTheme} /> diff --git a/x-pack/plugins/apm/server/lib/backends/get_throughput_charts_for_backend.ts b/x-pack/plugins/apm/server/lib/backends/get_throughput_charts_for_backend.ts index 19a26c3fcf035..19a8742bbe1a5 100644 --- a/x-pack/plugins/apm/server/lib/backends/get_throughput_charts_for_backend.ts +++ b/x-pack/plugins/apm/server/lib/backends/get_throughput_charts_for_backend.ts @@ -5,16 +5,14 @@ * 2.0. */ -import { - SPAN_DESTINATION_SERVICE_RESOURCE, - SPAN_DESTINATION_SERVICE_RESPONSE_TIME_COUNT, -} from '../../../common/elasticsearch_fieldnames'; +import { SPAN_DESTINATION_SERVICE_RESOURCE } from '../../../common/elasticsearch_fieldnames'; import { environmentQuery } from '../../../common/utils/environment_query'; import { kqlQuery, rangeQuery } from '../../../../observability/server'; import { ProcessorEvent } from '../../../common/processor_event'; import { Setup } from '../helpers/setup_request'; import { getMetricsDateHistogramParams } from '../helpers/metrics'; import { getOffsetInMs } from '../../../common/utils/get_offset_in_ms'; +import { calculateThroughput } from '../helpers/calculate_throughput'; export async function getThroughputChartsForBackend({ backendName, @@ -64,14 +62,6 @@ export async function getThroughputChartsForBackend({ end: endWithOffset, metricsInterval: 60, }), - aggs: { - throughput: { - rate: { - field: SPAN_DESTINATION_SERVICE_RESPONSE_TIME_COUNT, - unit: 'minute', - }, - }, - }, }, }, }, @@ -81,7 +71,7 @@ export async function getThroughputChartsForBackend({ response.aggregations?.timeseries.buckets.map((bucket) => { return { x: bucket.key + offsetInMs, - y: bucket.throughput.value, + y: calculateThroughput({ start, end, value: bucket.doc_count }), }; }) ?? [] ); diff --git a/x-pack/plugins/apm/server/lib/observability_overview/get_transactions_per_minute.ts b/x-pack/plugins/apm/server/lib/observability_overview/get_transactions_per_minute.ts index 90cef471c38af..a59ba26673379 100644 --- a/x-pack/plugins/apm/server/lib/observability_overview/get_transactions_per_minute.ts +++ b/x-pack/plugins/apm/server/lib/observability_overview/get_transactions_per_minute.ts @@ -63,9 +63,6 @@ export async function getTransactionsPerMinute({ fixed_interval: bucketSize, min_doc_count: 0, }, - aggs: { - throughput: { rate: { unit: 'minute' as const } }, - }, }, }, }, @@ -94,7 +91,7 @@ export async function getTransactionsPerMinute({ timeseries: topTransactionTypeBucket?.timeseries.buckets.map((bucket) => ({ x: bucket.key, - y: bucket.throughput.value, + y: calculateThroughput({ start, end, value: bucket.doc_count }), })) || [], }; } diff --git a/x-pack/plugins/apm/server/lib/services/get_service_transaction_group_detailed_statistics.ts b/x-pack/plugins/apm/server/lib/services/get_service_transaction_group_detailed_statistics.ts index d8a28a127499f..cdbb258f572da 100644 --- a/x-pack/plugins/apm/server/lib/services/get_service_transaction_group_detailed_statistics.ts +++ b/x-pack/plugins/apm/server/lib/services/get_service_transaction_group_detailed_statistics.ts @@ -30,6 +30,7 @@ import { } from '../helpers/latency_aggregation_type'; import { Setup, SetupTimeRange } from '../helpers/setup_request'; import { calculateFailedTransactionRate } from '../helpers/transaction_error_rate'; +import { calculateThroughput } from '../helpers/calculate_throughput'; export async function getServiceTransactionGroupDetailedStatistics({ environment, @@ -125,11 +126,6 @@ export async function getServiceTransactionGroupDetailedStatistics({ }, }, aggs: { - throughput_rate: { - rate: { - unit: 'minute', - }, - }, ...getLatencyAggregation(latencyAggregationType, field), [EVENT_OUTCOME]: { terms: { @@ -160,7 +156,7 @@ export async function getServiceTransactionGroupDetailedStatistics({ })); const throughput = bucket.timeseries.buckets.map((timeseriesBucket) => ({ x: timeseriesBucket.key, - y: timeseriesBucket.throughput_rate.value, + y: calculateThroughput({ start, end, value: timeseriesBucket.doc_count }), })); const errorRate = bucket.timeseries.buckets.map((timeseriesBucket) => ({ x: timeseriesBucket.key, diff --git a/x-pack/plugins/apm/server/lib/services/get_throughput.ts b/x-pack/plugins/apm/server/lib/services/get_throughput.ts index e866918fc29bb..5db12d9c3d3e7 100644 --- a/x-pack/plugins/apm/server/lib/services/get_throughput.ts +++ b/x-pack/plugins/apm/server/lib/services/get_throughput.ts @@ -17,6 +17,7 @@ import { getProcessorEventForAggregatedTransactions, } from '../helpers/aggregated_transactions'; import { Setup } from '../helpers/setup_request'; +import { calculateThroughput } from '../helpers/calculate_throughput'; interface Options { environment: string; @@ -28,7 +29,6 @@ interface Options { start: number; end: number; intervalString: string; - throughputUnit: 'minute' | 'second'; } export async function getThroughput({ @@ -41,7 +41,6 @@ export async function getThroughput({ start, end, intervalString, - throughputUnit, }: Options) { const { apmEventClient } = setup; @@ -75,13 +74,6 @@ export async function getThroughput({ min_doc_count: 0, extended_bounds: { min: start, max: end }, }, - aggs: { - throughput: { - rate: { - unit: throughputUnit, - }, - }, - }, }, }, }, @@ -96,7 +88,11 @@ export async function getThroughput({ response.aggregations?.timeseries.buckets.map((bucket) => { return { x: bucket.key, - y: bucket.throughput.value, + y: calculateThroughput({ + start, + end, + value: bucket.doc_count, + }), }; }) ?? [] ); diff --git a/x-pack/plugins/apm/server/routes/services.ts b/x-pack/plugins/apm/server/routes/services.ts index 32a7dcefb5cc8..fcf7156d35df6 100644 --- a/x-pack/plugins/apm/server/routes/services.ts +++ b/x-pack/plugins/apm/server/routes/services.ts @@ -12,7 +12,6 @@ import { uniq } from 'lodash'; import { latencyAggregationTypeRt } from '../../common/latency_aggregation_types'; import { ProfilingValueType } from '../../common/profiling'; import { getSearchAggregatedTransactions } from '../lib/helpers/aggregated_transactions'; -import { getThroughputUnit } from '../lib/helpers/calculate_throughput'; import { setupRequest } from '../lib/helpers/setup_request'; import { getServiceAnnotations } from '../lib/services/annotations'; import { getServices } from '../lib/services/get_services'; @@ -475,17 +474,12 @@ const serviceThroughputRoute = createApmServerRoute({ }); const { start, end } = setup; - const { - bucketSize, - intervalString, - } = getBucketSizeForAggregatedTransactions({ + const { intervalString } = getBucketSizeForAggregatedTransactions({ start, end, searchAggregatedTransactions, }); - const throughputUnit = getThroughputUnit(bucketSize); - const commonProps = { environment, kuery, @@ -493,7 +487,6 @@ const serviceThroughputRoute = createApmServerRoute({ serviceName, setup, transactionType, - throughputUnit, intervalString, }; @@ -518,7 +511,6 @@ const serviceThroughputRoute = createApmServerRoute({ currentPeriodTimeseries: currentPeriod, previousPeriodTimeseries: previousPeriod, }), - throughputUnit, }; }, }); From cf1c1d44e481ad96a13e0a421713e2dea0aa012d Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Wed, 15 Sep 2021 16:27:29 -0400 Subject: [PATCH 02/26] fixing tests and i18n --- x-pack/plugins/apm/server/index.ts | 2 +- .../translations/translations/ja-JP.json | 3 - .../translations/translations/zh-CN.json | 3 - .../tests/inspect/inspect.ts | 2 +- .../observability_overview.ts | 14 +- .../tests/service_maps/service_maps.ts | 4 +- .../instances_detailed_statistics.snap | 324 +++---- .../instances_main_statistics.ts | 18 +- .../services/__snapshots__/throughput.snap | 664 +++++++++++++- .../tests/services/throughput.ts | 28 +- .../tests/services/top_services.ts | 32 +- .../traces/__snapshots__/top_traces.snap | 610 ++++++------- .../tests/traces/top_traces.ts | 6 +- .../__snapshots__/error_rate.snap | 836 ++++++++++++++++-- .../transactions/__snapshots__/latency.snap | 356 +++++++- ...ansactions_groups_detailed_statistics.snap | 308 +++---- .../tests/transactions/error_rate.ts | 20 +- .../tests/transactions/latency.ts | 8 +- ...transactions_groups_detailed_statistics.ts | 6 +- .../transactions_groups_main_statistics.ts | 32 +- 20 files changed, 2423 insertions(+), 853 deletions(-) diff --git a/x-pack/plugins/apm/server/index.ts b/x-pack/plugins/apm/server/index.ts index b6dd22c528e99..9ff2e2763e648 100644 --- a/x-pack/plugins/apm/server/index.ts +++ b/x-pack/plugins/apm/server/index.ts @@ -40,7 +40,7 @@ export const config = { schema.literal(SearchAggregatedTransactionSetting.always), schema.literal(SearchAggregatedTransactionSetting.never), ], - { defaultValue: SearchAggregatedTransactionSetting.auto } + { defaultValue: SearchAggregatedTransactionSetting.never } ), telemetryCollectionEnabled: schema.boolean({ defaultValue: true }), metricsInterval: schema.number({ defaultValue: 30 }), diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 3f504a9cbfac7..366f4d8d3178b 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -7081,9 +7081,6 @@ "xpack.apm.serviceOverview.mlNudgeMessage.learnMoreButton": "使ってみる", "xpack.apm.serviceOverview.throughtputChart.previousPeriodLabel": "前の期間", "xpack.apm.serviceOverview.throughtputChartTitle": "スループット", - "xpack.apm.serviceOverview.throughtputPerSecondChartTitle": " (秒単位)", - "xpack.apm.serviceOverview.tpmHelp": "スループットは1分あたりのトランザクション数(tpm)で測定されます", - "xpack.apm.serviceOverview.tpsHelp": "スループットは1秒あたりのトランザクション数(tps)で測定されます", "xpack.apm.serviceOverview.transactionsTableColumnErrorRate": "失敗したトランザクション率", "xpack.apm.serviceOverview.transactionsTableColumnImpact": "インパクト", "xpack.apm.serviceOverview.transactionsTableColumnName": "名前", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 0a04a8a4d3d92..bc3a663229012 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -7136,9 +7136,6 @@ "xpack.apm.serviceOverview.mlNudgeMessage.learnMoreButton": "开始使用", "xpack.apm.serviceOverview.throughtputChart.previousPeriodLabel": "上一时段", "xpack.apm.serviceOverview.throughtputChartTitle": "吞吐量", - "xpack.apm.serviceOverview.throughtputPerSecondChartTitle": " (每秒)", - "xpack.apm.serviceOverview.tpmHelp": "吞吐量按每分钟事务数 (tpm) 来度量", - "xpack.apm.serviceOverview.tpsHelp": "吞吐量按每秒事务数 (tps) 来度量", "xpack.apm.serviceOverview.transactionsTableColumnErrorRate": "失败事务率", "xpack.apm.serviceOverview.transactionsTableColumnImpact": "影响", "xpack.apm.serviceOverview.transactionsTableColumnName": "名称", diff --git a/x-pack/test/apm_api_integration/tests/inspect/inspect.ts b/x-pack/test/apm_api_integration/tests/inspect/inspect.ts index 77ceedaeb68b9..22623cb266203 100644 --- a/x-pack/test/apm_api_integration/tests/inspect/inspect.ts +++ b/x-pack/test/apm_api_integration/tests/inspect/inspect.ts @@ -49,7 +49,7 @@ export default function customLinksTests({ getService }: FtrProviderContext) { }, }); expect(status).to.be(200); - expect(body._inspect?.length).to.be(2); + expect(body._inspect?.length).to.be(1); // @ts-expect-error expect(Object.keys(body._inspect[0])).to.eql([ diff --git a/x-pack/test/apm_api_integration/tests/observability_overview/observability_overview.ts b/x-pack/test/apm_api_integration/tests/observability_overview/observability_overview.ts index 8760b80f5c737..da60689f559a2 100644 --- a/x-pack/test/apm_api_integration/tests/observability_overview/observability_overview.ts +++ b/x-pack/test/apm_api_integration/tests/observability_overview/observability_overview.ts @@ -54,8 +54,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { expectSnapshot(response.body.serviceCount).toMatchInline(`8`); - expectSnapshot(response.body.transactionPerMinute.value).toMatchInline(`58.9`); - expectSnapshot(response.body.transactionPerMinute.timeseries.length).toMatchInline(`30`); + expectSnapshot(response.body.transactionPerMinute.value).toMatchInline(`59.1666666666667`); + expectSnapshot(response.body.transactionPerMinute.timeseries.length).toMatchInline(`31`); expectSnapshot( response.body.transactionPerMinute.timeseries @@ -68,23 +68,23 @@ export default function ApiTest({ getService }: FtrProviderContext) { Array [ Object { "x": "2021-08-03T06:50:00.000Z", - "y": 36, + "y": 51, }, Object { "x": "2021-08-03T06:51:00.000Z", - "y": 55, + "y": 62, }, Object { "x": "2021-08-03T06:52:00.000Z", - "y": 40, + "y": 56, }, Object { "x": "2021-08-03T06:53:00.000Z", - "y": 53, + "y": 50, }, Object { "x": "2021-08-03T06:54:00.000Z", - "y": 39, + "y": 77, }, ] `); diff --git a/x-pack/test/apm_api_integration/tests/service_maps/service_maps.ts b/x-pack/test/apm_api_integration/tests/service_maps/service_maps.ts index 1520ecd644395..a509b8386b1f0 100644 --- a/x-pack/test/apm_api_integration/tests/service_maps/service_maps.ts +++ b/x-pack/test/apm_api_integration/tests/service_maps/service_maps.ts @@ -299,8 +299,8 @@ export default function serviceMapsApiTests({ getService }: FtrProviderContext) "avgErrorRate": 0, "avgMemoryUsage": 0.202572668763642, "transactionStats": Object { - "avgRequestsPerMinute": 5.2, - "avgTransactionDuration": 53906.6603773585, + "avgRequestsPerMinute": 7.13333333333333, + "avgTransactionDuration": 53147.5747663551, }, } `); diff --git a/x-pack/test/apm_api_integration/tests/service_overview/__snapshots__/instances_detailed_statistics.snap b/x-pack/test/apm_api_integration/tests/service_overview/__snapshots__/instances_detailed_statistics.snap index 7ae3fa1da3380..971c14262f0b0 100644 --- a/x-pack/test/apm_api_integration/tests/service_overview/__snapshots__/instances_detailed_statistics.snap +++ b/x-pack/test/apm_api_integration/tests/service_overview/__snapshots__/instances_detailed_statistics.snap @@ -73,11 +73,11 @@ Object { "errorRate": Array [ Object { "x": 1627974300000, - "y": 0, + "y": null, }, Object { "x": 1627974360000, - "y": null, + "y": 0, }, Object { "x": 1627974420000, @@ -93,15 +93,15 @@ Object { }, Object { "x": 1627974600000, - "y": 0.0526315789473684, + "y": 0.5, }, Object { "x": 1627974660000, - "y": 0.142857142857143, + "y": 0.4, }, Object { "x": 1627974720000, - "y": 0.0416666666666667, + "y": 0, }, Object { "x": 1627974780000, @@ -109,11 +109,11 @@ Object { }, Object { "x": 1627974840000, - "y": 0, + "y": 0.166666666666667, }, Object { "x": 1627974900000, - "y": 0.024390243902439, + "y": 0, }, Object { "x": 1627974960000, @@ -125,11 +125,11 @@ Object { }, Object { "x": 1627975080000, - "y": 0, + "y": 0.142857142857143, }, Object { "x": 1627975140000, - "y": 0.0555555555555556, + "y": 0.2, }, Object { "x": 1627975200000, @@ -139,63 +139,63 @@ Object { "latency": Array [ Object { "x": 1627974300000, - "y": 34887.8888888889, + "y": null, }, Object { "x": 1627974360000, - "y": null, + "y": 5578, }, Object { "x": 1627974420000, - "y": 4983, + "y": 34851.1666666667, }, Object { "x": 1627974480000, - "y": 41285.4, + "y": 15896.4, }, Object { "x": 1627974540000, - "y": 13820.3333333333, + "y": 15174.1666666667, }, Object { "x": 1627974600000, - "y": 13782, + "y": 9185.16666666667, }, Object { "x": 1627974660000, - "y": 13392.6, + "y": 12363.2, }, Object { "x": 1627974720000, - "y": 6991, + "y": 6206.44444444444, }, Object { "x": 1627974780000, - "y": 6885.85714285714, + "y": 6707, }, Object { "x": 1627974840000, - "y": 7935, + "y": 12409.1666666667, }, Object { "x": 1627974900000, - "y": 10828.3333333333, + "y": 9188.36363636364, }, Object { "x": 1627974960000, - "y": 6079, + "y": 4279.6, }, Object { "x": 1627975020000, - "y": 5217, + "y": 6827.3, }, Object { "x": 1627975080000, - "y": 8477.76923076923, + "y": 7445.78571428571, }, Object { "x": 1627975140000, - "y": 5937.18181818182, + "y": 563288.6, }, Object { "x": 1627975200000, @@ -272,63 +272,63 @@ Object { "throughput": Array [ Object { "x": 1627974300000, - "y": 21, + "y": 0, }, Object { "x": 1627974360000, - "y": 0, + "y": 2, }, Object { "x": 1627974420000, - "y": 24, + "y": 6, }, Object { "x": 1627974480000, - "y": 17, + "y": 5, }, Object { "x": 1627974540000, - "y": 17, + "y": 6, }, Object { "x": 1627974600000, - "y": 19, + "y": 6, }, Object { "x": 1627974660000, - "y": 21, + "y": 5, }, Object { "x": 1627974720000, - "y": 24, + "y": 9, }, Object { "x": 1627974780000, - "y": 22, + "y": 3, }, Object { "x": 1627974840000, - "y": 19, + "y": 6, }, Object { "x": 1627974900000, - "y": 41, + "y": 11, }, Object { "x": 1627974960000, - "y": 11, + "y": 5, }, Object { "x": 1627975020000, - "y": 23, + "y": 10, }, Object { "x": 1627975080000, - "y": 47, + "y": 14, }, Object { "x": 1627975140000, - "y": 36, + "y": 10, }, Object { "x": 1627975200000, @@ -412,15 +412,15 @@ Object { }, Object { "x": 1627974360000, - "y": 0, + "y": 0.25, }, Object { "x": 1627974420000, - "y": 0.0434782608695652, + "y": 0.111111111111111, }, Object { "x": 1627974480000, - "y": 0.0833333333333333, + "y": 0.2, }, Object { "x": 1627974540000, @@ -428,15 +428,15 @@ Object { }, Object { "x": 1627974600000, - "y": 0, + "y": 0.142857142857143, }, Object { "x": 1627974660000, - "y": 0.03125, + "y": 0.1, }, Object { "x": 1627974720000, - "y": 0.0555555555555556, + "y": 0.125, }, Object { "x": 1627974780000, @@ -444,15 +444,15 @@ Object { }, Object { "x": 1627974840000, - "y": 0, + "y": 0.111111111111111, }, Object { "x": 1627974900000, - "y": 0.0232558139534884, + "y": 0, }, Object { "x": 1627974960000, - "y": 0.032258064516129, + "y": 0.333333333333333, }, Object { "x": 1627975020000, @@ -460,81 +460,81 @@ Object { }, Object { "x": 1627975080000, - "y": 0.027027027027027, + "y": 0.0833333333333333, }, Object { "x": 1627975140000, - "y": 0.0571428571428571, + "y": 0.1, }, Object { "x": 1627975200000, - "y": null, + "y": 0, }, ], "latency": Array [ Object { "x": 1627974300000, - "y": 11839, + "y": 5372.5, }, Object { "x": 1627974360000, - "y": 7407, + "y": 1441598.25, }, Object { "x": 1627974420000, - "y": 1925569.66666667, + "y": 9380.22222222222, }, Object { "x": 1627974480000, - "y": 9017.18181818182, + "y": 10949.4, }, Object { "x": 1627974540000, - "y": 63575, + "y": 77148.6666666667, }, Object { "x": 1627974600000, - "y": 7577.66666666667, + "y": 6461, }, Object { "x": 1627974660000, - "y": 6844.33333333333, + "y": 549308.4, }, Object { "x": 1627974720000, - "y": 503471, + "y": 10797.75, }, Object { "x": 1627974780000, - "y": 6247.8, + "y": 9758.53846153846, }, Object { "x": 1627974840000, - "y": 1137247, + "y": 1281052.66666667, }, Object { "x": 1627974900000, - "y": 27951.6666666667, + "y": 9511.0625, }, Object { "x": 1627974960000, - "y": 10248.8461538462, + "y": 11151203.3333333, }, Object { "x": 1627975020000, - "y": 13529, + "y": 8647.2, }, Object { "x": 1627975080000, - "y": 6691247.8, + "y": 9048.33333333333, }, Object { "x": 1627975140000, - "y": 12098.6923076923, + "y": 12671.6, }, Object { "x": 1627975200000, - "y": null, + "y": 57275.4, }, ], "memoryUsage": Array [ @@ -607,67 +607,67 @@ Object { "throughput": Array [ Object { "x": 1627974300000, - "y": 15, + "y": 2, }, Object { "x": 1627974360000, - "y": 13, + "y": 4, }, Object { "x": 1627974420000, - "y": 23, + "y": 9, }, Object { "x": 1627974480000, - "y": 24, + "y": 5, }, Object { "x": 1627974540000, - "y": 10, + "y": 3, }, Object { "x": 1627974600000, - "y": 18, + "y": 7, }, Object { "x": 1627974660000, - "y": 32, + "y": 10, }, Object { "x": 1627974720000, - "y": 36, + "y": 8, }, Object { "x": 1627974780000, - "y": 36, + "y": 13, }, Object { "x": 1627974840000, - "y": 22, + "y": 9, }, Object { "x": 1627974900000, - "y": 43, + "y": 16, }, Object { "x": 1627974960000, - "y": 31, + "y": 6, }, Object { "x": 1627975020000, - "y": 35, + "y": 10, }, Object { "x": 1627975080000, - "y": 37, + "y": 12, }, Object { "x": 1627975140000, - "y": 35, + "y": 10, }, Object { "x": 1627975200000, - "y": 0, + "y": 5, }, ], }, @@ -812,15 +812,15 @@ Object { }, Object { "x": 1627973460000, - "y": 0, + "y": 0.25, }, Object { "x": 1627973520000, - "y": 0.0434782608695652, + "y": 0.111111111111111, }, Object { "x": 1627973580000, - "y": 0.0833333333333333, + "y": 0.2, }, Object { "x": 1627973640000, @@ -828,15 +828,15 @@ Object { }, Object { "x": 1627973700000, - "y": 0, + "y": 0.142857142857143, }, Object { "x": 1627973760000, - "y": 0.03125, + "y": 0.1, }, Object { "x": 1627973820000, - "y": 0.0555555555555556, + "y": 0.125, }, Object { "x": 1627973880000, @@ -844,15 +844,15 @@ Object { }, Object { "x": 1627973940000, - "y": 0, + "y": 0.111111111111111, }, Object { "x": 1627974000000, - "y": 0.0232558139534884, + "y": 0, }, Object { "x": 1627974060000, - "y": 0.032258064516129, + "y": 0.333333333333333, }, Object { "x": 1627974120000, @@ -860,11 +860,11 @@ Object { }, Object { "x": 1627974180000, - "y": 0.027027027027027, + "y": 0.0833333333333333, }, Object { "x": 1627974240000, - "y": 0.0571428571428571, + "y": 0.1, }, Object { "x": 1627974300000, @@ -872,7 +872,7 @@ Object { }, Object { "x": 1627974360000, - "y": null, + "y": 0, }, Object { "x": 1627974420000, @@ -888,15 +888,15 @@ Object { }, Object { "x": 1627974600000, - "y": 0.0526315789473684, + "y": 0.5, }, Object { "x": 1627974660000, - "y": 0.142857142857143, + "y": 0.4, }, Object { "x": 1627974720000, - "y": 0.0416666666666667, + "y": 0, }, Object { "x": 1627974780000, @@ -904,11 +904,11 @@ Object { }, Object { "x": 1627974840000, - "y": 0, + "y": 0.166666666666667, }, Object { "x": 1627974900000, - "y": 0.024390243902439, + "y": 0, }, Object { "x": 1627974960000, @@ -920,11 +920,11 @@ Object { }, Object { "x": 1627975080000, - "y": 0, + "y": 0.142857142857143, }, Object { "x": 1627975140000, - "y": 0.0555555555555556, + "y": 0.2, }, Object { "x": 1627975200000, @@ -934,123 +934,123 @@ Object { "latency": Array [ Object { "x": 1627973400000, - "y": 11839, + "y": 5372.5, }, Object { "x": 1627973460000, - "y": 7407, + "y": 1441598.25, }, Object { "x": 1627973520000, - "y": 1925569.66666667, + "y": 9380.22222222222, }, Object { "x": 1627973580000, - "y": 9017.18181818182, + "y": 10949.4, }, Object { "x": 1627973640000, - "y": 63575, + "y": 77148.6666666667, }, Object { "x": 1627973700000, - "y": 7577.66666666667, + "y": 6461, }, Object { "x": 1627973760000, - "y": 6844.33333333333, + "y": 549308.4, }, Object { "x": 1627973820000, - "y": 503471, + "y": 10797.75, }, Object { "x": 1627973880000, - "y": 6247.8, + "y": 9758.53846153846, }, Object { "x": 1627973940000, - "y": 1137247, + "y": 1281052.66666667, }, Object { "x": 1627974000000, - "y": 27951.6666666667, + "y": 9511.0625, }, Object { "x": 1627974060000, - "y": 10248.8461538462, + "y": 11151203.3333333, }, Object { "x": 1627974120000, - "y": 13529, + "y": 8647.2, }, Object { "x": 1627974180000, - "y": 6691247.8, + "y": 9048.33333333333, }, Object { "x": 1627974240000, - "y": 12098.6923076923, + "y": 12671.6, }, Object { "x": 1627974300000, - "y": 34887.8888888889, + "y": 57275.4, }, Object { "x": 1627974360000, - "y": null, + "y": 5578, }, Object { "x": 1627974420000, - "y": 4983, + "y": 34851.1666666667, }, Object { "x": 1627974480000, - "y": 41285.4, + "y": 15896.4, }, Object { "x": 1627974540000, - "y": 13820.3333333333, + "y": 15174.1666666667, }, Object { "x": 1627974600000, - "y": 13782, + "y": 9185.16666666667, }, Object { "x": 1627974660000, - "y": 13392.6, + "y": 12363.2, }, Object { "x": 1627974720000, - "y": 6991, + "y": 6206.44444444444, }, Object { "x": 1627974780000, - "y": 6885.85714285714, + "y": 6707, }, Object { "x": 1627974840000, - "y": 7935, + "y": 12409.1666666667, }, Object { "x": 1627974900000, - "y": 10828.3333333333, + "y": 9188.36363636364, }, Object { "x": 1627974960000, - "y": 6079, + "y": 4279.6, }, Object { "x": 1627975020000, - "y": 5217, + "y": 6827.3, }, Object { "x": 1627975080000, - "y": 8477.76923076923, + "y": 7445.78571428571, }, Object { "x": 1627975140000, - "y": 5937.18181818182, + "y": 563288.6, }, Object { "x": 1627975200000, @@ -1187,123 +1187,123 @@ Object { "throughput": Array [ Object { "x": 1627973400000, - "y": 15, + "y": 2, }, Object { "x": 1627973460000, - "y": 13, + "y": 4, }, Object { "x": 1627973520000, - "y": 23, + "y": 9, }, Object { "x": 1627973580000, - "y": 24, + "y": 5, }, Object { "x": 1627973640000, - "y": 10, + "y": 3, }, Object { "x": 1627973700000, - "y": 18, + "y": 7, }, Object { "x": 1627973760000, - "y": 32, + "y": 10, }, Object { "x": 1627973820000, - "y": 36, + "y": 8, }, Object { "x": 1627973880000, - "y": 36, + "y": 13, }, Object { "x": 1627973940000, - "y": 22, + "y": 9, }, Object { "x": 1627974000000, - "y": 43, + "y": 16, }, Object { "x": 1627974060000, - "y": 31, + "y": 6, }, Object { "x": 1627974120000, - "y": 35, + "y": 10, }, Object { "x": 1627974180000, - "y": 37, + "y": 12, }, Object { "x": 1627974240000, - "y": 35, + "y": 10, }, Object { "x": 1627974300000, - "y": 21, + "y": 5, }, Object { "x": 1627974360000, - "y": 0, + "y": 2, }, Object { "x": 1627974420000, - "y": 24, + "y": 6, }, Object { "x": 1627974480000, - "y": 17, + "y": 5, }, Object { "x": 1627974540000, - "y": 17, + "y": 6, }, Object { "x": 1627974600000, - "y": 19, + "y": 6, }, Object { "x": 1627974660000, - "y": 21, + "y": 5, }, Object { "x": 1627974720000, - "y": 24, + "y": 9, }, Object { "x": 1627974780000, - "y": 22, + "y": 3, }, Object { "x": 1627974840000, - "y": 19, + "y": 6, }, Object { "x": 1627974900000, - "y": 41, + "y": 11, }, Object { "x": 1627974960000, - "y": 11, + "y": 5, }, Object { "x": 1627975020000, - "y": 23, + "y": 10, }, Object { "x": 1627975080000, - "y": 47, + "y": 14, }, Object { "x": 1627975140000, - "y": 36, + "y": 10, }, Object { "x": 1627975200000, diff --git a/x-pack/test/apm_api_integration/tests/service_overview/instances_main_statistics.ts b/x-pack/test/apm_api_integration/tests/service_overview/instances_main_statistics.ts index 52ead7f2b7b81..d8b51a1a4ddbd 100644 --- a/x-pack/test/apm_api_integration/tests/service_overview/instances_main_statistics.ts +++ b/x-pack/test/apm_api_integration/tests/service_overview/instances_main_statistics.ts @@ -118,10 +118,10 @@ export default function ApiTest({ getService }: FtrProviderContext) { expectSnapshot(values).toMatchInline(` Object { "cpuUsage": 0.002, - "errorRate": 0.0252659574468085, - "latency": 411589.785714286, + "errorRate": 0.092511013215859, + "latency": 430318.696035242, "memoryUsage": 0.786029688517253, - "throughput": 25.0666666666667, + "throughput": 7.56666666666667, } `); }); @@ -179,9 +179,9 @@ export default function ApiTest({ getService }: FtrProviderContext) { expectSnapshot(values).toMatchInline(` Object { "cpuUsage": 0.001, - "errorRate": 0.000907441016333938, - "latency": 40989.5802047782, - "throughput": 36.7333333333333, + "errorRate": 0.00343642611683849, + "latency": 21520.4776632302, + "throughput": 9.7, } `); @@ -268,10 +268,10 @@ export default function ApiTest({ getService }: FtrProviderContext) { expectSnapshot(values).toMatchInline(` Object { "cpuUsage": 0.00223333333333333, - "errorRate": 0.0268292682926829, - "latency": 739013.634146341, + "errorRate": 0.0852713178294574, + "latency": 706173.046511628, "memoryUsage": 0.783296203613281, - "throughput": 27.3333333333333, + "throughput": 8.6, } `); }); diff --git a/x-pack/test/apm_api_integration/tests/services/__snapshots__/throughput.snap b/x-pack/test/apm_api_integration/tests/services/__snapshots__/throughput.snap index a27f7047bb9b3..28fd88bb6d910 100644 --- a/x-pack/test/apm_api_integration/tests/services/__snapshots__/throughput.snap +++ b/x-pack/test/apm_api_integration/tests/services/__snapshots__/throughput.snap @@ -4,136 +4,736 @@ exports[`APM API tests basic apm_8.0.0 Throughput when data is loaded with time Object { "currentPeriod": Array [ Object { - "x": 1627974300000, - "y": 6, + "x": 1627974310000, + "y": 0, + }, + Object { + "x": 1627974320000, + "y": 0, + }, + Object { + "x": 1627974330000, + "y": 0, + }, + Object { + "x": 1627974340000, + "y": 0, + }, + Object { + "x": 1627974350000, + "y": 0, }, Object { "x": 1627974360000, "y": 0, }, + Object { + "x": 1627974370000, + "y": 0, + }, + Object { + "x": 1627974380000, + "y": 0, + }, + Object { + "x": 1627974390000, + "y": 0, + }, + Object { + "x": 1627974400000, + "y": 0, + }, + Object { + "x": 1627974410000, + "y": 0.2, + }, Object { "x": 1627974420000, - "y": 4, + "y": 0.2, + }, + Object { + "x": 1627974430000, + "y": 0, + }, + Object { + "x": 1627974440000, + "y": 0.1, + }, + Object { + "x": 1627974450000, + "y": 0.2, + }, + Object { + "x": 1627974460000, + "y": 0.1, + }, + Object { + "x": 1627974470000, + "y": 0, }, Object { "x": 1627974480000, - "y": 3, + "y": 0.1, + }, + Object { + "x": 1627974490000, + "y": 0, + }, + Object { + "x": 1627974500000, + "y": 0.1, + }, + Object { + "x": 1627974510000, + "y": 0, + }, + Object { + "x": 1627974520000, + "y": 0.3, + }, + Object { + "x": 1627974530000, + "y": 0, }, Object { "x": 1627974540000, - "y": 5, + "y": 0.2, + }, + Object { + "x": 1627974550000, + "y": 0.1, + }, + Object { + "x": 1627974560000, + "y": 0, + }, + Object { + "x": 1627974570000, + "y": 0.3, + }, + Object { + "x": 1627974580000, + "y": 0, + }, + Object { + "x": 1627974590000, + "y": 0, }, Object { "x": 1627974600000, - "y": 5, + "y": 0, + }, + Object { + "x": 1627974610000, + "y": 0.3, + }, + Object { + "x": 1627974620000, + "y": 0.2, + }, + Object { + "x": 1627974630000, + "y": 0, + }, + Object { + "x": 1627974640000, + "y": 0, + }, + Object { + "x": 1627974650000, + "y": 0.1, }, Object { "x": 1627974660000, - "y": 5, + "y": 0.1, + }, + Object { + "x": 1627974670000, + "y": 0.2, + }, + Object { + "x": 1627974680000, + "y": 0, + }, + Object { + "x": 1627974690000, + "y": 0.1, + }, + Object { + "x": 1627974700000, + "y": 0, + }, + Object { + "x": 1627974710000, + "y": 0.1, }, Object { "x": 1627974720000, - "y": 4, + "y": 0, + }, + Object { + "x": 1627974730000, + "y": 0.3, + }, + Object { + "x": 1627974740000, + "y": 0.1, + }, + Object { + "x": 1627974750000, + "y": 0.3, + }, + Object { + "x": 1627974760000, + "y": 0, + }, + Object { + "x": 1627974770000, + "y": 0.2, }, Object { "x": 1627974780000, - "y": 7, + "y": 0.1, + }, + Object { + "x": 1627974790000, + "y": 0.1, + }, + Object { + "x": 1627974800000, + "y": 0, + }, + Object { + "x": 1627974810000, + "y": 0.1, + }, + Object { + "x": 1627974820000, + "y": 0, + }, + Object { + "x": 1627974830000, + "y": 0, }, Object { "x": 1627974840000, - "y": 2, + "y": 0, + }, + Object { + "x": 1627974850000, + "y": 0.2, + }, + Object { + "x": 1627974860000, + "y": 0.1, + }, + Object { + "x": 1627974870000, + "y": 0.2, + }, + Object { + "x": 1627974880000, + "y": 0, + }, + Object { + "x": 1627974890000, + "y": 0.1, }, Object { "x": 1627974900000, - "y": 14, + "y": 0.5, + }, + Object { + "x": 1627974910000, + "y": 0.4, + }, + Object { + "x": 1627974920000, + "y": 0, + }, + Object { + "x": 1627974930000, + "y": 0.2, + }, + Object { + "x": 1627974940000, + "y": 0, + }, + Object { + "x": 1627974950000, + "y": 0, }, Object { "x": 1627974960000, - "y": 3, + "y": 0, + }, + Object { + "x": 1627974970000, + "y": 0.1, + }, + Object { + "x": 1627974980000, + "y": 0, + }, + Object { + "x": 1627974990000, + "y": 0.3, + }, + Object { + "x": 1627975000000, + "y": 0, + }, + Object { + "x": 1627975010000, + "y": 0.1, }, Object { "x": 1627975020000, - "y": 6, + "y": 0.3, + }, + Object { + "x": 1627975030000, + "y": 0.1, + }, + Object { + "x": 1627975040000, + "y": 0, + }, + Object { + "x": 1627975050000, + "y": 0.1, + }, + Object { + "x": 1627975060000, + "y": 0.1, + }, + Object { + "x": 1627975070000, + "y": 0.4, }, Object { "x": 1627975080000, - "y": 12, + "y": 0.3, + }, + Object { + "x": 1627975090000, + "y": 0.3, + }, + Object { + "x": 1627975100000, + "y": 0.3, + }, + Object { + "x": 1627975110000, + "y": 0.3, + }, + Object { + "x": 1627975120000, + "y": 0.1, + }, + Object { + "x": 1627975130000, + "y": 0.1, }, Object { "x": 1627975140000, - "y": 8, + "y": 0.1, + }, + Object { + "x": 1627975150000, + "y": 0.3, + }, + Object { + "x": 1627975160000, + "y": 0, + }, + Object { + "x": 1627975170000, + "y": 0.1, + }, + Object { + "x": 1627975180000, + "y": 0.4, + }, + Object { + "x": 1627975190000, + "y": 0.1, }, Object { "x": 1627975200000, "y": 0, }, + Object { + "x": 1627975210000, + "y": 0, + }, ], "previousPeriod": Array [ Object { - "x": 1627974300000, - "y": 4, + "x": 1627974310000, + "y": 0, + }, + Object { + "x": 1627974320000, + "y": 0.1, + }, + Object { + "x": 1627974330000, + "y": 0, + }, + Object { + "x": 1627974340000, + "y": 0, + }, + Object { + "x": 1627974350000, + "y": 0.1, }, Object { "x": 1627974360000, - "y": 2, + "y": 0.1, + }, + Object { + "x": 1627974370000, + "y": 0, + }, + Object { + "x": 1627974380000, + "y": 0, + }, + Object { + "x": 1627974390000, + "y": 0.2, + }, + Object { + "x": 1627974400000, + "y": 0, + }, + Object { + "x": 1627974410000, + "y": 0.1, }, Object { "x": 1627974420000, - "y": 3, + "y": 0, + }, + Object { + "x": 1627974430000, + "y": 0.1, + }, + Object { + "x": 1627974440000, + "y": 0, + }, + Object { + "x": 1627974450000, + "y": 0.7, + }, + Object { + "x": 1627974460000, + "y": 0.1, + }, + Object { + "x": 1627974470000, + "y": 0, }, Object { "x": 1627974480000, - "y": 8, + "y": 0.2, + }, + Object { + "x": 1627974490000, + "y": 0.2, + }, + Object { + "x": 1627974500000, + "y": 0, + }, + Object { + "x": 1627974510000, + "y": 0, + }, + Object { + "x": 1627974520000, + "y": 0, + }, + Object { + "x": 1627974530000, + "y": 0.1, }, Object { "x": 1627974540000, - "y": 4, + "y": 0, + }, + Object { + "x": 1627974550000, + "y": 0.1, + }, + Object { + "x": 1627974560000, + "y": 0, + }, + Object { + "x": 1627974570000, + "y": 0.1, + }, + Object { + "x": 1627974580000, + "y": 0, + }, + Object { + "x": 1627974590000, + "y": 0.1, }, Object { "x": 1627974600000, - "y": 4, + "y": 0.2, + }, + Object { + "x": 1627974610000, + "y": 0.2, + }, + Object { + "x": 1627974620000, + "y": 0, + }, + Object { + "x": 1627974630000, + "y": 0, + }, + Object { + "x": 1627974640000, + "y": 0.1, + }, + Object { + "x": 1627974650000, + "y": 0.2, }, Object { "x": 1627974660000, - "y": 6, + "y": 0.2, + }, + Object { + "x": 1627974670000, + "y": 0.2, + }, + Object { + "x": 1627974680000, + "y": 0.2, + }, + Object { + "x": 1627974690000, + "y": 0.1, + }, + Object { + "x": 1627974700000, + "y": 0.1, + }, + Object { + "x": 1627974710000, + "y": 0.2, }, Object { "x": 1627974720000, - "y": 10, + "y": 0.4, + }, + Object { + "x": 1627974730000, + "y": 0, + }, + Object { + "x": 1627974740000, + "y": 0.1, + }, + Object { + "x": 1627974750000, + "y": 0.1, + }, + Object { + "x": 1627974760000, + "y": 0.1, + }, + Object { + "x": 1627974770000, + "y": 0.1, }, Object { "x": 1627974780000, - "y": 8, + "y": 0.1, + }, + Object { + "x": 1627974790000, + "y": 0.5, + }, + Object { + "x": 1627974800000, + "y": 0.2, + }, + Object { + "x": 1627974810000, + "y": 0.4, + }, + Object { + "x": 1627974820000, + "y": 0.1, + }, + Object { + "x": 1627974830000, + "y": 0, }, Object { "x": 1627974840000, - "y": 9, + "y": 0.1, + }, + Object { + "x": 1627974850000, + "y": 0.2, + }, + Object { + "x": 1627974860000, + "y": 0, + }, + Object { + "x": 1627974870000, + "y": 0.2, + }, + Object { + "x": 1627974880000, + "y": 0, + }, + Object { + "x": 1627974890000, + "y": 0.4, }, Object { "x": 1627974900000, - "y": 10, + "y": 0.2, + }, + Object { + "x": 1627974910000, + "y": 0.4, + }, + Object { + "x": 1627974920000, + "y": 0.2, + }, + Object { + "x": 1627974930000, + "y": 0.1, + }, + Object { + "x": 1627974940000, + "y": 0.5, + }, + Object { + "x": 1627974950000, + "y": 0.2, }, Object { "x": 1627974960000, - "y": 11, + "y": 0.3, + }, + Object { + "x": 1627974970000, + "y": 0.1, + }, + Object { + "x": 1627974980000, + "y": 0, + }, + Object { + "x": 1627974990000, + "y": 0.1, + }, + Object { + "x": 1627975000000, + "y": 0.1, + }, + Object { + "x": 1627975010000, + "y": 0, }, Object { "x": 1627975020000, - "y": 7, + "y": 0.3, + }, + Object { + "x": 1627975030000, + "y": 0.3, + }, + Object { + "x": 1627975040000, + "y": 0.2, + }, + Object { + "x": 1627975050000, + "y": 0.1, + }, + Object { + "x": 1627975060000, + "y": 0.1, + }, + Object { + "x": 1627975070000, + "y": 0, }, Object { "x": 1627975080000, - "y": 10, + "y": 0.4, + }, + Object { + "x": 1627975090000, + "y": 0.1, + }, + Object { + "x": 1627975100000, + "y": 0.2, + }, + Object { + "x": 1627975110000, + "y": 0.1, + }, + Object { + "x": 1627975120000, + "y": 0.1, + }, + Object { + "x": 1627975130000, + "y": 0.3, }, Object { "x": 1627975140000, - "y": 12, + "y": 0.3, + }, + Object { + "x": 1627975150000, + "y": 0.4, + }, + Object { + "x": 1627975160000, + "y": 0, + }, + Object { + "x": 1627975170000, + "y": 0, + }, + Object { + "x": 1627975180000, + "y": 0.2, + }, + Object { + "x": 1627975190000, + "y": 0.1, }, Object { "x": 1627975200000, + "y": 0.5, + }, + Object { + "x": 1627975210000, "y": 0, }, ], - "throughputUnit": "minute", + "throughputUnit": "second", } `; diff --git a/x-pack/test/apm_api_integration/tests/services/throughput.ts b/x-pack/test/apm_api_integration/tests/services/throughput.ts index 9134b13e18db1..9c54afb8bd6d9 100644 --- a/x-pack/test/apm_api_integration/tests/services/throughput.ts +++ b/x-pack/test/apm_api_integration/tests/services/throughput.ts @@ -96,13 +96,12 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); it('has the correct number of buckets', () => { - expectSnapshot(throughputResponse.currentPeriod.length).toMatchInline(`31`); + expectSnapshot(throughputResponse.currentPeriod.length).toMatchInline(`61`); }); it('has the correct throughput in tpm', () => { const avg = mean(throughputResponse.currentPeriod.map((d) => d.y)); - expectSnapshot(avg).toMatchInline(`6.19354838709677`); - expectSnapshot(throughputResponse.throughputUnit).toMatchInline(`"minute"`); + expectSnapshot(avg).toMatchInline(`0.124043715846995`); }); }); @@ -125,16 +124,6 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); throughputResponse = response.body; }); - - it('has the correct throughput in tps', async () => { - const avgTps = mean(throughputResponse.currentPeriod.map((d) => d.y)); - expectSnapshot(avgTps).toMatchInline(`0.124043715846995`); - expectSnapshot(throughputResponse.throughputUnit).toMatchInline(`"second"`); - - // this tpm value must be similar tp tpm value calculated in the previous spec where metric docs were used - const avgTpm = avgTps * 60; - expectSnapshot(avgTpm).toMatchInline(`7.44262295081967`); - }); }); } ); @@ -183,31 +172,30 @@ export default function ApiTest({ getService }: FtrProviderContext) { it('has the correct start date', () => { expectSnapshot( new Date(first(throughputResponse.currentPeriod)?.x ?? NaN).toISOString() - ).toMatchInline(`"2021-08-03T07:05:00.000Z"`); + ).toMatchInline(`"2021-08-03T07:05:10.000Z"`); expectSnapshot( new Date(first(throughputResponse.previousPeriod)?.x ?? NaN).toISOString() - ).toMatchInline(`"2021-08-03T07:05:00.000Z"`); + ).toMatchInline(`"2021-08-03T07:05:10.000Z"`); }); it('has the correct end date', () => { expectSnapshot( new Date(last(throughputResponse.currentPeriod)?.x ?? NaN).toISOString() - ).toMatchInline(`"2021-08-03T07:20:00.000Z"`); + ).toMatchInline(`"2021-08-03T07:20:10.000Z"`); expectSnapshot( new Date(last(throughputResponse.previousPeriod)?.x ?? NaN).toISOString() - ).toMatchInline(`"2021-08-03T07:20:00.000Z"`); + ).toMatchInline(`"2021-08-03T07:20:10.000Z"`); }); it('has the correct number of buckets', () => { - expectSnapshot(throughputResponse.currentPeriod.length).toMatchInline(`16`); - expectSnapshot(throughputResponse.previousPeriod.length).toMatchInline(`16`); + expectSnapshot(throughputResponse.currentPeriod.length).toMatchInline(`91`); + expectSnapshot(throughputResponse.previousPeriod.length).toMatchInline(`91`); }); it('has the correct throughput in tpm', () => { expectSnapshot(throughputResponse).toMatch(); - expectSnapshot(throughputResponse.throughputUnit).toMatchInline(`"minute"`); }); } ); diff --git a/x-pack/test/apm_api_integration/tests/services/top_services.ts b/x-pack/test/apm_api_integration/tests/services/top_services.ts index 86d5db591a6ba..a9562ee4f7597 100644 --- a/x-pack/test/apm_api_integration/tests/services/top_services.ts +++ b/x-pack/test/apm_api_integration/tests/services/top_services.ts @@ -94,37 +94,37 @@ export default function ApiTest({ getService }: FtrProviderContext) { Array [ Object {}, Object { - "latency": 520294.126436782, - "throughput": 11.6, - "transactionErrorRate": 0.0316091954022989, + "latency": 496794.054441261, + "throughput": 11.6333333333333, + "transactionErrorRate": 0.0315186246418338, }, Object { - "latency": 74805.1452830189, - "throughput": 17.6666666666667, - "transactionErrorRate": 0.00566037735849057, + "latency": 83395.638576779, + "throughput": 17.8, + "transactionErrorRate": 0.00936329588014981, }, Object { - "latency": 411589.785714286, - "throughput": 7.46666666666667, - "transactionErrorRate": 0.0848214285714286, + "latency": 430318.696035242, + "throughput": 7.56666666666667, + "transactionErrorRate": 0.092511013215859, }, Object { - "latency": 53906.6603773585, - "throughput": 7.06666666666667, + "latency": 53147.5747663551, + "throughput": 7.13333333333333, "transactionErrorRate": 0, }, Object { - "latency": 420634.9, + "latency": 419826.24375, "throughput": 5.33333333333333, "transactionErrorRate": 0.025, }, Object { - "latency": 40989.5802047782, - "throughput": 9.76666666666667, - "transactionErrorRate": 0.00341296928327645, + "latency": 21520.4776632302, + "throughput": 9.7, + "transactionErrorRate": 0.00343642611683849, }, Object { - "latency": 1040880.77777778, + "latency": 1040388.88888889, "throughput": 2.4, "transactionErrorRate": null, }, diff --git a/x-pack/test/apm_api_integration/tests/traces/__snapshots__/top_traces.snap b/x-pack/test/apm_api_integration/tests/traces/__snapshots__/top_traces.snap index 604348355f38c..64e1754c9570f 100644 --- a/x-pack/test/apm_api_integration/tests/traces/__snapshots__/top_traces.snap +++ b/x-pack/test/apm_api_integration/tests/traces/__snapshots__/top_traces.snap @@ -3,7 +3,7 @@ exports[`APM API tests basic apm_8.0.0 Top traces when data is loaded returns the correct buckets 1`] = ` Array [ Object { - "averageResponseTime": 1639, + "averageResponseTime": 1638, "impact": 0, "key": Object { "service.name": "opbeans-java", @@ -15,8 +15,8 @@ Array [ "transactionsPerMinute": 0.0333333333333333, }, Object { - "averageResponseTime": 3279, - "impact": 0.00144735571024101, + "averageResponseTime": 3278, + "impact": 0.00153950779720334, "key": Object { "service.name": "opbeans-node", "transaction.name": "POST /api/orders", @@ -27,8 +27,8 @@ Array [ "transactionsPerMinute": 0.0333333333333333, }, Object { - "averageResponseTime": 6175, - "impact": 0.00400317408637392, + "averageResponseTime": 6169, + "impact": 0.00425335965190752, "key": Object { "service.name": "opbeans-node", "transaction.name": "GET /api/products/:id", @@ -39,8 +39,8 @@ Array [ "transactionsPerMinute": 0.0333333333333333, }, Object { - "averageResponseTime": 3495, - "impact": 0.00472243927164613, + "averageResponseTime": 3486, + "impact": 0.00500715523797721, "key": Object { "service.name": "opbeans-dotnet", "transaction.name": "POST Orders/Post", @@ -51,8 +51,8 @@ Array [ "transactionsPerMinute": 0.0666666666666667, }, Object { - "averageResponseTime": 7039, - "impact": 0.00476568343615943, + "averageResponseTime": 7022, + "impact": 0.00505409145130658, "key": Object { "service.name": "opbeans-python", "transaction.name": "GET opbeans.views.product", @@ -63,8 +63,8 @@ Array [ "transactionsPerMinute": 0.0333333333333333, }, Object { - "averageResponseTime": 6303, - "impact": 0.00967875004525193, + "averageResponseTime": 6279, + "impact": 0.0102508689911344, "key": Object { "service.name": "opbeans-ruby", "transaction.name": "Api::OrdersController#create", @@ -75,8 +75,8 @@ Array [ "transactionsPerMinute": 0.0666666666666667, }, Object { - "averageResponseTime": 7209.66666666667, - "impact": 0.0176418540534865, + "averageResponseTime": 7959, + "impact": 0.0134049825268681, "key": Object { "service.name": "opbeans-java", "transaction.name": "APIRestController#products", @@ -84,35 +84,47 @@ Array [ "serviceName": "opbeans-java", "transactionName": "APIRestController#products", "transactionType": "request", + "transactionsPerMinute": 0.0666666666666667, + }, + Object { + "averageResponseTime": 7411.33333333333, + "impact": 0.0193339649946342, + "key": Object { + "service.name": "opbeans-python", + "transaction.name": "GET opbeans.views.order", + }, + "serviceName": "opbeans-python", + "transactionName": "GET opbeans.views.order", + "transactionType": "request", "transactionsPerMinute": 0.1, }, Object { - "averageResponseTime": 4511, - "impact": 0.0224401912465233, + "averageResponseTime": 11729, + "impact": 0.0204829634969371, "key": Object { - "service.name": "opbeans-java", - "transaction.name": "APIRestController#orders", + "service.name": "opbeans-ruby", + "transaction.name": "Api::OrdersController#show", }, - "serviceName": "opbeans-java", - "transactionName": "APIRestController#orders", + "serviceName": "opbeans-ruby", + "transactionName": "Api::OrdersController#show", "transactionType": "request", - "transactionsPerMinute": 0.2, + "transactionsPerMinute": 0.0666666666666667, }, Object { - "averageResponseTime": 7607, - "impact": 0.0254072704525173, + "averageResponseTime": 4499.16666666667, + "impact": 0.0238032312278568, "key": Object { - "service.name": "opbeans-python", - "transaction.name": "GET opbeans.views.order", + "service.name": "opbeans-java", + "transaction.name": "APIRestController#orders", }, - "serviceName": "opbeans-python", - "transactionName": "GET opbeans.views.order", + "serviceName": "opbeans-java", + "transactionName": "APIRestController#orders", "transactionType": "request", - "transactionsPerMinute": 0.133333333333333, + "transactionsPerMinute": 0.2, }, Object { - "averageResponseTime": 10143, - "impact": 0.025408152986487, + "averageResponseTime": 10126.3333333333, + "impact": 0.0269798741459886, "key": Object { "service.name": "opbeans-node", "transaction.name": "GET /api/types", @@ -123,32 +135,32 @@ Array [ "transactionsPerMinute": 0.1, }, Object { - "averageResponseTime": 6105.66666666667, - "impact": 0.0308842762682221, + "averageResponseTime": 6089.83333333333, + "impact": 0.032762415628167, "key": Object { - "service.name": "opbeans-ruby", - "transaction.name": "Api::TypesController#index", + "service.name": "opbeans-java", + "transaction.name": "APIRestController#customerWhoBought", }, - "serviceName": "opbeans-ruby", - "transactionName": "Api::TypesController#index", + "serviceName": "opbeans-java", + "transactionName": "APIRestController#customerWhoBought", "transactionType": "request", "transactionsPerMinute": 0.2, }, Object { - "averageResponseTime": 6116.33333333333, - "impact": 0.0309407584422802, + "averageResponseTime": 6094.83333333333, + "impact": 0.0327905773561646, "key": Object { - "service.name": "opbeans-java", - "transaction.name": "APIRestController#customerWhoBought", + "service.name": "opbeans-ruby", + "transaction.name": "Api::TypesController#index", }, - "serviceName": "opbeans-java", - "transactionName": "APIRestController#customerWhoBought", + "serviceName": "opbeans-ruby", + "transactionName": "Api::TypesController#index", "transactionType": "request", "transactionsPerMinute": 0.2, }, Object { - "averageResponseTime": 12543, - "impact": 0.0317623975680329, + "averageResponseTime": 12527.3333333333, + "impact": 0.0337415050382176, "key": Object { "service.name": "opbeans-java", "transaction.name": "APIRestController#customers", @@ -159,8 +171,8 @@ Array [ "transactionsPerMinute": 0.1, }, Object { - "averageResponseTime": 5551, - "impact": 0.0328461492827744, + "averageResponseTime": 5534.85714285714, + "impact": 0.0348323026359922, "key": Object { "service.name": "opbeans-node", "transaction.name": "GET /api/orders/:id", @@ -171,8 +183,8 @@ Array [ "transactionsPerMinute": 0.233333333333333, }, Object { - "averageResponseTime": 13183, - "impact": 0.0334568627897785, + "averageResponseTime": 13149.3333333333, + "impact": 0.0354931645196697, "key": Object { "service.name": "opbeans-java", "transaction.name": "APIRestController#stats", @@ -183,8 +195,8 @@ Array [ "transactionsPerMinute": 0.1, }, Object { - "averageResponseTime": 8050.2, - "impact": 0.0340764016364792, + "averageResponseTime": 8025.8, + "impact": 0.0361324357452157, "key": Object { "service.name": "opbeans-go", "transaction.name": "POST /api/orders", @@ -195,20 +207,8 @@ Array [ "transactionsPerMinute": 0.166666666666667, }, Object { - "averageResponseTime": 10079, - "impact": 0.0341337663445071, - "key": Object { - "service.name": "opbeans-ruby", - "transaction.name": "Api::OrdersController#show", - }, - "serviceName": "opbeans-ruby", - "transactionName": "Api::OrdersController#show", - "transactionType": "request", - "transactionsPerMinute": 0.133333333333333, - }, - Object { - "averageResponseTime": 8463, - "impact": 0.0358979517498557, + "averageResponseTime": 8432.8, + "impact": 0.0380427396277211, "key": Object { "service.name": "opbeans-node", "transaction.name": "GET /api/products/:id/customers", @@ -219,32 +219,32 @@ Array [ "transactionsPerMinute": 0.166666666666667, }, Object { - "averageResponseTime": 10799, - "impact": 0.0366754641771254, + "averageResponseTime": 7408, + "impact": 0.0401867858526067, "key": Object { "service.name": "opbeans-ruby", - "transaction.name": "Api::ProductsController#show", + "transaction.name": "Api::TypesController#show", }, "serviceName": "opbeans-ruby", - "transactionName": "Api::ProductsController#show", + "transactionName": "Api::TypesController#show", "transactionType": "request", - "transactionsPerMinute": 0.133333333333333, + "transactionsPerMinute": 0.2, }, Object { - "averageResponseTime": 7428.33333333333, - "impact": 0.0378880658514371, + "averageResponseTime": 6869.42857142857, + "impact": 0.0436018647344517, "key": Object { - "service.name": "opbeans-ruby", - "transaction.name": "Api::TypesController#show", + "service.name": "opbeans-java", + "transaction.name": "APIRestController#order", }, - "serviceName": "opbeans-ruby", - "transactionName": "Api::TypesController#show", + "serviceName": "opbeans-java", + "transactionName": "APIRestController#order", "transactionType": "request", - "transactionsPerMinute": 0.2, + "transactionsPerMinute": 0.233333333333333, }, Object { - "averageResponseTime": 3105.13333333333, - "impact": 0.039659311528543, + "averageResponseTime": 3050, + "impact": 0.0442721138607951, "key": Object { "service.name": "opbeans-java", "transaction.name": "ResourceHttpRequestHandler", @@ -252,23 +252,23 @@ Array [ "serviceName": "opbeans-java", "transactionName": "ResourceHttpRequestHandler", "transactionType": "request", - "transactionsPerMinute": 0.5, + "transactionsPerMinute": 0.533333333333333, }, Object { - "averageResponseTime": 6883.57142857143, - "impact": 0.0410784261517549, + "averageResponseTime": 10786.2, + "impact": 0.0490887080726551, "key": Object { - "service.name": "opbeans-java", - "transaction.name": "APIRestController#order", + "service.name": "opbeans-ruby", + "transaction.name": "Api::ProductsController#show", }, - "serviceName": "opbeans-java", - "transactionName": "APIRestController#order", + "serviceName": "opbeans-ruby", + "transactionName": "Api::ProductsController#show", "transactionType": "request", - "transactionsPerMinute": 0.233333333333333, + "transactionsPerMinute": 0.166666666666667, }, Object { - "averageResponseTime": 3505, - "impact": 0.0480460318422139, + "averageResponseTime": 3497.6875, + "impact": 0.0509961957823607, "key": Object { "service.name": "opbeans-dotnet", "transaction.name": "GET Products/Get", @@ -279,8 +279,8 @@ Array [ "transactionsPerMinute": 0.533333333333333, }, Object { - "averageResponseTime": 5621.4, - "impact": 0.0481642913941483, + "averageResponseTime": 5604.9, + "impact": 0.0510769260692872, "key": Object { "service.name": "opbeans-java", "transaction.name": "APIRestController#topProducts", @@ -291,44 +291,44 @@ Array [ "transactionsPerMinute": 0.333333333333333, }, Object { - "averageResponseTime": 8428.71428571429, - "impact": 0.0506239135675883, + "averageResponseTime": 8500.57142857143, + "impact": 0.0543202184103467, "key": Object { "service.name": "opbeans-node", - "transaction.name": "GET /api/orders", + "transaction.name": "GET /api/customers/:id", }, "serviceName": "opbeans-node", - "transactionName": "GET /api/orders", + "transactionName": "GET /api/customers/:id", "transactionType": "request", "transactionsPerMinute": 0.233333333333333, }, Object { - "averageResponseTime": 8520.14285714286, - "impact": 0.0511887353081702, + "averageResponseTime": 6658.88888888889, + "impact": 0.0547201149479129, "key": Object { "service.name": "opbeans-node", - "transaction.name": "GET /api/customers/:id", + "transaction.name": "GET /api/products/top", }, "serviceName": "opbeans-node", - "transactionName": "GET /api/customers/:id", + "transactionName": "GET /api/products/top", "transactionType": "request", - "transactionsPerMinute": 0.233333333333333, + "transactionsPerMinute": 0.3, }, Object { - "averageResponseTime": 6683.44444444444, - "impact": 0.0516388276326964, + "averageResponseTime": 8141.125, + "impact": 0.0596005424099008, "key": Object { "service.name": "opbeans-node", - "transaction.name": "GET /api/products/top", + "transaction.name": "GET /api/orders", }, "serviceName": "opbeans-node", - "transactionName": "GET /api/products/top", + "transactionName": "GET /api/orders", "transactionType": "request", - "transactionsPerMinute": 0.3, + "transactionsPerMinute": 0.266666666666667, }, Object { - "averageResponseTime": 3482.78947368421, - "impact": 0.0569534471979838, + "averageResponseTime": 3473.52631578947, + "impact": 0.0604153550732987, "key": Object { "service.name": "opbeans-dotnet", "transaction.name": "GET Types/Get", @@ -339,20 +339,20 @@ Array [ "transactionsPerMinute": 0.633333333333333, }, Object { - "averageResponseTime": 16703, - "impact": 0.057517386404596, + "averageResponseTime": 7875, + "impact": 0.064994452045712, "key": Object { - "service.name": "opbeans-python", - "transaction.name": "GET opbeans.views.product_type", + "service.name": "opbeans-node", + "transaction.name": "GET /api/types/:id", }, - "serviceName": "opbeans-python", - "transactionName": "GET opbeans.views.product_type", + "serviceName": "opbeans-node", + "transactionName": "GET /api/types/:id", "transactionType": "request", - "transactionsPerMinute": 0.133333333333333, + "transactionsPerMinute": 0.3, }, Object { - "averageResponseTime": 4943, - "impact": 0.0596266425920813, + "averageResponseTime": 4889, + "impact": 0.0673037137415171, "key": Object { "service.name": "opbeans-dotnet", "transaction.name": "GET Products/Get {id}", @@ -360,23 +360,23 @@ Array [ "serviceName": "opbeans-dotnet", "transactionName": "GET Products/Get {id}", "transactionType": "request", - "transactionsPerMinute": 0.466666666666667, + "transactionsPerMinute": 0.5, }, Object { - "averageResponseTime": 7892.33333333333, - "impact": 0.0612407972225879, + "averageResponseTime": 14902.4, + "impact": 0.0684085922032904, "key": Object { - "service.name": "opbeans-node", - "transaction.name": "GET /api/types/:id", + "service.name": "opbeans-python", + "transaction.name": "GET opbeans.views.product_type", }, - "serviceName": "opbeans-node", - "transactionName": "GET /api/types/:id", + "serviceName": "opbeans-python", + "transactionName": "GET opbeans.views.product_type", "transactionType": "request", - "transactionsPerMinute": 0.3, + "transactionsPerMinute": 0.166666666666667, }, Object { - "averageResponseTime": 6346.42857142857, - "impact": 0.0769666700279444, + "averageResponseTime": 6329.35714285714, + "impact": 0.0816436656379062, "key": Object { "service.name": "opbeans-dotnet", "transaction.name": "GET Orders/Get {id}", @@ -387,8 +387,8 @@ Array [ "transactionsPerMinute": 0.466666666666667, }, Object { - "averageResponseTime": 7052.84615384615, - "impact": 0.0794704188998674, + "averageResponseTime": 6627.42857142857, + "impact": 0.0855609620023755, "key": Object { "service.name": "opbeans-go", "transaction.name": "GET /api/products", @@ -396,11 +396,11 @@ Array [ "serviceName": "opbeans-go", "transactionName": "GET /api/products", "transactionType": "request", - "transactionsPerMinute": 0.433333333333333, + "transactionsPerMinute": 0.466666666666667, }, Object { - "averageResponseTime": 10484.3333333333, - "impact": 0.0818285496667966, + "averageResponseTime": 10459, + "impact": 0.0868254235894687, "key": Object { "service.name": "opbeans-java", "transaction.name": "APIRestController#product", @@ -411,8 +411,8 @@ Array [ "transactionsPerMinute": 0.3, }, Object { - "averageResponseTime": 23711, - "impact": 0.0822565786420813, + "averageResponseTime": 23652.5, + "impact": 0.087275072513164, "key": Object { "service.name": "opbeans-node", "transaction.name": "GET /api/stats", @@ -423,8 +423,8 @@ Array [ "transactionsPerMinute": 0.133333333333333, }, Object { - "averageResponseTime": 4491.36363636364, - "impact": 0.0857567083657495, + "averageResponseTime": 4480.95454545455, + "impact": 0.0910027465757826, "key": Object { "service.name": "opbeans-dotnet", "transaction.name": "GET Types/Get {id}", @@ -435,8 +435,8 @@ Array [ "transactionsPerMinute": 0.733333333333333, }, Object { - "averageResponseTime": 20715.8, - "impact": 0.089965512867054, + "averageResponseTime": 20677.4, + "impact": 0.0955142554010017, "key": Object { "service.name": "opbeans-python", "transaction.name": "GET opbeans.views.stats", @@ -447,8 +447,8 @@ Array [ "transactionsPerMinute": 0.166666666666667, }, Object { - "averageResponseTime": 9036.33333333333, - "impact": 0.0942519803576885, + "averageResponseTime": 9015.33333333333, + "impact": 0.100017315707821, "key": Object { "service.name": "opbeans-node", "transaction.name": "GET /api/products", @@ -459,8 +459,20 @@ Array [ "transactionsPerMinute": 0.4, }, Object { - "averageResponseTime": 7504.06666666667, - "impact": 0.0978924329825326, + "averageResponseTime": 12096.8888888889, + "impact": 0.100663158003234, + "key": Object { + "service.name": "opbeans-go", + "transaction.name": "GET /api/customers", + }, + "serviceName": "opbeans-go", + "transactionName": "GET /api/customers", + "transactionType": "request", + "transactionsPerMinute": 0.3, + }, + Object { + "averageResponseTime": 7361.46666666667, + "impact": 0.102118180616444, "key": Object { "service.name": "opbeans-java", "transaction.name": "APIRestController#customer", @@ -471,8 +483,8 @@ Array [ "transactionsPerMinute": 0.5, }, Object { - "averageResponseTime": 4250.55555555556, - "impact": 0.0998375378516613, + "averageResponseTime": 4141.07142857143, + "impact": 0.107307448362139, "key": Object { "service.name": "opbeans-go", "transaction.name": "GET /api/types/:id", @@ -480,11 +492,11 @@ Array [ "serviceName": "opbeans-go", "transactionName": "GET /api/types/:id", "transactionType": "request", - "transactionsPerMinute": 0.9, + "transactionsPerMinute": 0.933333333333333, }, Object { - "averageResponseTime": 21343, - "impact": 0.11156906191034, + "averageResponseTime": 21277, + "impact": 0.118301786972411, "key": Object { "service.name": "opbeans-node", "transaction.name": "GET /api/customers", @@ -495,8 +507,8 @@ Array [ "transactionsPerMinute": 0.2, }, Object { - "averageResponseTime": 16655, - "impact": 0.116142352941114, + "averageResponseTime": 16602.25, + "impact": 0.123141849290936, "key": Object { "service.name": "opbeans-ruby", "transaction.name": "Api::ProductsController#top", @@ -507,20 +519,8 @@ Array [ "transactionsPerMinute": 0.266666666666667, }, Object { - "averageResponseTime": 5749, - "impact": 0.12032203382142, - "key": Object { - "service.name": "opbeans-go", - "transaction.name": "GET /api/types", - }, - "serviceName": "opbeans-go", - "transactionName": "GET /api/types", - "transactionType": "request", - "transactionsPerMinute": 0.8, - }, - Object { - "averageResponseTime": 9951, - "impact": 0.121502864272824, + "averageResponseTime": 9924.07142857143, + "impact": 0.128885903078184, "key": Object { "service.name": "opbeans-ruby", "transaction.name": "Api::StatsController#index", @@ -531,20 +531,20 @@ Array [ "transactionsPerMinute": 0.466666666666667, }, Object { - "averageResponseTime": 14040.6, - "impact": 0.122466591367692, + "averageResponseTime": 5444.5, + "impact": 0.131345360656643, "key": Object { "service.name": "opbeans-go", - "transaction.name": "GET /api/customers", + "transaction.name": "GET /api/types", }, "serviceName": "opbeans-go", - "transactionName": "GET /api/customers", + "transactionName": "GET /api/types", "transactionType": "request", - "transactionsPerMinute": 0.333333333333333, + "transactionsPerMinute": 0.866666666666667, }, Object { - "averageResponseTime": 20963.5714285714, - "impact": 0.128060974201361, + "averageResponseTime": 20932.4285714286, + "impact": 0.136010820261582, "key": Object { "service.name": "opbeans-ruby", "transaction.name": "Api::OrdersController#index", @@ -555,8 +555,20 @@ Array [ "transactionsPerMinute": 0.233333333333333, }, Object { - "averageResponseTime": 22874.4285714286, - "impact": 0.139865748579522, + "averageResponseTime": 12301.3333333333, + "impact": 0.137033090987896, + "key": Object { + "service.name": "opbeans-ruby", + "transaction.name": "Api::ProductsController#index", + }, + "serviceName": "opbeans-ruby", + "transactionName": "Api::ProductsController#index", + "transactionType": "request", + "transactionsPerMinute": 0.4, + }, + Object { + "averageResponseTime": 22818.7142857143, + "impact": 0.148405735477602, "key": Object { "service.name": "opbeans-python", "transaction.name": "GET opbeans.views.customer", @@ -567,8 +579,8 @@ Array [ "transactionsPerMinute": 0.233333333333333, }, Object { - "averageResponseTime": 32203.8, - "impact": 0.140658264084276, + "averageResponseTime": 32098.4, + "impact": 0.149120104644475, "key": Object { "service.name": "opbeans-python", "transaction.name": "GET opbeans.views.customers", @@ -579,8 +591,8 @@ Array [ "transactionsPerMinute": 0.166666666666667, }, Object { - "averageResponseTime": 4482.11111111111, - "impact": 0.140955678032051, + "averageResponseTime": 4585.91428571429, + "impact": 0.149134185508474, "key": Object { "service.name": "opbeans-go", "transaction.name": "GET /api/customers/:id", @@ -588,23 +600,23 @@ Array [ "serviceName": "opbeans-go", "transactionName": "GET /api/customers/:id", "transactionType": "request", - "transactionsPerMinute": 1.2, + "transactionsPerMinute": 1.16666666666667, }, Object { - "averageResponseTime": 12582.3846153846, - "impact": 0.142910490774846, + "averageResponseTime": 20449.3333333333, + "impact": 0.171228938571142, "key": Object { - "service.name": "opbeans-ruby", - "transaction.name": "Api::ProductsController#index", + "service.name": "opbeans-python", + "transaction.name": "GET opbeans.views.orders", }, - "serviceName": "opbeans-ruby", - "transactionName": "Api::ProductsController#index", + "serviceName": "opbeans-python", + "transactionName": "GET opbeans.views.orders", "transactionType": "request", - "transactionsPerMinute": 0.433333333333333, + "transactionsPerMinute": 0.3, }, Object { - "averageResponseTime": 10009.9473684211, - "impact": 0.166401779979233, + "averageResponseTime": 9981.1052631579, + "impact": 0.176482978291232, "key": Object { "service.name": "opbeans-ruby", "transaction.name": "Api::CustomersController#show", @@ -615,8 +627,8 @@ Array [ "transactionsPerMinute": 0.633333333333333, }, Object { - "averageResponseTime": 27825.2857142857, - "impact": 0.170450845832029, + "averageResponseTime": 27758.7142857143, + "impact": 0.180866820616195, "key": Object { "service.name": "opbeans-python", "transaction.name": "GET opbeans.views.product_types", @@ -627,20 +639,20 @@ Array [ "transactionsPerMinute": 0.233333333333333, }, Object { - "averageResponseTime": 20562.2, - "impact": 0.180021926732983, + "averageResponseTime": 8332.06896551724, + "impact": 0.225286314186844, "key": Object { - "service.name": "opbeans-python", - "transaction.name": "GET opbeans.views.orders", + "service.name": "opbeans-go", + "transaction.name": "GET /api/orders/:id", }, - "serviceName": "opbeans-python", - "transactionName": "GET opbeans.views.orders", + "serviceName": "opbeans-go", + "transactionName": "GET /api/orders/:id", "transactionType": "request", - "transactionsPerMinute": 0.333333333333333, + "transactionsPerMinute": 0.966666666666667, }, Object { - "averageResponseTime": 7106.76470588235, - "impact": 0.21180020991247, + "averageResponseTime": 6976.62857142857, + "impact": 0.227681938515175, "key": Object { "service.name": "opbeans-dotnet", "transaction.name": "GET Customers/Get {id}", @@ -648,23 +660,11 @@ Array [ "serviceName": "opbeans-dotnet", "transactionName": "GET Customers/Get {id}", "transactionType": "request", - "transactionsPerMinute": 1.13333333333333, - }, - Object { - "averageResponseTime": 8612.51724137931, - "impact": 0.218977858687708, - "key": Object { - "service.name": "opbeans-go", - "transaction.name": "GET /api/orders/:id", - }, - "serviceName": "opbeans-go", - "transactionName": "GET /api/orders/:id", - "transactionType": "request", - "transactionsPerMinute": 0.966666666666667, + "transactionsPerMinute": 1.16666666666667, }, Object { - "averageResponseTime": 11295, - "impact": 0.277663720068132, + "averageResponseTime": 11321.7777777778, + "impact": 0.2854191132559, "key": Object { "service.name": "opbeans-ruby", "transaction.name": "Api::CustomersController#index", @@ -672,11 +672,11 @@ Array [ "serviceName": "opbeans-ruby", "transactionName": "Api::CustomersController#index", "transactionType": "request", - "transactionsPerMinute": 0.933333333333333, + "transactionsPerMinute": 0.9, }, Object { - "averageResponseTime": 65035.8, - "impact": 0.285535040543522, + "averageResponseTime": 64824.2, + "impact": 0.302722617661906, "key": Object { "service.name": "opbeans-python", "transaction.name": "GET opbeans.views.product_customers", @@ -687,8 +687,8 @@ Array [ "transactionsPerMinute": 0.166666666666667, }, Object { - "averageResponseTime": 30999.4705882353, - "impact": 0.463640986028375, + "averageResponseTime": 32155.5625, + "impact": 0.481425678843616, "key": Object { "service.name": "opbeans-go", "transaction.name": "GET /api/stats", @@ -696,11 +696,23 @@ Array [ "serviceName": "opbeans-go", "transactionName": "GET /api/stats", "transactionType": "request", - "transactionsPerMinute": 0.566666666666667, + "transactionsPerMinute": 0.533333333333333, }, Object { - "averageResponseTime": 20197.4, - "impact": 0.622424732781511, + "averageResponseTime": 32890.5714285714, + "impact": 0.646841098031782, + "key": Object { + "service.name": "opbeans-dotnet", + "transaction.name": "GET Customers/Get", + }, + "serviceName": "opbeans-dotnet", + "transactionName": "GET Customers/Get", + "transactionType": "request", + "transactionsPerMinute": 0.7, + }, + Object { + "averageResponseTime": 20133.0571428571, + "impact": 0.65994099517201, "key": Object { "service.name": "opbeans-go", "transaction.name": "GET /api/products/:id/customers", @@ -711,8 +723,8 @@ Array [ "transactionsPerMinute": 1.16666666666667, }, Object { - "averageResponseTime": 64681.6666666667, - "impact": 0.68355874339377, + "averageResponseTime": 64534, + "impact": 0.725417951490748, "key": Object { "service.name": "opbeans-python", "transaction.name": "GET opbeans.views.top_products", @@ -723,20 +735,8 @@ Array [ "transactionsPerMinute": 0.4, }, Object { - "averageResponseTime": 41416.1428571429, - "impact": 0.766127739061111, - "key": Object { - "service.name": "opbeans-dotnet", - "transaction.name": "GET Customers/Get", - }, - "serviceName": "opbeans-dotnet", - "transactionName": "GET Customers/Get", - "transactionType": "request", - "transactionsPerMinute": 0.7, - }, - Object { - "averageResponseTime": 19429, - "impact": 0.821597646656097, + "averageResponseTime": 19259.8775510204, + "impact": 0.884368376654926, "key": Object { "service.name": "opbeans-go", "transaction.name": "GET /api/products/:id", @@ -744,11 +744,11 @@ Array [ "serviceName": "opbeans-go", "transactionName": "GET /api/products/:id", "transactionType": "request", - "transactionsPerMinute": 1.6, + "transactionsPerMinute": 1.63333333333333, }, Object { - "averageResponseTime": 62390.652173913, - "impact": 1.26497653527507, + "averageResponseTime": 62237.5652173913, + "impact": 1.3422123631976, "key": Object { "service.name": "opbeans-dotnet", "transaction.name": "GET Products/Customerwhobought {id}", @@ -759,8 +759,8 @@ Array [ "transactionsPerMinute": 0.766666666666667, }, Object { - "averageResponseTime": 33266.2, - "impact": 1.76006661931225, + "averageResponseTime": 33203.5666666667, + "impact": 1.86860199568649, "key": Object { "service.name": "opbeans-python", "transaction.name": "opbeans.tasks.sync_orders", @@ -771,8 +771,8 @@ Array [ "transactionsPerMinute": 2, }, Object { - "averageResponseTime": 38491.4444444444, - "impact": 1.83293391905112, + "averageResponseTime": 37042.1607142857, + "impact": 1.94571537801384, "key": Object { "service.name": "opbeans-node", "transaction.name": "GET /api", @@ -780,11 +780,11 @@ Array [ "serviceName": "opbeans-node", "transactionName": "GET /api", "transactionType": "request", - "transactionsPerMinute": 1.8, + "transactionsPerMinute": 1.86666666666667, }, Object { - "averageResponseTime": 118488.6, - "impact": 2.08995781717084, + "averageResponseTime": 116654.571428571, + "impact": 2.29809838682675, "key": Object { "service.name": "opbeans-dotnet", "transaction.name": "GET Stats/Get", @@ -792,47 +792,35 @@ Array [ "serviceName": "opbeans-dotnet", "transactionName": "GET Stats/Get", "transactionType": "request", - "transactionsPerMinute": 0.666666666666667, - }, - Object { - "averageResponseTime": 250440.142857143, - "impact": 4.64001412901584, - "key": Object { - "service.name": "opbeans-dotnet", - "transaction.name": "GET Products/Top", - }, - "serviceName": "opbeans-dotnet", - "transactionName": "GET Products/Top", - "transactionType": "request", "transactionsPerMinute": 0.7, }, Object { - "averageResponseTime": 312096.523809524, - "impact": 5.782704992387, + "averageResponseTime": 28741.0333333333, + "impact": 2.4266538589631, "key": Object { - "service.name": "opbeans-java", - "transaction.name": "DispatcherServlet#doGet", + "service.name": "opbeans-ruby", + "transaction.name": "Rack", }, - "serviceName": "opbeans-java", - "transactionName": "DispatcherServlet#doGet", + "serviceName": "opbeans-ruby", + "transactionName": "Rack", "transactionType": "request", - "transactionsPerMinute": 0.7, + "transactionsPerMinute": 3, }, Object { - "averageResponseTime": 91519.7032967033, - "impact": 7.34855500859826, + "averageResponseTime": 249714.952380952, + "impact": 4.9211455657754, "key": Object { - "service.name": "opbeans-ruby", - "transaction.name": "Rack", + "service.name": "opbeans-dotnet", + "transaction.name": "GET Products/Top", }, - "serviceName": "opbeans-ruby", - "transactionName": "Rack", + "serviceName": "opbeans-dotnet", + "transactionName": "GET Products/Top", "transactionType": "request", - "transactionsPerMinute": 3.03333333333333, + "transactionsPerMinute": 0.7, }, Object { - "averageResponseTime": 648269.769230769, - "impact": 7.43611473386403, + "averageResponseTime": 653461.538461538, + "impact": 7.97292501431132, "key": Object { "service.name": "opbeans-rum", "transaction.name": "/customers", @@ -843,8 +831,20 @@ Array [ "transactionsPerMinute": 0.433333333333333, }, Object { - "averageResponseTime": 1398919.72727273, - "impact": 13.5790895084132, + "averageResponseTime": 575328.095238095, + "impact": 11.340025698891, + "key": Object { + "service.name": "opbeans-java", + "transaction.name": "DispatcherServlet#doGet", + }, + "serviceName": "opbeans-java", + "transactionName": "DispatcherServlet#doGet", + "transactionType": "request", + "transactionsPerMinute": 0.7, + }, + Object { + "averageResponseTime": 1534606.6, + "impact": 14.4041869205032, "key": Object { "service.name": "opbeans-python", "transaction.name": "GET opbeans.views.products", @@ -852,11 +852,11 @@ Array [ "serviceName": "opbeans-python", "transactionName": "GET opbeans.views.products", "transactionType": "request", - "transactionsPerMinute": 0.366666666666667, + "transactionsPerMinute": 0.333333333333333, }, Object { - "averageResponseTime": 1199907.57142857, - "impact": 14.8239822181408, + "averageResponseTime": 1197500, + "impact": 15.7361746989891, "key": Object { "service.name": "opbeans-rum", "transaction.name": "/orders", @@ -867,8 +867,8 @@ Array [ "transactionsPerMinute": 0.466666666666667, }, Object { - "averageResponseTime": 955876.052631579, - "impact": 16.026822184214, + "averageResponseTime": 953684.210526316, + "impact": 17.0081460802151, "key": Object { "service.name": "opbeans-rum", "transaction.name": "/products", @@ -879,8 +879,8 @@ Array [ "transactionsPerMinute": 0.633333333333333, }, Object { - "averageResponseTime": 965009.526315789, - "impact": 16.1799735991728, + "averageResponseTime": 962252.473684211, + "impact": 17.1609675746427, "key": Object { "service.name": "opbeans-go", "transaction.name": "GET /api/orders", @@ -891,8 +891,8 @@ Array [ "transactionsPerMinute": 0.633333333333333, }, Object { - "averageResponseTime": 1213675.30769231, - "impact": 27.8474053933734, + "averageResponseTime": 1212615.38461538, + "impact": 29.594561046619, "key": Object { "service.name": "opbeans-rum", "transaction.name": "/dashboard", @@ -903,8 +903,8 @@ Array [ "transactionsPerMinute": 0.866666666666667, }, Object { - "averageResponseTime": 924019.363636364, - "impact": 35.8796065162284, + "averageResponseTime": 896783.309523809, + "impact": 35.3554170595149, "key": Object { "service.name": "opbeans-node", "transaction.name": "Update shipping status", @@ -912,23 +912,11 @@ Array [ "serviceName": "opbeans-node", "transactionName": "Update shipping status", "transactionType": "Worker", - "transactionsPerMinute": 1.46666666666667, - }, - Object { - "averageResponseTime": 1060469.15384615, - "impact": 36.498655556576, - "key": Object { - "service.name": "opbeans-node", - "transaction.name": "Process payment", - }, - "serviceName": "opbeans-node", - "transactionName": "Process payment", - "transactionType": "Worker", - "transactionsPerMinute": 1.3, + "transactionsPerMinute": 1.4, }, Object { - "averageResponseTime": 118686.822222222, - "impact": 37.7068083771466, + "averageResponseTime": 119062.672222222, + "impact": 40.2345894471584, "key": Object { "service.name": "opbeans-python", "transaction.name": "opbeans.tasks.update_stats", @@ -939,8 +927,20 @@ Array [ "transactionsPerMinute": 12, }, Object { - "averageResponseTime": 1039228.27659574, - "impact": 43.1048035741496, + "averageResponseTime": 1078328.675, + "impact": 40.488594152833, + "key": Object { + "service.name": "opbeans-node", + "transaction.name": "Process payment", + }, + "serviceName": "opbeans-node", + "transactionName": "Process payment", + "transactionType": "Worker", + "transactionsPerMinute": 1.33333333333333, + }, + Object { + "averageResponseTime": 1057995.65957447, + "impact": 46.6772737502262, "key": Object { "service.name": "opbeans-node", "transaction.name": "Process completed order", @@ -951,8 +951,8 @@ Array [ "transactionsPerMinute": 1.56666666666667, }, Object { - "averageResponseTime": 1949922.55555556, - "impact": 61.9499776921889, + "averageResponseTime": 1947354.08333333, + "impact": 65.8074895815218, "key": Object { "service.name": "opbeans-python", "transaction.name": "opbeans.tasks.sync_customers", @@ -963,7 +963,7 @@ Array [ "transactionsPerMinute": 1.2, }, Object { - "averageResponseTime": 5963775, + "averageResponseTime": 5918288.44444444, "impact": 100, "key": Object { "service.name": "opbeans-dotnet", @@ -972,7 +972,7 @@ Array [ "serviceName": "opbeans-dotnet", "transactionName": "GET Orders/Get", "transactionType": "request", - "transactionsPerMinute": 0.633333333333333, + "transactionsPerMinute": 0.6, }, ] `; diff --git a/x-pack/test/apm_api_integration/tests/traces/top_traces.ts b/x-pack/test/apm_api_integration/tests/traces/top_traces.ts index 29604bfc990df..670d21a8c4e00 100644 --- a/x-pack/test/apm_api_integration/tests/traces/top_traces.ts +++ b/x-pack/test/apm_api_integration/tests/traces/top_traces.ts @@ -63,7 +63,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { expectSnapshot(firstItem).toMatchInline(` Object { - "averageResponseTime": 1639, + "averageResponseTime": 1638, "impact": 0, "key": Object { "service.name": "opbeans-java", @@ -78,7 +78,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { expectSnapshot(lastItem).toMatchInline(` Object { - "averageResponseTime": 5963775, + "averageResponseTime": 5918288.44444444, "impact": 100, "key": Object { "service.name": "opbeans-dotnet", @@ -87,7 +87,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { "serviceName": "opbeans-dotnet", "transactionName": "GET Orders/Get", "transactionType": "request", - "transactionsPerMinute": 0.633333333333333, + "transactionsPerMinute": 0.6, } `); diff --git a/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/error_rate.snap b/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/error_rate.snap index c4dfaf346d015..878e5775c4ef5 100644 --- a/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/error_rate.snap +++ b/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/error_rate.snap @@ -6,121 +6,241 @@ Array [ "x": 1627973400000, "y": 0, }, + Object { + "x": 1627973430000, + "y": 0, + }, Object { "x": 1627973460000, "y": 0, }, Object { - "x": 1627973520000, + "x": 1627973490000, "y": 0.333333333333333, }, + Object { + "x": 1627973520000, + "y": 0, + }, + Object { + "x": 1627973550000, + "y": 0.125, + }, Object { "x": 1627973580000, - "y": 0.181818181818182, + "y": 0.25, + }, + Object { + "x": 1627973610000, + "y": 0, }, Object { "x": 1627973640000, "y": 0, }, + Object { + "x": 1627973670000, + "y": 0, + }, Object { "x": 1627973700000, "y": 0, }, + Object { + "x": 1627973730000, + "y": 0.333333333333333, + }, Object { "x": 1627973760000, "y": 0.166666666666667, }, + Object { + "x": 1627973790000, + "y": 0, + }, Object { "x": 1627973820000, - "y": 0.181818181818182, + "y": 0.2, + }, + Object { + "x": 1627973850000, + "y": 0, }, Object { "x": 1627973880000, "y": 0, }, + Object { + "x": 1627973910000, + "y": 0, + }, Object { "x": 1627973940000, "y": 0, }, + Object { + "x": 1627973970000, + "y": 0.166666666666667, + }, Object { "x": 1627974000000, - "y": 0.0833333333333333, + "y": 0, + }, + Object { + "x": 1627974030000, + "y": 0, }, Object { "x": 1627974060000, - "y": 0.0769230769230769, + "y": 0.25, + }, + Object { + "x": 1627974090000, + "y": 0.5, }, Object { "x": 1627974120000, "y": 0, }, + Object { + "x": 1627974150000, + "y": 0, + }, Object { "x": 1627974180000, - "y": 0.1, + "y": 0, + }, + Object { + "x": 1627974210000, + "y": 0.2, }, Object { "x": 1627974240000, - "y": 0.153846153846154, + "y": 0.142857142857143, + }, + Object { + "x": 1627974270000, + "y": 0, }, Object { "x": 1627974300000, "y": 0, }, + Object { + "x": 1627974330000, + "y": null, + }, Object { "x": 1627974360000, "y": null, }, + Object { + "x": 1627974390000, + "y": 0, + }, Object { "x": 1627974420000, "y": 0, }, + Object { + "x": 1627974450000, + "y": 0, + }, Object { "x": 1627974480000, "y": 0, }, + Object { + "x": 1627974510000, + "y": 0, + }, Object { "x": 1627974540000, "y": 0, }, + Object { + "x": 1627974570000, + "y": 0, + }, Object { "x": 1627974600000, - "y": 0.125, + "y": 0.4, + }, + Object { + "x": 1627974630000, + "y": 1, }, Object { "x": 1627974660000, - "y": 0.6, + "y": 0.333333333333333, + }, + Object { + "x": 1627974690000, + "y": 0.5, }, Object { "x": 1627974720000, - "y": 0.2, + "y": 0, + }, + Object { + "x": 1627974750000, + "y": 0, }, Object { "x": 1627974780000, "y": 0, }, + Object { + "x": 1627974810000, + "y": 0, + }, Object { "x": 1627974840000, + "y": 0.333333333333333, + }, + Object { + "x": 1627974870000, "y": 0, }, Object { "x": 1627974900000, - "y": 0.0666666666666667, + "y": 0, + }, + Object { + "x": 1627974930000, + "y": 0, }, Object { "x": 1627974960000, "y": 0, }, + Object { + "x": 1627974990000, + "y": 0, + }, Object { "x": 1627975020000, "y": 0, }, + Object { + "x": 1627975050000, + "y": 0, + }, Object { "x": 1627975080000, "y": 0, }, + Object { + "x": 1627975110000, + "y": 0.4, + }, Object { "x": 1627975140000, - "y": 0.181818181818182, + "y": 0, + }, + Object { + "x": 1627975170000, + "y": 0.333333333333333, }, Object { "x": 1627975200000, @@ -132,136 +252,736 @@ Array [ exports[`APM API tests basic apm_8.0.0 Error rate when data is loaded returns the transaction error rate with comparison data has the correct error rate 1`] = ` Array [ Object { - "x": 1627974300000, - "y": 0, + "x": 1627974310000, + "y": null, + }, + Object { + "x": 1627974320000, + "y": null, + }, + Object { + "x": 1627974330000, + "y": null, + }, + Object { + "x": 1627974340000, + "y": null, + }, + Object { + "x": 1627974350000, + "y": null, }, Object { "x": 1627974360000, "y": null, }, + Object { + "x": 1627974370000, + "y": null, + }, + Object { + "x": 1627974380000, + "y": null, + }, + Object { + "x": 1627974390000, + "y": null, + }, + Object { + "x": 1627974400000, + "y": null, + }, + Object { + "x": 1627974410000, + "y": 0, + }, Object { "x": 1627974420000, "y": 0, }, Object { - "x": 1627974480000, + "x": 1627974430000, + "y": null, + }, + Object { + "x": 1627974440000, "y": 0, }, Object { - "x": 1627974540000, + "x": 1627974450000, "y": 0, }, Object { - "x": 1627974600000, - "y": 0.125, + "x": 1627974460000, + "y": 0, }, Object { - "x": 1627974660000, - "y": 0.6, + "x": 1627974470000, + "y": null, }, Object { - "x": 1627974720000, - "y": 0.2, + "x": 1627974480000, + "y": 0, }, Object { - "x": 1627974780000, + "x": 1627974490000, + "y": null, + }, + Object { + "x": 1627974500000, "y": 0, }, Object { - "x": 1627974840000, + "x": 1627974510000, + "y": null, + }, + Object { + "x": 1627974520000, "y": 0, }, Object { - "x": 1627974900000, - "y": 0.0666666666666667, + "x": 1627974530000, + "y": null, }, Object { - "x": 1627974960000, + "x": 1627974540000, "y": 0, }, Object { - "x": 1627975020000, + "x": 1627974550000, "y": 0, }, Object { - "x": 1627975080000, + "x": 1627974560000, + "y": null, + }, + Object { + "x": 1627974570000, "y": 0, }, Object { - "x": 1627975140000, - "y": 0.181818181818182, + "x": 1627974580000, + "y": null, }, Object { - "x": 1627975200000, + "x": 1627974590000, "y": null, }, -] -`; - -exports[`APM API tests basic apm_8.0.0 Error rate when data is loaded returns the transaction error rate with comparison data has the correct error rate 2`] = ` -Array [ Object { - "x": 1627974300000, + "x": 1627974600000, + "y": null, + }, + Object { + "x": 1627974610000, "y": 0, }, Object { - "x": 1627974360000, + "x": 1627974620000, + "y": 1, + }, + Object { + "x": 1627974630000, + "y": null, + }, + Object { + "x": 1627974640000, + "y": null, + }, + Object { + "x": 1627974650000, + "y": 1, + }, + Object { + "x": 1627974660000, "y": 0, }, Object { - "x": 1627974420000, - "y": 0.333333333333333, + "x": 1627974670000, + "y": 0.5, }, Object { - "x": 1627974480000, - "y": 0.181818181818182, + "x": 1627974680000, + "y": null, }, Object { - "x": 1627974540000, + "x": 1627974690000, + "y": 1, + }, + Object { + "x": 1627974700000, + "y": null, + }, + Object { + "x": 1627974710000, "y": 0, }, Object { - "x": 1627974600000, + "x": 1627974720000, + "y": null, + }, + Object { + "x": 1627974730000, "y": 0, }, Object { - "x": 1627974660000, - "y": 0.166666666666667, + "x": 1627974740000, + "y": 0, }, Object { - "x": 1627974720000, - "y": 0.181818181818182, + "x": 1627974750000, + "y": 0, + }, + Object { + "x": 1627974760000, + "y": null, + }, + Object { + "x": 1627974770000, + "y": 0, }, Object { "x": 1627974780000, "y": 0, }, + Object { + "x": 1627974790000, + "y": 0, + }, + Object { + "x": 1627974800000, + "y": null, + }, + Object { + "x": 1627974810000, + "y": 0, + }, + Object { + "x": 1627974820000, + "y": null, + }, + Object { + "x": 1627974830000, + "y": null, + }, Object { "x": 1627974840000, + "y": null, + }, + Object { + "x": 1627974850000, + "y": 0.5, + }, + Object { + "x": 1627974860000, + "y": 0, + }, + Object { + "x": 1627974870000, + "y": 0, + }, + Object { + "x": 1627974880000, + "y": null, + }, + Object { + "x": 1627974890000, "y": 0, }, Object { "x": 1627974900000, - "y": 0.0833333333333333, + "y": 0, }, Object { - "x": 1627974960000, - "y": 0.0769230769230769, + "x": 1627974910000, + "y": 0, }, Object { - "x": 1627975020000, + "x": 1627974920000, + "y": null, + }, + Object { + "x": 1627974930000, "y": 0, }, Object { - "x": 1627975080000, - "y": 0.1, + "x": 1627974940000, + "y": null, }, Object { - "x": 1627975140000, - "y": 0.153846153846154, + "x": 1627974950000, + "y": null, }, Object { - "x": 1627975200000, + "x": 1627974960000, + "y": null, + }, + Object { + "x": 1627974970000, + "y": 0, + }, + Object { + "x": 1627974980000, + "y": null, + }, + Object { + "x": 1627974990000, + "y": 0, + }, + Object { + "x": 1627975000000, + "y": null, + }, + Object { + "x": 1627975010000, + "y": 0, + }, + Object { + "x": 1627975020000, + "y": 0, + }, + Object { + "x": 1627975030000, + "y": 0, + }, + Object { + "x": 1627975040000, + "y": null, + }, + Object { + "x": 1627975050000, + "y": 0, + }, + Object { + "x": 1627975060000, + "y": 0, + }, + Object { + "x": 1627975070000, + "y": 0, + }, + Object { + "x": 1627975080000, + "y": 0, + }, + Object { + "x": 1627975090000, + "y": 0, + }, + Object { + "x": 1627975100000, + "y": 0, + }, + Object { + "x": 1627975110000, + "y": 0.333333333333333, + }, + Object { + "x": 1627975120000, + "y": 0, + }, + Object { + "x": 1627975130000, + "y": 1, + }, + Object { + "x": 1627975140000, + "y": 0, + }, + Object { + "x": 1627975150000, + "y": 0, + }, + Object { + "x": 1627975160000, + "y": null, + }, + Object { + "x": 1627975170000, + "y": 0, + }, + Object { + "x": 1627975180000, + "y": 0.25, + }, + Object { + "x": 1627975190000, + "y": 1, + }, + Object { + "x": 1627975200000, + "y": null, + }, + Object { + "x": 1627975210000, + "y": null, + }, +] +`; + +exports[`APM API tests basic apm_8.0.0 Error rate when data is loaded returns the transaction error rate with comparison data has the correct error rate 2`] = ` +Array [ + Object { + "x": 1627974310000, + "y": null, + }, + Object { + "x": 1627974320000, + "y": 0, + }, + Object { + "x": 1627974330000, + "y": null, + }, + Object { + "x": 1627974340000, + "y": null, + }, + Object { + "x": 1627974350000, + "y": 0, + }, + Object { + "x": 1627974360000, + "y": 0, + }, + Object { + "x": 1627974370000, + "y": null, + }, + Object { + "x": 1627974380000, + "y": null, + }, + Object { + "x": 1627974390000, + "y": 0.5, + }, + Object { + "x": 1627974400000, + "y": null, + }, + Object { + "x": 1627974410000, + "y": 0, + }, + Object { + "x": 1627974420000, + "y": null, + }, + Object { + "x": 1627974430000, + "y": 0, + }, + Object { + "x": 1627974440000, + "y": null, + }, + Object { + "x": 1627974450000, + "y": 0.142857142857143, + }, + Object { + "x": 1627974460000, + "y": 0, + }, + Object { + "x": 1627974470000, + "y": null, + }, + Object { + "x": 1627974480000, + "y": 0.5, + }, + Object { + "x": 1627974490000, + "y": 0, + }, + Object { + "x": 1627974500000, + "y": null, + }, + Object { + "x": 1627974510000, + "y": null, + }, + Object { + "x": 1627974520000, + "y": null, + }, + Object { + "x": 1627974530000, + "y": 0, + }, + Object { + "x": 1627974540000, + "y": null, + }, + Object { + "x": 1627974550000, + "y": 0, + }, + Object { + "x": 1627974560000, + "y": null, + }, + Object { + "x": 1627974570000, + "y": 0, + }, + Object { + "x": 1627974580000, + "y": null, + }, + Object { + "x": 1627974590000, + "y": 0, + }, + Object { + "x": 1627974600000, + "y": 0, + }, + Object { + "x": 1627974610000, + "y": 0, + }, + Object { + "x": 1627974620000, + "y": null, + }, + Object { + "x": 1627974630000, + "y": null, + }, + Object { + "x": 1627974640000, + "y": 0, + }, + Object { + "x": 1627974650000, + "y": 0.5, + }, + Object { + "x": 1627974660000, + "y": 0, + }, + Object { + "x": 1627974670000, + "y": 0.5, + }, + Object { + "x": 1627974680000, + "y": 0, + }, + Object { + "x": 1627974690000, + "y": 0, + }, + Object { + "x": 1627974700000, + "y": 0, + }, + Object { + "x": 1627974710000, + "y": 0, + }, + Object { + "x": 1627974720000, + "y": 0.25, + }, + Object { + "x": 1627974730000, + "y": null, + }, + Object { + "x": 1627974740000, + "y": 0, + }, + Object { + "x": 1627974750000, + "y": 0, + }, + Object { + "x": 1627974760000, + "y": 0, + }, + Object { + "x": 1627974770000, + "y": 0, + }, + Object { + "x": 1627974780000, + "y": 0, + }, + Object { + "x": 1627974790000, + "y": 0, + }, + Object { + "x": 1627974800000, + "y": 0, + }, + Object { + "x": 1627974810000, + "y": 0, + }, + Object { + "x": 1627974820000, + "y": 0, + }, + Object { + "x": 1627974830000, + "y": null, + }, + Object { + "x": 1627974840000, + "y": 0, + }, + Object { + "x": 1627974850000, + "y": 0, + }, + Object { + "x": 1627974860000, + "y": null, + }, + Object { + "x": 1627974870000, + "y": 0.5, + }, + Object { + "x": 1627974880000, + "y": null, + }, + Object { + "x": 1627974890000, + "y": 0, + }, + Object { + "x": 1627974900000, + "y": 0, + }, + Object { + "x": 1627974910000, + "y": 0, + }, + Object { + "x": 1627974920000, + "y": 0, + }, + Object { + "x": 1627974930000, + "y": 0, + }, + Object { + "x": 1627974940000, + "y": 0, + }, + Object { + "x": 1627974950000, + "y": 0, + }, + Object { + "x": 1627974960000, + "y": 0.333333333333333, + }, + Object { + "x": 1627974970000, + "y": 0, + }, + Object { + "x": 1627974980000, + "y": null, + }, + Object { + "x": 1627974990000, + "y": 0, + }, + Object { + "x": 1627975000000, + "y": 1, + }, + Object { + "x": 1627975010000, + "y": null, + }, + Object { + "x": 1627975020000, + "y": 0, + }, + Object { + "x": 1627975030000, + "y": 0, + }, + Object { + "x": 1627975040000, + "y": 0, + }, + Object { + "x": 1627975050000, + "y": 0, + }, + Object { + "x": 1627975060000, + "y": 0, + }, + Object { + "x": 1627975070000, + "y": null, + }, + Object { + "x": 1627975080000, + "y": 0, + }, + Object { + "x": 1627975090000, + "y": 0, + }, + Object { + "x": 1627975100000, + "y": 0, + }, + Object { + "x": 1627975110000, + "y": 0, + }, + Object { + "x": 1627975120000, + "y": 0, + }, + Object { + "x": 1627975130000, + "y": 0.333333333333333, + }, + Object { + "x": 1627975140000, + "y": 0.333333333333333, + }, + Object { + "x": 1627975150000, + "y": 0, + }, + Object { + "x": 1627975160000, + "y": null, + }, + Object { + "x": 1627975170000, + "y": null, + }, + Object { + "x": 1627975180000, + "y": 0, + }, + Object { + "x": 1627975190000, + "y": 0, + }, + Object { + "x": 1627975200000, + "y": 0, + }, + Object { + "x": 1627975210000, "y": null, }, ] diff --git a/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/latency.snap b/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/latency.snap index ff9e52b57aeaa..25b995acb87f1 100644 --- a/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/latency.snap +++ b/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/latency.snap @@ -3,64 +3,196 @@ exports[`APM API tests basic apm_8.0.0 Latency with a basic license when data is loaded time comparison returns some data 1`] = ` Array [ Object { - "x": 1627974300000, - "y": 22799, + "x": 1627974350000, + "y": 32153, }, Object { - "x": 1627974360000, - "y": 3227391, + "x": 1627974390000, + "y": 15341.3333333333, + }, + Object { + "x": 1627974410000, + "y": 15170.5, }, Object { "x": 1627974420000, - "y": 15565.2222222222, + "y": 17329, + }, + Object { + "x": 1627974460000, + "y": 50039, }, Object { "x": 1627974480000, - "y": 54307.5714285714, + "y": 55816.6, + }, + Object { + "x": 1627974490000, + "y": 17533, + }, + Object { + "x": 1627974510000, + "y": 14888, }, Object { "x": 1627974540000, - "y": 16655, + "y": 12191.5, + }, + Object { + "x": 1627974550000, + "y": 20445.5, + }, + Object { + "x": 1627974590000, + "y": 9859, }, Object { "x": 1627974600000, - "y": 9453, + "y": 11796, + }, + Object { + "x": 1627974610000, + "y": 8774.4, + }, + Object { + "x": 1627974620000, + "y": 42225.6666666667, + }, + Object { + "x": 1627974630000, + "y": 16168, + }, + Object { + "x": 1627974640000, + "y": 7851.33333333333, }, Object { "x": 1627974660000, - "y": 31119, + "y": 45852, }, Object { - "x": 1627974720000, - "y": 15282.2, + "x": 1627974700000, + "y": 21823, + }, + Object { + "x": 1627974710000, + "y": 4156, + }, + Object { + "x": 1627974730000, + "y": 14191.5, + }, + Object { + "x": 1627974740000, + "y": 3997, + }, + Object { + "x": 1627974750000, + "y": 21823.75, + }, + Object { + "x": 1627974760000, + "y": 58178.5, + }, + Object { + "x": 1627974770000, + "y": 24291.5, }, Object { "x": 1627974780000, - "y": 18709, + "y": 7527.75, }, Object { "x": 1627974840000, - "y": 12095, + "y": 12028, }, Object { - "x": 1627974900000, - "y": 16291, + "x": 1627974860000, + "y": 6773.8, }, Object { - "x": 1627974960000, - "y": 13444.3333333333, + "x": 1627974870000, + "y": 37030, }, Object { - "x": 1627975020000, - "y": 13241.6666666667, + "x": 1627974890000, + "y": 29564, + }, + Object { + "x": 1627974910000, + "y": 15606, + }, + Object { + "x": 1627974930000, + "y": 11747, + }, + Object { + "x": 1627974940000, + "y": 9425, + }, + Object { + "x": 1627974950000, + "y": 20220, + }, + Object { + "x": 1627975000000, + "y": 12995.5, + }, + Object { + "x": 1627975030000, + "y": 13606, + }, + Object { + "x": 1627975050000, + "y": 22030, + }, + Object { + "x": 1627975060000, + "y": 10819, + }, + Object { + "x": 1627975070000, + "y": 26343, }, Object { "x": 1627975080000, - "y": 25535, + "y": 33080.5, }, Object { - "x": 1627975140000, - "y": 11024.6, + "x": 1627975090000, + "y": 11899, + }, + Object { + "x": 1627975100000, + "y": 5253, + }, + Object { + "x": 1627975110000, + "y": 16502, + }, + Object { + "x": 1627975120000, + "y": 6945.5, + }, + Object { + "x": 1627975130000, + "y": 7244, + }, + Object { + "x": 1627975150000, + "y": 22631.5, + }, + Object { + "x": 1627975180000, + "y": 23489, + }, + Object { + "x": 1627975190000, + "y": 10133.3333333333, + }, + Object { + "x": 1627975210000, + "y": 52108, }, ] `; @@ -68,64 +200,200 @@ Array [ exports[`APM API tests basic apm_8.0.0 Latency with a basic license when data is loaded time comparison returns some data 2`] = ` Array [ Object { - "x": 1627974300000, - "y": 34866.2, + "x": 1627974310000, + "y": 107053.5, }, Object { - "x": 1627974360000, - "y": 104799, + "x": 1627974370000, + "y": 9857, }, Object { - "x": 1627974420000, - "y": 36247, + "x": 1627974380000, + "y": 266341, + }, + Object { + "x": 1627974390000, + "y": 11715.75, + }, + Object { + "x": 1627974410000, + "y": 7805.25, + }, + Object { + "x": 1627974430000, + "y": 15880, + }, + Object { + "x": 1627974460000, + "y": 21836, + }, + Object { + "x": 1627974470000, + "y": 23962, }, Object { "x": 1627974480000, - "y": 22207, + "y": 21352.5, }, Object { - "x": 1627974540000, - "y": 80191, + "x": 1627974490000, + "y": 21639, }, Object { - "x": 1627974600000, - "y": 11520.4545454545, + "x": 1627974530000, + "y": 13970, + }, + Object { + "x": 1627974550000, + "y": 58140, + }, + Object { + "x": 1627974570000, + "y": 9853.75, + }, + Object { + "x": 1627974580000, + "y": 6490, + }, + Object { + "x": 1627974590000, + "y": 18894, + }, + Object { + "x": 1627974610000, + "y": 14125, + }, + Object { + "x": 1627974640000, + "y": 86268.25, }, Object { "x": 1627974660000, - "y": 47031.8888888889, + "y": 14218, + }, + Object { + "x": 1627974670000, + "y": 19127, + }, + Object { + "x": 1627974680000, + "y": 31538, }, Object { "x": 1627974720000, - "y": 30249.6666666667, + "y": 29535, }, Object { - "x": 1627974780000, - "y": 14868.3333333333, + "x": 1627974740000, + "y": 11229, + }, + Object { + "x": 1627974750000, + "y": 23940, + }, + Object { + "x": 1627974760000, + "y": 9262, + }, + Object { + "x": 1627974790000, + "y": 15650, }, Object { "x": 1627974840000, - "y": 17199, + "y": 17656.3333333333, + }, + Object { + "x": 1627974880000, + "y": 8371.5, + }, + Object { + "x": 1627974890000, + "y": 11386.5, }, Object { "x": 1627974900000, - "y": 19837.2222222222, + "y": 28923.75, + }, + Object { + "x": 1627974910000, + "y": 22670, + }, + Object { + "x": 1627974920000, + "y": 13607.6666666667, + }, + Object { + "x": 1627974930000, + "y": 19640, + }, + Object { + "x": 1627974940000, + "y": 20511, }, Object { "x": 1627974960000, - "y": 19397.6666666667, + "y": 34862, + }, + Object { + "x": 1627974990000, + "y": 27929.2, }, Object { "x": 1627975020000, - "y": 22473.6666666667, + "y": 25569, + }, + Object { + "x": 1627975030000, + "y": 6817.33333333333, + }, + Object { + "x": 1627975040000, + "y": 10467.6666666667, + }, + Object { + "x": 1627975060000, + "y": 6754.33333333333, + }, + Object { + "x": 1627975070000, + "y": 22049, }, Object { "x": 1627975080000, - "y": 11362.2, + "y": 15029, + }, + Object { + "x": 1627975090000, + "y": 14744, + }, + Object { + "x": 1627975110000, + "y": 32192.3333333333, + }, + Object { + "x": 1627975130000, + "y": 8321, + }, + Object { + "x": 1627975160000, + "y": 11648, + }, + Object { + "x": 1627975170000, + "y": 13157, + }, + Object { + "x": 1627975190000, + "y": 12855, + }, + Object { + "x": 1627975200000, + "y": 1322026.8, }, Object { - "x": 1627975140000, - "y": 26319, + "x": 1627975210000, + "y": 4650.33333333333, }, ] `; diff --git a/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/transactions_groups_detailed_statistics.snap b/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/transactions_groups_detailed_statistics.snap index 0c9bbb378f74c..e53f3101f4123 100644 --- a/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/transactions_groups_detailed_statistics.snap +++ b/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/transactions_groups_detailed_statistics.snap @@ -4,7 +4,7 @@ exports[`APM API tests basic apm_8.0.0 Transaction groups detailed statistics wh Array [ Object { "x": 1627974300000, - "y": 0, + "y": null, }, Object { "x": 1627974360000, @@ -12,7 +12,7 @@ Array [ }, Object { "x": 1627974420000, - "y": null, + "y": 0, }, Object { "x": 1627974480000, @@ -32,15 +32,15 @@ Array [ }, Object { "x": 1627974720000, - "y": null, + "y": 0, }, Object { "x": 1627974780000, - "y": 0, + "y": null, }, Object { "x": 1627974840000, - "y": null, + "y": 0, }, Object { "x": 1627974900000, @@ -60,7 +60,7 @@ Array [ }, Object { "x": 1627975140000, - "y": null, + "y": 1, }, Object { "x": 1627975200000, @@ -73,15 +73,15 @@ exports[`APM API tests basic apm_8.0.0 Transaction groups detailed statistics wh Array [ Object { "x": 1627974300000, - "y": 0, + "y": null, }, Object { "x": 1627974360000, - "y": null, + "y": 1, }, Object { "x": 1627974420000, - "y": 1, + "y": 0, }, Object { "x": 1627974480000, @@ -97,15 +97,15 @@ Array [ }, Object { "x": 1627974660000, - "y": null, + "y": 0.5, }, Object { "x": 1627974720000, - "y": 0.25, + "y": 0, }, Object { "x": 1627974780000, - "y": null, + "y": 0, }, Object { "x": 1627974840000, @@ -117,7 +117,7 @@ Array [ }, Object { "x": 1627974960000, - "y": 0, + "y": 0.5, }, Object { "x": 1627975020000, @@ -125,15 +125,15 @@ Array [ }, Object { "x": 1627975080000, - "y": 0.5, + "y": 0, }, Object { "x": 1627975140000, - "y": 0.25, + "y": 0.333333333333333, }, Object { "x": 1627975200000, - "y": null, + "y": 0, }, ] `; @@ -142,7 +142,7 @@ exports[`APM API tests basic apm_8.0.0 Transaction groups detailed statistics wh Array [ Object { "x": 1627974300000, - "y": 72303, + "y": null, }, Object { "x": 1627974360000, @@ -150,39 +150,39 @@ Array [ }, Object { "x": 1627974420000, - "y": null, + "y": 172223, }, Object { "x": 1627974480000, - "y": 173055, + "y": 26675.5, }, Object { "x": 1627974540000, - "y": 26687, + "y": 20663.5, }, Object { "x": 1627974600000, - "y": 17867.8, + "y": 6369, }, Object { "x": 1627974660000, - "y": 24319, + "y": 24309, }, Object { "x": 1627974720000, - "y": null, + "y": 15726, }, Object { "x": 1627974780000, - "y": 15743, + "y": null, }, Object { "x": 1627974840000, - "y": null, + "y": 29478, }, Object { "x": 1627974900000, - "y": 31679, + "y": 33777, }, Object { "x": 1627974960000, @@ -194,11 +194,11 @@ Array [ }, Object { "x": 1627975080000, - "y": 14391, + "y": 14366, }, Object { "x": 1627975140000, - "y": null, + "y": 5580358, }, Object { "x": 1627975200000, @@ -211,23 +211,23 @@ exports[`APM API tests basic apm_8.0.0 Transaction groups detailed statistics wh Array [ Object { "x": 1627974300000, - "y": 34047, + "y": null, }, Object { "x": 1627974360000, - "y": null, + "y": 5751298, }, Object { "x": 1627974420000, - "y": 5767167, + "y": 10313.25, }, Object { "x": 1627974480000, - "y": 10335, + "y": 21976, }, Object { "x": 1627974540000, - "y": 118015, + "y": 213145, }, Object { "x": 1627974600000, @@ -235,43 +235,43 @@ Array [ }, Object { "x": 1627974660000, - "y": null, + "y": 2719609.5, }, Object { "x": 1627974720000, - "y": 1371695, + "y": 19326.5, }, Object { "x": 1627974780000, - "y": null, + "y": 35042, }, Object { "x": 1627974840000, - "y": 3769087, + "y": 2820413.5, }, Object { "x": 1627974900000, - "y": 19015, + "y": 21072, }, Object { "x": 1627974960000, - "y": 22356.3333333333, + "y": 33427597, }, Object { "x": 1627975020000, - "y": 28447, + "y": 28324.5, }, Object { "x": 1627975080000, - "y": 33434367, + "y": 11485.6666666667, }, Object { "x": 1627975140000, - "y": 23407, + "y": 32342.6666666667, }, Object { "x": 1627975200000, - "y": null, + "y": 90587.3333333333, }, ] `; @@ -280,7 +280,7 @@ exports[`APM API tests basic apm_8.0.0 Transaction groups detailed statistics wh Array [ Object { "x": 1627974300000, - "y": 2, + "y": 0, }, Object { "x": 1627974360000, @@ -288,19 +288,19 @@ Array [ }, Object { "x": 1627974420000, - "y": 0, + "y": 1, }, Object { "x": 1627974480000, - "y": 1, + "y": 2, }, Object { "x": 1627974540000, - "y": 1, + "y": 4, }, Object { "x": 1627974600000, - "y": 2, + "y": 1, }, Object { "x": 1627974660000, @@ -308,19 +308,19 @@ Array [ }, Object { "x": 1627974720000, - "y": 0, + "y": 1, }, Object { "x": 1627974780000, - "y": 1, + "y": 0, }, Object { "x": 1627974840000, - "y": 0, + "y": 1, }, Object { "x": 1627974900000, - "y": 2, + "y": 1, }, Object { "x": 1627974960000, @@ -336,7 +336,7 @@ Array [ }, Object { "x": 1627975140000, - "y": 0, + "y": 1, }, Object { "x": 1627975200000, @@ -349,23 +349,23 @@ exports[`APM API tests basic apm_8.0.0 Transaction groups detailed statistics wh Array [ Object { "x": 1627974300000, - "y": 1, + "y": 0, }, Object { "x": 1627974360000, - "y": 0, + "y": 1, }, Object { "x": 1627974420000, - "y": 1, + "y": 4, }, Object { "x": 1627974480000, - "y": 2, + "y": 1, }, Object { "x": 1627974540000, - "y": 2, + "y": 1, }, Object { "x": 1627974600000, @@ -373,23 +373,23 @@ Array [ }, Object { "x": 1627974660000, - "y": 0, + "y": 2, }, Object { "x": 1627974720000, - "y": 3, + "y": 2, }, Object { "x": 1627974780000, - "y": 0, + "y": 1, }, Object { "x": 1627974840000, - "y": 2, + "y": 4, }, Object { "x": 1627974900000, - "y": 3, + "y": 4, }, Object { "x": 1627974960000, @@ -397,11 +397,11 @@ Array [ }, Object { "x": 1627975020000, - "y": 1, + "y": 2, }, Object { "x": 1627975080000, - "y": 2, + "y": 3, }, Object { "x": 1627975140000, @@ -409,7 +409,7 @@ Array [ }, Object { "x": 1627975200000, - "y": 0, + "y": 3, }, ] `; @@ -418,23 +418,23 @@ exports[`APM API tests basic apm_8.0.0 Transaction groups detailed statistics wh Array [ Object { "x": 1627973400000, - "y": 34047, + "y": null, }, Object { "x": 1627973460000, - "y": null, + "y": 5751298, }, Object { "x": 1627973520000, - "y": 5767167, + "y": 10313.25, }, Object { "x": 1627973580000, - "y": 10335, + "y": 21976, }, Object { "x": 1627973640000, - "y": 118015, + "y": 213145, }, Object { "x": 1627973700000, @@ -442,43 +442,43 @@ Array [ }, Object { "x": 1627973760000, - "y": null, + "y": 2719609.5, }, Object { "x": 1627973820000, - "y": 1371695, + "y": 19326.5, }, Object { "x": 1627973880000, - "y": null, + "y": 35042, }, Object { "x": 1627973940000, - "y": 3769087, + "y": 2820413.5, }, Object { "x": 1627974000000, - "y": 19015, + "y": 21072, }, Object { "x": 1627974060000, - "y": 22356.3333333333, + "y": 33427597, }, Object { "x": 1627974120000, - "y": 28447, + "y": 28324.5, }, Object { "x": 1627974180000, - "y": 33434367, + "y": 11485.6666666667, }, Object { "x": 1627974240000, - "y": 23407, + "y": 32342.6666666667, }, Object { "x": 1627974300000, - "y": 72303, + "y": 90587.3333333333, }, Object { "x": 1627974360000, @@ -486,39 +486,39 @@ Array [ }, Object { "x": 1627974420000, - "y": null, + "y": 172223, }, Object { "x": 1627974480000, - "y": 173055, + "y": 26675.5, }, Object { "x": 1627974540000, - "y": 26687, + "y": 20663.5, }, Object { "x": 1627974600000, - "y": 17867.8, + "y": 6369, }, Object { "x": 1627974660000, - "y": 24319, + "y": 24309, }, Object { "x": 1627974720000, - "y": null, + "y": 15726, }, Object { "x": 1627974780000, - "y": 15743, + "y": null, }, Object { "x": 1627974840000, - "y": null, + "y": 29478, }, Object { "x": 1627974900000, - "y": 31679, + "y": 33777, }, Object { "x": 1627974960000, @@ -530,11 +530,11 @@ Array [ }, Object { "x": 1627975080000, - "y": 14391, + "y": 14366, }, Object { "x": 1627975140000, - "y": null, + "y": 5580358, }, Object { "x": 1627975200000, @@ -547,23 +547,23 @@ exports[`APM API tests basic apm_8.0.0 Transaction groups detailed statistics wh Array [ Object { "x": 1627973400000, - "y": 1, + "y": 0, }, Object { "x": 1627973460000, - "y": 0, + "y": 1, }, Object { "x": 1627973520000, - "y": 1, + "y": 4, }, Object { "x": 1627973580000, - "y": 2, + "y": 1, }, Object { "x": 1627973640000, - "y": 2, + "y": 1, }, Object { "x": 1627973700000, @@ -571,23 +571,23 @@ Array [ }, Object { "x": 1627973760000, - "y": 0, + "y": 2, }, Object { "x": 1627973820000, - "y": 3, + "y": 2, }, Object { "x": 1627973880000, - "y": 0, + "y": 1, }, Object { "x": 1627973940000, - "y": 2, + "y": 4, }, Object { "x": 1627974000000, - "y": 3, + "y": 4, }, Object { "x": 1627974060000, @@ -595,11 +595,11 @@ Array [ }, Object { "x": 1627974120000, - "y": 1, + "y": 2, }, Object { "x": 1627974180000, - "y": 2, + "y": 3, }, Object { "x": 1627974240000, @@ -607,7 +607,7 @@ Array [ }, Object { "x": 1627974300000, - "y": 2, + "y": 3, }, Object { "x": 1627974360000, @@ -615,19 +615,19 @@ Array [ }, Object { "x": 1627974420000, - "y": 0, + "y": 1, }, Object { "x": 1627974480000, - "y": 1, + "y": 2, }, Object { "x": 1627974540000, - "y": 1, + "y": 4, }, Object { "x": 1627974600000, - "y": 2, + "y": 1, }, Object { "x": 1627974660000, @@ -635,19 +635,19 @@ Array [ }, Object { "x": 1627974720000, - "y": 0, + "y": 1, }, Object { "x": 1627974780000, - "y": 1, + "y": 0, }, Object { "x": 1627974840000, - "y": 0, + "y": 1, }, Object { "x": 1627974900000, - "y": 2, + "y": 1, }, Object { "x": 1627974960000, @@ -663,7 +663,7 @@ Array [ }, Object { "x": 1627975140000, - "y": 0, + "y": 1, }, Object { "x": 1627975200000, @@ -676,15 +676,15 @@ exports[`APM API tests basic apm_8.0.0 Transaction groups detailed statistics wh Array [ Object { "x": 1627973400000, - "y": 0, + "y": null, }, Object { "x": 1627973460000, - "y": null, + "y": 1, }, Object { "x": 1627973520000, - "y": 1, + "y": 0, }, Object { "x": 1627973580000, @@ -700,15 +700,15 @@ Array [ }, Object { "x": 1627973760000, - "y": null, + "y": 0.5, }, Object { "x": 1627973820000, - "y": 0.25, + "y": 0, }, Object { "x": 1627973880000, - "y": null, + "y": 0, }, Object { "x": 1627973940000, @@ -720,7 +720,7 @@ Array [ }, Object { "x": 1627974060000, - "y": 0, + "y": 0.5, }, Object { "x": 1627974120000, @@ -728,11 +728,11 @@ Array [ }, Object { "x": 1627974180000, - "y": 0.5, + "y": 0, }, Object { "x": 1627974240000, - "y": 0.25, + "y": 0.333333333333333, }, Object { "x": 1627974300000, @@ -744,7 +744,7 @@ Array [ }, Object { "x": 1627974420000, - "y": null, + "y": 0, }, Object { "x": 1627974480000, @@ -764,15 +764,15 @@ Array [ }, Object { "x": 1627974720000, - "y": null, + "y": 0, }, Object { "x": 1627974780000, - "y": 0, + "y": null, }, Object { "x": 1627974840000, - "y": null, + "y": 0, }, Object { "x": 1627974900000, @@ -792,7 +792,7 @@ Array [ }, Object { "x": 1627975140000, - "y": null, + "y": 1, }, Object { "x": 1627975200000, @@ -805,23 +805,23 @@ exports[`APM API tests basic apm_8.0.0 Transaction groups detailed statistics wh Array [ Object { "x": 1627973400000, - "y": 34047, + "y": null, }, Object { "x": 1627973460000, - "y": null, + "y": 5751298, }, Object { "x": 1627973520000, - "y": 5767167, + "y": 16108, }, Object { "x": 1627973580000, - "y": 16127, + "y": 21976, }, Object { "x": 1627973640000, - "y": 214015, + "y": 213145, }, Object { "x": 1627973700000, @@ -829,43 +829,43 @@ Array [ }, Object { "x": 1627973760000, - "y": null, + "y": 5430752, }, Object { "x": 1627973820000, - "y": 5439487, + "y": 23439, }, Object { "x": 1627973880000, - "y": null, + "y": 35042, }, Object { "x": 1627973940000, - "y": 5668863, + "y": 5665134, }, Object { "x": 1627974000000, - "y": 32255, + "y": 28130, }, Object { "x": 1627974060000, - "y": 28159, + "y": 66836803, }, Object { "x": 1627974120000, - "y": 44287, + "y": 44099, }, Object { "x": 1627974180000, - "y": 66846719, + "y": 21999, }, Object { "x": 1627974240000, - "y": 42751, + "y": 42534, }, Object { "x": 1627974300000, - "y": 140287, + "y": 139426, }, Object { "x": 1627974360000, @@ -873,39 +873,39 @@ Array [ }, Object { "x": 1627974420000, - "y": null, + "y": 172223, }, Object { "x": 1627974480000, - "y": 173055, + "y": 28915, }, Object { "x": 1627974540000, - "y": 28927, + "y": 39550, }, Object { "x": 1627974600000, - "y": 39679, + "y": 6369, }, Object { "x": 1627974660000, - "y": 24319, + "y": 24309, }, Object { "x": 1627974720000, - "y": null, + "y": 15726, }, Object { "x": 1627974780000, - "y": 15743, + "y": null, }, Object { "x": 1627974840000, - "y": null, + "y": 29478, }, Object { "x": 1627974900000, - "y": 33791, + "y": 33777, }, Object { "x": 1627974960000, @@ -917,11 +917,11 @@ Array [ }, Object { "x": 1627975080000, - "y": 23167, + "y": 23165, }, Object { "x": 1627975140000, - "y": null, + "y": 5580358, }, Object { "x": 1627975200000, diff --git a/x-pack/test/apm_api_integration/tests/transactions/error_rate.ts b/x-pack/test/apm_api_integration/tests/transactions/error_rate.ts index bb6b465c9927c..c302d87d92ef9 100644 --- a/x-pack/test/apm_api_integration/tests/transactions/error_rate.ts +++ b/x-pack/test/apm_api_integration/tests/transactions/error_rate.ts @@ -116,13 +116,13 @@ export default function ApiTest({ getService }: FtrProviderContext) { it('has the correct number of buckets', () => { expectSnapshot(errorRateResponse.currentPeriod.transactionErrorRate.length).toMatchInline( - `31` + `61` ); }); it('has the correct calculation for average', () => { expectSnapshot(errorRateResponse.currentPeriod.average).toMatchInline( - `0.0848214285714286` + `0.092511013215859` ); }); @@ -176,12 +176,12 @@ export default function ApiTest({ getService }: FtrProviderContext) { new Date( first(errorRateResponse.currentPeriod.transactionErrorRate)?.x ?? NaN ).toISOString() - ).toMatchInline(`"2021-08-03T07:05:00.000Z"`); + ).toMatchInline(`"2021-08-03T07:05:10.000Z"`); expectSnapshot( new Date( first(errorRateResponse.previousPeriod.transactionErrorRate)?.x ?? NaN ).toISOString() - ).toMatchInline(`"2021-08-03T07:05:00.000Z"`); + ).toMatchInline(`"2021-08-03T07:05:10.000Z"`); }); it('has the correct end date', () => { @@ -189,29 +189,29 @@ export default function ApiTest({ getService }: FtrProviderContext) { new Date( last(errorRateResponse.currentPeriod.transactionErrorRate)?.x ?? NaN ).toISOString() - ).toMatchInline(`"2021-08-03T07:20:00.000Z"`); + ).toMatchInline(`"2021-08-03T07:20:10.000Z"`); expectSnapshot( new Date( last(errorRateResponse.previousPeriod.transactionErrorRate)?.x ?? NaN ).toISOString() - ).toMatchInline(`"2021-08-03T07:20:00.000Z"`); + ).toMatchInline(`"2021-08-03T07:20:10.000Z"`); }); it('has the correct number of buckets', () => { expectSnapshot(errorRateResponse.currentPeriod.transactionErrorRate.length).toMatchInline( - `16` + `91` ); expectSnapshot( errorRateResponse.previousPeriod.transactionErrorRate.length - ).toMatchInline(`16`); + ).toMatchInline(`91`); }); it('has the correct calculation for average', () => { expectSnapshot(errorRateResponse.currentPeriod.average).toMatchInline( - `0.0792079207920792` + `0.102040816326531` ); expectSnapshot(errorRateResponse.previousPeriod.average).toMatchInline( - `0.0894308943089431` + `0.0852713178294574` ); }); diff --git a/x-pack/test/apm_api_integration/tests/transactions/latency.ts b/x-pack/test/apm_api_integration/tests/transactions/latency.ts index 7fa2c76dd54d8..c39ca76036e33 100644 --- a/x-pack/test/apm_api_integration/tests/transactions/latency.ts +++ b/x-pack/test/apm_api_integration/tests/transactions/latency.ts @@ -112,7 +112,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { expect(response.status).to.be(200); const latencyChartReturn = response.body as LatencyChartReturnType; expect(latencyChartReturn.currentPeriod.overallAvgDuration).not.to.be(null); - expect(latencyChartReturn.currentPeriod.latencyTimeseries.length).to.be.eql(31); + expect(latencyChartReturn.currentPeriod.latencyTimeseries.length).to.be.eql(61); }); }); @@ -137,7 +137,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { expect(response.status).to.be(200); const latencyChartReturn = response.body as LatencyChartReturnType; expect(latencyChartReturn.currentPeriod.overallAvgDuration).not.to.be(null); - expect(latencyChartReturn.currentPeriod.latencyTimeseries.length).to.be.eql(31); + expect(latencyChartReturn.currentPeriod.latencyTimeseries.length).to.be.eql(61); }); }); @@ -164,10 +164,10 @@ export default function ApiTest({ getService }: FtrProviderContext) { expect(latencyChartReturn.currentPeriod.overallAvgDuration).not.to.be(null); expectSnapshot(latencyChartReturn.currentPeriod.overallAvgDuration).toMatchInline( - `53906.6603773585` + `53147.5747663551` ); - expect(latencyChartReturn.currentPeriod.latencyTimeseries.length).to.be.eql(31); + expect(latencyChartReturn.currentPeriod.latencyTimeseries.length).to.be.eql(61); }); }); diff --git a/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_detailed_statistics.ts b/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_detailed_statistics.ts index 3a97195ec587f..b71079b881206 100644 --- a/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_detailed_statistics.ts +++ b/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_detailed_statistics.ts @@ -108,7 +108,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { expect(removeEmptyCoordinates(errorRate).length).to.be.greaterThan(0); expectSnapshot(errorRate).toMatch(); - expectSnapshot(roundNumber(impact)).toMatchInline(`"98.49"`); + expectSnapshot(roundNumber(impact)).toMatchInline(`"98.56"`); }); it('returns the correct data for latency aggregation 99th percentile', async () => { @@ -290,8 +290,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { const currentPeriodFirstItem = currentPeriodItems[0]; const previousPeriodFirstItem = previousPeriodItems[0]; - expectSnapshot(roundNumber(currentPeriodFirstItem.impact)).toMatchInline(`"59.04"`); - expectSnapshot(roundNumber(previousPeriodFirstItem.impact)).toMatchInline(`"99.05"`); + expectSnapshot(roundNumber(currentPeriodFirstItem.impact)).toMatchInline(`"91.95"`); + expectSnapshot(roundNumber(previousPeriodFirstItem.impact)).toMatchInline(`"99.04"`); }); }); } diff --git a/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_main_statistics.ts b/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_main_statistics.ts index d0672946ad019..b659618499d35 100644 --- a/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_main_statistics.ts +++ b/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_main_statistics.ts @@ -95,18 +95,18 @@ export default function ApiTest({ getService }: FtrProviderContext) { ); expectSnapshot(impacts).toMatchInline(` Array [ - 98.4867713293593, - 0.0910992862692518, - 0.217172932411727, - 0.197499651612207, - 0.117088451625813, - 0.203168003440319, - 0.0956764857936742, - 0.353287132108131, - 0.043688393280619, - 0.0754467823979389, - 0.115710953190738, - 0.00339059851027124, + 98.5616469236242, + 0.088146942911198, + 0.208815627929649, + 0.189536811278812, + 0.110293217369968, + 0.191163512620049, + 0.0899742946381385, + 0.341831477754056, + 0.0411384477014597, + 0.0652338973356331, + 0.109023796562458, + 0.00319505027438735, ] `); @@ -117,9 +117,9 @@ export default function ApiTest({ getService }: FtrProviderContext) { expectSnapshot(pick(firstItem, 'name', 'latency', 'throughput', 'errorRate', 'impact')) .toMatchInline(` Object { - "errorRate": 0.08, - "impact": 98.4867713293593, - "latency": 1816019.48, + "errorRate": 0.1, + "impact": 98.5616469236242, + "latency": 1925546.54, "name": "DispatcherServlet#doGet", "throughput": 1.66666666666667, } @@ -146,7 +146,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { const transctionsGroupsPrimaryStatistics = response.body as TransactionsGroupsPrimaryStatistics; const firstItem = transctionsGroupsPrimaryStatistics.transactionGroups[0]; - expectSnapshot(firstItem.latency).toMatchInline(`66846719`); + expectSnapshot(firstItem.latency).toMatchInline(`66836803`); }); } ); From 917d11dcf77a72aaa6d897a40047a1b1a23922d6 Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Wed, 15 Sep 2021 19:13:46 -0400 Subject: [PATCH 03/26] fixing tests --- .../observability_overview.ts | 10 +- .../services/__snapshots__/throughput.snap | 231 +++++++++--------- ...ansactions_groups_detailed_statistics.snap | 96 ++++---- 3 files changed, 168 insertions(+), 169 deletions(-) diff --git a/x-pack/test/apm_api_integration/tests/observability_overview/observability_overview.ts b/x-pack/test/apm_api_integration/tests/observability_overview/observability_overview.ts index da60689f559a2..30b8b990a7a3a 100644 --- a/x-pack/test/apm_api_integration/tests/observability_overview/observability_overview.ts +++ b/x-pack/test/apm_api_integration/tests/observability_overview/observability_overview.ts @@ -68,23 +68,23 @@ export default function ApiTest({ getService }: FtrProviderContext) { Array [ Object { "x": "2021-08-03T06:50:00.000Z", - "y": 51, + "y": 1.7, }, Object { "x": "2021-08-03T06:51:00.000Z", - "y": 62, + "y": 2.06666666666667, }, Object { "x": "2021-08-03T06:52:00.000Z", - "y": 56, + "y": 1.86666666666667, }, Object { "x": "2021-08-03T06:53:00.000Z", - "y": 50, + "y": 1.66666666666667, }, Object { "x": "2021-08-03T06:54:00.000Z", - "y": 77, + "y": 2.56666666666667, }, ] `); diff --git a/x-pack/test/apm_api_integration/tests/services/__snapshots__/throughput.snap b/x-pack/test/apm_api_integration/tests/services/__snapshots__/throughput.snap index 28fd88bb6d910..942f5c22cb2c6 100644 --- a/x-pack/test/apm_api_integration/tests/services/__snapshots__/throughput.snap +++ b/x-pack/test/apm_api_integration/tests/services/__snapshots__/throughput.snap @@ -45,11 +45,11 @@ Object { }, Object { "x": 1627974410000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974420000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974430000, @@ -57,15 +57,15 @@ Object { }, Object { "x": 1627974440000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974450000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974460000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974470000, @@ -73,7 +73,7 @@ Object { }, Object { "x": 1627974480000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974490000, @@ -81,7 +81,7 @@ Object { }, Object { "x": 1627974500000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974510000, @@ -89,7 +89,7 @@ Object { }, Object { "x": 1627974520000, - "y": 0.3, + "y": 0.2, }, Object { "x": 1627974530000, @@ -97,11 +97,11 @@ Object { }, Object { "x": 1627974540000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974550000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974560000, @@ -109,7 +109,7 @@ Object { }, Object { "x": 1627974570000, - "y": 0.3, + "y": 0.2, }, Object { "x": 1627974580000, @@ -125,11 +125,11 @@ Object { }, Object { "x": 1627974610000, - "y": 0.3, + "y": 0.2, }, Object { "x": 1627974620000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974630000, @@ -141,15 +141,15 @@ Object { }, Object { "x": 1627974650000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974660000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974670000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974680000, @@ -157,7 +157,7 @@ Object { }, Object { "x": 1627974690000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974700000, @@ -165,7 +165,7 @@ Object { }, Object { "x": 1627974710000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974720000, @@ -173,15 +173,15 @@ Object { }, Object { "x": 1627974730000, - "y": 0.3, + "y": 0.2, }, Object { "x": 1627974740000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974750000, - "y": 0.3, + "y": 0.2, }, Object { "x": 1627974760000, @@ -189,15 +189,15 @@ Object { }, Object { "x": 1627974770000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974780000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974790000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974800000, @@ -205,7 +205,7 @@ Object { }, Object { "x": 1627974810000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974820000, @@ -221,15 +221,15 @@ Object { }, Object { "x": 1627974850000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974860000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974870000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974880000, @@ -237,15 +237,15 @@ Object { }, Object { "x": 1627974890000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974900000, - "y": 0.5, + "y": 0.333333333333333, }, Object { "x": 1627974910000, - "y": 0.4, + "y": 0.266666666666667, }, Object { "x": 1627974920000, @@ -253,7 +253,7 @@ Object { }, Object { "x": 1627974930000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974940000, @@ -269,7 +269,7 @@ Object { }, Object { "x": 1627974970000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974980000, @@ -277,7 +277,7 @@ Object { }, Object { "x": 1627974990000, - "y": 0.3, + "y": 0.2, }, Object { "x": 1627975000000, @@ -285,15 +285,15 @@ Object { }, Object { "x": 1627975010000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627975020000, - "y": 0.3, + "y": 0.2, }, Object { "x": 1627975030000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627975040000, @@ -301,47 +301,47 @@ Object { }, Object { "x": 1627975050000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627975060000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627975070000, - "y": 0.4, + "y": 0.266666666666667, }, Object { "x": 1627975080000, - "y": 0.3, + "y": 0.2, }, Object { "x": 1627975090000, - "y": 0.3, + "y": 0.2, }, Object { "x": 1627975100000, - "y": 0.3, + "y": 0.2, }, Object { "x": 1627975110000, - "y": 0.3, + "y": 0.2, }, Object { "x": 1627975120000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627975130000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627975140000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627975150000, - "y": 0.3, + "y": 0.2, }, Object { "x": 1627975160000, @@ -349,15 +349,15 @@ Object { }, Object { "x": 1627975170000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627975180000, - "y": 0.4, + "y": 0.266666666666667, }, Object { "x": 1627975190000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627975200000, @@ -375,7 +375,7 @@ Object { }, Object { "x": 1627974320000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974330000, @@ -387,11 +387,11 @@ Object { }, Object { "x": 1627974350000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974360000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974370000, @@ -403,7 +403,7 @@ Object { }, Object { "x": 1627974390000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974400000, @@ -411,7 +411,7 @@ Object { }, Object { "x": 1627974410000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974420000, @@ -419,7 +419,7 @@ Object { }, Object { "x": 1627974430000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974440000, @@ -427,11 +427,11 @@ Object { }, Object { "x": 1627974450000, - "y": 0.7, + "y": 0.466666666666667, }, Object { "x": 1627974460000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974470000, @@ -439,11 +439,11 @@ Object { }, Object { "x": 1627974480000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974490000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974500000, @@ -459,7 +459,7 @@ Object { }, Object { "x": 1627974530000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974540000, @@ -467,7 +467,7 @@ Object { }, Object { "x": 1627974550000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974560000, @@ -475,7 +475,7 @@ Object { }, Object { "x": 1627974570000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974580000, @@ -483,15 +483,15 @@ Object { }, Object { "x": 1627974590000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974600000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974610000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974620000, @@ -503,39 +503,39 @@ Object { }, Object { "x": 1627974640000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974650000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974660000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974670000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974680000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974690000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974700000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974710000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974720000, - "y": 0.4, + "y": 0.266666666666667, }, Object { "x": 1627974730000, @@ -543,39 +543,39 @@ Object { }, Object { "x": 1627974740000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974750000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974760000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974770000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974780000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974790000, - "y": 0.5, + "y": 0.333333333333333, }, Object { "x": 1627974800000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974810000, - "y": 0.4, + "y": 0.266666666666667, }, Object { "x": 1627974820000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974830000, @@ -583,11 +583,11 @@ Object { }, Object { "x": 1627974840000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974850000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974860000, @@ -595,7 +595,7 @@ Object { }, Object { "x": 1627974870000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974880000, @@ -603,39 +603,39 @@ Object { }, Object { "x": 1627974890000, - "y": 0.4, + "y": 0.266666666666667, }, Object { "x": 1627974900000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974910000, - "y": 0.4, + "y": 0.266666666666667, }, Object { "x": 1627974920000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974930000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974940000, - "y": 0.5, + "y": 0.333333333333333, }, Object { "x": 1627974950000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627974960000, - "y": 0.3, + "y": 0.2, }, Object { "x": 1627974970000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627974980000, @@ -643,11 +643,11 @@ Object { }, Object { "x": 1627974990000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627975000000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627975010000, @@ -655,23 +655,23 @@ Object { }, Object { "x": 1627975020000, - "y": 0.3, + "y": 0.2, }, Object { "x": 1627975030000, - "y": 0.3, + "y": 0.2, }, Object { "x": 1627975040000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627975050000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627975060000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627975070000, @@ -679,35 +679,35 @@ Object { }, Object { "x": 1627975080000, - "y": 0.4, + "y": 0.266666666666667, }, Object { "x": 1627975090000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627975100000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627975110000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627975120000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627975130000, - "y": 0.3, + "y": 0.2, }, Object { "x": 1627975140000, - "y": 0.3, + "y": 0.2, }, Object { "x": 1627975150000, - "y": 0.4, + "y": 0.266666666666667, }, Object { "x": 1627975160000, @@ -719,21 +719,20 @@ Object { }, Object { "x": 1627975180000, - "y": 0.2, + "y": 0.133333333333333, }, Object { "x": 1627975190000, - "y": 0.1, + "y": 0.0666666666666667, }, Object { "x": 1627975200000, - "y": 0.5, + "y": 0.333333333333333, }, Object { "x": 1627975210000, "y": 0, }, ], - "throughputUnit": "second", } `; diff --git a/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/transactions_groups_detailed_statistics.snap b/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/transactions_groups_detailed_statistics.snap index e53f3101f4123..724a0997a31d6 100644 --- a/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/transactions_groups_detailed_statistics.snap +++ b/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/transactions_groups_detailed_statistics.snap @@ -288,27 +288,27 @@ Array [ }, Object { "x": 1627974420000, - "y": 1, + "y": 0.0666666666666667, }, Object { "x": 1627974480000, - "y": 2, + "y": 0.133333333333333, }, Object { "x": 1627974540000, - "y": 4, + "y": 0.266666666666667, }, Object { "x": 1627974600000, - "y": 1, + "y": 0.0666666666666667, }, Object { "x": 1627974660000, - "y": 1, + "y": 0.0666666666666667, }, Object { "x": 1627974720000, - "y": 1, + "y": 0.0666666666666667, }, Object { "x": 1627974780000, @@ -316,11 +316,11 @@ Array [ }, Object { "x": 1627974840000, - "y": 1, + "y": 0.0666666666666667, }, Object { "x": 1627974900000, - "y": 1, + "y": 0.0666666666666667, }, Object { "x": 1627974960000, @@ -332,11 +332,11 @@ Array [ }, Object { "x": 1627975080000, - "y": 4, + "y": 0.266666666666667, }, Object { "x": 1627975140000, - "y": 1, + "y": 0.0666666666666667, }, Object { "x": 1627975200000, @@ -353,19 +353,19 @@ Array [ }, Object { "x": 1627974360000, - "y": 1, + "y": 0.0666666666666667, }, Object { "x": 1627974420000, - "y": 4, + "y": 0.266666666666667, }, Object { "x": 1627974480000, - "y": 1, + "y": 0.0666666666666667, }, Object { "x": 1627974540000, - "y": 1, + "y": 0.0666666666666667, }, Object { "x": 1627974600000, @@ -373,43 +373,43 @@ Array [ }, Object { "x": 1627974660000, - "y": 2, + "y": 0.133333333333333, }, Object { "x": 1627974720000, - "y": 2, + "y": 0.133333333333333, }, Object { "x": 1627974780000, - "y": 1, + "y": 0.0666666666666667, }, Object { "x": 1627974840000, - "y": 4, + "y": 0.266666666666667, }, Object { "x": 1627974900000, - "y": 4, + "y": 0.266666666666667, }, Object { "x": 1627974960000, - "y": 2, + "y": 0.133333333333333, }, Object { "x": 1627975020000, - "y": 2, + "y": 0.133333333333333, }, Object { "x": 1627975080000, - "y": 3, + "y": 0.2, }, Object { "x": 1627975140000, - "y": 3, + "y": 0.2, }, Object { "x": 1627975200000, - "y": 3, + "y": 0.2, }, ] `; @@ -551,19 +551,19 @@ Array [ }, Object { "x": 1627973460000, - "y": 1, + "y": 0.0333333333333333, }, Object { "x": 1627973520000, - "y": 4, + "y": 0.133333333333333, }, Object { "x": 1627973580000, - "y": 1, + "y": 0.0333333333333333, }, Object { "x": 1627973640000, - "y": 1, + "y": 0.0333333333333333, }, Object { "x": 1627973700000, @@ -571,43 +571,43 @@ Array [ }, Object { "x": 1627973760000, - "y": 2, + "y": 0.0666666666666667, }, Object { "x": 1627973820000, - "y": 2, + "y": 0.0666666666666667, }, Object { "x": 1627973880000, - "y": 1, + "y": 0.0333333333333333, }, Object { "x": 1627973940000, - "y": 4, + "y": 0.133333333333333, }, Object { "x": 1627974000000, - "y": 4, + "y": 0.133333333333333, }, Object { "x": 1627974060000, - "y": 2, + "y": 0.0666666666666667, }, Object { "x": 1627974120000, - "y": 2, + "y": 0.0666666666666667, }, Object { "x": 1627974180000, - "y": 3, + "y": 0.1, }, Object { "x": 1627974240000, - "y": 3, + "y": 0.1, }, Object { "x": 1627974300000, - "y": 3, + "y": 0.1, }, Object { "x": 1627974360000, @@ -615,27 +615,27 @@ Array [ }, Object { "x": 1627974420000, - "y": 1, + "y": 0.0333333333333333, }, Object { "x": 1627974480000, - "y": 2, + "y": 0.0666666666666667, }, Object { "x": 1627974540000, - "y": 4, + "y": 0.133333333333333, }, Object { "x": 1627974600000, - "y": 1, + "y": 0.0333333333333333, }, Object { "x": 1627974660000, - "y": 1, + "y": 0.0333333333333333, }, Object { "x": 1627974720000, - "y": 1, + "y": 0.0333333333333333, }, Object { "x": 1627974780000, @@ -643,11 +643,11 @@ Array [ }, Object { "x": 1627974840000, - "y": 1, + "y": 0.0333333333333333, }, Object { "x": 1627974900000, - "y": 1, + "y": 0.0333333333333333, }, Object { "x": 1627974960000, @@ -659,11 +659,11 @@ Array [ }, Object { "x": 1627975080000, - "y": 4, + "y": 0.133333333333333, }, Object { "x": 1627975140000, - "y": 1, + "y": 0.0333333333333333, }, Object { "x": 1627975200000, From 8074ded34820e18ed4871435d1d5da7fd79fc560 Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Thu, 16 Sep 2021 09:10:17 -0400 Subject: [PATCH 04/26] putting back some code --- .../service_overview_throughput_chart.tsx | 33 +++++++++++++++++-- x-pack/plugins/apm/server/routes/services.ts | 1 + .../services/__snapshots__/throughput.snap | 1 + 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx index 00aad114c9452..761db88205f6b 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx @@ -5,15 +5,21 @@ * 2.0. */ -import { EuiPanel, EuiTitle, EuiFlexItem, EuiFlexGroup } from '@elastic/eui'; +import { + EuiPanel, + EuiTitle, + EuiIconTip, + EuiFlexItem, + EuiFlexGroup, +} from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React from 'react'; +import { asTransactionRate } from '../../../../../observability/common/utils/formatters'; import { useApmServiceContext } from '../../../context/apm_service/use_apm_service_context'; import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { useFetcher } from '../../../hooks/use_fetcher'; import { useTheme } from '../../../hooks/use_theme'; import { TimeseriesChart } from '../../shared/charts/timeseries_chart'; -import { asTransactionRate } from '../../../../common/utils/formatters'; import { getComparisonChartTheme, getTimeRangeComparison, @@ -117,9 +123,32 @@ export function ServiceOverviewThroughputChart({ 'xpack.apm.serviceOverview.throughtputChartTitle', { defaultMessage: 'Throughput' } )} + {data.throughputUnit === 'second' + ? i18n.translate( + 'xpack.apm.serviceOverview.throughtputPerSecondChartTitle', + { defaultMessage: ' (per second)' } + ) + : ''} + + + + Date: Thu, 16 Sep 2021 15:22:43 -0400 Subject: [PATCH 05/26] fixing import path --- .../app/service_overview/service_overview_throughput_chart.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx index 761db88205f6b..629d4661dbdbc 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx @@ -14,7 +14,7 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React from 'react'; -import { asTransactionRate } from '../../../../../observability/common/utils/formatters'; +import { asTransactionRate } from '../../../../common/utils/formatters'; import { useApmServiceContext } from '../../../context/apm_service/use_apm_service_context'; import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { useFetcher } from '../../../hooks/use_fetcher'; From 29d267dd77d578577ac19920a9f137e08b19471f Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Tue, 21 Sep 2021 14:11:39 -0400 Subject: [PATCH 06/26] addressing pr changes --- .../apm/common/utils/formatters/duration.ts | 12 +- .../service_overview_throughput_chart.tsx | 4 +- .../connections/get_connection_stats/index.ts | 5 +- .../lib/helpers/calculate_throughput.ts | 33 ++- ...e_transaction_group_detailed_statistics.ts | 7 +- ...service_transaction_detailed_statistics.ts | 7 +- .../apm/server/lib/services/get_throughput.ts | 15 +- x-pack/plugins/apm/server/routes/services.ts | 18 +- .../services/__snapshots__/throughput.snap | 232 +++++++++--------- .../tests/services/throughput.ts | 42 +++- ...ansactions_groups_detailed_statistics.snap | 96 ++++---- 11 files changed, 272 insertions(+), 199 deletions(-) diff --git a/x-pack/plugins/apm/common/utils/formatters/duration.ts b/x-pack/plugins/apm/common/utils/formatters/duration.ts index bc4d58831ff35..00c485d926884 100644 --- a/x-pack/plugins/apm/common/utils/formatters/duration.ts +++ b/x-pack/plugins/apm/common/utils/formatters/duration.ts @@ -9,7 +9,12 @@ import { i18n } from '@kbn/i18n'; import moment from 'moment'; import { memoize } from 'lodash'; import { NOT_AVAILABLE_LABEL } from '../../../common/i18n'; -import { asDecimalOrInteger, asInteger, asDecimal } from './formatters'; +import { + asDecimalOrInteger, + asInteger, + asDecimal, + asPreciseDecimal, +} from './formatters'; import { TimeUnit } from './datetime'; import { Maybe } from '../../../typings/common'; import { isFiniteNumber } from '../is_finite_number'; @@ -185,7 +190,10 @@ export function asTransactionRate(value: Maybe) { export function asExactTransactionRate(value: number, unit: ThroughputUnit) { return i18n.translate('xpack.apm.exactTransactionRateLabel', { defaultMessage: `{value} { unit, select, minute {tpm} other {tps} }`, - values: { value: asDecimalOrInteger(value), unit }, + values: { + value: value >= 1 ? asDecimalOrInteger(value) : asPreciseDecimal(value), + unit, + }, }); } diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx index 629d4661dbdbc..718d6878c7c99 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx @@ -14,7 +14,7 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React from 'react'; -import { asTransactionRate } from '../../../../common/utils/formatters'; +import { asExactTransactionRate } from '../../../../common/utils/formatters'; import { useApmServiceContext } from '../../../context/apm_service/use_apm_service_context'; import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { useFetcher } from '../../../hooks/use_fetcher'; @@ -157,7 +157,7 @@ export function ServiceOverviewThroughputChart({ showAnnotations={false} fetchStatus={status} timeseries={timeseries} - yLabelFormat={asTransactionRate} + yLabelFormat={(y) => asExactTransactionRate(y, data.throughputUnit)} customTheme={comparisonChartTheme} /> diff --git a/x-pack/plugins/apm/server/lib/connections/get_connection_stats/index.ts b/x-pack/plugins/apm/server/lib/connections/get_connection_stats/index.ts index 03b94defda6dd..9080a8d76904d 100644 --- a/x-pack/plugins/apm/server/lib/connections/get_connection_stats/index.ts +++ b/x-pack/plugins/apm/server/lib/connections/get_connection_stats/index.ts @@ -131,10 +131,7 @@ export function getConnectionStats({ : null, timeseries: mergedStats.timeseries.map((point) => ({ x: point.x, - y: - point.count > 0 - ? calculateThroughput({ start, end, value: point.count }) - : null, + y: point.count, // sparklines only shows trend (no axis) })), }, errorRate: { diff --git a/x-pack/plugins/apm/server/lib/helpers/calculate_throughput.ts b/x-pack/plugins/apm/server/lib/helpers/calculate_throughput.ts index 1b9e1b56830af..1cffceac74b4d 100644 --- a/x-pack/plugins/apm/server/lib/helpers/calculate_throughput.ts +++ b/x-pack/plugins/apm/server/lib/helpers/calculate_throughput.ts @@ -7,13 +7,40 @@ import { SetupTimeRange } from './setup_request'; +function getThroughputValue({ + durationAsSeconds, + unit, + value, +}: { + durationAsSeconds: number; + unit: ThroughputUnit; + value: number; +}) { + const duration = + unit === 'minute' ? durationAsSeconds / 60 : durationAsSeconds; + return value / duration; +} + export function calculateThroughput({ start, end, value, -}: SetupTimeRange & { value: number }) { - const durationAsMinutes = (end - start) / 1000 / 60; - return value / durationAsMinutes; + unit = 'minute', +}: SetupTimeRange & { value: number; unit?: ThroughputUnit }) { + const durationAsSeconds = (end - start) / 1000; + return getThroughputValue({ durationAsSeconds, unit, value }); +} + +export function calculateThroughputWithInterval({ + durationAsSeconds, + value, + unit = 'minute', +}: { + durationAsSeconds: number; + value: number; + unit?: ThroughputUnit; +}) { + return getThroughputValue({ durationAsSeconds, unit, value }); } export type ThroughputUnit = 'minute' | 'second'; diff --git a/x-pack/plugins/apm/server/lib/services/get_service_transaction_group_detailed_statistics.ts b/x-pack/plugins/apm/server/lib/services/get_service_transaction_group_detailed_statistics.ts index cdbb258f572da..b58c90b806a5e 100644 --- a/x-pack/plugins/apm/server/lib/services/get_service_transaction_group_detailed_statistics.ts +++ b/x-pack/plugins/apm/server/lib/services/get_service_transaction_group_detailed_statistics.ts @@ -6,6 +6,7 @@ */ import { keyBy } from 'lodash'; +import { kqlQuery, rangeQuery } from '../../../../observability/server'; import { EVENT_OUTCOME, SERVICE_NAME, @@ -14,9 +15,8 @@ import { } from '../../../common/elasticsearch_fieldnames'; import { EventOutcome } from '../../../common/event_outcome'; import { LatencyAggregationType } from '../../../common/latency_aggregation_types'; -import { offsetPreviousPeriodCoordinates } from '../../../common/utils/offset_previous_period_coordinate'; -import { kqlQuery, rangeQuery } from '../../../../observability/server'; import { environmentQuery } from '../../../common/utils/environment_query'; +import { offsetPreviousPeriodCoordinates } from '../../../common/utils/offset_previous_period_coordinate'; import { Coordinate } from '../../../typings/timeseries'; import { getDocumentTypeFilterForAggregatedTransactions, @@ -30,7 +30,6 @@ import { } from '../helpers/latency_aggregation_type'; import { Setup, SetupTimeRange } from '../helpers/setup_request'; import { calculateFailedTransactionRate } from '../helpers/transaction_error_rate'; -import { calculateThroughput } from '../helpers/calculate_throughput'; export async function getServiceTransactionGroupDetailedStatistics({ environment, @@ -156,7 +155,7 @@ export async function getServiceTransactionGroupDetailedStatistics({ })); const throughput = bucket.timeseries.buckets.map((timeseriesBucket) => ({ x: timeseriesBucket.key, - y: calculateThroughput({ start, end, value: timeseriesBucket.doc_count }), + y: timeseriesBucket.doc_count, // sparklines only shows trend (no axis) })); const errorRate = bucket.timeseries.buckets.map((timeseriesBucket) => ({ x: timeseriesBucket.key, diff --git a/x-pack/plugins/apm/server/lib/services/get_services_detailed_statistics/get_service_transaction_detailed_statistics.ts b/x-pack/plugins/apm/server/lib/services/get_services_detailed_statistics/get_service_transaction_detailed_statistics.ts index 4fb68fdd3f562..f9c962727edc5 100644 --- a/x-pack/plugins/apm/server/lib/services/get_services_detailed_statistics/get_service_transaction_detailed_statistics.ts +++ b/x-pack/plugins/apm/server/lib/services/get_services_detailed_statistics/get_service_transaction_detailed_statistics.ts @@ -22,7 +22,6 @@ import { getProcessorEventForAggregatedTransactions, getTransactionDurationFieldForAggregatedTransactions, } from '../../helpers/aggregated_transactions'; -import { calculateThroughput } from '../../helpers/calculate_throughput'; import { getBucketSizeForAggregatedTransactions } from '../../helpers/get_bucket_size_for_aggregated_transactions'; import { Setup, SetupTimeRange } from '../../helpers/setup_request'; import { @@ -154,11 +153,7 @@ export async function getServiceTransactionDetailedStatistics({ throughput: topTransactionTypeBucket.timeseries.buckets.map( (dateBucket) => ({ x: dateBucket.key + offsetInMs, - y: calculateThroughput({ - start, - end, - value: dateBucket.doc_count, - }), + y: dateBucket.doc_count, // sparklines only shows trend (no axis) }) ), }; diff --git a/x-pack/plugins/apm/server/lib/services/get_throughput.ts b/x-pack/plugins/apm/server/lib/services/get_throughput.ts index 5db12d9c3d3e7..d004b6980cb0d 100644 --- a/x-pack/plugins/apm/server/lib/services/get_throughput.ts +++ b/x-pack/plugins/apm/server/lib/services/get_throughput.ts @@ -17,7 +17,10 @@ import { getProcessorEventForAggregatedTransactions, } from '../helpers/aggregated_transactions'; import { Setup } from '../helpers/setup_request'; -import { calculateThroughput } from '../helpers/calculate_throughput'; +import { + calculateThroughputWithInterval, + ThroughputUnit, +} from '../helpers/calculate_throughput'; interface Options { environment: string; @@ -29,6 +32,8 @@ interface Options { start: number; end: number; intervalString: string; + bucketSize: number; + throughputUnit: ThroughputUnit; } export async function getThroughput({ @@ -41,6 +46,8 @@ export async function getThroughput({ start, end, intervalString, + bucketSize, + throughputUnit, }: Options) { const { apmEventClient } = setup; @@ -88,10 +95,10 @@ export async function getThroughput({ response.aggregations?.timeseries.buckets.map((bucket) => { return { x: bucket.key, - y: calculateThroughput({ - start, - end, + y: calculateThroughputWithInterval({ + durationAsSeconds: bucketSize, value: bucket.doc_count, + unit: throughputUnit, }), }; }) ?? [] diff --git a/x-pack/plugins/apm/server/routes/services.ts b/x-pack/plugins/apm/server/routes/services.ts index 7b5ede6532f92..a685719762660 100644 --- a/x-pack/plugins/apm/server/routes/services.ts +++ b/x-pack/plugins/apm/server/routes/services.ts @@ -45,6 +45,7 @@ import { offsetPreviousPeriodCoordinates } from '../../common/utils/offset_previ import { getServicesDetailedStatistics } from '../lib/services/get_services_detailed_statistics'; import { getServiceDependenciesBreakdown } from '../lib/services/get_service_dependencies_breakdown'; import { getBucketSizeForAggregatedTransactions } from '../lib/helpers/get_bucket_size_for_aggregated_transactions'; +import { getThroughputUnit } from '../lib/helpers/calculate_throughput'; const servicesRoute = createApmServerRoute({ endpoint: 'GET /api/apm/services', @@ -474,11 +475,14 @@ const serviceThroughputRoute = createApmServerRoute({ }); const { start, end } = setup; - const { intervalString } = getBucketSizeForAggregatedTransactions({ - start, - end, - searchAggregatedTransactions, - }); + const { intervalString, bucketSize } = + getBucketSizeForAggregatedTransactions({ + start, + end, + searchAggregatedTransactions, + }); + + const throughputUnit = getThroughputUnit(bucketSize); const commonProps = { environment, @@ -488,6 +492,8 @@ const serviceThroughputRoute = createApmServerRoute({ setup, transactionType, intervalString, + bucketSize, + throughputUnit, }; const [currentPeriod, previousPeriod] = await Promise.all([ @@ -511,7 +517,7 @@ const serviceThroughputRoute = createApmServerRoute({ currentPeriodTimeseries: currentPeriod, previousPeriodTimeseries: previousPeriod, }), - throughputUnit: 'minute', + throughputUnit, }; }, }); diff --git a/x-pack/test/apm_api_integration/tests/services/__snapshots__/throughput.snap b/x-pack/test/apm_api_integration/tests/services/__snapshots__/throughput.snap index 8edf932aacc6f..28fd88bb6d910 100644 --- a/x-pack/test/apm_api_integration/tests/services/__snapshots__/throughput.snap +++ b/x-pack/test/apm_api_integration/tests/services/__snapshots__/throughput.snap @@ -45,11 +45,11 @@ Object { }, Object { "x": 1627974410000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974420000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974430000, @@ -57,15 +57,15 @@ Object { }, Object { "x": 1627974440000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974450000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974460000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974470000, @@ -73,7 +73,7 @@ Object { }, Object { "x": 1627974480000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974490000, @@ -81,7 +81,7 @@ Object { }, Object { "x": 1627974500000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974510000, @@ -89,7 +89,7 @@ Object { }, Object { "x": 1627974520000, - "y": 0.2, + "y": 0.3, }, Object { "x": 1627974530000, @@ -97,11 +97,11 @@ Object { }, Object { "x": 1627974540000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974550000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974560000, @@ -109,7 +109,7 @@ Object { }, Object { "x": 1627974570000, - "y": 0.2, + "y": 0.3, }, Object { "x": 1627974580000, @@ -125,11 +125,11 @@ Object { }, Object { "x": 1627974610000, - "y": 0.2, + "y": 0.3, }, Object { "x": 1627974620000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974630000, @@ -141,15 +141,15 @@ Object { }, Object { "x": 1627974650000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974660000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974670000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974680000, @@ -157,7 +157,7 @@ Object { }, Object { "x": 1627974690000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974700000, @@ -165,7 +165,7 @@ Object { }, Object { "x": 1627974710000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974720000, @@ -173,15 +173,15 @@ Object { }, Object { "x": 1627974730000, - "y": 0.2, + "y": 0.3, }, Object { "x": 1627974740000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974750000, - "y": 0.2, + "y": 0.3, }, Object { "x": 1627974760000, @@ -189,15 +189,15 @@ Object { }, Object { "x": 1627974770000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974780000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974790000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974800000, @@ -205,7 +205,7 @@ Object { }, Object { "x": 1627974810000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974820000, @@ -221,15 +221,15 @@ Object { }, Object { "x": 1627974850000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974860000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974870000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974880000, @@ -237,15 +237,15 @@ Object { }, Object { "x": 1627974890000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974900000, - "y": 0.333333333333333, + "y": 0.5, }, Object { "x": 1627974910000, - "y": 0.266666666666667, + "y": 0.4, }, Object { "x": 1627974920000, @@ -253,7 +253,7 @@ Object { }, Object { "x": 1627974930000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974940000, @@ -269,7 +269,7 @@ Object { }, Object { "x": 1627974970000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974980000, @@ -277,7 +277,7 @@ Object { }, Object { "x": 1627974990000, - "y": 0.2, + "y": 0.3, }, Object { "x": 1627975000000, @@ -285,15 +285,15 @@ Object { }, Object { "x": 1627975010000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627975020000, - "y": 0.2, + "y": 0.3, }, Object { "x": 1627975030000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627975040000, @@ -301,47 +301,47 @@ Object { }, Object { "x": 1627975050000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627975060000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627975070000, - "y": 0.266666666666667, + "y": 0.4, }, Object { "x": 1627975080000, - "y": 0.2, + "y": 0.3, }, Object { "x": 1627975090000, - "y": 0.2, + "y": 0.3, }, Object { "x": 1627975100000, - "y": 0.2, + "y": 0.3, }, Object { "x": 1627975110000, - "y": 0.2, + "y": 0.3, }, Object { "x": 1627975120000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627975130000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627975140000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627975150000, - "y": 0.2, + "y": 0.3, }, Object { "x": 1627975160000, @@ -349,15 +349,15 @@ Object { }, Object { "x": 1627975170000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627975180000, - "y": 0.266666666666667, + "y": 0.4, }, Object { "x": 1627975190000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627975200000, @@ -375,7 +375,7 @@ Object { }, Object { "x": 1627974320000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974330000, @@ -387,11 +387,11 @@ Object { }, Object { "x": 1627974350000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974360000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974370000, @@ -403,7 +403,7 @@ Object { }, Object { "x": 1627974390000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974400000, @@ -411,7 +411,7 @@ Object { }, Object { "x": 1627974410000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974420000, @@ -419,7 +419,7 @@ Object { }, Object { "x": 1627974430000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974440000, @@ -427,11 +427,11 @@ Object { }, Object { "x": 1627974450000, - "y": 0.466666666666667, + "y": 0.7, }, Object { "x": 1627974460000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974470000, @@ -439,11 +439,11 @@ Object { }, Object { "x": 1627974480000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974490000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974500000, @@ -459,7 +459,7 @@ Object { }, Object { "x": 1627974530000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974540000, @@ -467,7 +467,7 @@ Object { }, Object { "x": 1627974550000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974560000, @@ -475,7 +475,7 @@ Object { }, Object { "x": 1627974570000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974580000, @@ -483,15 +483,15 @@ Object { }, Object { "x": 1627974590000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974600000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974610000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974620000, @@ -503,39 +503,39 @@ Object { }, Object { "x": 1627974640000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974650000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974660000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974670000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974680000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974690000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974700000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974710000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974720000, - "y": 0.266666666666667, + "y": 0.4, }, Object { "x": 1627974730000, @@ -543,39 +543,39 @@ Object { }, Object { "x": 1627974740000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974750000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974760000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974770000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974780000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974790000, - "y": 0.333333333333333, + "y": 0.5, }, Object { "x": 1627974800000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974810000, - "y": 0.266666666666667, + "y": 0.4, }, Object { "x": 1627974820000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974830000, @@ -583,11 +583,11 @@ Object { }, Object { "x": 1627974840000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974850000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974860000, @@ -595,7 +595,7 @@ Object { }, Object { "x": 1627974870000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974880000, @@ -603,39 +603,39 @@ Object { }, Object { "x": 1627974890000, - "y": 0.266666666666667, + "y": 0.4, }, Object { "x": 1627974900000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974910000, - "y": 0.266666666666667, + "y": 0.4, }, Object { "x": 1627974920000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974930000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974940000, - "y": 0.333333333333333, + "y": 0.5, }, Object { "x": 1627974950000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627974960000, - "y": 0.2, + "y": 0.3, }, Object { "x": 1627974970000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627974980000, @@ -643,11 +643,11 @@ Object { }, Object { "x": 1627974990000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627975000000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627975010000, @@ -655,23 +655,23 @@ Object { }, Object { "x": 1627975020000, - "y": 0.2, + "y": 0.3, }, Object { "x": 1627975030000, - "y": 0.2, + "y": 0.3, }, Object { "x": 1627975040000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627975050000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627975060000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627975070000, @@ -679,35 +679,35 @@ Object { }, Object { "x": 1627975080000, - "y": 0.266666666666667, + "y": 0.4, }, Object { "x": 1627975090000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627975100000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627975110000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627975120000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627975130000, - "y": 0.2, + "y": 0.3, }, Object { "x": 1627975140000, - "y": 0.2, + "y": 0.3, }, Object { "x": 1627975150000, - "y": 0.266666666666667, + "y": 0.4, }, Object { "x": 1627975160000, @@ -719,21 +719,21 @@ Object { }, Object { "x": 1627975180000, - "y": 0.133333333333333, + "y": 0.2, }, Object { "x": 1627975190000, - "y": 0.0666666666666667, + "y": 0.1, }, Object { "x": 1627975200000, - "y": 0.333333333333333, + "y": 0.5, }, Object { "x": 1627975210000, "y": 0, }, ], - "throughputUnit": "minute", + "throughputUnit": "second", } `; diff --git a/x-pack/test/apm_api_integration/tests/services/throughput.ts b/x-pack/test/apm_api_integration/tests/services/throughput.ts index 9c54afb8bd6d9..49e244ea9038b 100644 --- a/x-pack/test/apm_api_integration/tests/services/throughput.ts +++ b/x-pack/test/apm_api_integration/tests/services/throughput.ts @@ -52,7 +52,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { 'Throughput when data is loaded', { config: 'basic', archives: [archiveName] }, () => { - describe('when querying without kql filter', () => { + describe('with kql filter to force metrics-based UI', () => { before(async () => { const response = await apmApiSupertest({ endpoint: 'GET /api/apm/services/{serviceName}/throughput', @@ -65,7 +65,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { end: metadata.end, transactionType: 'request', environment: 'ENVIRONMENT_ALL', - kuery: '', + kuery: 'processor.event : "metric"', }, }, }); @@ -96,12 +96,13 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); it('has the correct number of buckets', () => { - expectSnapshot(throughputResponse.currentPeriod.length).toMatchInline(`61`); + expectSnapshot(throughputResponse.currentPeriod.length).toMatchInline(`31`); }); it('has the correct throughput in tpm', () => { + expect(throughputResponse.throughputUnit).equal('minute'); const avg = mean(throughputResponse.currentPeriod.map((d) => d.y)); - expectSnapshot(avg).toMatchInline(`0.124043715846995`); + expectSnapshot(avg).toMatchInline(`7.2258064516129`); }); }); @@ -124,6 +125,39 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); throughputResponse = response.body; }); + + it('returns some data', () => { + expect(throughputResponse.currentPeriod.length).to.be.greaterThan(0); + expect(throughputResponse.previousPeriod.length).not.to.be.greaterThan(0); + + const nonNullDataPoints = throughputResponse.currentPeriod.filter(({ y }) => + isFiniteNumber(y) + ); + + expect(nonNullDataPoints.length).to.be.greaterThan(0); + }); + + it('has the correct start date', () => { + expectSnapshot( + new Date(first(throughputResponse.currentPeriod)?.x ?? NaN).toISOString() + ).toMatchInline(`"2021-08-03T06:50:00.000Z"`); + }); + + it('has the correct end date', () => { + expectSnapshot( + new Date(last(throughputResponse.currentPeriod)?.x ?? NaN).toISOString() + ).toMatchInline(`"2021-08-03T07:20:00.000Z"`); + }); + + it('has the correct number of buckets', () => { + expectSnapshot(throughputResponse.currentPeriod.length).toMatchInline(`61`); + }); + + it('has the correct throughput in tps', () => { + expect(throughputResponse.throughputUnit).equal('second'); + const avg = mean(throughputResponse.currentPeriod.map((d) => d.y)); + expectSnapshot(avg).toMatchInline(`0.124043715846995`); + }); }); } ); diff --git a/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/transactions_groups_detailed_statistics.snap b/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/transactions_groups_detailed_statistics.snap index 724a0997a31d6..e53f3101f4123 100644 --- a/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/transactions_groups_detailed_statistics.snap +++ b/x-pack/test/apm_api_integration/tests/transactions/__snapshots__/transactions_groups_detailed_statistics.snap @@ -288,27 +288,27 @@ Array [ }, Object { "x": 1627974420000, - "y": 0.0666666666666667, + "y": 1, }, Object { "x": 1627974480000, - "y": 0.133333333333333, + "y": 2, }, Object { "x": 1627974540000, - "y": 0.266666666666667, + "y": 4, }, Object { "x": 1627974600000, - "y": 0.0666666666666667, + "y": 1, }, Object { "x": 1627974660000, - "y": 0.0666666666666667, + "y": 1, }, Object { "x": 1627974720000, - "y": 0.0666666666666667, + "y": 1, }, Object { "x": 1627974780000, @@ -316,11 +316,11 @@ Array [ }, Object { "x": 1627974840000, - "y": 0.0666666666666667, + "y": 1, }, Object { "x": 1627974900000, - "y": 0.0666666666666667, + "y": 1, }, Object { "x": 1627974960000, @@ -332,11 +332,11 @@ Array [ }, Object { "x": 1627975080000, - "y": 0.266666666666667, + "y": 4, }, Object { "x": 1627975140000, - "y": 0.0666666666666667, + "y": 1, }, Object { "x": 1627975200000, @@ -353,19 +353,19 @@ Array [ }, Object { "x": 1627974360000, - "y": 0.0666666666666667, + "y": 1, }, Object { "x": 1627974420000, - "y": 0.266666666666667, + "y": 4, }, Object { "x": 1627974480000, - "y": 0.0666666666666667, + "y": 1, }, Object { "x": 1627974540000, - "y": 0.0666666666666667, + "y": 1, }, Object { "x": 1627974600000, @@ -373,43 +373,43 @@ Array [ }, Object { "x": 1627974660000, - "y": 0.133333333333333, + "y": 2, }, Object { "x": 1627974720000, - "y": 0.133333333333333, + "y": 2, }, Object { "x": 1627974780000, - "y": 0.0666666666666667, + "y": 1, }, Object { "x": 1627974840000, - "y": 0.266666666666667, + "y": 4, }, Object { "x": 1627974900000, - "y": 0.266666666666667, + "y": 4, }, Object { "x": 1627974960000, - "y": 0.133333333333333, + "y": 2, }, Object { "x": 1627975020000, - "y": 0.133333333333333, + "y": 2, }, Object { "x": 1627975080000, - "y": 0.2, + "y": 3, }, Object { "x": 1627975140000, - "y": 0.2, + "y": 3, }, Object { "x": 1627975200000, - "y": 0.2, + "y": 3, }, ] `; @@ -551,19 +551,19 @@ Array [ }, Object { "x": 1627973460000, - "y": 0.0333333333333333, + "y": 1, }, Object { "x": 1627973520000, - "y": 0.133333333333333, + "y": 4, }, Object { "x": 1627973580000, - "y": 0.0333333333333333, + "y": 1, }, Object { "x": 1627973640000, - "y": 0.0333333333333333, + "y": 1, }, Object { "x": 1627973700000, @@ -571,43 +571,43 @@ Array [ }, Object { "x": 1627973760000, - "y": 0.0666666666666667, + "y": 2, }, Object { "x": 1627973820000, - "y": 0.0666666666666667, + "y": 2, }, Object { "x": 1627973880000, - "y": 0.0333333333333333, + "y": 1, }, Object { "x": 1627973940000, - "y": 0.133333333333333, + "y": 4, }, Object { "x": 1627974000000, - "y": 0.133333333333333, + "y": 4, }, Object { "x": 1627974060000, - "y": 0.0666666666666667, + "y": 2, }, Object { "x": 1627974120000, - "y": 0.0666666666666667, + "y": 2, }, Object { "x": 1627974180000, - "y": 0.1, + "y": 3, }, Object { "x": 1627974240000, - "y": 0.1, + "y": 3, }, Object { "x": 1627974300000, - "y": 0.1, + "y": 3, }, Object { "x": 1627974360000, @@ -615,27 +615,27 @@ Array [ }, Object { "x": 1627974420000, - "y": 0.0333333333333333, + "y": 1, }, Object { "x": 1627974480000, - "y": 0.0666666666666667, + "y": 2, }, Object { "x": 1627974540000, - "y": 0.133333333333333, + "y": 4, }, Object { "x": 1627974600000, - "y": 0.0333333333333333, + "y": 1, }, Object { "x": 1627974660000, - "y": 0.0333333333333333, + "y": 1, }, Object { "x": 1627974720000, - "y": 0.0333333333333333, + "y": 1, }, Object { "x": 1627974780000, @@ -643,11 +643,11 @@ Array [ }, Object { "x": 1627974840000, - "y": 0.0333333333333333, + "y": 1, }, Object { "x": 1627974900000, - "y": 0.0333333333333333, + "y": 1, }, Object { "x": 1627974960000, @@ -659,11 +659,11 @@ Array [ }, Object { "x": 1627975080000, - "y": 0.133333333333333, + "y": 4, }, Object { "x": 1627975140000, - "y": 0.0333333333333333, + "y": 1, }, Object { "x": 1627975200000, From f9715a60684c18b5008f453a6eeb46917ae0b885 Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Tue, 21 Sep 2021 14:25:21 -0400 Subject: [PATCH 07/26] fixing prettier --- x-pack/plugins/apm/server/routes/services.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/x-pack/plugins/apm/server/routes/services.ts b/x-pack/plugins/apm/server/routes/services.ts index a685719762660..0f5cc3988e6f5 100644 --- a/x-pack/plugins/apm/server/routes/services.ts +++ b/x-pack/plugins/apm/server/routes/services.ts @@ -475,12 +475,14 @@ const serviceThroughputRoute = createApmServerRoute({ }); const { start, end } = setup; - const { intervalString, bucketSize } = - getBucketSizeForAggregatedTransactions({ - start, - end, - searchAggregatedTransactions, - }); + const { + intervalString, + bucketSize, + } = getBucketSizeForAggregatedTransactions({ + start, + end, + searchAggregatedTransactions, + }); const throughputUnit = getThroughputUnit(bucketSize); From 1863af6c5b5df7d72ca204112d9ed6f4f0f5da7f Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Tue, 21 Sep 2021 15:28:56 -0400 Subject: [PATCH 08/26] renaming --- .../get_throughput_charts_for_backend.ts | 8 +- .../connections/get_connection_stats/index.ts | 4 +- .../lib/helpers/calculate_throughput.ts | 8 +- .../get_transactions_per_minute.ts | 10 +- .../get_service_map_backend_node_info.ts | 4 +- ...ervice_instances_transaction_statistics.ts | 8 +- .../get_service_transaction_groups.ts | 4 +- .../get_service_transaction_stats.ts | 4 +- .../test/apm_api_integration/tests/index.ts | 356 +++++++++--------- 9 files changed, 209 insertions(+), 197 deletions(-) diff --git a/x-pack/plugins/apm/server/lib/backends/get_throughput_charts_for_backend.ts b/x-pack/plugins/apm/server/lib/backends/get_throughput_charts_for_backend.ts index 19a8742bbe1a5..f2e726fd8228f 100644 --- a/x-pack/plugins/apm/server/lib/backends/get_throughput_charts_for_backend.ts +++ b/x-pack/plugins/apm/server/lib/backends/get_throughput_charts_for_backend.ts @@ -12,7 +12,7 @@ import { ProcessorEvent } from '../../../common/processor_event'; import { Setup } from '../helpers/setup_request'; import { getMetricsDateHistogramParams } from '../helpers/metrics'; import { getOffsetInMs } from '../../../common/utils/get_offset_in_ms'; -import { calculateThroughput } from '../helpers/calculate_throughput'; +import { calculateThroughputWithRange } from '../helpers/calculate_throughput'; export async function getThroughputChartsForBackend({ backendName, @@ -71,7 +71,11 @@ export async function getThroughputChartsForBackend({ response.aggregations?.timeseries.buckets.map((bucket) => { return { x: bucket.key + offsetInMs, - y: calculateThroughput({ start, end, value: bucket.doc_count }), + y: calculateThroughputWithRange({ + start, + end, + value: bucket.doc_count, + }), }; }) ?? [] ); diff --git a/x-pack/plugins/apm/server/lib/connections/get_connection_stats/index.ts b/x-pack/plugins/apm/server/lib/connections/get_connection_stats/index.ts index 9080a8d76904d..124bcd60971d5 100644 --- a/x-pack/plugins/apm/server/lib/connections/get_connection_stats/index.ts +++ b/x-pack/plugins/apm/server/lib/connections/get_connection_stats/index.ts @@ -12,7 +12,7 @@ import { joinByKey } from '../../../../common/utils/join_by_key'; import { Setup } from '../../helpers/setup_request'; import { getStats } from './get_stats'; import { getDestinationMap } from './get_destination_map'; -import { calculateThroughput } from '../../helpers/calculate_throughput'; +import { calculateThroughputWithRange } from '../../helpers/calculate_throughput'; import { withApmSpan } from '../../../utils/with_apm_span'; export function getConnectionStats({ @@ -123,7 +123,7 @@ export function getConnectionStats({ throughput: { value: mergedStats.value.count > 0 - ? calculateThroughput({ + ? calculateThroughputWithRange({ start, end, value: mergedStats.value.count, diff --git a/x-pack/plugins/apm/server/lib/helpers/calculate_throughput.ts b/x-pack/plugins/apm/server/lib/helpers/calculate_throughput.ts index 1cffceac74b4d..66311c4bf5cdc 100644 --- a/x-pack/plugins/apm/server/lib/helpers/calculate_throughput.ts +++ b/x-pack/plugins/apm/server/lib/helpers/calculate_throughput.ts @@ -7,7 +7,7 @@ import { SetupTimeRange } from './setup_request'; -function getThroughputValue({ +function calculateThroughput({ durationAsSeconds, unit, value, @@ -21,14 +21,14 @@ function getThroughputValue({ return value / duration; } -export function calculateThroughput({ +export function calculateThroughputWithRange({ start, end, value, unit = 'minute', }: SetupTimeRange & { value: number; unit?: ThroughputUnit }) { const durationAsSeconds = (end - start) / 1000; - return getThroughputValue({ durationAsSeconds, unit, value }); + return calculateThroughput({ durationAsSeconds, unit, value }); } export function calculateThroughputWithInterval({ @@ -40,7 +40,7 @@ export function calculateThroughputWithInterval({ value: number; unit?: ThroughputUnit; }) { - return getThroughputValue({ durationAsSeconds, unit, value }); + return calculateThroughput({ durationAsSeconds, unit, value }); } export type ThroughputUnit = 'minute' | 'second'; diff --git a/x-pack/plugins/apm/server/lib/observability_overview/get_transactions_per_minute.ts b/x-pack/plugins/apm/server/lib/observability_overview/get_transactions_per_minute.ts index a59ba26673379..362231b509c6d 100644 --- a/x-pack/plugins/apm/server/lib/observability_overview/get_transactions_per_minute.ts +++ b/x-pack/plugins/apm/server/lib/observability_overview/get_transactions_per_minute.ts @@ -16,7 +16,7 @@ import { getDocumentTypeFilterForAggregatedTransactions, getProcessorEventForAggregatedTransactions, } from '../helpers/aggregated_transactions'; -import { calculateThroughput } from '../helpers/calculate_throughput'; +import { calculateThroughputWithRange } from '../helpers/calculate_throughput'; export async function getTransactionsPerMinute({ setup, @@ -83,7 +83,7 @@ export async function getTransactionsPerMinute({ ) || aggregations.transactionType.buckets[0]; return { - value: calculateThroughput({ + value: calculateThroughputWithRange({ start, end, value: topTransactionTypeBucket?.doc_count || 0, @@ -91,7 +91,11 @@ export async function getTransactionsPerMinute({ timeseries: topTransactionTypeBucket?.timeseries.buckets.map((bucket) => ({ x: bucket.key, - y: calculateThroughput({ start, end, value: bucket.doc_count }), + y: calculateThroughputWithRange({ + start, + end, + value: bucket.doc_count, + }), })) || [], }; } diff --git a/x-pack/plugins/apm/server/lib/service_map/get_service_map_backend_node_info.ts b/x-pack/plugins/apm/server/lib/service_map/get_service_map_backend_node_info.ts index 9455e4f2479ff..6cbcbfb45caff 100644 --- a/x-pack/plugins/apm/server/lib/service_map/get_service_map_backend_node_info.ts +++ b/x-pack/plugins/apm/server/lib/service_map/get_service_map_backend_node_info.ts @@ -16,7 +16,7 @@ import { EventOutcome } from '../../../common/event_outcome'; import { ProcessorEvent } from '../../../common/processor_event'; import { environmentQuery } from '../../../common/utils/environment_query'; import { withApmSpan } from '../../utils/with_apm_span'; -import { calculateThroughput } from '../helpers/calculate_throughput'; +import { calculateThroughputWithRange } from '../helpers/calculate_throughput'; import { Setup, SetupTimeRange } from '../helpers/setup_request'; interface Options { @@ -76,7 +76,7 @@ export function getServiceMapBackendNodeInfo({ const avgErrorRate = errorCount / count; const avgTransactionDuration = latencySum / count; - const avgRequestsPerMinute = calculateThroughput({ + const avgRequestsPerMinute = calculateThroughputWithRange({ start, end, value: count, diff --git a/x-pack/plugins/apm/server/lib/services/get_service_instances/get_service_instances_transaction_statistics.ts b/x-pack/plugins/apm/server/lib/services/get_service_instances/get_service_instances_transaction_statistics.ts index a51f4c4e0fb7d..48e9dff314729 100644 --- a/x-pack/plugins/apm/server/lib/services/get_service_instances/get_service_instances_transaction_statistics.ts +++ b/x-pack/plugins/apm/server/lib/services/get_service_instances/get_service_instances_transaction_statistics.ts @@ -20,7 +20,7 @@ import { getProcessorEventForAggregatedTransactions, getTransactionDurationFieldForAggregatedTransactions, } from '../../helpers/aggregated_transactions'; -import { calculateThroughput } from '../../helpers/calculate_throughput'; +import { calculateThroughputWithRange } from '../../helpers/calculate_throughput'; import { getBucketSizeForAggregatedTransactions } from '../../helpers/get_bucket_size_for_aggregated_transactions'; import { getLatencyAggregation, @@ -194,7 +194,11 @@ export async function getServiceInstancesTransactionStatistics< aggregation: latency, latencyAggregationType, }), - throughput: calculateThroughput({ start, end, value: count }), + throughput: calculateThroughputWithRange({ + start, + end, + value: count, + }), }; } } diff --git a/x-pack/plugins/apm/server/lib/services/get_service_transaction_groups.ts b/x-pack/plugins/apm/server/lib/services/get_service_transaction_groups.ts index d96c2cfae8f81..d7d0f4dd4caeb 100644 --- a/x-pack/plugins/apm/server/lib/services/get_service_transaction_groups.ts +++ b/x-pack/plugins/apm/server/lib/services/get_service_transaction_groups.ts @@ -20,7 +20,7 @@ import { getProcessorEventForAggregatedTransactions, getTransactionDurationFieldForAggregatedTransactions, } from '../helpers/aggregated_transactions'; -import { calculateThroughput } from '../helpers/calculate_throughput'; +import { calculateThroughputWithRange } from '../helpers/calculate_throughput'; import { getLatencyAggregation, getLatencyValue, @@ -126,7 +126,7 @@ export async function getServiceTransactionGroups({ latencyAggregationType, aggregation: bucket.latency, }), - throughput: calculateThroughput({ + throughput: calculateThroughputWithRange({ start, end, value: bucket.doc_count, diff --git a/x-pack/plugins/apm/server/lib/services/get_services/get_service_transaction_stats.ts b/x-pack/plugins/apm/server/lib/services/get_services/get_service_transaction_stats.ts index 7c4a7bc636c5a..72796c64f7e91 100644 --- a/x-pack/plugins/apm/server/lib/services/get_services/get_service_transaction_stats.ts +++ b/x-pack/plugins/apm/server/lib/services/get_services/get_service_transaction_stats.ts @@ -23,7 +23,7 @@ import { getProcessorEventForAggregatedTransactions, getTransactionDurationFieldForAggregatedTransactions, } from '../../helpers/aggregated_transactions'; -import { calculateThroughput } from '../../helpers/calculate_throughput'; +import { calculateThroughputWithRange } from '../../helpers/calculate_throughput'; import { calculateFailedTransactionRate, getOutcomeAggregation, @@ -140,7 +140,7 @@ export async function getServiceTransactionStats({ transactionErrorRate: calculateFailedTransactionRate( topTransactionTypeBucket.outcomes ), - throughput: calculateThroughput({ + throughput: calculateThroughputWithRange({ start, end, value: topTransactionTypeBucket.doc_count, diff --git a/x-pack/test/apm_api_integration/tests/index.ts b/x-pack/test/apm_api_integration/tests/index.ts index c8a57bc613a92..70ce0bba45edd 100644 --- a/x-pack/test/apm_api_integration/tests/index.ts +++ b/x-pack/test/apm_api_integration/tests/index.ts @@ -14,212 +14,212 @@ export default function apmApiIntegrationTests(providerContext: FtrProviderConte describe('APM API tests', function () { this.tags('ciGroup1'); - // inspect feature - describe('inspect/inspect', function () { - loadTestFile(require.resolve('./inspect/inspect')); - }); - - // alerts - describe('alerts/chart_preview', function () { - loadTestFile(require.resolve('./alerts/chart_preview')); - }); - - describe('alerts/rule_registry', function () { - loadTestFile(require.resolve('./alerts/rule_registry')); - }); - - // correlations - describe('correlations/latency_slow_transactions', function () { - loadTestFile(require.resolve('./correlations/latency_slow_transactions')); - }); - - describe('correlations/failed_transactions', function () { - loadTestFile(require.resolve('./correlations/failed_transactions')); - }); - - describe('correlations/latency', function () { - loadTestFile(require.resolve('./correlations/latency')); - }); - - describe('correlations/latency_overall', function () { - loadTestFile(require.resolve('./correlations/latency_overall')); - }); - - describe('correlations/errors_overall', function () { - loadTestFile(require.resolve('./correlations/errors_overall')); - }); - - describe('correlations/errors_failed_transactions', function () { - loadTestFile(require.resolve('./correlations/errors_failed_transactions')); - }); - - describe('metrics_charts/metrics_charts', function () { - loadTestFile(require.resolve('./metrics_charts/metrics_charts')); - }); - - describe('observability_overview/has_data', function () { - loadTestFile(require.resolve('./observability_overview/has_data')); - }); - - describe('observability_overview/observability_overview', function () { - loadTestFile(require.resolve('./observability_overview/observability_overview')); - }); - - describe('service_maps/service_maps', function () { - loadTestFile(require.resolve('./service_maps/service_maps')); - }); - - // Service overview - describe('service_overview/dependencies', function () { - loadTestFile(require.resolve('./service_overview/dependencies')); - }); - - describe('service_overview/instances_main_statistics', function () { - loadTestFile(require.resolve('./service_overview/instances_main_statistics')); - }); - - describe('service_overview/instances_detailed_statistics', function () { - loadTestFile(require.resolve('./service_overview/instances_detailed_statistics')); - }); - - describe('service_overview/instance_details', function () { - loadTestFile(require.resolve('./service_overview/instance_details')); - }); - - // Services - describe('services/agent', function () { - loadTestFile(require.resolve('./services/agent')); - }); - - describe('services/annotations', function () { - loadTestFile(require.resolve('./services/annotations')); - loadTestFile(require.resolve('./services/derived_annotations')); - }); - - describe('services/service_details', function () { - loadTestFile(require.resolve('./services/service_details')); - }); - - describe('services/service_icons', function () { - loadTestFile(require.resolve('./services/service_icons')); - }); + // // inspect feature + // describe('inspect/inspect', function () { + // loadTestFile(require.resolve('./inspect/inspect')); + // }); + + // // alerts + // describe('alerts/chart_preview', function () { + // loadTestFile(require.resolve('./alerts/chart_preview')); + // }); + + // describe('alerts/rule_registry', function () { + // loadTestFile(require.resolve('./alerts/rule_registry')); + // }); + + // // correlations + // describe('correlations/latency_slow_transactions', function () { + // loadTestFile(require.resolve('./correlations/latency_slow_transactions')); + // }); + + // describe('correlations/failed_transactions', function () { + // loadTestFile(require.resolve('./correlations/failed_transactions')); + // }); + + // describe('correlations/latency', function () { + // loadTestFile(require.resolve('./correlations/latency')); + // }); + + // describe('correlations/latency_overall', function () { + // loadTestFile(require.resolve('./correlations/latency_overall')); + // }); + + // describe('correlations/errors_overall', function () { + // loadTestFile(require.resolve('./correlations/errors_overall')); + // }); + + // describe('correlations/errors_failed_transactions', function () { + // loadTestFile(require.resolve('./correlations/errors_failed_transactions')); + // }); + + // describe('metrics_charts/metrics_charts', function () { + // loadTestFile(require.resolve('./metrics_charts/metrics_charts')); + // }); + + // describe('observability_overview/has_data', function () { + // loadTestFile(require.resolve('./observability_overview/has_data')); + // }); + + // describe('observability_overview/observability_overview', function () { + // loadTestFile(require.resolve('./observability_overview/observability_overview')); + // }); + + // describe('service_maps/service_maps', function () { + // loadTestFile(require.resolve('./service_maps/service_maps')); + // }); + + // // Service overview + // describe('service_overview/dependencies', function () { + // loadTestFile(require.resolve('./service_overview/dependencies')); + // }); + + // describe('service_overview/instances_main_statistics', function () { + // loadTestFile(require.resolve('./service_overview/instances_main_statistics')); + // }); + + // describe('service_overview/instances_detailed_statistics', function () { + // loadTestFile(require.resolve('./service_overview/instances_detailed_statistics')); + // }); + + // describe('service_overview/instance_details', function () { + // loadTestFile(require.resolve('./service_overview/instance_details')); + // }); + + // // Services + // describe('services/agent', function () { + // loadTestFile(require.resolve('./services/agent')); + // }); + + // describe('services/annotations', function () { + // loadTestFile(require.resolve('./services/annotations')); + // loadTestFile(require.resolve('./services/derived_annotations')); + // }); + + // describe('services/service_details', function () { + // loadTestFile(require.resolve('./services/service_details')); + // }); + + // describe('services/service_icons', function () { + // loadTestFile(require.resolve('./services/service_icons')); + // }); describe('services/throughput', function () { loadTestFile(require.resolve('./services/throughput')); }); - describe('services/top_services', function () { - loadTestFile(require.resolve('./services/top_services')); - }); + // describe('services/top_services', function () { + // loadTestFile(require.resolve('./services/top_services')); + // }); - describe('services/transaction_types', function () { - loadTestFile(require.resolve('./services/transaction_types')); - }); + // describe('services/transaction_types', function () { + // loadTestFile(require.resolve('./services/transaction_types')); + // }); - describe('services/error_groups_main_statistics', function () { - loadTestFile(require.resolve('./services/error_groups_main_statistics')); - }); + // describe('services/error_groups_main_statistics', function () { + // loadTestFile(require.resolve('./services/error_groups_main_statistics')); + // }); - describe('services/error_groups_detailed_statistics', function () { - loadTestFile(require.resolve('./services/error_groups_detailed_statistics')); - }); + // describe('services/error_groups_detailed_statistics', function () { + // loadTestFile(require.resolve('./services/error_groups_detailed_statistics')); + // }); - describe('services/detailed_statistics', function () { - loadTestFile(require.resolve('./services/services_detailed_statistics')); - }); + // describe('services/detailed_statistics', function () { + // loadTestFile(require.resolve('./services/services_detailed_statistics')); + // }); - // Settinges - describe('settings/anomaly_detection/basic', function () { - loadTestFile(require.resolve('./settings/anomaly_detection/basic')); - }); + // // Settinges + // describe('settings/anomaly_detection/basic', function () { + // loadTestFile(require.resolve('./settings/anomaly_detection/basic')); + // }); - describe('settings/anomaly_detection/no_access_user', function () { - loadTestFile(require.resolve('./settings/anomaly_detection/no_access_user')); - }); + // describe('settings/anomaly_detection/no_access_user', function () { + // loadTestFile(require.resolve('./settings/anomaly_detection/no_access_user')); + // }); - describe('settings/anomaly_detection/read_user', function () { - loadTestFile(require.resolve('./settings/anomaly_detection/read_user')); - }); + // describe('settings/anomaly_detection/read_user', function () { + // loadTestFile(require.resolve('./settings/anomaly_detection/read_user')); + // }); - describe('settings/anomaly_detection/write_user', function () { - loadTestFile(require.resolve('./settings/anomaly_detection/write_user')); - }); + // describe('settings/anomaly_detection/write_user', function () { + // loadTestFile(require.resolve('./settings/anomaly_detection/write_user')); + // }); - describe('settings/agent_configuration', function () { - loadTestFile(require.resolve('./settings/agent_configuration')); - }); + // describe('settings/agent_configuration', function () { + // loadTestFile(require.resolve('./settings/agent_configuration')); + // }); - describe('settings/custom_link', function () { - loadTestFile(require.resolve('./settings/custom_link')); - }); + // describe('settings/custom_link', function () { + // loadTestFile(require.resolve('./settings/custom_link')); + // }); - // traces - describe('traces/top_traces', function () { - loadTestFile(require.resolve('./traces/top_traces')); - }); + // // traces + // describe('traces/top_traces', function () { + // loadTestFile(require.resolve('./traces/top_traces')); + // }); - // transactions - describe('transactions/breakdown', function () { - loadTestFile(require.resolve('./transactions/breakdown')); - }); + // // transactions + // describe('transactions/breakdown', function () { + // loadTestFile(require.resolve('./transactions/breakdown')); + // }); - describe('transactions/trace_samples', function () { - loadTestFile(require.resolve('./transactions/trace_samples')); - }); + // describe('transactions/trace_samples', function () { + // loadTestFile(require.resolve('./transactions/trace_samples')); + // }); - describe('transactions/error_rate', function () { - loadTestFile(require.resolve('./transactions/error_rate')); - }); + // describe('transactions/error_rate', function () { + // loadTestFile(require.resolve('./transactions/error_rate')); + // }); - describe('transactions/latency', function () { - loadTestFile(require.resolve('./transactions/latency')); - }); + // describe('transactions/latency', function () { + // loadTestFile(require.resolve('./transactions/latency')); + // }); - describe('transactions/transactions_groups_main_statistics', function () { - loadTestFile(require.resolve('./transactions/transactions_groups_main_statistics')); - }); + // describe('transactions/transactions_groups_main_statistics', function () { + // loadTestFile(require.resolve('./transactions/transactions_groups_main_statistics')); + // }); - describe('transactions/transactions_groups_detailed_statistics', function () { - loadTestFile(require.resolve('./transactions/transactions_groups_detailed_statistics')); - }); + // describe('transactions/transactions_groups_detailed_statistics', function () { + // loadTestFile(require.resolve('./transactions/transactions_groups_detailed_statistics')); + // }); - // feature control - describe('feature_controls', function () { - loadTestFile(require.resolve('./feature_controls')); - }); + // // feature control + // describe('feature_controls', function () { + // loadTestFile(require.resolve('./feature_controls')); + // }); - // CSM - describe('csm/csm_services', function () { - loadTestFile(require.resolve('./csm/csm_services')); - }); + // // CSM + // describe('csm/csm_services', function () { + // loadTestFile(require.resolve('./csm/csm_services')); + // }); - describe('csm/has_rum_data', function () { - loadTestFile(require.resolve('./csm/has_rum_data')); - }); + // describe('csm/has_rum_data', function () { + // loadTestFile(require.resolve('./csm/has_rum_data')); + // }); - describe('csm/js_errors', function () { - loadTestFile(require.resolve('./csm/js_errors')); - }); + // describe('csm/js_errors', function () { + // loadTestFile(require.resolve('./csm/js_errors')); + // }); - describe('csm/long_task_metrics', function () { - loadTestFile(require.resolve('./csm/long_task_metrics')); - }); - - describe('csm/page_load_dist', function () { - loadTestFile(require.resolve('./csm/page_load_dist')); - }); - - describe('csm/page_views', function () { - loadTestFile(require.resolve('./csm/page_views')); - }); - - describe('csm/url_search', function () { - loadTestFile(require.resolve('./csm/url_search')); - }); + // describe('csm/long_task_metrics', function () { + // loadTestFile(require.resolve('./csm/long_task_metrics')); + // }); - describe('csm/web_core_vitals', function () { - loadTestFile(require.resolve('./csm/web_core_vitals')); - }); + // describe('csm/page_load_dist', function () { + // loadTestFile(require.resolve('./csm/page_load_dist')); + // }); + + // describe('csm/page_views', function () { + // loadTestFile(require.resolve('./csm/page_views')); + // }); + + // describe('csm/url_search', function () { + // loadTestFile(require.resolve('./csm/url_search')); + // }); + + // describe('csm/web_core_vitals', function () { + // loadTestFile(require.resolve('./csm/web_core_vitals')); + // }); registry.run(providerContext); }); From 52082f2c1f26799f77cc2a0dbcb60e024889f0aa Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Tue, 21 Sep 2021 15:29:19 -0400 Subject: [PATCH 09/26] roll back --- .../test/apm_api_integration/tests/index.ts | 356 +++++++++--------- 1 file changed, 178 insertions(+), 178 deletions(-) diff --git a/x-pack/test/apm_api_integration/tests/index.ts b/x-pack/test/apm_api_integration/tests/index.ts index 70ce0bba45edd..c8a57bc613a92 100644 --- a/x-pack/test/apm_api_integration/tests/index.ts +++ b/x-pack/test/apm_api_integration/tests/index.ts @@ -14,212 +14,212 @@ export default function apmApiIntegrationTests(providerContext: FtrProviderConte describe('APM API tests', function () { this.tags('ciGroup1'); - // // inspect feature - // describe('inspect/inspect', function () { - // loadTestFile(require.resolve('./inspect/inspect')); - // }); - - // // alerts - // describe('alerts/chart_preview', function () { - // loadTestFile(require.resolve('./alerts/chart_preview')); - // }); - - // describe('alerts/rule_registry', function () { - // loadTestFile(require.resolve('./alerts/rule_registry')); - // }); - - // // correlations - // describe('correlations/latency_slow_transactions', function () { - // loadTestFile(require.resolve('./correlations/latency_slow_transactions')); - // }); - - // describe('correlations/failed_transactions', function () { - // loadTestFile(require.resolve('./correlations/failed_transactions')); - // }); - - // describe('correlations/latency', function () { - // loadTestFile(require.resolve('./correlations/latency')); - // }); - - // describe('correlations/latency_overall', function () { - // loadTestFile(require.resolve('./correlations/latency_overall')); - // }); - - // describe('correlations/errors_overall', function () { - // loadTestFile(require.resolve('./correlations/errors_overall')); - // }); - - // describe('correlations/errors_failed_transactions', function () { - // loadTestFile(require.resolve('./correlations/errors_failed_transactions')); - // }); - - // describe('metrics_charts/metrics_charts', function () { - // loadTestFile(require.resolve('./metrics_charts/metrics_charts')); - // }); - - // describe('observability_overview/has_data', function () { - // loadTestFile(require.resolve('./observability_overview/has_data')); - // }); - - // describe('observability_overview/observability_overview', function () { - // loadTestFile(require.resolve('./observability_overview/observability_overview')); - // }); - - // describe('service_maps/service_maps', function () { - // loadTestFile(require.resolve('./service_maps/service_maps')); - // }); - - // // Service overview - // describe('service_overview/dependencies', function () { - // loadTestFile(require.resolve('./service_overview/dependencies')); - // }); - - // describe('service_overview/instances_main_statistics', function () { - // loadTestFile(require.resolve('./service_overview/instances_main_statistics')); - // }); - - // describe('service_overview/instances_detailed_statistics', function () { - // loadTestFile(require.resolve('./service_overview/instances_detailed_statistics')); - // }); - - // describe('service_overview/instance_details', function () { - // loadTestFile(require.resolve('./service_overview/instance_details')); - // }); - - // // Services - // describe('services/agent', function () { - // loadTestFile(require.resolve('./services/agent')); - // }); - - // describe('services/annotations', function () { - // loadTestFile(require.resolve('./services/annotations')); - // loadTestFile(require.resolve('./services/derived_annotations')); - // }); - - // describe('services/service_details', function () { - // loadTestFile(require.resolve('./services/service_details')); - // }); - - // describe('services/service_icons', function () { - // loadTestFile(require.resolve('./services/service_icons')); - // }); + // inspect feature + describe('inspect/inspect', function () { + loadTestFile(require.resolve('./inspect/inspect')); + }); + + // alerts + describe('alerts/chart_preview', function () { + loadTestFile(require.resolve('./alerts/chart_preview')); + }); + + describe('alerts/rule_registry', function () { + loadTestFile(require.resolve('./alerts/rule_registry')); + }); + + // correlations + describe('correlations/latency_slow_transactions', function () { + loadTestFile(require.resolve('./correlations/latency_slow_transactions')); + }); + + describe('correlations/failed_transactions', function () { + loadTestFile(require.resolve('./correlations/failed_transactions')); + }); + + describe('correlations/latency', function () { + loadTestFile(require.resolve('./correlations/latency')); + }); + + describe('correlations/latency_overall', function () { + loadTestFile(require.resolve('./correlations/latency_overall')); + }); + + describe('correlations/errors_overall', function () { + loadTestFile(require.resolve('./correlations/errors_overall')); + }); + + describe('correlations/errors_failed_transactions', function () { + loadTestFile(require.resolve('./correlations/errors_failed_transactions')); + }); + + describe('metrics_charts/metrics_charts', function () { + loadTestFile(require.resolve('./metrics_charts/metrics_charts')); + }); + + describe('observability_overview/has_data', function () { + loadTestFile(require.resolve('./observability_overview/has_data')); + }); + + describe('observability_overview/observability_overview', function () { + loadTestFile(require.resolve('./observability_overview/observability_overview')); + }); + + describe('service_maps/service_maps', function () { + loadTestFile(require.resolve('./service_maps/service_maps')); + }); + + // Service overview + describe('service_overview/dependencies', function () { + loadTestFile(require.resolve('./service_overview/dependencies')); + }); + + describe('service_overview/instances_main_statistics', function () { + loadTestFile(require.resolve('./service_overview/instances_main_statistics')); + }); + + describe('service_overview/instances_detailed_statistics', function () { + loadTestFile(require.resolve('./service_overview/instances_detailed_statistics')); + }); + + describe('service_overview/instance_details', function () { + loadTestFile(require.resolve('./service_overview/instance_details')); + }); + + // Services + describe('services/agent', function () { + loadTestFile(require.resolve('./services/agent')); + }); + + describe('services/annotations', function () { + loadTestFile(require.resolve('./services/annotations')); + loadTestFile(require.resolve('./services/derived_annotations')); + }); + + describe('services/service_details', function () { + loadTestFile(require.resolve('./services/service_details')); + }); + + describe('services/service_icons', function () { + loadTestFile(require.resolve('./services/service_icons')); + }); describe('services/throughput', function () { loadTestFile(require.resolve('./services/throughput')); }); - // describe('services/top_services', function () { - // loadTestFile(require.resolve('./services/top_services')); - // }); + describe('services/top_services', function () { + loadTestFile(require.resolve('./services/top_services')); + }); - // describe('services/transaction_types', function () { - // loadTestFile(require.resolve('./services/transaction_types')); - // }); + describe('services/transaction_types', function () { + loadTestFile(require.resolve('./services/transaction_types')); + }); - // describe('services/error_groups_main_statistics', function () { - // loadTestFile(require.resolve('./services/error_groups_main_statistics')); - // }); + describe('services/error_groups_main_statistics', function () { + loadTestFile(require.resolve('./services/error_groups_main_statistics')); + }); - // describe('services/error_groups_detailed_statistics', function () { - // loadTestFile(require.resolve('./services/error_groups_detailed_statistics')); - // }); + describe('services/error_groups_detailed_statistics', function () { + loadTestFile(require.resolve('./services/error_groups_detailed_statistics')); + }); - // describe('services/detailed_statistics', function () { - // loadTestFile(require.resolve('./services/services_detailed_statistics')); - // }); + describe('services/detailed_statistics', function () { + loadTestFile(require.resolve('./services/services_detailed_statistics')); + }); - // // Settinges - // describe('settings/anomaly_detection/basic', function () { - // loadTestFile(require.resolve('./settings/anomaly_detection/basic')); - // }); + // Settinges + describe('settings/anomaly_detection/basic', function () { + loadTestFile(require.resolve('./settings/anomaly_detection/basic')); + }); - // describe('settings/anomaly_detection/no_access_user', function () { - // loadTestFile(require.resolve('./settings/anomaly_detection/no_access_user')); - // }); + describe('settings/anomaly_detection/no_access_user', function () { + loadTestFile(require.resolve('./settings/anomaly_detection/no_access_user')); + }); - // describe('settings/anomaly_detection/read_user', function () { - // loadTestFile(require.resolve('./settings/anomaly_detection/read_user')); - // }); + describe('settings/anomaly_detection/read_user', function () { + loadTestFile(require.resolve('./settings/anomaly_detection/read_user')); + }); - // describe('settings/anomaly_detection/write_user', function () { - // loadTestFile(require.resolve('./settings/anomaly_detection/write_user')); - // }); + describe('settings/anomaly_detection/write_user', function () { + loadTestFile(require.resolve('./settings/anomaly_detection/write_user')); + }); - // describe('settings/agent_configuration', function () { - // loadTestFile(require.resolve('./settings/agent_configuration')); - // }); + describe('settings/agent_configuration', function () { + loadTestFile(require.resolve('./settings/agent_configuration')); + }); - // describe('settings/custom_link', function () { - // loadTestFile(require.resolve('./settings/custom_link')); - // }); + describe('settings/custom_link', function () { + loadTestFile(require.resolve('./settings/custom_link')); + }); - // // traces - // describe('traces/top_traces', function () { - // loadTestFile(require.resolve('./traces/top_traces')); - // }); + // traces + describe('traces/top_traces', function () { + loadTestFile(require.resolve('./traces/top_traces')); + }); - // // transactions - // describe('transactions/breakdown', function () { - // loadTestFile(require.resolve('./transactions/breakdown')); - // }); + // transactions + describe('transactions/breakdown', function () { + loadTestFile(require.resolve('./transactions/breakdown')); + }); - // describe('transactions/trace_samples', function () { - // loadTestFile(require.resolve('./transactions/trace_samples')); - // }); + describe('transactions/trace_samples', function () { + loadTestFile(require.resolve('./transactions/trace_samples')); + }); - // describe('transactions/error_rate', function () { - // loadTestFile(require.resolve('./transactions/error_rate')); - // }); + describe('transactions/error_rate', function () { + loadTestFile(require.resolve('./transactions/error_rate')); + }); - // describe('transactions/latency', function () { - // loadTestFile(require.resolve('./transactions/latency')); - // }); + describe('transactions/latency', function () { + loadTestFile(require.resolve('./transactions/latency')); + }); - // describe('transactions/transactions_groups_main_statistics', function () { - // loadTestFile(require.resolve('./transactions/transactions_groups_main_statistics')); - // }); + describe('transactions/transactions_groups_main_statistics', function () { + loadTestFile(require.resolve('./transactions/transactions_groups_main_statistics')); + }); - // describe('transactions/transactions_groups_detailed_statistics', function () { - // loadTestFile(require.resolve('./transactions/transactions_groups_detailed_statistics')); - // }); + describe('transactions/transactions_groups_detailed_statistics', function () { + loadTestFile(require.resolve('./transactions/transactions_groups_detailed_statistics')); + }); - // // feature control - // describe('feature_controls', function () { - // loadTestFile(require.resolve('./feature_controls')); - // }); + // feature control + describe('feature_controls', function () { + loadTestFile(require.resolve('./feature_controls')); + }); - // // CSM - // describe('csm/csm_services', function () { - // loadTestFile(require.resolve('./csm/csm_services')); - // }); + // CSM + describe('csm/csm_services', function () { + loadTestFile(require.resolve('./csm/csm_services')); + }); - // describe('csm/has_rum_data', function () { - // loadTestFile(require.resolve('./csm/has_rum_data')); - // }); + describe('csm/has_rum_data', function () { + loadTestFile(require.resolve('./csm/has_rum_data')); + }); - // describe('csm/js_errors', function () { - // loadTestFile(require.resolve('./csm/js_errors')); - // }); + describe('csm/js_errors', function () { + loadTestFile(require.resolve('./csm/js_errors')); + }); - // describe('csm/long_task_metrics', function () { - // loadTestFile(require.resolve('./csm/long_task_metrics')); - // }); + describe('csm/long_task_metrics', function () { + loadTestFile(require.resolve('./csm/long_task_metrics')); + }); + + describe('csm/page_load_dist', function () { + loadTestFile(require.resolve('./csm/page_load_dist')); + }); + + describe('csm/page_views', function () { + loadTestFile(require.resolve('./csm/page_views')); + }); + + describe('csm/url_search', function () { + loadTestFile(require.resolve('./csm/url_search')); + }); - // describe('csm/page_load_dist', function () { - // loadTestFile(require.resolve('./csm/page_load_dist')); - // }); - - // describe('csm/page_views', function () { - // loadTestFile(require.resolve('./csm/page_views')); - // }); - - // describe('csm/url_search', function () { - // loadTestFile(require.resolve('./csm/url_search')); - // }); - - // describe('csm/web_core_vitals', function () { - // loadTestFile(require.resolve('./csm/web_core_vitals')); - // }); + describe('csm/web_core_vitals', function () { + loadTestFile(require.resolve('./csm/web_core_vitals')); + }); registry.run(providerContext); }); From 920446d1041f5cc7a9a2f9a0e16b733f968e1d6d Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Tue, 21 Sep 2021 16:44:13 -0400 Subject: [PATCH 10/26] ading more tests --- .../services/__snapshots__/throughput.snap | 1059 +++++++++++++++++ .../tests/services/throughput.ts | 176 ++- 2 files changed, 1195 insertions(+), 40 deletions(-) diff --git a/x-pack/test/apm_api_integration/tests/services/__snapshots__/throughput.snap b/x-pack/test/apm_api_integration/tests/services/__snapshots__/throughput.snap index 28fd88bb6d910..9bd707873bd8f 100644 --- a/x-pack/test/apm_api_integration/tests/services/__snapshots__/throughput.snap +++ b/x-pack/test/apm_api_integration/tests/services/__snapshots__/throughput.snap @@ -1,5 +1,1064 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`APM API tests basic apm_8.0.0 Throughput when data is loaded with kql filter to force metrics-based UI has the correct throughput 1`] = ` +Array [ + Object { + "x": 1627973400000, + "y": 4, + }, + Object { + "x": 1627973460000, + "y": 2, + }, + Object { + "x": 1627973520000, + "y": 3, + }, + Object { + "x": 1627973580000, + "y": 11, + }, + Object { + "x": 1627973640000, + "y": 4, + }, + Object { + "x": 1627973700000, + "y": 6, + }, + Object { + "x": 1627973760000, + "y": 6, + }, + Object { + "x": 1627973820000, + "y": 11, + }, + Object { + "x": 1627973880000, + "y": 10, + }, + Object { + "x": 1627973940000, + "y": 10, + }, + Object { + "x": 1627974000000, + "y": 12, + }, + Object { + "x": 1627974060000, + "y": 13, + }, + Object { + "x": 1627974120000, + "y": 8, + }, + Object { + "x": 1627974180000, + "y": 10, + }, + Object { + "x": 1627974240000, + "y": 13, + }, + Object { + "x": 1627974300000, + "y": 9, + }, + Object { + "x": 1627974360000, + "y": 0, + }, + Object { + "x": 1627974420000, + "y": 4, + }, + Object { + "x": 1627974480000, + "y": 5, + }, + Object { + "x": 1627974540000, + "y": 6, + }, + Object { + "x": 1627974600000, + "y": 8, + }, + Object { + "x": 1627974660000, + "y": 5, + }, + Object { + "x": 1627974720000, + "y": 5, + }, + Object { + "x": 1627974780000, + "y": 7, + }, + Object { + "x": 1627974840000, + "y": 2, + }, + Object { + "x": 1627974900000, + "y": 15, + }, + Object { + "x": 1627974960000, + "y": 3, + }, + Object { + "x": 1627975020000, + "y": 8, + }, + Object { + "x": 1627975080000, + "y": 13, + }, + Object { + "x": 1627975140000, + "y": 11, + }, + Object { + "x": 1627975200000, + "y": 0, + }, +] +`; + +exports[`APM API tests basic apm_8.0.0 Throughput when data is loaded with kql filter to force transaction-based UI calculate throughput per minute because of time range has the correct throughput 1`] = ` +Array [ + Object { + "x": 1627970400000, + "y": 1.16666666666667, + }, + Object { + "x": 1627974000000, + "y": 2.61666666666667, + }, + Object { + "x": 1627977600000, + "y": 0, + }, + Object { + "x": 1627981200000, + "y": 0, + }, + Object { + "x": 1627984800000, + "y": 0, + }, + Object { + "x": 1627988400000, + "y": 0, + }, + Object { + "x": 1627992000000, + "y": 0, + }, + Object { + "x": 1627995600000, + "y": 0, + }, + Object { + "x": 1627999200000, + "y": 0, + }, + Object { + "x": 1628002800000, + "y": 0, + }, + Object { + "x": 1628006400000, + "y": 0, + }, + Object { + "x": 1628010000000, + "y": 0, + }, + Object { + "x": 1628013600000, + "y": 0, + }, + Object { + "x": 1628017200000, + "y": 0, + }, + Object { + "x": 1628020800000, + "y": 0, + }, + Object { + "x": 1628024400000, + "y": 0, + }, + Object { + "x": 1628028000000, + "y": 0, + }, + Object { + "x": 1628031600000, + "y": 0, + }, + Object { + "x": 1628035200000, + "y": 0, + }, + Object { + "x": 1628038800000, + "y": 0, + }, + Object { + "x": 1628042400000, + "y": 0, + }, + Object { + "x": 1628046000000, + "y": 0, + }, + Object { + "x": 1628049600000, + "y": 0, + }, + Object { + "x": 1628053200000, + "y": 0, + }, + Object { + "x": 1628056800000, + "y": 0, + }, + Object { + "x": 1628060400000, + "y": 0, + }, + Object { + "x": 1628064000000, + "y": 0, + }, + Object { + "x": 1628067600000, + "y": 0, + }, + Object { + "x": 1628071200000, + "y": 0, + }, + Object { + "x": 1628074800000, + "y": 0, + }, + Object { + "x": 1628078400000, + "y": 0, + }, + Object { + "x": 1628082000000, + "y": 0, + }, + Object { + "x": 1628085600000, + "y": 0, + }, + Object { + "x": 1628089200000, + "y": 0, + }, + Object { + "x": 1628092800000, + "y": 0, + }, + Object { + "x": 1628096400000, + "y": 0, + }, + Object { + "x": 1628100000000, + "y": 0, + }, + Object { + "x": 1628103600000, + "y": 0, + }, + Object { + "x": 1628107200000, + "y": 0, + }, + Object { + "x": 1628110800000, + "y": 0, + }, + Object { + "x": 1628114400000, + "y": 0, + }, + Object { + "x": 1628118000000, + "y": 0, + }, + Object { + "x": 1628121600000, + "y": 0, + }, + Object { + "x": 1628125200000, + "y": 0, + }, + Object { + "x": 1628128800000, + "y": 0, + }, + Object { + "x": 1628132400000, + "y": 0, + }, + Object { + "x": 1628136000000, + "y": 0, + }, + Object { + "x": 1628139600000, + "y": 0, + }, + Object { + "x": 1628143200000, + "y": 0, + }, + Object { + "x": 1628146800000, + "y": 0, + }, + Object { + "x": 1628150400000, + "y": 0, + }, + Object { + "x": 1628154000000, + "y": 0, + }, + Object { + "x": 1628157600000, + "y": 0, + }, + Object { + "x": 1628161200000, + "y": 0, + }, + Object { + "x": 1628164800000, + "y": 0, + }, + Object { + "x": 1628168400000, + "y": 0, + }, + Object { + "x": 1628172000000, + "y": 0, + }, + Object { + "x": 1628175600000, + "y": 0, + }, + Object { + "x": 1628179200000, + "y": 0, + }, + Object { + "x": 1628182800000, + "y": 0, + }, + Object { + "x": 1628186400000, + "y": 0, + }, + Object { + "x": 1628190000000, + "y": 0, + }, + Object { + "x": 1628193600000, + "y": 0, + }, + Object { + "x": 1628197200000, + "y": 0, + }, + Object { + "x": 1628200800000, + "y": 0, + }, + Object { + "x": 1628204400000, + "y": 0, + }, + Object { + "x": 1628208000000, + "y": 0, + }, + Object { + "x": 1628211600000, + "y": 0, + }, + Object { + "x": 1628215200000, + "y": 0, + }, + Object { + "x": 1628218800000, + "y": 0, + }, + Object { + "x": 1628222400000, + "y": 0, + }, + Object { + "x": 1628226000000, + "y": 0, + }, + Object { + "x": 1628229600000, + "y": 0, + }, + Object { + "x": 1628233200000, + "y": 0, + }, + Object { + "x": 1628236800000, + "y": 0, + }, + Object { + "x": 1628240400000, + "y": 0, + }, + Object { + "x": 1628244000000, + "y": 0, + }, + Object { + "x": 1628247600000, + "y": 0, + }, + Object { + "x": 1628251200000, + "y": 0, + }, + Object { + "x": 1628254800000, + "y": 0, + }, + Object { + "x": 1628258400000, + "y": 0, + }, + Object { + "x": 1628262000000, + "y": 0, + }, + Object { + "x": 1628265600000, + "y": 0, + }, + Object { + "x": 1628269200000, + "y": 0, + }, + Object { + "x": 1628272800000, + "y": 0, + }, + Object { + "x": 1628276400000, + "y": 0, + }, + Object { + "x": 1628280000000, + "y": 0, + }, + Object { + "x": 1628283600000, + "y": 0, + }, + Object { + "x": 1628287200000, + "y": 0, + }, + Object { + "x": 1628290800000, + "y": 0, + }, + Object { + "x": 1628294400000, + "y": 0, + }, + Object { + "x": 1628298000000, + "y": 0, + }, + Object { + "x": 1628301600000, + "y": 0, + }, + Object { + "x": 1628305200000, + "y": 0, + }, + Object { + "x": 1628308800000, + "y": 0, + }, + Object { + "x": 1628312400000, + "y": 0, + }, + Object { + "x": 1628316000000, + "y": 0, + }, + Object { + "x": 1628319600000, + "y": 0, + }, + Object { + "x": 1628323200000, + "y": 0, + }, + Object { + "x": 1628326800000, + "y": 0, + }, + Object { + "x": 1628330400000, + "y": 0, + }, + Object { + "x": 1628334000000, + "y": 0, + }, + Object { + "x": 1628337600000, + "y": 0, + }, + Object { + "x": 1628341200000, + "y": 0, + }, + Object { + "x": 1628344800000, + "y": 0, + }, + Object { + "x": 1628348400000, + "y": 0, + }, + Object { + "x": 1628352000000, + "y": 0, + }, + Object { + "x": 1628355600000, + "y": 0, + }, + Object { + "x": 1628359200000, + "y": 0, + }, + Object { + "x": 1628362800000, + "y": 0, + }, + Object { + "x": 1628366400000, + "y": 0, + }, + Object { + "x": 1628370000000, + "y": 0, + }, + Object { + "x": 1628373600000, + "y": 0, + }, + Object { + "x": 1628377200000, + "y": 0, + }, + Object { + "x": 1628380800000, + "y": 0, + }, + Object { + "x": 1628384400000, + "y": 0, + }, + Object { + "x": 1628388000000, + "y": 0, + }, + Object { + "x": 1628391600000, + "y": 0, + }, + Object { + "x": 1628395200000, + "y": 0, + }, + Object { + "x": 1628398800000, + "y": 0, + }, + Object { + "x": 1628402400000, + "y": 0, + }, + Object { + "x": 1628406000000, + "y": 0, + }, + Object { + "x": 1628409600000, + "y": 0, + }, + Object { + "x": 1628413200000, + "y": 0, + }, + Object { + "x": 1628416800000, + "y": 0, + }, + Object { + "x": 1628420400000, + "y": 0, + }, + Object { + "x": 1628424000000, + "y": 0, + }, + Object { + "x": 1628427600000, + "y": 0, + }, + Object { + "x": 1628431200000, + "y": 0, + }, + Object { + "x": 1628434800000, + "y": 0, + }, + Object { + "x": 1628438400000, + "y": 0, + }, + Object { + "x": 1628442000000, + "y": 0, + }, + Object { + "x": 1628445600000, + "y": 0, + }, + Object { + "x": 1628449200000, + "y": 0, + }, + Object { + "x": 1628452800000, + "y": 0, + }, + Object { + "x": 1628456400000, + "y": 0, + }, + Object { + "x": 1628460000000, + "y": 0, + }, + Object { + "x": 1628463600000, + "y": 0, + }, + Object { + "x": 1628467200000, + "y": 0, + }, + Object { + "x": 1628470800000, + "y": 0, + }, + Object { + "x": 1628474400000, + "y": 0, + }, + Object { + "x": 1628478000000, + "y": 0, + }, + Object { + "x": 1628481600000, + "y": 0, + }, + Object { + "x": 1628485200000, + "y": 0, + }, + Object { + "x": 1628488800000, + "y": 0, + }, + Object { + "x": 1628492400000, + "y": 0, + }, + Object { + "x": 1628496000000, + "y": 0, + }, + Object { + "x": 1628499600000, + "y": 0, + }, + Object { + "x": 1628503200000, + "y": 0, + }, + Object { + "x": 1628506800000, + "y": 0, + }, + Object { + "x": 1628510400000, + "y": 0, + }, + Object { + "x": 1628514000000, + "y": 0, + }, + Object { + "x": 1628517600000, + "y": 0, + }, + Object { + "x": 1628521200000, + "y": 0, + }, + Object { + "x": 1628524800000, + "y": 0, + }, + Object { + "x": 1628528400000, + "y": 0, + }, + Object { + "x": 1628532000000, + "y": 0, + }, + Object { + "x": 1628535600000, + "y": 0, + }, + Object { + "x": 1628539200000, + "y": 0, + }, + Object { + "x": 1628542800000, + "y": 0, + }, + Object { + "x": 1628546400000, + "y": 0, + }, + Object { + "x": 1628550000000, + "y": 0, + }, + Object { + "x": 1628553600000, + "y": 0, + }, + Object { + "x": 1628557200000, + "y": 0, + }, + Object { + "x": 1628560800000, + "y": 0, + }, + Object { + "x": 1628564400000, + "y": 0, + }, + Object { + "x": 1628568000000, + "y": 0, + }, + Object { + "x": 1628571600000, + "y": 0, + }, + Object { + "x": 1628575200000, + "y": 0, + }, +] +`; + +exports[`APM API tests basic apm_8.0.0 Throughput when data is loaded with kql filter to force transaction-based UI calculate throughput per second because of time range has the correct throughput 1`] = ` +Array [ + Object { + "x": 1627973400000, + "y": 0.0333333333333333, + }, + Object { + "x": 1627973430000, + "y": 0.0333333333333333, + }, + Object { + "x": 1627973460000, + "y": 0.0333333333333333, + }, + Object { + "x": 1627973490000, + "y": 0.1, + }, + Object { + "x": 1627973520000, + "y": 0.0333333333333333, + }, + Object { + "x": 1627973550000, + "y": 0.266666666666667, + }, + Object { + "x": 1627973580000, + "y": 0.133333333333333, + }, + Object { + "x": 1627973610000, + "y": 0.0333333333333333, + }, + Object { + "x": 1627973640000, + "y": 0.0333333333333333, + }, + Object { + "x": 1627973670000, + "y": 0.0666666666666667, + }, + Object { + "x": 1627973700000, + "y": 0.133333333333333, + }, + Object { + "x": 1627973730000, + "y": 0.1, + }, + Object { + "x": 1627973760000, + "y": 0.2, + }, + Object { + "x": 1627973790000, + "y": 0.133333333333333, + }, + Object { + "x": 1627973820000, + "y": 0.166666666666667, + }, + Object { + "x": 1627973850000, + "y": 0.1, + }, + Object { + "x": 1627973880000, + "y": 0.266666666666667, + }, + Object { + "x": 1627973910000, + "y": 0.166666666666667, + }, + Object { + "x": 1627973940000, + "y": 0.1, + }, + Object { + "x": 1627973970000, + "y": 0.2, + }, + Object { + "x": 1627974000000, + "y": 0.266666666666667, + }, + Object { + "x": 1627974030000, + "y": 0.266666666666667, + }, + Object { + "x": 1627974060000, + "y": 0.133333333333333, + }, + Object { + "x": 1627974090000, + "y": 0.0666666666666667, + }, + Object { + "x": 1627974120000, + "y": 0.266666666666667, + }, + Object { + "x": 1627974150000, + "y": 0.0666666666666667, + }, + Object { + "x": 1627974180000, + "y": 0.233333333333333, + }, + Object { + "x": 1627974210000, + "y": 0.166666666666667, + }, + Object { + "x": 1627974240000, + "y": 0.233333333333333, + }, + Object { + "x": 1627974270000, + "y": 0.1, + }, + Object { + "x": 1627974300000, + "y": 0.166666666666667, + }, + Object { + "x": 1627974330000, + "y": 0, + }, + Object { + "x": 1627974360000, + "y": 0, + }, + Object { + "x": 1627974390000, + "y": 0.0666666666666667, + }, + Object { + "x": 1627974420000, + "y": 0.1, + }, + Object { + "x": 1627974450000, + "y": 0.1, + }, + Object { + "x": 1627974480000, + "y": 0.0666666666666667, + }, + Object { + "x": 1627974510000, + "y": 0.1, + }, + Object { + "x": 1627974540000, + "y": 0.1, + }, + Object { + "x": 1627974570000, + "y": 0.1, + }, + Object { + "x": 1627974600000, + "y": 0.166666666666667, + }, + Object { + "x": 1627974630000, + "y": 0.0333333333333333, + }, + Object { + "x": 1627974660000, + "y": 0.1, + }, + Object { + "x": 1627974690000, + "y": 0.0666666666666667, + }, + Object { + "x": 1627974720000, + "y": 0.133333333333333, + }, + Object { + "x": 1627974750000, + "y": 0.166666666666667, + }, + Object { + "x": 1627974780000, + "y": 0.0666666666666667, + }, + Object { + "x": 1627974810000, + "y": 0.0333333333333333, + }, + Object { + "x": 1627974840000, + "y": 0.1, + }, + Object { + "x": 1627974870000, + "y": 0.1, + }, + Object { + "x": 1627974900000, + "y": 0.3, + }, + Object { + "x": 1627974930000, + "y": 0.0666666666666667, + }, + Object { + "x": 1627974960000, + "y": 0.0333333333333333, + }, + Object { + "x": 1627974990000, + "y": 0.133333333333333, + }, + Object { + "x": 1627975020000, + "y": 0.133333333333333, + }, + Object { + "x": 1627975050000, + "y": 0.2, + }, + Object { + "x": 1627975080000, + "y": 0.3, + }, + Object { + "x": 1627975110000, + "y": 0.166666666666667, + }, + Object { + "x": 1627975140000, + "y": 0.133333333333333, + }, + Object { + "x": 1627975170000, + "y": 0.2, + }, + Object { + "x": 1627975200000, + "y": 0, + }, +] +`; + exports[`APM API tests basic apm_8.0.0 Throughput when data is loaded with time comparison has the correct throughput in tpm 1`] = ` Object { "currentPeriod": Array [ diff --git a/x-pack/test/apm_api_integration/tests/services/throughput.ts b/x-pack/test/apm_api_integration/tests/services/throughput.ts index 49e244ea9038b..2e5318a191e24 100644 --- a/x-pack/test/apm_api_integration/tests/services/throughput.ts +++ b/x-pack/test/apm_api_integration/tests/services/throughput.ts @@ -101,62 +101,158 @@ export default function ApiTest({ getService }: FtrProviderContext) { it('has the correct throughput in tpm', () => { expect(throughputResponse.throughputUnit).equal('minute'); + }); + + it('has the correct throughput avg', () => { const avg = mean(throughputResponse.currentPeriod.map((d) => d.y)); expectSnapshot(avg).toMatchInline(`7.2258064516129`); }); + + it('has the correct throughput', () => { + expectSnapshot(throughputResponse.currentPeriod).toMatch(); + }); }); describe('with kql filter to force transaction-based UI', () => { - before(async () => { - const response = await apmApiSupertest({ - endpoint: 'GET /api/apm/services/{serviceName}/throughput', - params: { - path: { - serviceName: 'opbeans-java', + describe('calculate throughput per second because of time range', () => { + before(async () => { + const response = await apmApiSupertest({ + endpoint: 'GET /api/apm/services/{serviceName}/throughput', + params: { + path: { + serviceName: 'opbeans-java', + }, + query: { + kuery: 'processor.event : "transaction"', + start: metadata.start, + end: metadata.end, + transactionType: 'request', + environment: 'ENVIRONMENT_ALL', + }, }, - query: { - kuery: 'processor.event : "transaction"', - start: metadata.start, - end: metadata.end, - transactionType: 'request', - environment: 'ENVIRONMENT_ALL', - }, - }, + }); + throughputResponse = response.body; }); - throughputResponse = response.body; - }); - it('returns some data', () => { - expect(throughputResponse.currentPeriod.length).to.be.greaterThan(0); - expect(throughputResponse.previousPeriod.length).not.to.be.greaterThan(0); + it('returns some data', () => { + expect(throughputResponse.currentPeriod.length).to.be.greaterThan(0); + expect(throughputResponse.previousPeriod.length).not.to.be.greaterThan(0); - const nonNullDataPoints = throughputResponse.currentPeriod.filter(({ y }) => - isFiniteNumber(y) - ); + const nonNullDataPoints = throughputResponse.currentPeriod.filter(({ y }) => + isFiniteNumber(y) + ); - expect(nonNullDataPoints.length).to.be.greaterThan(0); - }); + expect(nonNullDataPoints.length).to.be.greaterThan(0); + }); - it('has the correct start date', () => { - expectSnapshot( - new Date(first(throughputResponse.currentPeriod)?.x ?? NaN).toISOString() - ).toMatchInline(`"2021-08-03T06:50:00.000Z"`); - }); + it('has the correct start date', () => { + expectSnapshot( + new Date(first(throughputResponse.currentPeriod)?.x ?? NaN).toISOString() + ).toMatchInline(`"2021-08-03T06:50:00.000Z"`); + }); - it('has the correct end date', () => { - expectSnapshot( - new Date(last(throughputResponse.currentPeriod)?.x ?? NaN).toISOString() - ).toMatchInline(`"2021-08-03T07:20:00.000Z"`); - }); + it('has the correct first value', () => { + expectSnapshot(first(throughputResponse.currentPeriod)?.y).toMatchInline( + `0.0333333333333333` + ); + }); - it('has the correct number of buckets', () => { - expectSnapshot(throughputResponse.currentPeriod.length).toMatchInline(`61`); + it('has the correct end date', () => { + expectSnapshot( + new Date(last(throughputResponse.currentPeriod)?.x ?? NaN).toISOString() + ).toMatchInline(`"2021-08-03T07:20:00.000Z"`); + }); + + it('has the correct last value', () => { + expectSnapshot(last(throughputResponse.currentPeriod)?.y).toMatchInline(`0`); + }); + + it('has the correct number of buckets', () => { + expectSnapshot(throughputResponse.currentPeriod.length).toMatchInline(`61`); + }); + + it('returns transactions per second (tps)', () => { + expect(throughputResponse.throughputUnit).equal('second'); + }); + + it('has the correct throughput avg', () => { + const avg = mean(throughputResponse.currentPeriod.map((d) => d.y)); + expectSnapshot(avg).toMatchInline(`0.124043715846995`); + }); + + it('has the correct throughput', () => { + expectSnapshot(throughputResponse.currentPeriod).toMatch(); + }); }); + describe('calculate throughput per minute because of time range', () => { + before(async () => { + const response = await apmApiSupertest({ + endpoint: 'GET /api/apm/services/{serviceName}/throughput', + params: { + path: { + serviceName: 'opbeans-java', + }, + query: { + kuery: 'processor.event : "transaction"', + start: metadata.start, + end: moment(metadata.start).add(7, 'days').toISOString(), + transactionType: 'request', + environment: 'ENVIRONMENT_ALL', + }, + }, + }); + throughputResponse = response.body; + }); - it('has the correct throughput in tps', () => { - expect(throughputResponse.throughputUnit).equal('second'); - const avg = mean(throughputResponse.currentPeriod.map((d) => d.y)); - expectSnapshot(avg).toMatchInline(`0.124043715846995`); + it('returns some data', () => { + expect(throughputResponse.currentPeriod.length).to.be.greaterThan(0); + expect(throughputResponse.previousPeriod.length).not.to.be.greaterThan(0); + + const nonNullDataPoints = throughputResponse.currentPeriod.filter(({ y }) => + isFiniteNumber(y) + ); + + expect(nonNullDataPoints.length).to.be.greaterThan(0); + }); + + it('has the correct start date', () => { + expectSnapshot( + new Date(first(throughputResponse.currentPeriod)?.x ?? NaN).toISOString() + ).toMatchInline(`"2021-08-03T06:00:00.000Z"`); + }); + + it('has the correct first value', () => { + expectSnapshot(first(throughputResponse.currentPeriod)?.y).toMatchInline( + `1.16666666666667` + ); + }); + + it('has the correct end date', () => { + expectSnapshot( + new Date(last(throughputResponse.currentPeriod)?.x ?? NaN).toISOString() + ).toMatchInline(`"2021-08-10T06:00:00.000Z"`); + }); + + it('has the correct last value', () => { + expectSnapshot(last(throughputResponse.currentPeriod)?.y).toMatchInline(`0`); + }); + + it('has the correct number of buckets', () => { + expectSnapshot(throughputResponse.currentPeriod.length).toMatchInline(`169`); + }); + + it('returns transactions per minute (tpm)', () => { + expect(throughputResponse.throughputUnit).equal('minute'); + }); + + it('has the correct throughput avg', () => { + const avg = mean(throughputResponse.currentPeriod.map((d) => d.y)); + expectSnapshot(avg).toMatchInline(`0.0223865877712032`); + }); + + it('has the correct throughput', () => { + expectSnapshot(throughputResponse.currentPeriod).toMatch(); + }); }); }); } From fb99e157f7519ca903f59749420f08aa02e06965 Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Tue, 21 Sep 2021 17:16:06 -0400 Subject: [PATCH 11/26] fixing observability api --- .../rest/apm_observability_overview_fetchers.ts | 2 ++ .../get_transactions_per_minute.ts | 16 ++++++++++------ .../apm/server/routes/observability_overview.ts | 9 +++++++-- .../infra/public/metrics_overview_fetchers.ts | 7 +++++-- .../infra/public/utils/logs_overview_fetchers.ts | 2 +- .../public/components/app/section/apm/index.tsx | 5 +++-- .../public/components/app/section/logs/index.tsx | 5 +++-- .../components/app/section/metrics/index.tsx | 5 +++-- .../components/app/section/uptime/index.tsx | 5 +++-- .../public/components/app/section/ux/index.tsx | 5 +++-- .../public/pages/overview/data_sections.tsx | 3 ++- .../public/pages/overview/index.tsx | 3 ++- .../public/typings/fetch_overview_data/index.ts | 3 ++- .../public/apps/uptime_overview_fetcher.ts | 8 ++++++-- 14 files changed, 52 insertions(+), 26 deletions(-) diff --git a/x-pack/plugins/apm/public/services/rest/apm_observability_overview_fetchers.ts b/x-pack/plugins/apm/public/services/rest/apm_observability_overview_fetchers.ts index 1b95c88a5fdc5..84b00692cee71 100644 --- a/x-pack/plugins/apm/public/services/rest/apm_observability_overview_fetchers.ts +++ b/x-pack/plugins/apm/public/services/rest/apm_observability_overview_fetchers.ts @@ -15,6 +15,7 @@ export const fetchObservabilityOverviewPageData = async ({ absoluteTime, relativeTime, bucketSize, + intervalString, }: FetchDataParams): Promise => { const data = await callApmApi({ endpoint: 'GET /api/apm/observability_overview', @@ -24,6 +25,7 @@ export const fetchObservabilityOverviewPageData = async ({ start: new Date(absoluteTime.start).toISOString(), end: new Date(absoluteTime.end).toISOString(), bucketSize, + intervalString, }, }, }); diff --git a/x-pack/plugins/apm/server/lib/observability_overview/get_transactions_per_minute.ts b/x-pack/plugins/apm/server/lib/observability_overview/get_transactions_per_minute.ts index 362231b509c6d..fcdcc3243e3d4 100644 --- a/x-pack/plugins/apm/server/lib/observability_overview/get_transactions_per_minute.ts +++ b/x-pack/plugins/apm/server/lib/observability_overview/get_transactions_per_minute.ts @@ -16,15 +16,20 @@ import { getDocumentTypeFilterForAggregatedTransactions, getProcessorEventForAggregatedTransactions, } from '../helpers/aggregated_transactions'; -import { calculateThroughputWithRange } from '../helpers/calculate_throughput'; +import { + calculateThroughputWithInterval, + calculateThroughputWithRange, +} from '../helpers/calculate_throughput'; export async function getTransactionsPerMinute({ setup, bucketSize, + intervalString, searchAggregatedTransactions, }: { setup: Setup & SetupTimeRange; - bucketSize: string; + bucketSize: number; + intervalString: string; searchAggregatedTransactions: boolean; }) { const { apmEventClient, start, end } = setup; @@ -60,7 +65,7 @@ export async function getTransactionsPerMinute({ timeseries: { date_histogram: { field: '@timestamp', - fixed_interval: bucketSize, + fixed_interval: intervalString, min_doc_count: 0, }, }, @@ -91,9 +96,8 @@ export async function getTransactionsPerMinute({ timeseries: topTransactionTypeBucket?.timeseries.buckets.map((bucket) => ({ x: bucket.key, - y: calculateThroughputWithRange({ - start, - end, + y: calculateThroughputWithInterval({ + durationAsSeconds: bucketSize, value: bucket.doc_count, }), })) || [], diff --git a/x-pack/plugins/apm/server/routes/observability_overview.ts b/x-pack/plugins/apm/server/routes/observability_overview.ts index 838bc3a1f5c68..e22f59a552a34 100644 --- a/x-pack/plugins/apm/server/routes/observability_overview.ts +++ b/x-pack/plugins/apm/server/routes/observability_overview.ts @@ -6,6 +6,7 @@ */ import * as t from 'io-ts'; +import { jsonRt } from '@kbn/io-ts-utils'; import { setupRequest } from '../lib/helpers/setup_request'; import { getServiceCount } from '../lib/observability_overview/get_service_count'; import { getTransactionsPerMinute } from '../lib/observability_overview/get_transactions_per_minute'; @@ -28,12 +29,15 @@ const observabilityOverviewHasDataRoute = createApmServerRoute({ const observabilityOverviewRoute = createApmServerRoute({ endpoint: 'GET /api/apm/observability_overview', params: t.type({ - query: t.intersection([rangeRt, t.type({ bucketSize: t.string })]), + query: t.intersection([ + rangeRt, + t.type({ bucketSize: jsonRt.pipe(t.number), intervalString: t.string }), + ]), }), options: { tags: ['access:apm'] }, handler: async (resources) => { const setup = await setupRequest(resources); - const { bucketSize } = resources.params.query; + const { bucketSize, intervalString } = resources.params.query; const searchAggregatedTransactions = await getSearchAggregatedTransactions({ apmEventClient: setup.apmEventClient, @@ -52,6 +56,7 @@ const observabilityOverviewRoute = createApmServerRoute({ getTransactionsPerMinute({ setup, bucketSize, + intervalString, searchAggregatedTransactions, }), ]); diff --git a/x-pack/plugins/infra/public/metrics_overview_fetchers.ts b/x-pack/plugins/infra/public/metrics_overview_fetchers.ts index 4f5b73d685591..ad62552a4fc93 100644 --- a/x-pack/plugins/infra/public/metrics_overview_fetchers.ts +++ b/x-pack/plugins/infra/public/metrics_overview_fetchers.ts @@ -28,7 +28,10 @@ export const createMetricsHasData = ( export const createMetricsFetchData = ( getStartServices: InfraClientCoreSetup['getStartServices'] -) => async ({ absoluteTime, bucketSize }: FetchDataParams): Promise => { +) => async ({ + absoluteTime, + intervalString, +}: FetchDataParams): Promise => { const [coreServices] = await getStartServices(); const { http } = coreServices; @@ -37,7 +40,7 @@ export const createMetricsFetchData = ( const overviewRequest: TopNodesRequest = { sourceId: 'default', - bucketSize, + bucketSize: intervalString, size: 5, timerange: { from: start, diff --git a/x-pack/plugins/infra/public/utils/logs_overview_fetchers.ts b/x-pack/plugins/infra/public/utils/logs_overview_fetchers.ts index 67db6a4721941..c813bd3dae781 100644 --- a/x-pack/plugins/infra/public/utils/logs_overview_fetchers.ts +++ b/x-pack/plugins/infra/public/utils/logs_overview_fetchers.ts @@ -138,7 +138,7 @@ function buildLogOverviewAggregations(logParams: LogParams, params: FetchDataPar series: { date_histogram: { field: logParams.timestampField, - fixed_interval: params.bucketSize, + fixed_interval: params.intervalString, }, }, }, diff --git a/x-pack/plugins/observability/public/components/app/section/apm/index.tsx b/x-pack/plugins/observability/public/components/app/section/apm/index.tsx index 7a42e96c3823d..2e8523481297f 100644 --- a/x-pack/plugins/observability/public/components/app/section/apm/index.tsx +++ b/x-pack/plugins/observability/public/components/app/section/apm/index.tsx @@ -22,9 +22,10 @@ import { useHasData } from '../../../../hooks/use_has_data'; import { ChartContainer } from '../../chart_container'; import { StyledStat } from '../../styled_stat'; import { onBrushEnd } from '../helper'; +import { BucketSize } from '../../../../pages/overview'; interface Props { - bucketSize?: string; + bucketSize: BucketSize; } function formatTpm(value?: number) { @@ -57,7 +58,7 @@ export function APMSection({ bucketSize }: Props) { return getDataHandler('apm')?.fetchData({ absoluteTime: { start: absoluteStart, end: absoluteEnd }, relativeTime: { start: relativeStart, end: relativeEnd }, - bucketSize, + ...bucketSize, }); } }, diff --git a/x-pack/plugins/observability/public/components/app/section/logs/index.tsx b/x-pack/plugins/observability/public/components/app/section/logs/index.tsx index da5a8f25045a5..654a75995cae1 100644 --- a/x-pack/plugins/observability/public/components/app/section/logs/index.tsx +++ b/x-pack/plugins/observability/public/components/app/section/logs/index.tsx @@ -19,6 +19,7 @@ import { useChartTheme } from '../../../../hooks/use_chart_theme'; import { FETCH_STATUS, useFetcher } from '../../../../hooks/use_fetcher'; import { useHasData } from '../../../../hooks/use_has_data'; import { useTimeRange } from '../../../../hooks/use_time_range'; +import { BucketSize } from '../../../../pages/overview'; import { LogsFetchDataResponse } from '../../../../typings'; import { formatStatValue } from '../../../../utils/format_stat_value'; import { ChartContainer } from '../../chart_container'; @@ -26,7 +27,7 @@ import { StyledStat } from '../../styled_stat'; import { onBrushEnd } from '../helper'; interface Props { - bucketSize?: string; + bucketSize: BucketSize; } function getColorPerItem(series?: LogsFetchDataResponse['series']) { @@ -56,7 +57,7 @@ export function LogsSection({ bucketSize }: Props) { return getDataHandler('infra_logs')?.fetchData({ absoluteTime: { start: absoluteStart, end: absoluteEnd }, relativeTime: { start: relativeStart, end: relativeEnd }, - bucketSize, + ...bucketSize, }); } }, diff --git a/x-pack/plugins/observability/public/components/app/section/metrics/index.tsx b/x-pack/plugins/observability/public/components/app/section/metrics/index.tsx index fd1e356f849a2..8cd49efe4787a 100644 --- a/x-pack/plugins/observability/public/components/app/section/metrics/index.tsx +++ b/x-pack/plugins/observability/public/components/app/section/metrics/index.tsx @@ -29,6 +29,7 @@ import { useTimeRange } from '../../../../hooks/use_time_range'; import { HostLink } from './host_link'; import { formatDuration } from './lib/format_duration'; import { MetricWithSparkline } from './metric_with_sparkline'; +import { BucketSize } from '../../../../pages/overview'; const COLOR_ORANGE = 7; const COLOR_BLUE = 1; @@ -36,7 +37,7 @@ const COLOR_GREEN = 0; const COLOR_PURPLE = 3; interface Props { - bucketSize?: string; + bucketSize: BucketSize; } const percentFormatter = (value: NumberOrNull) => @@ -61,7 +62,7 @@ export function MetricsSection({ bucketSize }: Props) { return getDataHandler('infra_metrics')?.fetchData({ absoluteTime: { start: absoluteStart, end: absoluteEnd }, relativeTime: { start: relativeStart, end: relativeEnd }, - bucketSize, + ...bucketSize, }); } }, diff --git a/x-pack/plugins/observability/public/components/app/section/uptime/index.tsx b/x-pack/plugins/observability/public/components/app/section/uptime/index.tsx index 28cbd12663c1b..d4242f05ca251 100644 --- a/x-pack/plugins/observability/public/components/app/section/uptime/index.tsx +++ b/x-pack/plugins/observability/public/components/app/section/uptime/index.tsx @@ -27,13 +27,14 @@ import { useChartTheme } from '../../../../hooks/use_chart_theme'; import { FETCH_STATUS, useFetcher } from '../../../../hooks/use_fetcher'; import { useHasData } from '../../../../hooks/use_has_data'; import { useTimeRange } from '../../../../hooks/use_time_range'; +import { BucketSize } from '../../../../pages/overview'; import { Series } from '../../../../typings'; import { ChartContainer } from '../../chart_container'; import { StyledStat } from '../../styled_stat'; import { onBrushEnd } from '../helper'; interface Props { - bucketSize?: string; + bucketSize: BucketSize; } export function UptimeSection({ bucketSize }: Props) { @@ -49,7 +50,7 @@ export function UptimeSection({ bucketSize }: Props) { return getDataHandler('synthetics')?.fetchData({ absoluteTime: { start: absoluteStart, end: absoluteEnd }, relativeTime: { start: relativeStart, end: relativeEnd }, - bucketSize, + ...bucketSize, }); } }, diff --git a/x-pack/plugins/observability/public/components/app/section/ux/index.tsx b/x-pack/plugins/observability/public/components/app/section/ux/index.tsx index 5aa89eb2d3074..9e3c16fe01e91 100644 --- a/x-pack/plugins/observability/public/components/app/section/ux/index.tsx +++ b/x-pack/plugins/observability/public/components/app/section/ux/index.tsx @@ -12,10 +12,11 @@ import { getDataHandler } from '../../../../data_handler'; import { FETCH_STATUS, useFetcher } from '../../../../hooks/use_fetcher'; import { useHasData } from '../../../../hooks/use_has_data'; import { useTimeRange } from '../../../../hooks/use_time_range'; +import { BucketSize } from '../../../../pages/overview'; import CoreVitals from '../../../shared/core_web_vitals'; interface Props { - bucketSize: string; + bucketSize: BucketSize; } export function UXSection({ bucketSize }: Props) { @@ -31,7 +32,7 @@ export function UXSection({ bucketSize }: Props) { absoluteTime: { start: absoluteStart, end: absoluteEnd }, relativeTime: { start: relativeStart, end: relativeEnd }, serviceName, - bucketSize, + ...bucketSize, }); } }, diff --git a/x-pack/plugins/observability/public/pages/overview/data_sections.tsx b/x-pack/plugins/observability/public/pages/overview/data_sections.tsx index 82231304e65b2..75162c199052b 100644 --- a/x-pack/plugins/observability/public/pages/overview/data_sections.tsx +++ b/x-pack/plugins/observability/public/pages/overview/data_sections.tsx @@ -7,6 +7,7 @@ import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import React from 'react'; +import { BucketSize } from '.'; import { APMSection } from '../../components/app/section/apm'; import { LogsSection } from '../../components/app/section/logs'; import { MetricsSection } from '../../components/app/section/metrics'; @@ -15,7 +16,7 @@ import { UXSection } from '../../components/app/section/ux'; import { HasDataMap } from '../../context/has_data_context'; interface Props { - bucketSize: string; + bucketSize: BucketSize; hasData?: Partial; } diff --git a/x-pack/plugins/observability/public/pages/overview/index.tsx b/x-pack/plugins/observability/public/pages/overview/index.tsx index 71c52c3a51d3b..801a36fb27c94 100644 --- a/x-pack/plugins/observability/public/pages/overview/index.tsx +++ b/x-pack/plugins/observability/public/pages/overview/index.tsx @@ -31,6 +31,7 @@ interface Props { routeParams: RouteParams<'/overview'>; } +export type BucketSize = ReturnType; function calculateBucketSize({ start, end }: { start?: number; end?: number }) { if (start && end) { return getBucketSize({ start, end, minInterval: '60s' }); @@ -90,7 +91,7 @@ export function OverviewPage({ routeParams }: Props) { {/* Data sections */} - {hasAnyData && } + {hasAnyData && } diff --git a/x-pack/plugins/observability/public/typings/fetch_overview_data/index.ts b/x-pack/plugins/observability/public/typings/fetch_overview_data/index.ts index 197a8c1060cdb..54083324a80ee 100644 --- a/x-pack/plugins/observability/public/typings/fetch_overview_data/index.ts +++ b/x-pack/plugins/observability/public/typings/fetch_overview_data/index.ts @@ -26,7 +26,8 @@ export interface Series { export interface FetchDataParams { absoluteTime: { start: number; end: number }; relativeTime: { start: string; end: string }; - bucketSize: string; + bucketSize: number; + intervalString: string; serviceName?: string; } diff --git a/x-pack/plugins/uptime/public/apps/uptime_overview_fetcher.ts b/x-pack/plugins/uptime/public/apps/uptime_overview_fetcher.ts index e1cab29abec4b..8f8cf16d1e383 100644 --- a/x-pack/plugins/uptime/public/apps/uptime_overview_fetcher.ts +++ b/x-pack/plugins/uptime/public/apps/uptime_overview_fetcher.ts @@ -13,7 +13,7 @@ import { kibanaService } from '../state/kibana_service'; async function fetchUptimeOverviewData({ absoluteTime, relativeTime, - bucketSize, + intervalString, }: FetchDataParams) { const start = new Date(absoluteTime.start).toISOString(); const end = new Date(absoluteTime.end).toISOString(); @@ -22,7 +22,11 @@ async function fetchUptimeOverviewData({ dateRangeEnd: end, }); - const pings = await fetchPingHistogram({ dateStart: start, dateEnd: end, bucketSize }); + const pings = await fetchPingHistogram({ + dateStart: start, + dateEnd: end, + bucketSize: intervalString, + }); const response: UptimeFetchDataResponse = { appLink: `/app/uptime?dateRangeStart=${relativeTime.start}&dateRangeEnd=${relativeTime.end}`, From 03461690f2f5a1c9bec5c0d40ab3a21f6ccc009f Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Wed, 22 Sep 2021 13:47:32 -0400 Subject: [PATCH 12/26] removing tps --- .../apm/common/utils/formatters/duration.ts | 16 +- .../service_overview_throughput_chart.tsx | 23 +- .../lib/helpers/calculate_throughput.ts | 24 +- .../apm/server/lib/services/get_throughput.ts | 8 +- x-pack/plugins/apm/server/routes/services.ts | 5 - .../observability_overview.ts | 17 +- .../services/__snapshots__/throughput.snap | 1028 +++-------------- .../tests/services/throughput.ts | 86 +- 8 files changed, 199 insertions(+), 1008 deletions(-) diff --git a/x-pack/plugins/apm/common/utils/formatters/duration.ts b/x-pack/plugins/apm/common/utils/formatters/duration.ts index 00c485d926884..10de63d04894d 100644 --- a/x-pack/plugins/apm/common/utils/formatters/duration.ts +++ b/x-pack/plugins/apm/common/utils/formatters/duration.ts @@ -9,17 +9,10 @@ import { i18n } from '@kbn/i18n'; import moment from 'moment'; import { memoize } from 'lodash'; import { NOT_AVAILABLE_LABEL } from '../../../common/i18n'; -import { - asDecimalOrInteger, - asInteger, - asDecimal, - asPreciseDecimal, -} from './formatters'; +import { asDecimalOrInteger, asInteger, asDecimal } from './formatters'; import { TimeUnit } from './datetime'; import { Maybe } from '../../../typings/common'; import { isFiniteNumber } from '../is_finite_number'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import type { ThroughputUnit } from '../../../server/lib/helpers/calculate_throughput'; interface FormatterOptions { defaultValue?: string; @@ -187,12 +180,11 @@ export function asTransactionRate(value: Maybe) { }); } -export function asExactTransactionRate(value: number, unit: ThroughputUnit) { +export function asExactTransactionRate(value: number) { return i18n.translate('xpack.apm.exactTransactionRateLabel', { - defaultMessage: `{value} { unit, select, minute {tpm} other {tps} }`, + defaultMessage: `{value} tpm`, values: { - value: value >= 1 ? asDecimalOrInteger(value) : asPreciseDecimal(value), - unit, + value: asDecimalOrInteger(value), }, }); } diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx index 718d6878c7c99..1b9d0ce9e751a 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx @@ -123,29 +123,16 @@ export function ServiceOverviewThroughputChart({ 'xpack.apm.serviceOverview.throughtputChartTitle', { defaultMessage: 'Throughput' } )} - {data.throughputUnit === 'second' - ? i18n.translate( - 'xpack.apm.serviceOverview.throughtputPerSecondChartTitle', - { defaultMessage: ' (per second)' } - ) - : ''} @@ -157,7 +144,7 @@ export function ServiceOverviewThroughputChart({ showAnnotations={false} fetchStatus={status} timeseries={timeseries} - yLabelFormat={(y) => asExactTransactionRate(y, data.throughputUnit)} + yLabelFormat={(y) => asExactTransactionRate(y)} customTheme={comparisonChartTheme} /> diff --git a/x-pack/plugins/apm/server/lib/helpers/calculate_throughput.ts b/x-pack/plugins/apm/server/lib/helpers/calculate_throughput.ts index 66311c4bf5cdc..339c895ca56a2 100644 --- a/x-pack/plugins/apm/server/lib/helpers/calculate_throughput.ts +++ b/x-pack/plugins/apm/server/lib/helpers/calculate_throughput.ts @@ -7,40 +7,24 @@ import { SetupTimeRange } from './setup_request'; -function calculateThroughput({ - durationAsSeconds, - unit, - value, -}: { - durationAsSeconds: number; - unit: ThroughputUnit; - value: number; -}) { - const duration = - unit === 'minute' ? durationAsSeconds / 60 : durationAsSeconds; - return value / duration; -} - export function calculateThroughputWithRange({ start, end, value, - unit = 'minute', }: SetupTimeRange & { value: number; unit?: ThroughputUnit }) { - const durationAsSeconds = (end - start) / 1000; - return calculateThroughput({ durationAsSeconds, unit, value }); + const durationAsMinutes = (end - start) / 1000 / 60; + return value / durationAsMinutes; } export function calculateThroughputWithInterval({ durationAsSeconds, value, - unit = 'minute', }: { durationAsSeconds: number; value: number; - unit?: ThroughputUnit; }) { - return calculateThroughput({ durationAsSeconds, unit, value }); + const durationAsMinutes = durationAsSeconds / 60; + return value / durationAsMinutes; } export type ThroughputUnit = 'minute' | 'second'; diff --git a/x-pack/plugins/apm/server/lib/services/get_throughput.ts b/x-pack/plugins/apm/server/lib/services/get_throughput.ts index d004b6980cb0d..13f86926d9f10 100644 --- a/x-pack/plugins/apm/server/lib/services/get_throughput.ts +++ b/x-pack/plugins/apm/server/lib/services/get_throughput.ts @@ -17,10 +17,7 @@ import { getProcessorEventForAggregatedTransactions, } from '../helpers/aggregated_transactions'; import { Setup } from '../helpers/setup_request'; -import { - calculateThroughputWithInterval, - ThroughputUnit, -} from '../helpers/calculate_throughput'; +import { calculateThroughputWithInterval } from '../helpers/calculate_throughput'; interface Options { environment: string; @@ -33,7 +30,6 @@ interface Options { end: number; intervalString: string; bucketSize: number; - throughputUnit: ThroughputUnit; } export async function getThroughput({ @@ -47,7 +43,6 @@ export async function getThroughput({ end, intervalString, bucketSize, - throughputUnit, }: Options) { const { apmEventClient } = setup; @@ -98,7 +93,6 @@ export async function getThroughput({ y: calculateThroughputWithInterval({ durationAsSeconds: bucketSize, value: bucket.doc_count, - unit: throughputUnit, }), }; }) ?? [] diff --git a/x-pack/plugins/apm/server/routes/services.ts b/x-pack/plugins/apm/server/routes/services.ts index 0f5cc3988e6f5..e73ab6a8fb18c 100644 --- a/x-pack/plugins/apm/server/routes/services.ts +++ b/x-pack/plugins/apm/server/routes/services.ts @@ -45,7 +45,6 @@ import { offsetPreviousPeriodCoordinates } from '../../common/utils/offset_previ import { getServicesDetailedStatistics } from '../lib/services/get_services_detailed_statistics'; import { getServiceDependenciesBreakdown } from '../lib/services/get_service_dependencies_breakdown'; import { getBucketSizeForAggregatedTransactions } from '../lib/helpers/get_bucket_size_for_aggregated_transactions'; -import { getThroughputUnit } from '../lib/helpers/calculate_throughput'; const servicesRoute = createApmServerRoute({ endpoint: 'GET /api/apm/services', @@ -484,8 +483,6 @@ const serviceThroughputRoute = createApmServerRoute({ searchAggregatedTransactions, }); - const throughputUnit = getThroughputUnit(bucketSize); - const commonProps = { environment, kuery, @@ -495,7 +492,6 @@ const serviceThroughputRoute = createApmServerRoute({ transactionType, intervalString, bucketSize, - throughputUnit, }; const [currentPeriod, previousPeriod] = await Promise.all([ @@ -519,7 +515,6 @@ const serviceThroughputRoute = createApmServerRoute({ currentPeriodTimeseries: currentPeriod, previousPeriodTimeseries: previousPeriod, }), - throughputUnit, }; }, }); diff --git a/x-pack/test/apm_api_integration/tests/observability_overview/observability_overview.ts b/x-pack/test/apm_api_integration/tests/observability_overview/observability_overview.ts index 4b6d4f2de3e3b..2baf74330fb22 100644 --- a/x-pack/test/apm_api_integration/tests/observability_overview/observability_overview.ts +++ b/x-pack/test/apm_api_integration/tests/observability_overview/observability_overview.ts @@ -20,7 +20,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { // url parameters const start = encodeURIComponent(metadata.start); const end = encodeURIComponent(metadata.end); - const bucketSize = '60s'; + const intervalString = '60s'; + const bucketSize = 60; registry.when( 'Observability overview when data is not loaded', @@ -29,7 +30,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { describe('when data is not loaded', () => { it('handles the empty state', async () => { const response = await supertest.get( - `/api/apm/observability_overview?start=${start}&end=${end}&bucketSize=${bucketSize}` + `/api/apm/observability_overview?start=${start}&end=${end}&intervalString=${intervalString}&bucketSize=${bucketSize}` ); expect(response.status).to.be(200); @@ -46,7 +47,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { () => { it('returns the service count and transaction coordinates', async () => { const response = await supertest.get( - `/api/apm/observability_overview?start=${start}&end=${end}&bucketSize=${bucketSize}` + `/api/apm/observability_overview?start=${start}&end=${end}&intervalString=${intervalString}&bucketSize=${bucketSize}` ); expect(response.status).to.be(200); @@ -71,23 +72,23 @@ export default function ApiTest({ getService }: FtrProviderContext) { Array [ Object { "x": "2021-08-03T06:50:00.000Z", - "y": 1.7, + "y": 51, }, Object { "x": "2021-08-03T06:51:00.000Z", - "y": 2.06666666666667, + "y": 62, }, Object { "x": "2021-08-03T06:52:00.000Z", - "y": 1.86666666666667, + "y": 56, }, Object { "x": "2021-08-03T06:53:00.000Z", - "y": 1.66666666666667, + "y": 50, }, Object { "x": "2021-08-03T06:54:00.000Z", - "y": 2.56666666666667, + "y": 77, }, ] `); diff --git a/x-pack/test/apm_api_integration/tests/services/__snapshots__/throughput.snap b/x-pack/test/apm_api_integration/tests/services/__snapshots__/throughput.snap index 9bd707873bd8f..1c86079bca659 100644 --- a/x-pack/test/apm_api_integration/tests/services/__snapshots__/throughput.snap +++ b/x-pack/test/apm_api_integration/tests/services/__snapshots__/throughput.snap @@ -130,811 +130,130 @@ Array [ `; exports[`APM API tests basic apm_8.0.0 Throughput when data is loaded with kql filter to force transaction-based UI calculate throughput per minute because of time range has the correct throughput 1`] = ` -Array [ - Object { - "x": 1627970400000, - "y": 1.16666666666667, - }, - Object { - "x": 1627974000000, - "y": 2.61666666666667, - }, - Object { - "x": 1627977600000, - "y": 0, - }, - Object { - "x": 1627981200000, - "y": 0, - }, - Object { - "x": 1627984800000, - "y": 0, - }, - Object { - "x": 1627988400000, - "y": 0, - }, - Object { - "x": 1627992000000, - "y": 0, - }, - Object { - "x": 1627995600000, - "y": 0, - }, - Object { - "x": 1627999200000, - "y": 0, - }, - Object { - "x": 1628002800000, - "y": 0, - }, - Object { - "x": 1628006400000, - "y": 0, - }, - Object { - "x": 1628010000000, - "y": 0, - }, - Object { - "x": 1628013600000, - "y": 0, - }, - Object { - "x": 1628017200000, - "y": 0, - }, - Object { - "x": 1628020800000, - "y": 0, - }, - Object { - "x": 1628024400000, - "y": 0, - }, - Object { - "x": 1628028000000, - "y": 0, - }, - Object { - "x": 1628031600000, - "y": 0, - }, - Object { - "x": 1628035200000, - "y": 0, - }, - Object { - "x": 1628038800000, - "y": 0, - }, - Object { - "x": 1628042400000, - "y": 0, - }, - Object { - "x": 1628046000000, - "y": 0, - }, - Object { - "x": 1628049600000, - "y": 0, - }, - Object { - "x": 1628053200000, - "y": 0, - }, - Object { - "x": 1628056800000, - "y": 0, - }, - Object { - "x": 1628060400000, - "y": 0, - }, - Object { - "x": 1628064000000, - "y": 0, - }, - Object { - "x": 1628067600000, - "y": 0, - }, - Object { - "x": 1628071200000, - "y": 0, - }, - Object { - "x": 1628074800000, - "y": 0, - }, - Object { - "x": 1628078400000, - "y": 0, - }, - Object { - "x": 1628082000000, - "y": 0, - }, - Object { - "x": 1628085600000, - "y": 0, - }, - Object { - "x": 1628089200000, - "y": 0, - }, - Object { - "x": 1628092800000, - "y": 0, - }, - Object { - "x": 1628096400000, - "y": 0, - }, - Object { - "x": 1628100000000, - "y": 0, - }, - Object { - "x": 1628103600000, - "y": 0, - }, - Object { - "x": 1628107200000, - "y": 0, - }, - Object { - "x": 1628110800000, - "y": 0, - }, - Object { - "x": 1628114400000, - "y": 0, - }, - Object { - "x": 1628118000000, - "y": 0, - }, - Object { - "x": 1628121600000, - "y": 0, - }, - Object { - "x": 1628125200000, - "y": 0, - }, - Object { - "x": 1628128800000, - "y": 0, - }, - Object { - "x": 1628132400000, - "y": 0, - }, - Object { - "x": 1628136000000, - "y": 0, - }, - Object { - "x": 1628139600000, - "y": 0, - }, - Object { - "x": 1628143200000, - "y": 0, - }, - Object { - "x": 1628146800000, - "y": 0, - }, - Object { - "x": 1628150400000, - "y": 0, - }, - Object { - "x": 1628154000000, - "y": 0, - }, - Object { - "x": 1628157600000, - "y": 0, - }, - Object { - "x": 1628161200000, - "y": 0, - }, - Object { - "x": 1628164800000, - "y": 0, - }, - Object { - "x": 1628168400000, - "y": 0, - }, - Object { - "x": 1628172000000, - "y": 0, - }, - Object { - "x": 1628175600000, - "y": 0, - }, - Object { - "x": 1628179200000, - "y": 0, - }, - Object { - "x": 1628182800000, - "y": 0, - }, - Object { - "x": 1628186400000, - "y": 0, - }, - Object { - "x": 1628190000000, - "y": 0, - }, - Object { - "x": 1628193600000, - "y": 0, - }, - Object { - "x": 1628197200000, - "y": 0, - }, - Object { - "x": 1628200800000, - "y": 0, - }, - Object { - "x": 1628204400000, - "y": 0, - }, - Object { - "x": 1628208000000, - "y": 0, - }, - Object { - "x": 1628211600000, - "y": 0, - }, - Object { - "x": 1628215200000, - "y": 0, - }, - Object { - "x": 1628218800000, - "y": 0, - }, - Object { - "x": 1628222400000, - "y": 0, - }, - Object { - "x": 1628226000000, - "y": 0, - }, - Object { - "x": 1628229600000, - "y": 0, - }, - Object { - "x": 1628233200000, - "y": 0, - }, - Object { - "x": 1628236800000, - "y": 0, - }, - Object { - "x": 1628240400000, - "y": 0, - }, - Object { - "x": 1628244000000, - "y": 0, - }, - Object { - "x": 1628247600000, - "y": 0, - }, - Object { - "x": 1628251200000, - "y": 0, - }, - Object { - "x": 1628254800000, - "y": 0, - }, - Object { - "x": 1628258400000, - "y": 0, - }, - Object { - "x": 1628262000000, - "y": 0, - }, - Object { - "x": 1628265600000, - "y": 0, - }, - Object { - "x": 1628269200000, - "y": 0, - }, - Object { - "x": 1628272800000, - "y": 0, - }, - Object { - "x": 1628276400000, - "y": 0, - }, - Object { - "x": 1628280000000, - "y": 0, - }, - Object { - "x": 1628283600000, - "y": 0, - }, - Object { - "x": 1628287200000, - "y": 0, - }, - Object { - "x": 1628290800000, - "y": 0, - }, - Object { - "x": 1628294400000, - "y": 0, - }, - Object { - "x": 1628298000000, - "y": 0, - }, - Object { - "x": 1628301600000, - "y": 0, - }, - Object { - "x": 1628305200000, - "y": 0, - }, - Object { - "x": 1628308800000, - "y": 0, - }, - Object { - "x": 1628312400000, - "y": 0, - }, - Object { - "x": 1628316000000, - "y": 0, - }, - Object { - "x": 1628319600000, - "y": 0, - }, - Object { - "x": 1628323200000, - "y": 0, - }, - Object { - "x": 1628326800000, - "y": 0, - }, - Object { - "x": 1628330400000, - "y": 0, - }, - Object { - "x": 1628334000000, - "y": 0, - }, - Object { - "x": 1628337600000, - "y": 0, - }, - Object { - "x": 1628341200000, - "y": 0, - }, - Object { - "x": 1628344800000, - "y": 0, - }, - Object { - "x": 1628348400000, - "y": 0, - }, - Object { - "x": 1628352000000, - "y": 0, - }, - Object { - "x": 1628355600000, - "y": 0, - }, - Object { - "x": 1628359200000, - "y": 0, - }, - Object { - "x": 1628362800000, - "y": 0, - }, - Object { - "x": 1628366400000, - "y": 0, - }, - Object { - "x": 1628370000000, - "y": 0, - }, - Object { - "x": 1628373600000, - "y": 0, - }, - Object { - "x": 1628377200000, - "y": 0, - }, - Object { - "x": 1628380800000, - "y": 0, - }, - Object { - "x": 1628384400000, - "y": 0, - }, - Object { - "x": 1628388000000, - "y": 0, - }, - Object { - "x": 1628391600000, - "y": 0, - }, - Object { - "x": 1628395200000, - "y": 0, - }, - Object { - "x": 1628398800000, - "y": 0, - }, - Object { - "x": 1628402400000, - "y": 0, - }, - Object { - "x": 1628406000000, - "y": 0, - }, - Object { - "x": 1628409600000, - "y": 0, - }, - Object { - "x": 1628413200000, - "y": 0, - }, - Object { - "x": 1628416800000, - "y": 0, - }, - Object { - "x": 1628420400000, - "y": 0, - }, - Object { - "x": 1628424000000, - "y": 0, - }, - Object { - "x": 1628427600000, - "y": 0, - }, - Object { - "x": 1628431200000, - "y": 0, - }, - Object { - "x": 1628434800000, - "y": 0, - }, - Object { - "x": 1628438400000, - "y": 0, - }, - Object { - "x": 1628442000000, - "y": 0, - }, - Object { - "x": 1628445600000, - "y": 0, - }, - Object { - "x": 1628449200000, - "y": 0, - }, - Object { - "x": 1628452800000, - "y": 0, - }, - Object { - "x": 1628456400000, - "y": 0, - }, - Object { - "x": 1628460000000, - "y": 0, - }, - Object { - "x": 1628463600000, - "y": 0, - }, - Object { - "x": 1628467200000, - "y": 0, - }, - Object { - "x": 1628470800000, - "y": 0, - }, - Object { - "x": 1628474400000, - "y": 0, - }, - Object { - "x": 1628478000000, - "y": 0, - }, - Object { - "x": 1628481600000, - "y": 0, - }, - Object { - "x": 1628485200000, - "y": 0, - }, - Object { - "x": 1628488800000, - "y": 0, - }, - Object { - "x": 1628492400000, - "y": 0, - }, - Object { - "x": 1628496000000, - "y": 0, - }, - Object { - "x": 1628499600000, - "y": 0, - }, - Object { - "x": 1628503200000, - "y": 0, - }, - Object { - "x": 1628506800000, - "y": 0, - }, - Object { - "x": 1628510400000, - "y": 0, - }, - Object { - "x": 1628514000000, - "y": 0, - }, - Object { - "x": 1628517600000, - "y": 0, - }, - Object { - "x": 1628521200000, - "y": 0, - }, - Object { - "x": 1628524800000, - "y": 0, - }, - Object { - "x": 1628528400000, - "y": 0, - }, - Object { - "x": 1628532000000, - "y": 0, - }, - Object { - "x": 1628535600000, - "y": 0, - }, - Object { - "x": 1628539200000, - "y": 0, - }, - Object { - "x": 1628542800000, - "y": 0, - }, - Object { - "x": 1628546400000, - "y": 0, - }, - Object { - "x": 1628550000000, - "y": 0, - }, - Object { - "x": 1628553600000, - "y": 0, - }, - Object { - "x": 1628557200000, - "y": 0, - }, - Object { - "x": 1628560800000, - "y": 0, - }, - Object { - "x": 1628564400000, - "y": 0, - }, - Object { - "x": 1628568000000, - "y": 0, - }, - Object { - "x": 1628571600000, - "y": 0, - }, - Object { - "x": 1628575200000, - "y": 0, - }, -] -`; - -exports[`APM API tests basic apm_8.0.0 Throughput when data is loaded with kql filter to force transaction-based UI calculate throughput per second because of time range has the correct throughput 1`] = ` Array [ Object { "x": 1627973400000, - "y": 0.0333333333333333, + "y": 2, }, Object { "x": 1627973430000, - "y": 0.0333333333333333, + "y": 2, }, Object { "x": 1627973460000, - "y": 0.0333333333333333, + "y": 2, }, Object { "x": 1627973490000, - "y": 0.1, + "y": 6, }, Object { "x": 1627973520000, - "y": 0.0333333333333333, + "y": 2, }, Object { "x": 1627973550000, - "y": 0.266666666666667, + "y": 16, }, Object { "x": 1627973580000, - "y": 0.133333333333333, + "y": 8, }, Object { "x": 1627973610000, - "y": 0.0333333333333333, + "y": 2, }, Object { "x": 1627973640000, - "y": 0.0333333333333333, + "y": 2, }, Object { "x": 1627973670000, - "y": 0.0666666666666667, + "y": 4, }, Object { "x": 1627973700000, - "y": 0.133333333333333, + "y": 8, }, Object { "x": 1627973730000, - "y": 0.1, + "y": 6, }, Object { "x": 1627973760000, - "y": 0.2, + "y": 12, }, Object { "x": 1627973790000, - "y": 0.133333333333333, + "y": 8, }, Object { "x": 1627973820000, - "y": 0.166666666666667, + "y": 10, }, Object { "x": 1627973850000, - "y": 0.1, + "y": 6, }, Object { "x": 1627973880000, - "y": 0.266666666666667, + "y": 16, }, Object { "x": 1627973910000, - "y": 0.166666666666667, + "y": 10, }, Object { "x": 1627973940000, - "y": 0.1, + "y": 6, }, Object { "x": 1627973970000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974000000, - "y": 0.266666666666667, + "y": 16, }, Object { "x": 1627974030000, - "y": 0.266666666666667, + "y": 16, }, Object { "x": 1627974060000, - "y": 0.133333333333333, + "y": 8, }, Object { "x": 1627974090000, - "y": 0.0666666666666667, + "y": 4, }, Object { "x": 1627974120000, - "y": 0.266666666666667, + "y": 16, }, Object { "x": 1627974150000, - "y": 0.0666666666666667, + "y": 4, }, Object { "x": 1627974180000, - "y": 0.233333333333333, + "y": 14, }, Object { "x": 1627974210000, - "y": 0.166666666666667, + "y": 10, }, Object { "x": 1627974240000, - "y": 0.233333333333333, + "y": 14, }, Object { "x": 1627974270000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974300000, - "y": 0.166666666666667, + "y": 10, }, Object { "x": 1627974330000, @@ -946,111 +265,111 @@ Array [ }, Object { "x": 1627974390000, - "y": 0.0666666666666667, + "y": 4, }, Object { "x": 1627974420000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974450000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974480000, - "y": 0.0666666666666667, + "y": 4, }, Object { "x": 1627974510000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974540000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974570000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974600000, - "y": 0.166666666666667, + "y": 10, }, Object { "x": 1627974630000, - "y": 0.0333333333333333, + "y": 2, }, Object { "x": 1627974660000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974690000, - "y": 0.0666666666666667, + "y": 4, }, Object { "x": 1627974720000, - "y": 0.133333333333333, + "y": 8, }, Object { "x": 1627974750000, - "y": 0.166666666666667, + "y": 10, }, Object { "x": 1627974780000, - "y": 0.0666666666666667, + "y": 4, }, Object { "x": 1627974810000, - "y": 0.0333333333333333, + "y": 2, }, Object { "x": 1627974840000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974870000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974900000, - "y": 0.3, + "y": 18, }, Object { "x": 1627974930000, - "y": 0.0666666666666667, + "y": 4, }, Object { "x": 1627974960000, - "y": 0.0333333333333333, + "y": 2, }, Object { "x": 1627974990000, - "y": 0.133333333333333, + "y": 8, }, Object { "x": 1627975020000, - "y": 0.133333333333333, + "y": 8, }, Object { "x": 1627975050000, - "y": 0.2, + "y": 12, }, Object { "x": 1627975080000, - "y": 0.3, + "y": 18, }, Object { "x": 1627975110000, - "y": 0.166666666666667, + "y": 10, }, Object { "x": 1627975140000, - "y": 0.133333333333333, + "y": 8, }, Object { "x": 1627975170000, - "y": 0.2, + "y": 12, }, Object { "x": 1627975200000, @@ -1104,11 +423,11 @@ Object { }, Object { "x": 1627974410000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974420000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974430000, @@ -1116,15 +435,15 @@ Object { }, Object { "x": 1627974440000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974450000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974460000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974470000, @@ -1132,7 +451,7 @@ Object { }, Object { "x": 1627974480000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974490000, @@ -1140,7 +459,7 @@ Object { }, Object { "x": 1627974500000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974510000, @@ -1148,7 +467,7 @@ Object { }, Object { "x": 1627974520000, - "y": 0.3, + "y": 18, }, Object { "x": 1627974530000, @@ -1156,11 +475,11 @@ Object { }, Object { "x": 1627974540000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974550000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974560000, @@ -1168,7 +487,7 @@ Object { }, Object { "x": 1627974570000, - "y": 0.3, + "y": 18, }, Object { "x": 1627974580000, @@ -1184,11 +503,11 @@ Object { }, Object { "x": 1627974610000, - "y": 0.3, + "y": 18, }, Object { "x": 1627974620000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974630000, @@ -1200,15 +519,15 @@ Object { }, Object { "x": 1627974650000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974660000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974670000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974680000, @@ -1216,7 +535,7 @@ Object { }, Object { "x": 1627974690000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974700000, @@ -1224,7 +543,7 @@ Object { }, Object { "x": 1627974710000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974720000, @@ -1232,15 +551,15 @@ Object { }, Object { "x": 1627974730000, - "y": 0.3, + "y": 18, }, Object { "x": 1627974740000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974750000, - "y": 0.3, + "y": 18, }, Object { "x": 1627974760000, @@ -1248,15 +567,15 @@ Object { }, Object { "x": 1627974770000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974780000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974790000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974800000, @@ -1264,7 +583,7 @@ Object { }, Object { "x": 1627974810000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974820000, @@ -1280,15 +599,15 @@ Object { }, Object { "x": 1627974850000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974860000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974870000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974880000, @@ -1296,15 +615,15 @@ Object { }, Object { "x": 1627974890000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974900000, - "y": 0.5, + "y": 30, }, Object { "x": 1627974910000, - "y": 0.4, + "y": 24, }, Object { "x": 1627974920000, @@ -1312,7 +631,7 @@ Object { }, Object { "x": 1627974930000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974940000, @@ -1328,7 +647,7 @@ Object { }, Object { "x": 1627974970000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974980000, @@ -1336,7 +655,7 @@ Object { }, Object { "x": 1627974990000, - "y": 0.3, + "y": 18, }, Object { "x": 1627975000000, @@ -1344,15 +663,15 @@ Object { }, Object { "x": 1627975010000, - "y": 0.1, + "y": 6, }, Object { "x": 1627975020000, - "y": 0.3, + "y": 18, }, Object { "x": 1627975030000, - "y": 0.1, + "y": 6, }, Object { "x": 1627975040000, @@ -1360,47 +679,47 @@ Object { }, Object { "x": 1627975050000, - "y": 0.1, + "y": 6, }, Object { "x": 1627975060000, - "y": 0.1, + "y": 6, }, Object { "x": 1627975070000, - "y": 0.4, + "y": 24, }, Object { "x": 1627975080000, - "y": 0.3, + "y": 18, }, Object { "x": 1627975090000, - "y": 0.3, + "y": 18, }, Object { "x": 1627975100000, - "y": 0.3, + "y": 18, }, Object { "x": 1627975110000, - "y": 0.3, + "y": 18, }, Object { "x": 1627975120000, - "y": 0.1, + "y": 6, }, Object { "x": 1627975130000, - "y": 0.1, + "y": 6, }, Object { "x": 1627975140000, - "y": 0.1, + "y": 6, }, Object { "x": 1627975150000, - "y": 0.3, + "y": 18, }, Object { "x": 1627975160000, @@ -1408,15 +727,15 @@ Object { }, Object { "x": 1627975170000, - "y": 0.1, + "y": 6, }, Object { "x": 1627975180000, - "y": 0.4, + "y": 24, }, Object { "x": 1627975190000, - "y": 0.1, + "y": 6, }, Object { "x": 1627975200000, @@ -1434,7 +753,7 @@ Object { }, Object { "x": 1627974320000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974330000, @@ -1446,11 +765,11 @@ Object { }, Object { "x": 1627974350000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974360000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974370000, @@ -1462,7 +781,7 @@ Object { }, Object { "x": 1627974390000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974400000, @@ -1470,7 +789,7 @@ Object { }, Object { "x": 1627974410000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974420000, @@ -1478,7 +797,7 @@ Object { }, Object { "x": 1627974430000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974440000, @@ -1486,11 +805,11 @@ Object { }, Object { "x": 1627974450000, - "y": 0.7, + "y": 42, }, Object { "x": 1627974460000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974470000, @@ -1498,11 +817,11 @@ Object { }, Object { "x": 1627974480000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974490000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974500000, @@ -1518,7 +837,7 @@ Object { }, Object { "x": 1627974530000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974540000, @@ -1526,7 +845,7 @@ Object { }, Object { "x": 1627974550000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974560000, @@ -1534,7 +853,7 @@ Object { }, Object { "x": 1627974570000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974580000, @@ -1542,15 +861,15 @@ Object { }, Object { "x": 1627974590000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974600000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974610000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974620000, @@ -1562,39 +881,39 @@ Object { }, Object { "x": 1627974640000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974650000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974660000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974670000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974680000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974690000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974700000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974710000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974720000, - "y": 0.4, + "y": 24, }, Object { "x": 1627974730000, @@ -1602,39 +921,39 @@ Object { }, Object { "x": 1627974740000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974750000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974760000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974770000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974780000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974790000, - "y": 0.5, + "y": 30, }, Object { "x": 1627974800000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974810000, - "y": 0.4, + "y": 24, }, Object { "x": 1627974820000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974830000, @@ -1642,11 +961,11 @@ Object { }, Object { "x": 1627974840000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974850000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974860000, @@ -1654,7 +973,7 @@ Object { }, Object { "x": 1627974870000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974880000, @@ -1662,39 +981,39 @@ Object { }, Object { "x": 1627974890000, - "y": 0.4, + "y": 24, }, Object { "x": 1627974900000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974910000, - "y": 0.4, + "y": 24, }, Object { "x": 1627974920000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974930000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974940000, - "y": 0.5, + "y": 30, }, Object { "x": 1627974950000, - "y": 0.2, + "y": 12, }, Object { "x": 1627974960000, - "y": 0.3, + "y": 18, }, Object { "x": 1627974970000, - "y": 0.1, + "y": 6, }, Object { "x": 1627974980000, @@ -1702,11 +1021,11 @@ Object { }, Object { "x": 1627974990000, - "y": 0.1, + "y": 6, }, Object { "x": 1627975000000, - "y": 0.1, + "y": 6, }, Object { "x": 1627975010000, @@ -1714,23 +1033,23 @@ Object { }, Object { "x": 1627975020000, - "y": 0.3, + "y": 18, }, Object { "x": 1627975030000, - "y": 0.3, + "y": 18, }, Object { "x": 1627975040000, - "y": 0.2, + "y": 12, }, Object { "x": 1627975050000, - "y": 0.1, + "y": 6, }, Object { "x": 1627975060000, - "y": 0.1, + "y": 6, }, Object { "x": 1627975070000, @@ -1738,35 +1057,35 @@ Object { }, Object { "x": 1627975080000, - "y": 0.4, + "y": 24, }, Object { "x": 1627975090000, - "y": 0.1, + "y": 6, }, Object { "x": 1627975100000, - "y": 0.2, + "y": 12, }, Object { "x": 1627975110000, - "y": 0.1, + "y": 6, }, Object { "x": 1627975120000, - "y": 0.1, + "y": 6, }, Object { "x": 1627975130000, - "y": 0.3, + "y": 18, }, Object { "x": 1627975140000, - "y": 0.3, + "y": 18, }, Object { "x": 1627975150000, - "y": 0.4, + "y": 24, }, Object { "x": 1627975160000, @@ -1778,21 +1097,20 @@ Object { }, Object { "x": 1627975180000, - "y": 0.2, + "y": 12, }, Object { "x": 1627975190000, - "y": 0.1, + "y": 6, }, Object { "x": 1627975200000, - "y": 0.5, + "y": 30, }, Object { "x": 1627975210000, "y": 0, }, ], - "throughputUnit": "second", } `; diff --git a/x-pack/test/apm_api_integration/tests/services/throughput.ts b/x-pack/test/apm_api_integration/tests/services/throughput.ts index 2e5318a191e24..0735691de553a 100644 --- a/x-pack/test/apm_api_integration/tests/services/throughput.ts +++ b/x-pack/test/apm_api_integration/tests/services/throughput.ts @@ -99,10 +99,6 @@ export default function ApiTest({ getService }: FtrProviderContext) { expectSnapshot(throughputResponse.currentPeriod.length).toMatchInline(`31`); }); - it('has the correct throughput in tpm', () => { - expect(throughputResponse.throughputUnit).equal('minute'); - }); - it('has the correct throughput avg', () => { const avg = mean(throughputResponse.currentPeriod.map((d) => d.y)); expectSnapshot(avg).toMatchInline(`7.2258064516129`); @@ -114,7 +110,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); describe('with kql filter to force transaction-based UI', () => { - describe('calculate throughput per second because of time range', () => { + describe('calculate throughput per minute because of time range', () => { before(async () => { const response = await apmApiSupertest({ endpoint: 'GET /api/apm/services/{serviceName}/throughput', @@ -152,9 +148,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); it('has the correct first value', () => { - expectSnapshot(first(throughputResponse.currentPeriod)?.y).toMatchInline( - `0.0333333333333333` - ); + expectSnapshot(first(throughputResponse.currentPeriod)?.y).toMatchInline(`2`); }); it('has the correct end date', () => { @@ -171,83 +165,9 @@ export default function ApiTest({ getService }: FtrProviderContext) { expectSnapshot(throughputResponse.currentPeriod.length).toMatchInline(`61`); }); - it('returns transactions per second (tps)', () => { - expect(throughputResponse.throughputUnit).equal('second'); - }); - - it('has the correct throughput avg', () => { - const avg = mean(throughputResponse.currentPeriod.map((d) => d.y)); - expectSnapshot(avg).toMatchInline(`0.124043715846995`); - }); - - it('has the correct throughput', () => { - expectSnapshot(throughputResponse.currentPeriod).toMatch(); - }); - }); - describe('calculate throughput per minute because of time range', () => { - before(async () => { - const response = await apmApiSupertest({ - endpoint: 'GET /api/apm/services/{serviceName}/throughput', - params: { - path: { - serviceName: 'opbeans-java', - }, - query: { - kuery: 'processor.event : "transaction"', - start: metadata.start, - end: moment(metadata.start).add(7, 'days').toISOString(), - transactionType: 'request', - environment: 'ENVIRONMENT_ALL', - }, - }, - }); - throughputResponse = response.body; - }); - - it('returns some data', () => { - expect(throughputResponse.currentPeriod.length).to.be.greaterThan(0); - expect(throughputResponse.previousPeriod.length).not.to.be.greaterThan(0); - - const nonNullDataPoints = throughputResponse.currentPeriod.filter(({ y }) => - isFiniteNumber(y) - ); - - expect(nonNullDataPoints.length).to.be.greaterThan(0); - }); - - it('has the correct start date', () => { - expectSnapshot( - new Date(first(throughputResponse.currentPeriod)?.x ?? NaN).toISOString() - ).toMatchInline(`"2021-08-03T06:00:00.000Z"`); - }); - - it('has the correct first value', () => { - expectSnapshot(first(throughputResponse.currentPeriod)?.y).toMatchInline( - `1.16666666666667` - ); - }); - - it('has the correct end date', () => { - expectSnapshot( - new Date(last(throughputResponse.currentPeriod)?.x ?? NaN).toISOString() - ).toMatchInline(`"2021-08-10T06:00:00.000Z"`); - }); - - it('has the correct last value', () => { - expectSnapshot(last(throughputResponse.currentPeriod)?.y).toMatchInline(`0`); - }); - - it('has the correct number of buckets', () => { - expectSnapshot(throughputResponse.currentPeriod.length).toMatchInline(`169`); - }); - - it('returns transactions per minute (tpm)', () => { - expect(throughputResponse.throughputUnit).equal('minute'); - }); - it('has the correct throughput avg', () => { const avg = mean(throughputResponse.currentPeriod.map((d) => d.y)); - expectSnapshot(avg).toMatchInline(`0.0223865877712032`); + expectSnapshot(avg).toMatchInline(`7.44262295081967`); }); it('has the correct throughput', () => { From c8626e2faf627805e99dd408fc606760d3942b6d Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Wed, 22 Sep 2021 14:04:59 -0400 Subject: [PATCH 13/26] fixing ci --- .../public/components/app/section/apm/index.test.tsx | 12 +++++++++--- .../public/components/app/section/ux/index.test.tsx | 12 +++++++++--- .../observability/public/data_handler.test.ts | 3 ++- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx b/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx index 16eb8dd24d3c2..b6132239fb68b 100644 --- a/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx +++ b/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx @@ -78,7 +78,9 @@ describe('APMSection', () => { status: fetcherHook.FETCH_STATUS.SUCCESS, refetch: jest.fn(), }); - const { getByText, queryAllByTestId } = render(); + const { getByText, queryAllByTestId } = render( + + ); expect(getByText('APM')).toBeInTheDocument(); expect(getByText('View in app')).toBeInTheDocument(); @@ -93,7 +95,9 @@ describe('APMSection', () => { status: fetcherHook.FETCH_STATUS.SUCCESS, refetch: jest.fn(), }); - const { getByText, queryAllByTestId } = render(); + const { getByText, queryAllByTestId } = render( + + ); expect(getByText('APM')).toBeInTheDocument(); expect(getByText('View in app')).toBeInTheDocument(); @@ -107,7 +111,9 @@ describe('APMSection', () => { status: fetcherHook.FETCH_STATUS.LOADING, refetch: jest.fn(), }); - const { getByText, queryAllByText, getByTestId } = render(); + const { getByText, queryAllByText, getByTestId } = render( + + ); expect(getByText('APM')).toBeInTheDocument(); expect(getByTestId('loading')).toBeInTheDocument(); diff --git a/x-pack/plugins/observability/public/components/app/section/ux/index.test.tsx b/x-pack/plugins/observability/public/components/app/section/ux/index.test.tsx index 61bce8aaf845d..c9412d4b5fe05 100644 --- a/x-pack/plugins/observability/public/components/app/section/ux/index.test.tsx +++ b/x-pack/plugins/observability/public/components/app/section/ux/index.test.tsx @@ -67,7 +67,9 @@ describe('UXSection', () => { status: fetcherHook.FETCH_STATUS.SUCCESS, refetch: jest.fn(), }); - const { getByText, getAllByText } = render(); + const { getByText, getAllByText } = render( + + ); expect(getByText('User Experience')).toBeInTheDocument(); expect(getByText('View in app')).toBeInTheDocument(); @@ -99,7 +101,9 @@ describe('UXSection', () => { status: fetcherHook.FETCH_STATUS.LOADING, refetch: jest.fn(), }); - const { getByText, queryAllByText, getAllByText } = render(); + const { getByText, queryAllByText, getAllByText } = render( + + ); expect(getByText('User Experience')).toBeInTheDocument(); expect(getAllByText('--')).toHaveLength(3); @@ -112,7 +116,9 @@ describe('UXSection', () => { status: fetcherHook.FETCH_STATUS.SUCCESS, refetch: jest.fn(), }); - const { getByText, queryAllByText, getAllByText } = render(); + const { getByText, queryAllByText, getAllByText } = render( + + ); expect(getByText('User Experience')).toBeInTheDocument(); expect(getAllByText('No data is available.')).toHaveLength(3); diff --git a/x-pack/plugins/observability/public/data_handler.test.ts b/x-pack/plugins/observability/public/data_handler.test.ts index b7ad282c2cf93..3b528a5f3ef6e 100644 --- a/x-pack/plugins/observability/public/data_handler.test.ts +++ b/x-pack/plugins/observability/public/data_handler.test.ts @@ -23,7 +23,8 @@ const params = { start: 'now-15m', end: 'now', }, - bucketSize: '10s', + intervalString: '10s', + bucketSize: 10, }; describe('registerDataHandler', () => { From 5461eaa8abb6cebd8c32957c1a66d6b7702dddc0 Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Wed, 22 Sep 2021 15:19:34 -0400 Subject: [PATCH 14/26] fixing throughput --- .../get_throughput_charts_for_backend.ts | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/x-pack/plugins/apm/server/lib/backends/get_throughput_charts_for_backend.ts b/x-pack/plugins/apm/server/lib/backends/get_throughput_charts_for_backend.ts index f2e726fd8228f..10507135906fd 100644 --- a/x-pack/plugins/apm/server/lib/backends/get_throughput_charts_for_backend.ts +++ b/x-pack/plugins/apm/server/lib/backends/get_throughput_charts_for_backend.ts @@ -10,9 +10,9 @@ import { environmentQuery } from '../../../common/utils/environment_query'; import { kqlQuery, rangeQuery } from '../../../../observability/server'; import { ProcessorEvent } from '../../../common/processor_event'; import { Setup } from '../helpers/setup_request'; -import { getMetricsDateHistogramParams } from '../helpers/metrics'; import { getOffsetInMs } from '../../../common/utils/get_offset_in_ms'; -import { calculateThroughputWithRange } from '../helpers/calculate_throughput'; +import { calculateThroughputWithInterval } from '../helpers/calculate_throughput'; +import { getBucketSize } from '../helpers/get_bucket_size'; export async function getThroughputChartsForBackend({ backendName, @@ -39,6 +39,12 @@ export async function getThroughputChartsForBackend({ offset, }); + const { intervalString, bucketSize } = getBucketSize({ + start: startWithOffset, + end: endWithOffset, + minBucketSize: 60, + }); + const response = await apmEventClient.search('get_throughput_for_backend', { apm: { events: [ProcessorEvent.metric], @@ -57,11 +63,12 @@ export async function getThroughputChartsForBackend({ }, aggs: { timeseries: { - date_histogram: getMetricsDateHistogramParams({ - start: startWithOffset, - end: endWithOffset, - metricsInterval: 60, - }), + date_histogram: { + field: '@timestamp', + fixed_interval: intervalString, + min_doc_count: 0, + extended_bounds: { min: startWithOffset, max: endWithOffset }, + }, }, }, }, @@ -71,9 +78,8 @@ export async function getThroughputChartsForBackend({ response.aggregations?.timeseries.buckets.map((bucket) => { return { x: bucket.key + offsetInMs, - y: calculateThroughputWithRange({ - start, - end, + y: calculateThroughputWithInterval({ + durationAsSeconds: bucketSize, value: bucket.doc_count, }), }; From 44fdd99a99b54814440e6535243dc658d5900734 Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Wed, 22 Sep 2021 15:33:57 -0400 Subject: [PATCH 15/26] fixing i18n and test --- x-pack/plugins/translations/translations/ja-JP.json | 1 - x-pack/plugins/translations/translations/zh-CN.json | 1 - .../test/apm_api_integration/tests/services/throughput.ts | 8 ++++++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 366f4d8d3178b..299f2869a8974 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -6747,7 +6747,6 @@ "xpack.apm.errorsTable.occurrencesColumnLabel": "オカレンス", "xpack.apm.errorsTable.typeColumnLabel": "型", "xpack.apm.errorsTable.unhandledLabel": "未対応", - "xpack.apm.exactTransactionRateLabel": "{value} { unit, select, minute {tpm} other {tps} }", "xpack.apm.failedTransactionsCorrelations.licenseCheckText": "失敗したトランザクションの相関関係機能を使用するには、Elastic Platinumライセンスのサブスクリプションが必要です。", "xpack.apm.featureRegistry.apmFeatureName": "APMおよびユーザーエクスペリエンス", "xpack.apm.featureRegistry.manageAlertsName": "アラート", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index bc3a663229012..5b66e96284c10 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -6799,7 +6799,6 @@ "xpack.apm.errorsTable.occurrencesColumnLabel": "发生次数", "xpack.apm.errorsTable.typeColumnLabel": "类型", "xpack.apm.errorsTable.unhandledLabel": "未处理", - "xpack.apm.exactTransactionRateLabel": "{value} { unit, select, minute {tpm} other {tps} }", "xpack.apm.failedTransactionsCorrelations.licenseCheckText": "要使用失败事务相关性功能,必须订阅 Elastic 白金级许可证。", "xpack.apm.featureRegistry.apmFeatureName": "APM 和用户体验", "xpack.apm.featureRegistry.manageAlertsName": "告警", diff --git a/x-pack/test/apm_api_integration/tests/services/throughput.ts b/x-pack/test/apm_api_integration/tests/services/throughput.ts index 0735691de553a..ba468b0d8d683 100644 --- a/x-pack/test/apm_api_integration/tests/services/throughput.ts +++ b/x-pack/test/apm_api_integration/tests/services/throughput.ts @@ -89,12 +89,20 @@ export default function ApiTest({ getService }: FtrProviderContext) { ).toMatchInline(`"2021-08-03T06:50:00.000Z"`); }); + it('has the correct first value', () => { + expectSnapshot(first(throughputResponse.currentPeriod)?.y).toMatchInline(`4`); + }); + it('has the correct end date', () => { expectSnapshot( new Date(last(throughputResponse.currentPeriod)?.x ?? NaN).toISOString() ).toMatchInline(`"2021-08-03T07:20:00.000Z"`); }); + it('has the correct last value', () => { + expectSnapshot(last(throughputResponse.currentPeriod)?.y).toMatchInline(`0`); + }); + it('has the correct number of buckets', () => { expectSnapshot(throughputResponse.currentPeriod.length).toMatchInline(`31`); }); From e51dca8f564215ec160f7e1591b6f23b9f6beb65 Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Thu, 23 Sep 2021 08:48:19 -0400 Subject: [PATCH 16/26] fixing tests --- .../plugins/infra/public/metrics_overview_fetchers.test.ts | 7 ++++--- .../infra/public/utils/logs_overview_fetches.test.ts | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/x-pack/plugins/infra/public/metrics_overview_fetchers.test.ts b/x-pack/plugins/infra/public/metrics_overview_fetchers.test.ts index e6ffbc30fe24d..0028d497f9f8d 100644 --- a/x-pack/plugins/infra/public/metrics_overview_fetchers.test.ts +++ b/x-pack/plugins/infra/public/metrics_overview_fetchers.test.ts @@ -56,7 +56,7 @@ describe('Metrics UI Observability Homepage Functions', () => { const fetchData = createMetricsFetchData(mockedGetStartServices); const endTime = moment('2020-07-02T13:25:11.629Z'); const startTime = endTime.clone().subtract(1, 'h'); - const bucketSize = '300s'; + const intervalString = '300s'; const response = await fetchData({ absoluteTime: { start: startTime.valueOf(), @@ -66,13 +66,14 @@ describe('Metrics UI Observability Homepage Functions', () => { start: 'now-15m', end: 'now', }, - bucketSize, + bucketSize: 300, + intervalString, }); expect(core.http.post).toHaveBeenCalledTimes(1); expect(core.http.post).toHaveBeenCalledWith('/api/metrics/overview/top', { body: JSON.stringify({ sourceId: 'default', - bucketSize, + bucketSize: intervalString, size: 5, timerange: { from: startTime.valueOf(), diff --git a/x-pack/plugins/infra/public/utils/logs_overview_fetches.test.ts b/x-pack/plugins/infra/public/utils/logs_overview_fetches.test.ts index 8d51f54e3f55a..3139f829019b5 100644 --- a/x-pack/plugins/infra/public/utils/logs_overview_fetches.test.ts +++ b/x-pack/plugins/infra/public/utils/logs_overview_fetches.test.ts @@ -28,7 +28,8 @@ const mockedCallFetchLogSourceConfigurationAPI = callFetchLogSourceConfiguration const DEFAULT_PARAMS = { absoluteTime: { start: 1593430680000, end: 1593430800000 }, relativeTime: { start: 'now-2m', end: 'now' }, // Doesn't matter for the test - bucketSize: '30s', // Doesn't matter for the test + bucketSize: 30, // Doesn't matter for the test + intervalString: '30s', // Doesn't matter for the test }; function setup() { From a6506edc0283f8c66cfbbd2d9f4f65a42e4e9aea Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Thu, 23 Sep 2021 08:53:55 -0400 Subject: [PATCH 17/26] addressing pr comments --- .../service_overview/service_overview_throughput_chart.tsx | 2 +- .../lib/backends/get_throughput_charts_for_backend.ts | 2 +- .../plugins/apm/server/lib/helpers/calculate_throughput.ts | 6 +++--- .../observability_overview/get_transactions_per_minute.ts | 2 +- x-pack/plugins/apm/server/lib/services/get_throughput.ts | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx index 1b9d0ce9e751a..b2dad2ec6ca47 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx @@ -144,7 +144,7 @@ export function ServiceOverviewThroughputChart({ showAnnotations={false} fetchStatus={status} timeseries={timeseries} - yLabelFormat={(y) => asExactTransactionRate(y)} + yLabelFormat={asExactTransactionRate} customTheme={comparisonChartTheme} /> diff --git a/x-pack/plugins/apm/server/lib/backends/get_throughput_charts_for_backend.ts b/x-pack/plugins/apm/server/lib/backends/get_throughput_charts_for_backend.ts index 10507135906fd..d396ccfa1319d 100644 --- a/x-pack/plugins/apm/server/lib/backends/get_throughput_charts_for_backend.ts +++ b/x-pack/plugins/apm/server/lib/backends/get_throughput_charts_for_backend.ts @@ -79,7 +79,7 @@ export async function getThroughputChartsForBackend({ return { x: bucket.key + offsetInMs, y: calculateThroughputWithInterval({ - durationAsSeconds: bucketSize, + bucketSize, value: bucket.doc_count, }), }; diff --git a/x-pack/plugins/apm/server/lib/helpers/calculate_throughput.ts b/x-pack/plugins/apm/server/lib/helpers/calculate_throughput.ts index 339c895ca56a2..c0eab64245205 100644 --- a/x-pack/plugins/apm/server/lib/helpers/calculate_throughput.ts +++ b/x-pack/plugins/apm/server/lib/helpers/calculate_throughput.ts @@ -17,13 +17,13 @@ export function calculateThroughputWithRange({ } export function calculateThroughputWithInterval({ - durationAsSeconds, + bucketSize, value, }: { - durationAsSeconds: number; + bucketSize: number; value: number; }) { - const durationAsMinutes = durationAsSeconds / 60; + const durationAsMinutes = bucketSize / 60; return value / durationAsMinutes; } diff --git a/x-pack/plugins/apm/server/lib/observability_overview/get_transactions_per_minute.ts b/x-pack/plugins/apm/server/lib/observability_overview/get_transactions_per_minute.ts index fcdcc3243e3d4..46f9e7d436a58 100644 --- a/x-pack/plugins/apm/server/lib/observability_overview/get_transactions_per_minute.ts +++ b/x-pack/plugins/apm/server/lib/observability_overview/get_transactions_per_minute.ts @@ -97,7 +97,7 @@ export async function getTransactionsPerMinute({ topTransactionTypeBucket?.timeseries.buckets.map((bucket) => ({ x: bucket.key, y: calculateThroughputWithInterval({ - durationAsSeconds: bucketSize, + bucketSize, value: bucket.doc_count, }), })) || [], diff --git a/x-pack/plugins/apm/server/lib/services/get_throughput.ts b/x-pack/plugins/apm/server/lib/services/get_throughput.ts index 13f86926d9f10..fb0395e4ba02b 100644 --- a/x-pack/plugins/apm/server/lib/services/get_throughput.ts +++ b/x-pack/plugins/apm/server/lib/services/get_throughput.ts @@ -91,7 +91,7 @@ export async function getThroughput({ return { x: bucket.key, y: calculateThroughputWithInterval({ - durationAsSeconds: bucketSize, + bucketSize, value: bucket.doc_count, }), }; From 39ea850beb129dc4ab62e72c109b5aed7592bffb Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Thu, 23 Sep 2021 11:54:24 -0400 Subject: [PATCH 18/26] fixing ci --- .../services/rest/apm_observability_overview_fetchers.test.ts | 3 ++- x-pack/plugins/apm/server/routes/observability_overview.ts | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/apm/public/services/rest/apm_observability_overview_fetchers.test.ts b/x-pack/plugins/apm/public/services/rest/apm_observability_overview_fetchers.test.ts index 00447607cf787..ae118fe08a666 100644 --- a/x-pack/plugins/apm/public/services/rest/apm_observability_overview_fetchers.test.ts +++ b/x-pack/plugins/apm/public/services/rest/apm_observability_overview_fetchers.test.ts @@ -23,7 +23,8 @@ describe('Observability dashboard data', () => { start: 'now-15m', end: 'now', }, - bucketSize: '600s', + bucketSize: 600, + intervalString: '600s', }; afterEach(() => { callApmApiMock.mockClear(); diff --git a/x-pack/plugins/apm/server/routes/observability_overview.ts b/x-pack/plugins/apm/server/routes/observability_overview.ts index e22f59a552a34..91f9504f4bf2e 100644 --- a/x-pack/plugins/apm/server/routes/observability_overview.ts +++ b/x-pack/plugins/apm/server/routes/observability_overview.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { jsonRt } from '@kbn/io-ts-utils'; +import { toNumberRt } from '@kbn/io-ts-utils'; import { setupRequest } from '../lib/helpers/setup_request'; import { getServiceCount } from '../lib/observability_overview/get_service_count'; import { getTransactionsPerMinute } from '../lib/observability_overview/get_transactions_per_minute'; @@ -31,7 +31,7 @@ const observabilityOverviewRoute = createApmServerRoute({ params: t.type({ query: t.intersection([ rangeRt, - t.type({ bucketSize: jsonRt.pipe(t.number), intervalString: t.string }), + t.type({ bucketSize: toNumberRt, intervalString: t.string }), ]), }), options: { tags: ['access:apm'] }, From 4fb39010043cf8fc848c84aa7c9345bcf7847f2b Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Mon, 27 Sep 2021 14:03:26 -0400 Subject: [PATCH 19/26] improving tests --- .../services/__snapshots__/throughput.snap | 1116 ----------------- .../tests/services/throughput.ts | 47 +- 2 files changed, 10 insertions(+), 1153 deletions(-) delete mode 100644 x-pack/test/apm_api_integration/tests/services/__snapshots__/throughput.snap diff --git a/x-pack/test/apm_api_integration/tests/services/__snapshots__/throughput.snap b/x-pack/test/apm_api_integration/tests/services/__snapshots__/throughput.snap deleted file mode 100644 index 1c86079bca659..0000000000000 --- a/x-pack/test/apm_api_integration/tests/services/__snapshots__/throughput.snap +++ /dev/null @@ -1,1116 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`APM API tests basic apm_8.0.0 Throughput when data is loaded with kql filter to force metrics-based UI has the correct throughput 1`] = ` -Array [ - Object { - "x": 1627973400000, - "y": 4, - }, - Object { - "x": 1627973460000, - "y": 2, - }, - Object { - "x": 1627973520000, - "y": 3, - }, - Object { - "x": 1627973580000, - "y": 11, - }, - Object { - "x": 1627973640000, - "y": 4, - }, - Object { - "x": 1627973700000, - "y": 6, - }, - Object { - "x": 1627973760000, - "y": 6, - }, - Object { - "x": 1627973820000, - "y": 11, - }, - Object { - "x": 1627973880000, - "y": 10, - }, - Object { - "x": 1627973940000, - "y": 10, - }, - Object { - "x": 1627974000000, - "y": 12, - }, - Object { - "x": 1627974060000, - "y": 13, - }, - Object { - "x": 1627974120000, - "y": 8, - }, - Object { - "x": 1627974180000, - "y": 10, - }, - Object { - "x": 1627974240000, - "y": 13, - }, - Object { - "x": 1627974300000, - "y": 9, - }, - Object { - "x": 1627974360000, - "y": 0, - }, - Object { - "x": 1627974420000, - "y": 4, - }, - Object { - "x": 1627974480000, - "y": 5, - }, - Object { - "x": 1627974540000, - "y": 6, - }, - Object { - "x": 1627974600000, - "y": 8, - }, - Object { - "x": 1627974660000, - "y": 5, - }, - Object { - "x": 1627974720000, - "y": 5, - }, - Object { - "x": 1627974780000, - "y": 7, - }, - Object { - "x": 1627974840000, - "y": 2, - }, - Object { - "x": 1627974900000, - "y": 15, - }, - Object { - "x": 1627974960000, - "y": 3, - }, - Object { - "x": 1627975020000, - "y": 8, - }, - Object { - "x": 1627975080000, - "y": 13, - }, - Object { - "x": 1627975140000, - "y": 11, - }, - Object { - "x": 1627975200000, - "y": 0, - }, -] -`; - -exports[`APM API tests basic apm_8.0.0 Throughput when data is loaded with kql filter to force transaction-based UI calculate throughput per minute because of time range has the correct throughput 1`] = ` -Array [ - Object { - "x": 1627973400000, - "y": 2, - }, - Object { - "x": 1627973430000, - "y": 2, - }, - Object { - "x": 1627973460000, - "y": 2, - }, - Object { - "x": 1627973490000, - "y": 6, - }, - Object { - "x": 1627973520000, - "y": 2, - }, - Object { - "x": 1627973550000, - "y": 16, - }, - Object { - "x": 1627973580000, - "y": 8, - }, - Object { - "x": 1627973610000, - "y": 2, - }, - Object { - "x": 1627973640000, - "y": 2, - }, - Object { - "x": 1627973670000, - "y": 4, - }, - Object { - "x": 1627973700000, - "y": 8, - }, - Object { - "x": 1627973730000, - "y": 6, - }, - Object { - "x": 1627973760000, - "y": 12, - }, - Object { - "x": 1627973790000, - "y": 8, - }, - Object { - "x": 1627973820000, - "y": 10, - }, - Object { - "x": 1627973850000, - "y": 6, - }, - Object { - "x": 1627973880000, - "y": 16, - }, - Object { - "x": 1627973910000, - "y": 10, - }, - Object { - "x": 1627973940000, - "y": 6, - }, - Object { - "x": 1627973970000, - "y": 12, - }, - Object { - "x": 1627974000000, - "y": 16, - }, - Object { - "x": 1627974030000, - "y": 16, - }, - Object { - "x": 1627974060000, - "y": 8, - }, - Object { - "x": 1627974090000, - "y": 4, - }, - Object { - "x": 1627974120000, - "y": 16, - }, - Object { - "x": 1627974150000, - "y": 4, - }, - Object { - "x": 1627974180000, - "y": 14, - }, - Object { - "x": 1627974210000, - "y": 10, - }, - Object { - "x": 1627974240000, - "y": 14, - }, - Object { - "x": 1627974270000, - "y": 6, - }, - Object { - "x": 1627974300000, - "y": 10, - }, - Object { - "x": 1627974330000, - "y": 0, - }, - Object { - "x": 1627974360000, - "y": 0, - }, - Object { - "x": 1627974390000, - "y": 4, - }, - Object { - "x": 1627974420000, - "y": 6, - }, - Object { - "x": 1627974450000, - "y": 6, - }, - Object { - "x": 1627974480000, - "y": 4, - }, - Object { - "x": 1627974510000, - "y": 6, - }, - Object { - "x": 1627974540000, - "y": 6, - }, - Object { - "x": 1627974570000, - "y": 6, - }, - Object { - "x": 1627974600000, - "y": 10, - }, - Object { - "x": 1627974630000, - "y": 2, - }, - Object { - "x": 1627974660000, - "y": 6, - }, - Object { - "x": 1627974690000, - "y": 4, - }, - Object { - "x": 1627974720000, - "y": 8, - }, - Object { - "x": 1627974750000, - "y": 10, - }, - Object { - "x": 1627974780000, - "y": 4, - }, - Object { - "x": 1627974810000, - "y": 2, - }, - Object { - "x": 1627974840000, - "y": 6, - }, - Object { - "x": 1627974870000, - "y": 6, - }, - Object { - "x": 1627974900000, - "y": 18, - }, - Object { - "x": 1627974930000, - "y": 4, - }, - Object { - "x": 1627974960000, - "y": 2, - }, - Object { - "x": 1627974990000, - "y": 8, - }, - Object { - "x": 1627975020000, - "y": 8, - }, - Object { - "x": 1627975050000, - "y": 12, - }, - Object { - "x": 1627975080000, - "y": 18, - }, - Object { - "x": 1627975110000, - "y": 10, - }, - Object { - "x": 1627975140000, - "y": 8, - }, - Object { - "x": 1627975170000, - "y": 12, - }, - Object { - "x": 1627975200000, - "y": 0, - }, -] -`; - -exports[`APM API tests basic apm_8.0.0 Throughput when data is loaded with time comparison has the correct throughput in tpm 1`] = ` -Object { - "currentPeriod": Array [ - Object { - "x": 1627974310000, - "y": 0, - }, - Object { - "x": 1627974320000, - "y": 0, - }, - Object { - "x": 1627974330000, - "y": 0, - }, - Object { - "x": 1627974340000, - "y": 0, - }, - Object { - "x": 1627974350000, - "y": 0, - }, - Object { - "x": 1627974360000, - "y": 0, - }, - Object { - "x": 1627974370000, - "y": 0, - }, - Object { - "x": 1627974380000, - "y": 0, - }, - Object { - "x": 1627974390000, - "y": 0, - }, - Object { - "x": 1627974400000, - "y": 0, - }, - Object { - "x": 1627974410000, - "y": 12, - }, - Object { - "x": 1627974420000, - "y": 12, - }, - Object { - "x": 1627974430000, - "y": 0, - }, - Object { - "x": 1627974440000, - "y": 6, - }, - Object { - "x": 1627974450000, - "y": 12, - }, - Object { - "x": 1627974460000, - "y": 6, - }, - Object { - "x": 1627974470000, - "y": 0, - }, - Object { - "x": 1627974480000, - "y": 6, - }, - Object { - "x": 1627974490000, - "y": 0, - }, - Object { - "x": 1627974500000, - "y": 6, - }, - Object { - "x": 1627974510000, - "y": 0, - }, - Object { - "x": 1627974520000, - "y": 18, - }, - Object { - "x": 1627974530000, - "y": 0, - }, - Object { - "x": 1627974540000, - "y": 12, - }, - Object { - "x": 1627974550000, - "y": 6, - }, - Object { - "x": 1627974560000, - "y": 0, - }, - Object { - "x": 1627974570000, - "y": 18, - }, - Object { - "x": 1627974580000, - "y": 0, - }, - Object { - "x": 1627974590000, - "y": 0, - }, - Object { - "x": 1627974600000, - "y": 0, - }, - Object { - "x": 1627974610000, - "y": 18, - }, - Object { - "x": 1627974620000, - "y": 12, - }, - Object { - "x": 1627974630000, - "y": 0, - }, - Object { - "x": 1627974640000, - "y": 0, - }, - Object { - "x": 1627974650000, - "y": 6, - }, - Object { - "x": 1627974660000, - "y": 6, - }, - Object { - "x": 1627974670000, - "y": 12, - }, - Object { - "x": 1627974680000, - "y": 0, - }, - Object { - "x": 1627974690000, - "y": 6, - }, - Object { - "x": 1627974700000, - "y": 0, - }, - Object { - "x": 1627974710000, - "y": 6, - }, - Object { - "x": 1627974720000, - "y": 0, - }, - Object { - "x": 1627974730000, - "y": 18, - }, - Object { - "x": 1627974740000, - "y": 6, - }, - Object { - "x": 1627974750000, - "y": 18, - }, - Object { - "x": 1627974760000, - "y": 0, - }, - Object { - "x": 1627974770000, - "y": 12, - }, - Object { - "x": 1627974780000, - "y": 6, - }, - Object { - "x": 1627974790000, - "y": 6, - }, - Object { - "x": 1627974800000, - "y": 0, - }, - Object { - "x": 1627974810000, - "y": 6, - }, - Object { - "x": 1627974820000, - "y": 0, - }, - Object { - "x": 1627974830000, - "y": 0, - }, - Object { - "x": 1627974840000, - "y": 0, - }, - Object { - "x": 1627974850000, - "y": 12, - }, - Object { - "x": 1627974860000, - "y": 6, - }, - Object { - "x": 1627974870000, - "y": 12, - }, - Object { - "x": 1627974880000, - "y": 0, - }, - Object { - "x": 1627974890000, - "y": 6, - }, - Object { - "x": 1627974900000, - "y": 30, - }, - Object { - "x": 1627974910000, - "y": 24, - }, - Object { - "x": 1627974920000, - "y": 0, - }, - Object { - "x": 1627974930000, - "y": 12, - }, - Object { - "x": 1627974940000, - "y": 0, - }, - Object { - "x": 1627974950000, - "y": 0, - }, - Object { - "x": 1627974960000, - "y": 0, - }, - Object { - "x": 1627974970000, - "y": 6, - }, - Object { - "x": 1627974980000, - "y": 0, - }, - Object { - "x": 1627974990000, - "y": 18, - }, - Object { - "x": 1627975000000, - "y": 0, - }, - Object { - "x": 1627975010000, - "y": 6, - }, - Object { - "x": 1627975020000, - "y": 18, - }, - Object { - "x": 1627975030000, - "y": 6, - }, - Object { - "x": 1627975040000, - "y": 0, - }, - Object { - "x": 1627975050000, - "y": 6, - }, - Object { - "x": 1627975060000, - "y": 6, - }, - Object { - "x": 1627975070000, - "y": 24, - }, - Object { - "x": 1627975080000, - "y": 18, - }, - Object { - "x": 1627975090000, - "y": 18, - }, - Object { - "x": 1627975100000, - "y": 18, - }, - Object { - "x": 1627975110000, - "y": 18, - }, - Object { - "x": 1627975120000, - "y": 6, - }, - Object { - "x": 1627975130000, - "y": 6, - }, - Object { - "x": 1627975140000, - "y": 6, - }, - Object { - "x": 1627975150000, - "y": 18, - }, - Object { - "x": 1627975160000, - "y": 0, - }, - Object { - "x": 1627975170000, - "y": 6, - }, - Object { - "x": 1627975180000, - "y": 24, - }, - Object { - "x": 1627975190000, - "y": 6, - }, - Object { - "x": 1627975200000, - "y": 0, - }, - Object { - "x": 1627975210000, - "y": 0, - }, - ], - "previousPeriod": Array [ - Object { - "x": 1627974310000, - "y": 0, - }, - Object { - "x": 1627974320000, - "y": 6, - }, - Object { - "x": 1627974330000, - "y": 0, - }, - Object { - "x": 1627974340000, - "y": 0, - }, - Object { - "x": 1627974350000, - "y": 6, - }, - Object { - "x": 1627974360000, - "y": 6, - }, - Object { - "x": 1627974370000, - "y": 0, - }, - Object { - "x": 1627974380000, - "y": 0, - }, - Object { - "x": 1627974390000, - "y": 12, - }, - Object { - "x": 1627974400000, - "y": 0, - }, - Object { - "x": 1627974410000, - "y": 6, - }, - Object { - "x": 1627974420000, - "y": 0, - }, - Object { - "x": 1627974430000, - "y": 6, - }, - Object { - "x": 1627974440000, - "y": 0, - }, - Object { - "x": 1627974450000, - "y": 42, - }, - Object { - "x": 1627974460000, - "y": 6, - }, - Object { - "x": 1627974470000, - "y": 0, - }, - Object { - "x": 1627974480000, - "y": 12, - }, - Object { - "x": 1627974490000, - "y": 12, - }, - Object { - "x": 1627974500000, - "y": 0, - }, - Object { - "x": 1627974510000, - "y": 0, - }, - Object { - "x": 1627974520000, - "y": 0, - }, - Object { - "x": 1627974530000, - "y": 6, - }, - Object { - "x": 1627974540000, - "y": 0, - }, - Object { - "x": 1627974550000, - "y": 6, - }, - Object { - "x": 1627974560000, - "y": 0, - }, - Object { - "x": 1627974570000, - "y": 6, - }, - Object { - "x": 1627974580000, - "y": 0, - }, - Object { - "x": 1627974590000, - "y": 6, - }, - Object { - "x": 1627974600000, - "y": 12, - }, - Object { - "x": 1627974610000, - "y": 12, - }, - Object { - "x": 1627974620000, - "y": 0, - }, - Object { - "x": 1627974630000, - "y": 0, - }, - Object { - "x": 1627974640000, - "y": 6, - }, - Object { - "x": 1627974650000, - "y": 12, - }, - Object { - "x": 1627974660000, - "y": 12, - }, - Object { - "x": 1627974670000, - "y": 12, - }, - Object { - "x": 1627974680000, - "y": 12, - }, - Object { - "x": 1627974690000, - "y": 6, - }, - Object { - "x": 1627974700000, - "y": 6, - }, - Object { - "x": 1627974710000, - "y": 12, - }, - Object { - "x": 1627974720000, - "y": 24, - }, - Object { - "x": 1627974730000, - "y": 0, - }, - Object { - "x": 1627974740000, - "y": 6, - }, - Object { - "x": 1627974750000, - "y": 6, - }, - Object { - "x": 1627974760000, - "y": 6, - }, - Object { - "x": 1627974770000, - "y": 6, - }, - Object { - "x": 1627974780000, - "y": 6, - }, - Object { - "x": 1627974790000, - "y": 30, - }, - Object { - "x": 1627974800000, - "y": 12, - }, - Object { - "x": 1627974810000, - "y": 24, - }, - Object { - "x": 1627974820000, - "y": 6, - }, - Object { - "x": 1627974830000, - "y": 0, - }, - Object { - "x": 1627974840000, - "y": 6, - }, - Object { - "x": 1627974850000, - "y": 12, - }, - Object { - "x": 1627974860000, - "y": 0, - }, - Object { - "x": 1627974870000, - "y": 12, - }, - Object { - "x": 1627974880000, - "y": 0, - }, - Object { - "x": 1627974890000, - "y": 24, - }, - Object { - "x": 1627974900000, - "y": 12, - }, - Object { - "x": 1627974910000, - "y": 24, - }, - Object { - "x": 1627974920000, - "y": 12, - }, - Object { - "x": 1627974930000, - "y": 6, - }, - Object { - "x": 1627974940000, - "y": 30, - }, - Object { - "x": 1627974950000, - "y": 12, - }, - Object { - "x": 1627974960000, - "y": 18, - }, - Object { - "x": 1627974970000, - "y": 6, - }, - Object { - "x": 1627974980000, - "y": 0, - }, - Object { - "x": 1627974990000, - "y": 6, - }, - Object { - "x": 1627975000000, - "y": 6, - }, - Object { - "x": 1627975010000, - "y": 0, - }, - Object { - "x": 1627975020000, - "y": 18, - }, - Object { - "x": 1627975030000, - "y": 18, - }, - Object { - "x": 1627975040000, - "y": 12, - }, - Object { - "x": 1627975050000, - "y": 6, - }, - Object { - "x": 1627975060000, - "y": 6, - }, - Object { - "x": 1627975070000, - "y": 0, - }, - Object { - "x": 1627975080000, - "y": 24, - }, - Object { - "x": 1627975090000, - "y": 6, - }, - Object { - "x": 1627975100000, - "y": 12, - }, - Object { - "x": 1627975110000, - "y": 6, - }, - Object { - "x": 1627975120000, - "y": 6, - }, - Object { - "x": 1627975130000, - "y": 18, - }, - Object { - "x": 1627975140000, - "y": 18, - }, - Object { - "x": 1627975150000, - "y": 24, - }, - Object { - "x": 1627975160000, - "y": 0, - }, - Object { - "x": 1627975170000, - "y": 0, - }, - Object { - "x": 1627975180000, - "y": 12, - }, - Object { - "x": 1627975190000, - "y": 6, - }, - Object { - "x": 1627975200000, - "y": 30, - }, - Object { - "x": 1627975210000, - "y": 0, - }, - ], -} -`; diff --git a/x-pack/test/apm_api_integration/tests/services/throughput.ts b/x-pack/test/apm_api_integration/tests/services/throughput.ts index ba468b0d8d683..dc955efbf767b 100644 --- a/x-pack/test/apm_api_integration/tests/services/throughput.ts +++ b/x-pack/test/apm_api_integration/tests/services/throughput.ts @@ -89,32 +89,16 @@ export default function ApiTest({ getService }: FtrProviderContext) { ).toMatchInline(`"2021-08-03T06:50:00.000Z"`); }); - it('has the correct first value', () => { - expectSnapshot(first(throughputResponse.currentPeriod)?.y).toMatchInline(`4`); - }); - it('has the correct end date', () => { expectSnapshot( new Date(last(throughputResponse.currentPeriod)?.x ?? NaN).toISOString() ).toMatchInline(`"2021-08-03T07:20:00.000Z"`); }); - it('has the correct last value', () => { - expectSnapshot(last(throughputResponse.currentPeriod)?.y).toMatchInline(`0`); - }); - - it('has the correct number of buckets', () => { - expectSnapshot(throughputResponse.currentPeriod.length).toMatchInline(`31`); - }); - it('has the correct throughput avg', () => { const avg = mean(throughputResponse.currentPeriod.map((d) => d.y)); expectSnapshot(avg).toMatchInline(`7.2258064516129`); }); - - it('has the correct throughput', () => { - expectSnapshot(throughputResponse.currentPeriod).toMatch(); - }); }); describe('with kql filter to force transaction-based UI', () => { @@ -132,6 +116,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { end: metadata.end, transactionType: 'request', environment: 'ENVIRONMENT_ALL', + _inspect: true, }, }, }); @@ -155,32 +140,16 @@ export default function ApiTest({ getService }: FtrProviderContext) { ).toMatchInline(`"2021-08-03T06:50:00.000Z"`); }); - it('has the correct first value', () => { - expectSnapshot(first(throughputResponse.currentPeriod)?.y).toMatchInline(`2`); - }); - it('has the correct end date', () => { expectSnapshot( new Date(last(throughputResponse.currentPeriod)?.x ?? NaN).toISOString() ).toMatchInline(`"2021-08-03T07:20:00.000Z"`); }); - it('has the correct last value', () => { - expectSnapshot(last(throughputResponse.currentPeriod)?.y).toMatchInline(`0`); - }); - - it('has the correct number of buckets', () => { - expectSnapshot(throughputResponse.currentPeriod.length).toMatchInline(`61`); - }); - it('has the correct throughput avg', () => { const avg = mean(throughputResponse.currentPeriod.map((d) => d.y)); expectSnapshot(avg).toMatchInline(`7.44262295081967`); }); - - it('has the correct throughput', () => { - expectSnapshot(throughputResponse.currentPeriod).toMatch(); - }); }); }); } @@ -247,13 +216,17 @@ export default function ApiTest({ getService }: FtrProviderContext) { ).toMatchInline(`"2021-08-03T07:20:10.000Z"`); }); - it('has the correct number of buckets', () => { - expectSnapshot(throughputResponse.currentPeriod.length).toMatchInline(`91`); - expectSnapshot(throughputResponse.previousPeriod.length).toMatchInline(`91`); + it('returns same number of buckets for both periods', () => { + expect(throughputResponse.currentPeriod.length).to.be( + throughputResponse.previousPeriod.length + ); }); - it('has the correct throughput in tpm', () => { - expectSnapshot(throughputResponse).toMatch(); + it('calculates the correct throughput avg for both periods', () => { + const currentPeriodAvg = mean(throughputResponse.currentPeriod.map((d) => d.y)); + expectSnapshot(currentPeriodAvg).toMatchInline(`6.46153846153846`); + const previousPeriodAvg = mean(throughputResponse.previousPeriod.map((d) => d.y)); + expectSnapshot(previousPeriodAvg).toMatchInline(`8.50549450549451`); }); } ); From 63ddf04e9d02f9543e23c983b484d17977dc38c3 Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Wed, 29 Sep 2021 11:26:14 -0400 Subject: [PATCH 20/26] adding throughput api test --- .../tests/services/throughput.ts | 1 - .../tests/throughput/index.ts | 150 ++++++++++++++++++ 2 files changed, 150 insertions(+), 1 deletion(-) create mode 100644 x-pack/test/apm_api_integration/tests/throughput/index.ts diff --git a/x-pack/test/apm_api_integration/tests/services/throughput.ts b/x-pack/test/apm_api_integration/tests/services/throughput.ts index dc955efbf767b..d7e54ca15b919 100644 --- a/x-pack/test/apm_api_integration/tests/services/throughput.ts +++ b/x-pack/test/apm_api_integration/tests/services/throughput.ts @@ -116,7 +116,6 @@ export default function ApiTest({ getService }: FtrProviderContext) { end: metadata.end, transactionType: 'request', environment: 'ENVIRONMENT_ALL', - _inspect: true, }, }, }); diff --git a/x-pack/test/apm_api_integration/tests/throughput/index.ts b/x-pack/test/apm_api_integration/tests/throughput/index.ts new file mode 100644 index 0000000000000..c406e7655c18c --- /dev/null +++ b/x-pack/test/apm_api_integration/tests/throughput/index.ts @@ -0,0 +1,150 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { sum } from 'lodash'; +import { LatencyAggregationType } from '../../../../plugins/apm/common/latency_aggregation_types'; +import { APIReturnType } from '../../../../plugins/apm/public/services/rest/createCallApmApi'; +import { createApmApiSupertest } from '../../common/apm_api_supertest'; +import archives_metadata from '../../common/fixtures/es_archiver/archives_metadata'; +import { FtrProviderContext } from '../../common/ftr_provider_context'; +import { registry } from '../../common/registry'; +import { roundNumber } from '../../utils'; + +type ThroughputReturn = APIReturnType<'GET /api/apm/services/{serviceName}/throughput'>; +type ServiceReturn = APIReturnType<'GET /api/apm/services'>; +type TransactionsDetailsReturn = APIReturnType<'GET /api/apm/services/{serviceName}/transactions/groups/main_statistics'>; + +export default function ApiTest({ getService }: FtrProviderContext) { + const apmApiSupertest = createApmApiSupertest(getService('supertest')); + + const archiveName = 'apm_8.0.0'; + const metadata = archives_metadata[archiveName]; + + let throughputResponse: ThroughputReturn; + let serviceResponse: ServiceReturn; + let transactionsDetailsReturn: TransactionsDetailsReturn; + + const deltaAsMinute = + (new Date(metadata.end).valueOf() - new Date(metadata.start).valueOf()) / 1000 / 60; + + function callAPIs({ processorEvent }: { processorEvent: 'transaction' | 'metric' }) { + return Promise.all([ + apmApiSupertest({ + endpoint: 'GET /api/apm/services', + params: { + query: { + kuery: `service.name : "opbeans-java" and processor.event : "${processorEvent}"`, + start: metadata.start, + end: metadata.end, + environment: 'ENVIRONMENT_ALL', + }, + }, + }), + apmApiSupertest({ + endpoint: 'GET /api/apm/services/{serviceName}/throughput', + params: { + path: { + serviceName: 'opbeans-java', + }, + query: { + kuery: `processor.event : "${processorEvent}"`, + start: metadata.start, + end: metadata.end, + transactionType: 'request', + environment: 'ENVIRONMENT_ALL', + }, + }, + }), + apmApiSupertest({ + endpoint: `GET /api/apm/services/{serviceName}/transactions/groups/main_statistics`, + params: { + path: { + serviceName: 'opbeans-java', + }, + query: { + kuery: `processor.event : "${processorEvent}"`, + start: metadata.start, + end: metadata.end, + transactionType: 'request', + environment: 'ENVIRONMENT_ALL', + latencyAggregationType: 'avg' as LatencyAggregationType, + }, + }, + }), + ]); + } + + registry.when( + 'Throughput value across apis', + { config: 'basic', archives: [archiveName] }, + () => { + describe('with kql filter to force transaction-based UI', () => { + before(async () => { + const [ + serviceApiResponse, + serviceThroughputApiResponse, + transactionsDetailsApiReturn, + ] = await callAPIs({ processorEvent: 'transaction' }); + + serviceResponse = serviceApiResponse.body; + throughputResponse = serviceThroughputApiResponse.body; + transactionsDetailsReturn = transactionsDetailsApiReturn.body; + }); + + it('matches throughput value betwen service, throughput chart and transactions apis ', () => { + // return of calling GET /api/apm/services api + const serviceApiThroughput = serviceResponse.items[0].throughput; + + // return of calling GET /api/apm/services/{serviceName}/throughput + const throughputChartApiSum = sum(throughputResponse.currentPeriod.map((d) => d.y)); + + // needs to divide by 2 first because for the requested time range the bucket size will be 30s + const throughputChartApiTPM = throughputChartApiSum / 2 / deltaAsMinute; + + const transactionsThroughputSum = sum( + transactionsDetailsReturn.transactionGroups.map((data) => data.throughput) + ); + + expect(roundNumber(serviceApiThroughput)).to.be(roundNumber(throughputChartApiTPM)); + expect(roundNumber(serviceApiThroughput)).to.be(roundNumber(transactionsThroughputSum)); + }); + }); + + describe('with kql filter to force metric-based UI', () => { + before(async () => { + const [ + serviceApiResponse, + serviceThroughputApiResponse, + transactionsDetailsApiReturn, + ] = await callAPIs({ processorEvent: 'metric' }); + + serviceResponse = serviceApiResponse.body; + throughputResponse = serviceThroughputApiResponse.body; + transactionsDetailsReturn = transactionsDetailsApiReturn.body; + }); + + it('matches throughput value betwen service, throughput chart and transactions apis ', () => { + // return of calling GET /api/apm/services api + const serviceApiThroughput = serviceResponse.items[0].throughput; + + // return of calling GET /api/apm/services/{serviceName}/throughput + const throughputChartApiSum = sum(throughputResponse.currentPeriod.map((d) => d.y)); + const throughputChartApiTPM = throughputChartApiSum / deltaAsMinute; + + // return of calling GET /api/apm/services/{serviceName}/transactions/groups/main_statistics + const transactionsThroughputSum = sum( + transactionsDetailsReturn.transactionGroups.map((data) => data.throughput) + ); + + expect(roundNumber(serviceApiThroughput)).to.be(roundNumber(throughputChartApiTPM)); + expect(roundNumber(serviceApiThroughput)).to.be(roundNumber(transactionsThroughputSum)); + }); + }); + } + ); +} From 832a6df2c17166b2e46ff9255c3c4a4429df7ece Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Tue, 5 Oct 2021 14:59:25 -0400 Subject: [PATCH 21/26] adding throughput tests --- .../apm_data_generation_8.0.0/data.json.gz | Bin 0 -> 164355 bytes .../apm_data_generation_8.0.0/mappings.json | 21166 ++++++++++++++++ .../fixtures/es_archiver/archives_metadata.ts | 7 +- .../apm_api_integration/common/registry.ts | 3 +- .../test/apm_api_integration/tests/index.ts | 4 + .../tests/services/throughput.ts | 196 +- .../tests/throughput/index.ts | 26 +- 7 files changed, 21274 insertions(+), 128 deletions(-) create mode 100644 x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_data_generation_8.0.0/data.json.gz create mode 100644 x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_data_generation_8.0.0/mappings.json diff --git a/x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_data_generation_8.0.0/data.json.gz b/x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_data_generation_8.0.0/data.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..61425169c84525807328397bf2591c8548a91f04 GIT binary patch literal 164355 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 H*=J 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¬X?}leOBoDBFN` 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 I-l|;tKQIU_LI3~& literal 0 HcmV?d00001 diff --git a/x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_data_generation_8.0.0/mappings.json b/x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_data_generation_8.0.0/mappings.json new file mode 100644 index 0000000000000..ac0bb8e836e98 --- /dev/null +++ b/x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_data_generation_8.0.0/mappings.json @@ -0,0 +1,21166 @@ +{ + "type": "index", + "value": { + "aliases": { + "apm-8.0.0-metric": { + "is_write_index": true + } + }, + "index": "apm-8.0.0-metric-000001", + "mappings": { + "_meta": { + "beat": "apm", + "version": "8.0.0" + }, + "date_detection": false, + "dynamic_templates": [ + { + "labels": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "labels.*" + } + }, + { + "container.labels": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "container.labels.*" + } + }, + { + "fields": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "fields.*" + } + }, + { + "docker.container.labels": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "docker.container.labels.*" + } + }, + { + "kubernetes.labels.*": { + "mapping": { + "type": "keyword" + }, + "path_match": "kubernetes.labels.*" + } + }, + { + "kubernetes.annotations.*": { + "mapping": { + "type": "keyword" + }, + "path_match": "kubernetes.annotations.*" + } + }, + { + "kubernetes.selectors.*": { + "mapping": { + "type": "keyword" + }, + "path_match": "kubernetes.selectors.*" + } + }, + { + "labels_string": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "labels.*" + } + }, + { + "labels_boolean": { + "mapping": { + "type": "boolean" + }, + "match_mapping_type": "boolean", + "path_match": "labels.*" + } + }, + { + "labels_*": { + "mapping": { + "scaling_factor": 1000000, + "type": "scaled_float" + }, + "path_match": "labels.*" + } + }, + { + "histogram": { + "mapping": { + "type": "histogram" + } + } + }, + { + "transaction.marks": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "transaction.marks.*" + } + }, + { + "transaction.marks.*.*": { + "mapping": { + "scaling_factor": 1000000, + "type": "scaled_float" + }, + "path_match": "transaction.marks.*.*" + } + }, + { + "strings_as_keyword": { + "mapping": { + "ignore_above": 1024, + "type": "keyword" + }, + "match_mapping_type": "string" + } + } + ], + "properties": { + "@timestamp": { + "type": "date" + }, + "agent": { + "dynamic": "false", + "properties": { + "build": { + "properties": { + "original": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ephemeral_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "hostname": { + "path": "agent.name", + "type": "alias" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "child": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "client": { + "dynamic": "false", + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "cloud": { + "properties": { + "account": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "availability_zone": { + "ignore_above": 1024, + "type": "keyword" + }, + "image": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "instance": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "machine": { + "dynamic": "false", + "properties": { + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "origin": { + "dynamic": "false", + "properties": { + "account": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "region": { + "ignore_above": 1024, + "type": "keyword" + }, + "service": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "project": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "region": { + "ignore_above": 1024, + "type": "keyword" + }, + "service": { + "dynamic": "false", + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "container": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "image": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "tag": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "labels": { + "type": "object" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "runtime": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "data_stream": { + "properties": { + "dataset": { + "type": "constant_keyword" + }, + "namespace": { + "type": "constant_keyword" + }, + "type": { + "type": "constant_keyword" + } + } + }, + "destination": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "dll": { + "properties": { + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "dns": { + "properties": { + "answers": { + "properties": { + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "ttl": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "header_flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "op_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "question": { + "properties": { + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "resolved_ip": { + "type": "ip" + }, + "response_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "docker": { + "properties": { + "container": { + "properties": { + "labels": { + "type": "object" + } + } + } + } + }, + "ecs": { + "properties": { + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "elf": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "byte_order": { + "ignore_above": 1024, + "type": "keyword" + }, + "cpu_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "creation_date": { + "type": "date" + }, + "exports": { + "type": "flattened" + }, + "header": { + "properties": { + "abi_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "ignore_above": 1024, + "type": "keyword" + }, + "entrypoint": { + "type": "long" + }, + "object_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "os_abi": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "imports": { + "type": "flattened" + }, + "sections": { + "properties": { + "chi2": { + "type": "long" + }, + "entropy": { + "type": "long" + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_offset": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_size": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "virtual_address": { + "type": "long" + }, + "virtual_size": { + "type": "long" + } + }, + "type": "nested" + }, + "segments": { + "properties": { + "sections": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + }, + "type": "nested" + }, + "shared_libraries": { + "ignore_above": 1024, + "type": "keyword" + }, + "telfhash": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "error": { + "dynamic": "false", + "properties": { + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "culprit": { + "ignore_above": 1024, + "type": "keyword" + }, + "exception": { + "properties": { + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "handled": { + "type": "boolean" + }, + "message": { + "norms": false, + "type": "text" + }, + "module": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "grouping_key": { + "ignore_above": 1024, + "type": "keyword" + }, + "grouping_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "log": { + "properties": { + "level": { + "ignore_above": 1024, + "type": "keyword" + }, + "logger_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "message": { + "norms": false, + "type": "text" + }, + "param_message": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "message": { + "norms": false, + "type": "text" + }, + "stack_trace": { + "doc_values": false, + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "index": false, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "event": { + "properties": { + "action": { + "ignore_above": 1024, + "type": "keyword" + }, + "agent_id_status": { + "ignore_above": 1024, + "type": "keyword" + }, + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "created": { + "type": "date" + }, + "dataset": { + "ignore_above": 1024, + "type": "keyword" + }, + "duration": { + "type": "long" + }, + "end": { + "type": "date" + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "ingested": { + "type": "date" + }, + "kind": { + "ignore_above": 1024, + "type": "keyword" + }, + "module": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "doc_values": false, + "ignore_above": 1024, + "index": false, + "type": "keyword" + }, + "outcome": { + "ignore_above": 1024, + "type": "keyword" + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "reason": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "risk_score": { + "type": "float" + }, + "risk_score_norm": { + "type": "float" + }, + "sequence": { + "type": "long" + }, + "severity": { + "type": "long" + }, + "start": { + "type": "date" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "faas": { + "dynamic": "false", + "properties": { + "coldstart": { + "type": "boolean" + }, + "execution": { + "ignore_above": 1024, + "type": "keyword" + }, + "trigger": { + "properties": { + "request_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "fields": { + "type": "object" + }, + "file": { + "properties": { + "accessed": { + "type": "date" + }, + "attributes": { + "ignore_above": 1024, + "type": "keyword" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "created": { + "type": "date" + }, + "ctime": { + "type": "date" + }, + "device": { + "ignore_above": 1024, + "type": "keyword" + }, + "directory": { + "ignore_above": 1024, + "type": "keyword" + }, + "drive_letter": { + "ignore_above": 1, + "type": "keyword" + }, + "elf": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "byte_order": { + "ignore_above": 1024, + "type": "keyword" + }, + "cpu_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "creation_date": { + "type": "date" + }, + "exports": { + "type": "flattened" + }, + "header": { + "properties": { + "abi_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "ignore_above": 1024, + "type": "keyword" + }, + "entrypoint": { + "type": "long" + }, + "object_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "os_abi": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "imports": { + "type": "flattened" + }, + "sections": { + "properties": { + "chi2": { + "type": "long" + }, + "entropy": { + "type": "long" + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_offset": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_size": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "virtual_address": { + "type": "long" + }, + "virtual_size": { + "type": "long" + } + }, + "type": "nested" + }, + "segments": { + "properties": { + "sections": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + }, + "type": "nested" + }, + "shared_libraries": { + "ignore_above": 1024, + "type": "keyword" + }, + "telfhash": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "gid": { + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "ignore_above": 1024, + "type": "keyword" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "inode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "mode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mtime": { + "type": "date" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "owner": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "size": { + "type": "long" + }, + "target_path": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "golang": { + "properties": { + "goroutines": { + "type": "long" + }, + "heap": { + "properties": { + "allocations": { + "properties": { + "active": { + "type": "float" + }, + "allocated": { + "type": "float" + }, + "frees": { + "type": "long" + }, + "idle": { + "type": "float" + }, + "mallocs": { + "type": "float" + }, + "objects": { + "type": "long" + }, + "total": { + "type": "float" + } + } + }, + "gc": { + "properties": { + "cpu_fraction": { + "type": "float" + }, + "next_gc_limit": { + "type": "float" + }, + "total_count": { + "type": "long" + }, + "total_pause": { + "properties": { + "ns": { + "type": "float" + } + } + } + } + }, + "system": { + "properties": { + "obtained": { + "type": "float" + }, + "released": { + "type": "float" + }, + "stack": { + "type": "float" + }, + "total": { + "type": "float" + } + } + } + } + } + } + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "host": { + "dynamic": "false", + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "containerized": { + "type": "boolean" + }, + "cpu": { + "properties": { + "usage": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "disk": { + "properties": { + "read": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "write": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "network": { + "properties": { + "egress": { + "properties": { + "bytes": { + "type": "long" + }, + "packets": { + "type": "long" + } + } + }, + "ingress": { + "properties": { + "bytes": { + "type": "long" + }, + "packets": { + "type": "long" + } + } + } + } + }, + "os": { + "properties": { + "build": { + "ignore_above": 1024, + "type": "keyword" + }, + "codename": { + "ignore_above": 1024, + "type": "keyword" + }, + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "uptime": { + "type": "long" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "http": { + "dynamic": "false", + "properties": { + "request": { + "properties": { + "body": { + "properties": { + "bytes": { + "type": "long" + }, + "content": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "bytes": { + "type": "long" + }, + "headers": { + "enabled": false, + "type": "object" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "method": { + "ignore_above": 1024, + "type": "keyword" + }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "referrer": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "response": { + "properties": { + "body": { + "properties": { + "bytes": { + "type": "long" + }, + "content": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "bytes": { + "type": "long" + }, + "finished": { + "type": "boolean" + }, + "headers": { + "enabled": false, + "type": "object" + }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "status_code": { + "type": "long" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "interface": { + "properties": { + "alias": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "jvm": { + "properties": { + "gc": { + "properties": { + "alloc": { + "type": "float" + }, + "count": { + "type": "long" + }, + "time": { + "type": "long" + } + } + }, + "memory": { + "properties": { + "heap": { + "properties": { + "committed": { + "type": "float" + }, + "max": { + "type": "float" + }, + "pool": { + "properties": { + "committed": { + "type": "float" + }, + "max": { + "type": "long" + }, + "used": { + "type": "float" + } + } + }, + "used": { + "type": "float" + } + } + }, + "non_heap": { + "properties": { + "committed": { + "type": "float" + }, + "max": { + "type": "long" + }, + "used": { + "type": "float" + } + } + } + } + }, + "thread": { + "properties": { + "count": { + "type": "long" + } + } + } + } + }, + "kubernetes": { + "dynamic": "false", + "properties": { + "annotations": { + "properties": { + "*": { + "type": "object" + } + } + }, + "container": { + "properties": { + "image": { + "path": "container.image.name", + "type": "alias" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "deployment": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "labels": { + "properties": { + "*": { + "type": "object" + } + } + }, + "namespace": { + "ignore_above": 1024, + "type": "keyword" + }, + "node": { + "properties": { + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pod": { + "properties": { + "ip": { + "type": "ip" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "replicaset": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "selectors": { + "properties": { + "*": { + "type": "object" + } + } + }, + "statefulset": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "labels": { + "dynamic": "true", + "properties": { + "name": { + "type": "keyword" + } + } + }, + "log": { + "properties": { + "file": { + "properties": { + "path": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "level": { + "ignore_above": 1024, + "type": "keyword" + }, + "logger": { + "ignore_above": 1024, + "type": "keyword" + }, + "origin": { + "properties": { + "file": { + "properties": { + "line": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "function": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "original": { + "doc_values": false, + "ignore_above": 1024, + "index": false, + "type": "keyword" + }, + "syslog": { + "properties": { + "facility": { + "properties": { + "code": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "priority": { + "type": "long" + }, + "severity": { + "properties": { + "code": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + } + } + }, + "message": { + "norms": false, + "type": "text" + }, + "metricset": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "period": { + "meta": { + "unit": "ms" + }, + "type": "long" + } + } + }, + "network": { + "dynamic": "false", + "properties": { + "application": { + "ignore_above": 1024, + "type": "keyword" + }, + "bytes": { + "type": "long" + }, + "carrier": { + "properties": { + "icc": { + "ignore_above": 1024, + "type": "keyword" + }, + "mcc": { + "ignore_above": 1024, + "type": "keyword" + }, + "mnc": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "community_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "connection": { + "properties": { + "subtype": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "direction": { + "ignore_above": 1024, + "type": "keyword" + }, + "forwarded_ip": { + "type": "ip" + }, + "iana_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "inner": { + "properties": { + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "packets": { + "type": "long" + }, + "protocol": { + "ignore_above": 1024, + "type": "keyword" + }, + "transport": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "observer": { + "dynamic": "false", + "properties": { + "egress": { + "properties": { + "interface": { + "properties": { + "alias": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "zone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ephemeral_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "ingress": { + "properties": { + "interface": { + "properties": { + "alias": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "zone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "listening": { + "ignore_above": 1024, + "type": "keyword" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "vendor": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + }, + "version_major": { + "type": "byte" + } + } + }, + "orchestrator": { + "properties": { + "api_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "cluster": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "namespace": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "resource": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "organization": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "package": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "build_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "checksum": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "install_scope": { + "ignore_above": 1024, + "type": "keyword" + }, + "installed": { + "type": "date" + }, + "license": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "size": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "parent": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "process": { + "dynamic": "false", + "properties": { + "args": { + "ignore_above": 1024, + "type": "keyword" + }, + "args_count": { + "type": "long" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "command_line": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "elf": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "byte_order": { + "ignore_above": 1024, + "type": "keyword" + }, + "cpu_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "creation_date": { + "type": "date" + }, + "exports": { + "type": "flattened" + }, + "header": { + "properties": { + "abi_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "ignore_above": 1024, + "type": "keyword" + }, + "entrypoint": { + "type": "long" + }, + "object_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "os_abi": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "imports": { + "type": "flattened" + }, + "sections": { + "properties": { + "chi2": { + "type": "long" + }, + "entropy": { + "type": "long" + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_offset": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_size": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "virtual_address": { + "type": "long" + }, + "virtual_size": { + "type": "long" + } + }, + "type": "nested" + }, + "segments": { + "properties": { + "sections": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + }, + "type": "nested" + }, + "shared_libraries": { + "ignore_above": 1024, + "type": "keyword" + }, + "telfhash": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "entity_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "executable": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "exit_code": { + "type": "long" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "owner": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "parent": { + "properties": { + "args": { + "ignore_above": 1024, + "type": "keyword" + }, + "args_count": { + "type": "long" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "command_line": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "elf": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "byte_order": { + "ignore_above": 1024, + "type": "keyword" + }, + "cpu_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "creation_date": { + "type": "date" + }, + "exports": { + "type": "flattened" + }, + "header": { + "properties": { + "abi_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "ignore_above": 1024, + "type": "keyword" + }, + "entrypoint": { + "type": "long" + }, + "object_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "os_abi": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "imports": { + "type": "flattened" + }, + "sections": { + "properties": { + "chi2": { + "type": "long" + }, + "entropy": { + "type": "long" + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_offset": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_size": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "virtual_address": { + "type": "long" + }, + "virtual_size": { + "type": "long" + } + }, + "type": "nested" + }, + "segments": { + "properties": { + "sections": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + }, + "type": "nested" + }, + "shared_libraries": { + "ignore_above": 1024, + "type": "keyword" + }, + "telfhash": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "entity_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "executable": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "exit_code": { + "type": "long" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pgid": { + "type": "long" + }, + "pid": { + "type": "long" + }, + "ppid": { + "type": "long" + }, + "start": { + "type": "date" + }, + "thread": { + "properties": { + "id": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "title": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "uptime": { + "type": "long" + }, + "working_directory": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pgid": { + "type": "long" + }, + "pid": { + "type": "long" + }, + "ppid": { + "type": "long" + }, + "start": { + "type": "date" + }, + "thread": { + "properties": { + "id": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "title": { + "ignore_above": 1024, + "type": "keyword" + }, + "uptime": { + "type": "long" + }, + "working_directory": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "processor": { + "properties": { + "event": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "profile": { + "dynamic": "false", + "properties": { + "alloc_objects": { + "properties": { + "count": { + "type": "long" + } + } + }, + "alloc_space": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "cpu": { + "properties": { + "ns": { + "meta": { + "unit": "nanos" + }, + "type": "long" + } + } + }, + "duration": { + "meta": { + "unit": "nanos" + }, + "type": "long" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "inuse_objects": { + "properties": { + "count": { + "type": "long" + } + } + }, + "inuse_space": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "samples": { + "properties": { + "count": { + "type": "long" + } + } + }, + "stack": { + "dynamic": "false", + "properties": { + "filename": { + "ignore_above": 1024, + "type": "keyword" + }, + "function": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "line": { + "type": "long" + } + } + }, + "top": { + "dynamic": "false", + "properties": { + "filename": { + "ignore_above": 1024, + "type": "keyword" + }, + "function": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "line": { + "type": "long" + } + } + }, + "wall": { + "properties": { + "us": { + "meta": { + "unit": "micros" + }, + "type": "long" + } + } + } + } + }, + "registry": { + "properties": { + "data": { + "properties": { + "bytes": { + "ignore_above": 1024, + "type": "keyword" + }, + "strings": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hive": { + "ignore_above": 1024, + "type": "keyword" + }, + "key": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "value": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "related": { + "properties": { + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "hosts": { + "ignore_above": 1024, + "type": "keyword" + }, + "ip": { + "type": "ip" + }, + "user": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "rule": { + "properties": { + "author": { + "ignore_above": 1024, + "type": "keyword" + }, + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "license": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "ruleset": { + "ignore_above": 1024, + "type": "keyword" + }, + "uuid": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "server": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "service": { + "dynamic": "false", + "properties": { + "environment": { + "ignore_above": 1024, + "type": "keyword" + }, + "ephemeral_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "framework": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "language": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "node": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "origin": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "runtime": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "session": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "sequence": { + "type": "long" + } + } + }, + "source": { + "dynamic": "false", + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "sourcemap": { + "dynamic": "false", + "properties": { + "bundle_filepath": { + "ignore_above": 1024, + "type": "keyword" + }, + "service": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "span": { + "dynamic": "false", + "properties": { + "action": { + "ignore_above": 1024, + "type": "keyword" + }, + "composite": { + "dynamic": "false", + "properties": { + "compression_strategy": { + "ignore_above": 1024, + "type": "keyword" + }, + "count": { + "type": "long" + }, + "sum": { + "properties": { + "us": { + "type": "long" + } + } + } + } + }, + "db": { + "dynamic": "false", + "properties": { + "link": { + "ignore_above": 1024, + "type": "keyword" + }, + "rows_affected": { + "type": "long" + } + } + }, + "destination": { + "dynamic": "false", + "properties": { + "service": { + "dynamic": "false", + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "resource": { + "ignore_above": 1024, + "type": "keyword" + }, + "response_time": { + "properties": { + "count": { + "type": "long" + }, + "sum": { + "properties": { + "us": { + "meta": { + "unit": "micros" + }, + "type": "long" + } + } + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "duration": { + "properties": { + "us": { + "type": "long" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "message": { + "dynamic": "false", + "properties": { + "age": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "queue": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "self_time": { + "properties": { + "count": { + "type": "long" + }, + "sum": { + "properties": { + "us": { + "meta": { + "unit": "micros" + }, + "type": "long" + } + } + } + } + }, + "start": { + "properties": { + "us": { + "type": "long" + } + } + }, + "subtype": { + "ignore_above": 1024, + "type": "keyword" + }, + "sync": { + "type": "boolean" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "system": { + "properties": { + "cpu": { + "properties": { + "total": { + "properties": { + "norm": { + "properties": { + "pct": { + "meta": { + "metric_type": "gauge", + "unit": "percent" + }, + "scaling_factor": 1000, + "type": "scaled_float" + } + } + } + } + } + } + }, + "memory": { + "properties": { + "actual": { + "properties": { + "free": { + "meta": { + "metric_type": "gauge", + "unit": "byte" + }, + "type": "long" + } + } + }, + "total": { + "meta": { + "metric_type": "gauge", + "unit": "byte" + }, + "type": "long" + } + } + }, + "process": { + "properties": { + "cgroup": { + "properties": { + "cpu": { + "properties": { + "cfs": { + "properties": { + "period": { + "properties": { + "us": { + "meta": { + "metric_type": "gauge", + "unit": "micros" + }, + "type": "long" + } + } + }, + "quota": { + "properties": { + "us": { + "meta": { + "metric_type": "gauge", + "unit": "micros" + }, + "type": "long" + } + } + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "stats": { + "properties": { + "periods": { + "meta": { + "metric_type": "counter" + }, + "type": "long" + }, + "throttled": { + "properties": { + "ns": { + "meta": { + "metric_type": "counter", + "unit": "nanos" + }, + "type": "long" + }, + "periods": { + "meta": { + "metric_type": "counter" + }, + "type": "long" + } + } + } + } + } + } + }, + "cpuacct": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "total": { + "properties": { + "ns": { + "meta": { + "metric_type": "counter", + "unit": "nanos" + }, + "type": "long" + } + } + } + } + }, + "memory": { + "properties": { + "mem": { + "properties": { + "limit": { + "properties": { + "bytes": { + "meta": { + "metric_type": "gauge", + "unit": "byte" + }, + "type": "long" + } + } + }, + "usage": { + "properties": { + "bytes": { + "meta": { + "metric_type": "gauge", + "unit": "byte" + }, + "type": "long" + } + } + } + } + } + } + } + } + }, + "cpu": { + "properties": { + "total": { + "properties": { + "norm": { + "properties": { + "pct": { + "meta": { + "metric_type": "gauge", + "unit": "percent" + }, + "scaling_factor": 1000, + "type": "scaled_float" + } + } + } + } + } + } + }, + "memory": { + "properties": { + "rss": { + "properties": { + "bytes": { + "meta": { + "metric_type": "gauge", + "unit": "byte" + }, + "type": "long" + } + } + }, + "size": { + "meta": { + "metric_type": "gauge", + "unit": "byte" + }, + "type": "long" + } + } + } + } + } + } + }, + "tags": { + "ignore_above": 1024, + "type": "keyword" + }, + "threat": { + "properties": { + "enrichments": { + "properties": { + "indicator": { + "properties": { + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "confidence": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "file": { + "properties": { + "accessed": { + "type": "date" + }, + "attributes": { + "ignore_above": 1024, + "type": "keyword" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "created": { + "type": "date" + }, + "ctime": { + "type": "date" + }, + "device": { + "ignore_above": 1024, + "type": "keyword" + }, + "directory": { + "ignore_above": 1024, + "type": "keyword" + }, + "drive_letter": { + "ignore_above": 1, + "type": "keyword" + }, + "elf": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "byte_order": { + "ignore_above": 1024, + "type": "keyword" + }, + "cpu_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "creation_date": { + "type": "date" + }, + "exports": { + "type": "flattened" + }, + "header": { + "properties": { + "abi_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "ignore_above": 1024, + "type": "keyword" + }, + "entrypoint": { + "type": "long" + }, + "object_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "os_abi": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "imports": { + "type": "flattened" + }, + "sections": { + "properties": { + "chi2": { + "type": "long" + }, + "entropy": { + "type": "long" + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_offset": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_size": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "virtual_address": { + "type": "long" + }, + "virtual_size": { + "type": "long" + } + }, + "type": "nested" + }, + "segments": { + "properties": { + "sections": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + }, + "type": "nested" + }, + "shared_libraries": { + "ignore_above": 1024, + "type": "keyword" + }, + "telfhash": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "gid": { + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "ignore_above": 1024, + "type": "keyword" + }, + "inode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "mode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mtime": { + "type": "date" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "owner": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "size": { + "type": "long" + }, + "target_path": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "first_seen": { + "type": "date" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "last_seen": { + "type": "date" + }, + "marking": { + "properties": { + "tlp": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "modified_at": { + "type": "date" + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "port": { + "type": "long" + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "registry": { + "properties": { + "data": { + "properties": { + "bytes": { + "ignore_above": 1024, + "type": "keyword" + }, + "strings": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hive": { + "ignore_above": 1024, + "type": "keyword" + }, + "key": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "value": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "scanner_stats": { + "type": "long" + }, + "sightings": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "fragment": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "password": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "port": { + "type": "long" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "scheme": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "username": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "matched": { + "properties": { + "atomic": { + "ignore_above": 1024, + "type": "keyword" + }, + "field": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "index": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + }, + "type": "nested" + }, + "framework": { + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "alias": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "indicator": { + "properties": { + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "confidence": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "file": { + "properties": { + "accessed": { + "type": "date" + }, + "attributes": { + "ignore_above": 1024, + "type": "keyword" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "created": { + "type": "date" + }, + "ctime": { + "type": "date" + }, + "device": { + "ignore_above": 1024, + "type": "keyword" + }, + "directory": { + "ignore_above": 1024, + "type": "keyword" + }, + "drive_letter": { + "ignore_above": 1, + "type": "keyword" + }, + "elf": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "byte_order": { + "ignore_above": 1024, + "type": "keyword" + }, + "cpu_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "creation_date": { + "type": "date" + }, + "exports": { + "type": "flattened" + }, + "header": { + "properties": { + "abi_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "ignore_above": 1024, + "type": "keyword" + }, + "entrypoint": { + "type": "long" + }, + "object_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "os_abi": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "imports": { + "type": "flattened" + }, + "sections": { + "properties": { + "chi2": { + "type": "long" + }, + "entropy": { + "type": "long" + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_offset": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_size": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "virtual_address": { + "type": "long" + }, + "virtual_size": { + "type": "long" + } + }, + "type": "nested" + }, + "segments": { + "properties": { + "sections": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + }, + "type": "nested" + }, + "shared_libraries": { + "ignore_above": 1024, + "type": "keyword" + }, + "telfhash": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "gid": { + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "ignore_above": 1024, + "type": "keyword" + }, + "inode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "mode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mtime": { + "type": "date" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "owner": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "size": { + "type": "long" + }, + "target_path": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "first_seen": { + "type": "date" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "last_seen": { + "type": "date" + }, + "marking": { + "properties": { + "tlp": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "modified_at": { + "type": "date" + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "port": { + "type": "long" + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "registry": { + "properties": { + "data": { + "properties": { + "bytes": { + "ignore_above": 1024, + "type": "keyword" + }, + "strings": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hive": { + "ignore_above": 1024, + "type": "keyword" + }, + "key": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "value": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "scanner_stats": { + "type": "long" + }, + "sightings": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "fragment": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "password": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "port": { + "type": "long" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "scheme": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "username": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "software": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "platforms": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "tactic": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "technique": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "subtechnique": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + } + } + }, + "timeseries": { + "properties": { + "instance": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "timestamp": { + "properties": { + "us": { + "type": "long" + } + } + }, + "tls": { + "properties": { + "cipher": { + "ignore_above": 1024, + "type": "keyword" + }, + "client": { + "properties": { + "certificate": { + "ignore_above": 1024, + "type": "keyword" + }, + "certificate_chain": { + "ignore_above": 1024, + "type": "keyword" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "issuer": { + "ignore_above": 1024, + "type": "keyword" + }, + "ja3": { + "ignore_above": 1024, + "type": "keyword" + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "server_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "ignore_above": 1024, + "type": "keyword" + }, + "supported_ciphers": { + "ignore_above": 1024, + "type": "keyword" + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "established": { + "type": "boolean" + }, + "next_protocol": { + "ignore_above": 1024, + "type": "keyword" + }, + "resumed": { + "type": "boolean" + }, + "server": { + "properties": { + "certificate": { + "ignore_above": 1024, + "type": "keyword" + }, + "certificate_chain": { + "ignore_above": 1024, + "type": "keyword" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "issuer": { + "ignore_above": 1024, + "type": "keyword" + }, + "ja3s": { + "ignore_above": 1024, + "type": "keyword" + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "subject": { + "ignore_above": 1024, + "type": "keyword" + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + }, + "version_protocol": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "trace": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "transaction": { + "dynamic": "false", + "properties": { + "breakdown": { + "properties": { + "count": { + "type": "long" + } + } + }, + "duration": { + "properties": { + "histogram": { + "type": "histogram" + }, + "us": { + "type": "long" + } + } + }, + "experience": { + "properties": { + "cls": { + "scaling_factor": 1000000, + "type": "scaled_float" + }, + "fid": { + "scaling_factor": 1000000, + "type": "scaled_float" + }, + "longtask": { + "properties": { + "count": { + "type": "long" + }, + "max": { + "scaling_factor": 1000000, + "type": "scaled_float" + }, + "sum": { + "scaling_factor": 1000000, + "type": "scaled_float" + } + } + }, + "tbt": { + "scaling_factor": 1000000, + "type": "scaled_float" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "marks": { + "dynamic": "true", + "properties": { + "*": { + "properties": { + "*": { + "dynamic": "true", + "type": "object" + } + } + } + } + }, + "message": { + "dynamic": "false", + "properties": { + "age": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "queue": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "result": { + "ignore_above": 1024, + "type": "keyword" + }, + "root": { + "type": "boolean" + }, + "sampled": { + "type": "boolean" + }, + "self_time": { + "properties": { + "count": { + "type": "long" + }, + "sum": { + "properties": { + "us": { + "meta": { + "unit": "micros" + }, + "type": "long" + } + } + } + } + }, + "span_count": { + "properties": { + "dropped": { + "type": "long" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "url": { + "dynamic": "false", + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "fragment": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "password": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "port": { + "type": "long" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "scheme": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "username": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "user": { + "dynamic": "false", + "properties": { + "changes": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "effective": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + }, + "target": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "user_agent": { + "dynamic": "false", + "properties": { + "device": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "vulnerability": { + "properties": { + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "classification": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "enumeration": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "report_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "scanner": { + "properties": { + "vendor": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "score": { + "properties": { + "base": { + "type": "float" + }, + "environmental": { + "type": "float" + }, + "temporal": { + "type": "float" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "severity": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "settings": { + "index": { + "codec": "best_compression", + "lifecycle": { + "name": "apm-rollover-30-days", + "rollover_alias": "apm-8.0.0-metric" + }, + "mapping": { + "total_fields": { + "limit": "2000" + } + }, + "max_docvalue_fields_search": "200", + "number_of_replicas": "0", + "number_of_shards": "1", + "priority": "100", + "refresh_interval": "1ms" + } + } + } +} + +{ + "type": "index", + "value": { + "aliases": { + "apm-8.0.0-span": { + "is_write_index": true + } + }, + "index": "apm-8.0.0-span-000001", + "mappings": { + "_meta": { + "beat": "apm", + "version": "8.0.0" + }, + "date_detection": false, + "dynamic_templates": [ + { + "labels": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "labels.*" + } + }, + { + "container.labels": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "container.labels.*" + } + }, + { + "fields": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "fields.*" + } + }, + { + "docker.container.labels": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "docker.container.labels.*" + } + }, + { + "kubernetes.labels.*": { + "mapping": { + "type": "keyword" + }, + "path_match": "kubernetes.labels.*" + } + }, + { + "kubernetes.annotations.*": { + "mapping": { + "type": "keyword" + }, + "path_match": "kubernetes.annotations.*" + } + }, + { + "kubernetes.selectors.*": { + "mapping": { + "type": "keyword" + }, + "path_match": "kubernetes.selectors.*" + } + }, + { + "labels_string": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "labels.*" + } + }, + { + "labels_boolean": { + "mapping": { + "type": "boolean" + }, + "match_mapping_type": "boolean", + "path_match": "labels.*" + } + }, + { + "labels_*": { + "mapping": { + "scaling_factor": 1000000, + "type": "scaled_float" + }, + "path_match": "labels.*" + } + }, + { + "histogram": { + "mapping": { + "type": "histogram" + } + } + }, + { + "transaction.marks": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "transaction.marks.*" + } + }, + { + "transaction.marks.*.*": { + "mapping": { + "scaling_factor": 1000000, + "type": "scaled_float" + }, + "path_match": "transaction.marks.*.*" + } + }, + { + "strings_as_keyword": { + "mapping": { + "ignore_above": 1024, + "type": "keyword" + }, + "match_mapping_type": "string" + } + } + ], + "properties": { + "@timestamp": { + "type": "date" + }, + "agent": { + "dynamic": "false", + "properties": { + "build": { + "properties": { + "original": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ephemeral_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "hostname": { + "path": "agent.name", + "type": "alias" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "child": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "client": { + "dynamic": "false", + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "cloud": { + "properties": { + "account": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "availability_zone": { + "ignore_above": 1024, + "type": "keyword" + }, + "image": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "instance": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "machine": { + "dynamic": "false", + "properties": { + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "origin": { + "dynamic": "false", + "properties": { + "account": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "region": { + "ignore_above": 1024, + "type": "keyword" + }, + "service": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "project": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "region": { + "ignore_above": 1024, + "type": "keyword" + }, + "service": { + "dynamic": "false", + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "container": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "image": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "tag": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "labels": { + "type": "object" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "runtime": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "data_stream": { + "properties": { + "dataset": { + "type": "constant_keyword" + }, + "namespace": { + "type": "constant_keyword" + }, + "type": { + "type": "constant_keyword" + } + } + }, + "destination": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "dll": { + "properties": { + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "dns": { + "properties": { + "answers": { + "properties": { + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "ttl": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "header_flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "op_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "question": { + "properties": { + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "resolved_ip": { + "type": "ip" + }, + "response_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "docker": { + "properties": { + "container": { + "properties": { + "labels": { + "type": "object" + } + } + } + } + }, + "ecs": { + "properties": { + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "elf": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "byte_order": { + "ignore_above": 1024, + "type": "keyword" + }, + "cpu_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "creation_date": { + "type": "date" + }, + "exports": { + "type": "flattened" + }, + "header": { + "properties": { + "abi_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "ignore_above": 1024, + "type": "keyword" + }, + "entrypoint": { + "type": "long" + }, + "object_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "os_abi": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "imports": { + "type": "flattened" + }, + "sections": { + "properties": { + "chi2": { + "type": "long" + }, + "entropy": { + "type": "long" + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_offset": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_size": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "virtual_address": { + "type": "long" + }, + "virtual_size": { + "type": "long" + } + }, + "type": "nested" + }, + "segments": { + "properties": { + "sections": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + }, + "type": "nested" + }, + "shared_libraries": { + "ignore_above": 1024, + "type": "keyword" + }, + "telfhash": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "error": { + "dynamic": "false", + "properties": { + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "culprit": { + "ignore_above": 1024, + "type": "keyword" + }, + "exception": { + "properties": { + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "handled": { + "type": "boolean" + }, + "message": { + "norms": false, + "type": "text" + }, + "module": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "grouping_key": { + "ignore_above": 1024, + "type": "keyword" + }, + "grouping_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "log": { + "properties": { + "level": { + "ignore_above": 1024, + "type": "keyword" + }, + "logger_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "message": { + "norms": false, + "type": "text" + }, + "param_message": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "message": { + "norms": false, + "type": "text" + }, + "stack_trace": { + "doc_values": false, + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "index": false, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "event": { + "properties": { + "action": { + "ignore_above": 1024, + "type": "keyword" + }, + "agent_id_status": { + "ignore_above": 1024, + "type": "keyword" + }, + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "created": { + "type": "date" + }, + "dataset": { + "ignore_above": 1024, + "type": "keyword" + }, + "duration": { + "type": "long" + }, + "end": { + "type": "date" + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "ingested": { + "type": "date" + }, + "kind": { + "ignore_above": 1024, + "type": "keyword" + }, + "module": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "doc_values": false, + "ignore_above": 1024, + "index": false, + "type": "keyword" + }, + "outcome": { + "ignore_above": 1024, + "type": "keyword" + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "reason": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "risk_score": { + "type": "float" + }, + "risk_score_norm": { + "type": "float" + }, + "sequence": { + "type": "long" + }, + "severity": { + "type": "long" + }, + "start": { + "type": "date" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "faas": { + "dynamic": "false", + "properties": { + "coldstart": { + "type": "boolean" + }, + "execution": { + "ignore_above": 1024, + "type": "keyword" + }, + "trigger": { + "properties": { + "request_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "fields": { + "type": "object" + }, + "file": { + "properties": { + "accessed": { + "type": "date" + }, + "attributes": { + "ignore_above": 1024, + "type": "keyword" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "created": { + "type": "date" + }, + "ctime": { + "type": "date" + }, + "device": { + "ignore_above": 1024, + "type": "keyword" + }, + "directory": { + "ignore_above": 1024, + "type": "keyword" + }, + "drive_letter": { + "ignore_above": 1, + "type": "keyword" + }, + "elf": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "byte_order": { + "ignore_above": 1024, + "type": "keyword" + }, + "cpu_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "creation_date": { + "type": "date" + }, + "exports": { + "type": "flattened" + }, + "header": { + "properties": { + "abi_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "ignore_above": 1024, + "type": "keyword" + }, + "entrypoint": { + "type": "long" + }, + "object_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "os_abi": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "imports": { + "type": "flattened" + }, + "sections": { + "properties": { + "chi2": { + "type": "long" + }, + "entropy": { + "type": "long" + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_offset": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_size": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "virtual_address": { + "type": "long" + }, + "virtual_size": { + "type": "long" + } + }, + "type": "nested" + }, + "segments": { + "properties": { + "sections": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + }, + "type": "nested" + }, + "shared_libraries": { + "ignore_above": 1024, + "type": "keyword" + }, + "telfhash": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "gid": { + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "ignore_above": 1024, + "type": "keyword" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "inode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "mode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mtime": { + "type": "date" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "owner": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "size": { + "type": "long" + }, + "target_path": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "host": { + "dynamic": "false", + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "containerized": { + "type": "boolean" + }, + "cpu": { + "properties": { + "usage": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "disk": { + "properties": { + "read": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "write": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "network": { + "properties": { + "egress": { + "properties": { + "bytes": { + "type": "long" + }, + "packets": { + "type": "long" + } + } + }, + "ingress": { + "properties": { + "bytes": { + "type": "long" + }, + "packets": { + "type": "long" + } + } + } + } + }, + "os": { + "properties": { + "build": { + "ignore_above": 1024, + "type": "keyword" + }, + "codename": { + "ignore_above": 1024, + "type": "keyword" + }, + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "uptime": { + "type": "long" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "http": { + "dynamic": "false", + "properties": { + "request": { + "properties": { + "body": { + "properties": { + "bytes": { + "type": "long" + }, + "content": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "bytes": { + "type": "long" + }, + "headers": { + "enabled": false, + "type": "object" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "method": { + "ignore_above": 1024, + "type": "keyword" + }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "referrer": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "response": { + "properties": { + "body": { + "properties": { + "bytes": { + "type": "long" + }, + "content": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "bytes": { + "type": "long" + }, + "finished": { + "type": "boolean" + }, + "headers": { + "enabled": false, + "type": "object" + }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "status_code": { + "type": "long" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "interface": { + "properties": { + "alias": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "kubernetes": { + "dynamic": "false", + "properties": { + "annotations": { + "properties": { + "*": { + "type": "object" + } + } + }, + "container": { + "properties": { + "image": { + "path": "container.image.name", + "type": "alias" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "deployment": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "labels": { + "properties": { + "*": { + "type": "object" + } + } + }, + "namespace": { + "ignore_above": 1024, + "type": "keyword" + }, + "node": { + "properties": { + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pod": { + "properties": { + "ip": { + "type": "ip" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "replicaset": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "selectors": { + "properties": { + "*": { + "type": "object" + } + } + }, + "statefulset": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "labels": { + "dynamic": "true", + "type": "object" + }, + "log": { + "properties": { + "file": { + "properties": { + "path": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "level": { + "ignore_above": 1024, + "type": "keyword" + }, + "logger": { + "ignore_above": 1024, + "type": "keyword" + }, + "origin": { + "properties": { + "file": { + "properties": { + "line": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "function": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "original": { + "doc_values": false, + "ignore_above": 1024, + "index": false, + "type": "keyword" + }, + "syslog": { + "properties": { + "facility": { + "properties": { + "code": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "priority": { + "type": "long" + }, + "severity": { + "properties": { + "code": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + } + } + }, + "message": { + "norms": false, + "type": "text" + }, + "metricset": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "period": { + "meta": { + "unit": "ms" + }, + "type": "long" + } + } + }, + "network": { + "dynamic": "false", + "properties": { + "application": { + "ignore_above": 1024, + "type": "keyword" + }, + "bytes": { + "type": "long" + }, + "carrier": { + "properties": { + "icc": { + "ignore_above": 1024, + "type": "keyword" + }, + "mcc": { + "ignore_above": 1024, + "type": "keyword" + }, + "mnc": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "community_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "connection": { + "properties": { + "subtype": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "direction": { + "ignore_above": 1024, + "type": "keyword" + }, + "forwarded_ip": { + "type": "ip" + }, + "iana_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "inner": { + "properties": { + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "packets": { + "type": "long" + }, + "protocol": { + "ignore_above": 1024, + "type": "keyword" + }, + "transport": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "observer": { + "dynamic": "false", + "properties": { + "egress": { + "properties": { + "interface": { + "properties": { + "alias": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "zone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ephemeral_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "ingress": { + "properties": { + "interface": { + "properties": { + "alias": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "zone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "listening": { + "ignore_above": 1024, + "type": "keyword" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "vendor": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + }, + "version_major": { + "type": "byte" + } + } + }, + "orchestrator": { + "properties": { + "api_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "cluster": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "namespace": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "resource": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "organization": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "package": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "build_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "checksum": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "install_scope": { + "ignore_above": 1024, + "type": "keyword" + }, + "installed": { + "type": "date" + }, + "license": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "size": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "parent": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "process": { + "dynamic": "false", + "properties": { + "args": { + "ignore_above": 1024, + "type": "keyword" + }, + "args_count": { + "type": "long" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "command_line": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "elf": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "byte_order": { + "ignore_above": 1024, + "type": "keyword" + }, + "cpu_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "creation_date": { + "type": "date" + }, + "exports": { + "type": "flattened" + }, + "header": { + "properties": { + "abi_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "ignore_above": 1024, + "type": "keyword" + }, + "entrypoint": { + "type": "long" + }, + "object_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "os_abi": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "imports": { + "type": "flattened" + }, + "sections": { + "properties": { + "chi2": { + "type": "long" + }, + "entropy": { + "type": "long" + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_offset": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_size": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "virtual_address": { + "type": "long" + }, + "virtual_size": { + "type": "long" + } + }, + "type": "nested" + }, + "segments": { + "properties": { + "sections": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + }, + "type": "nested" + }, + "shared_libraries": { + "ignore_above": 1024, + "type": "keyword" + }, + "telfhash": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "entity_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "executable": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "exit_code": { + "type": "long" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "owner": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "parent": { + "properties": { + "args": { + "ignore_above": 1024, + "type": "keyword" + }, + "args_count": { + "type": "long" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "command_line": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "elf": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "byte_order": { + "ignore_above": 1024, + "type": "keyword" + }, + "cpu_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "creation_date": { + "type": "date" + }, + "exports": { + "type": "flattened" + }, + "header": { + "properties": { + "abi_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "ignore_above": 1024, + "type": "keyword" + }, + "entrypoint": { + "type": "long" + }, + "object_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "os_abi": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "imports": { + "type": "flattened" + }, + "sections": { + "properties": { + "chi2": { + "type": "long" + }, + "entropy": { + "type": "long" + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_offset": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_size": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "virtual_address": { + "type": "long" + }, + "virtual_size": { + "type": "long" + } + }, + "type": "nested" + }, + "segments": { + "properties": { + "sections": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + }, + "type": "nested" + }, + "shared_libraries": { + "ignore_above": 1024, + "type": "keyword" + }, + "telfhash": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "entity_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "executable": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "exit_code": { + "type": "long" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pgid": { + "type": "long" + }, + "pid": { + "type": "long" + }, + "ppid": { + "type": "long" + }, + "start": { + "type": "date" + }, + "thread": { + "properties": { + "id": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "title": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "uptime": { + "type": "long" + }, + "working_directory": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pgid": { + "type": "long" + }, + "pid": { + "type": "long" + }, + "ppid": { + "type": "long" + }, + "start": { + "type": "date" + }, + "thread": { + "properties": { + "id": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "title": { + "ignore_above": 1024, + "type": "keyword" + }, + "uptime": { + "type": "long" + }, + "working_directory": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "processor": { + "properties": { + "event": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "profile": { + "dynamic": "false", + "properties": { + "alloc_objects": { + "properties": { + "count": { + "type": "long" + } + } + }, + "alloc_space": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "cpu": { + "properties": { + "ns": { + "meta": { + "unit": "nanos" + }, + "type": "long" + } + } + }, + "duration": { + "meta": { + "unit": "nanos" + }, + "type": "long" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "inuse_objects": { + "properties": { + "count": { + "type": "long" + } + } + }, + "inuse_space": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "samples": { + "properties": { + "count": { + "type": "long" + } + } + }, + "stack": { + "dynamic": "false", + "properties": { + "filename": { + "ignore_above": 1024, + "type": "keyword" + }, + "function": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "line": { + "type": "long" + } + } + }, + "top": { + "dynamic": "false", + "properties": { + "filename": { + "ignore_above": 1024, + "type": "keyword" + }, + "function": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "line": { + "type": "long" + } + } + }, + "wall": { + "properties": { + "us": { + "meta": { + "unit": "micros" + }, + "type": "long" + } + } + } + } + }, + "registry": { + "properties": { + "data": { + "properties": { + "bytes": { + "ignore_above": 1024, + "type": "keyword" + }, + "strings": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hive": { + "ignore_above": 1024, + "type": "keyword" + }, + "key": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "value": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "related": { + "properties": { + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "hosts": { + "ignore_above": 1024, + "type": "keyword" + }, + "ip": { + "type": "ip" + }, + "user": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "rule": { + "properties": { + "author": { + "ignore_above": 1024, + "type": "keyword" + }, + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "license": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "ruleset": { + "ignore_above": 1024, + "type": "keyword" + }, + "uuid": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "server": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "service": { + "dynamic": "false", + "properties": { + "environment": { + "ignore_above": 1024, + "type": "keyword" + }, + "ephemeral_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "framework": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "language": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "node": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "origin": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "runtime": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "session": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "sequence": { + "type": "long" + } + } + }, + "source": { + "dynamic": "false", + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "sourcemap": { + "dynamic": "false", + "properties": { + "bundle_filepath": { + "ignore_above": 1024, + "type": "keyword" + }, + "service": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "span": { + "dynamic": "false", + "properties": { + "action": { + "ignore_above": 1024, + "type": "keyword" + }, + "composite": { + "dynamic": "false", + "properties": { + "compression_strategy": { + "ignore_above": 1024, + "type": "keyword" + }, + "count": { + "type": "long" + }, + "sum": { + "properties": { + "us": { + "type": "long" + } + } + } + } + }, + "db": { + "dynamic": "false", + "properties": { + "link": { + "ignore_above": 1024, + "type": "keyword" + }, + "rows_affected": { + "type": "long" + } + } + }, + "destination": { + "dynamic": "false", + "properties": { + "service": { + "dynamic": "false", + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "resource": { + "ignore_above": 1024, + "type": "keyword" + }, + "response_time": { + "properties": { + "count": { + "type": "long" + }, + "sum": { + "properties": { + "us": { + "meta": { + "unit": "micros" + }, + "type": "long" + } + } + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "duration": { + "properties": { + "us": { + "type": "long" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "message": { + "dynamic": "false", + "properties": { + "age": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "queue": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "self_time": { + "properties": { + "count": { + "type": "long" + }, + "sum": { + "properties": { + "us": { + "meta": { + "unit": "micros" + }, + "type": "long" + } + } + } + } + }, + "start": { + "properties": { + "us": { + "type": "long" + } + } + }, + "subtype": { + "ignore_above": 1024, + "type": "keyword" + }, + "sync": { + "type": "boolean" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "system": { + "properties": { + "cpu": { + "properties": { + "total": { + "properties": { + "norm": { + "properties": { + "pct": { + "meta": { + "metric_type": "gauge", + "unit": "percent" + }, + "scaling_factor": 1000, + "type": "scaled_float" + } + } + } + } + } + } + }, + "memory": { + "properties": { + "actual": { + "properties": { + "free": { + "meta": { + "metric_type": "gauge", + "unit": "byte" + }, + "type": "long" + } + } + }, + "total": { + "meta": { + "metric_type": "gauge", + "unit": "byte" + }, + "type": "long" + } + } + }, + "process": { + "properties": { + "cgroup": { + "properties": { + "cpu": { + "properties": { + "cfs": { + "properties": { + "period": { + "properties": { + "us": { + "meta": { + "metric_type": "gauge", + "unit": "micros" + }, + "type": "long" + } + } + }, + "quota": { + "properties": { + "us": { + "meta": { + "metric_type": "gauge", + "unit": "micros" + }, + "type": "long" + } + } + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "stats": { + "properties": { + "periods": { + "meta": { + "metric_type": "counter" + }, + "type": "long" + }, + "throttled": { + "properties": { + "ns": { + "meta": { + "metric_type": "counter", + "unit": "nanos" + }, + "type": "long" + }, + "periods": { + "meta": { + "metric_type": "counter" + }, + "type": "long" + } + } + } + } + } + } + }, + "cpuacct": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "total": { + "properties": { + "ns": { + "meta": { + "metric_type": "counter", + "unit": "nanos" + }, + "type": "long" + } + } + } + } + }, + "memory": { + "properties": { + "mem": { + "properties": { + "limit": { + "properties": { + "bytes": { + "meta": { + "metric_type": "gauge", + "unit": "byte" + }, + "type": "long" + } + } + }, + "usage": { + "properties": { + "bytes": { + "meta": { + "metric_type": "gauge", + "unit": "byte" + }, + "type": "long" + } + } + } + } + } + } + } + } + }, + "cpu": { + "properties": { + "total": { + "properties": { + "norm": { + "properties": { + "pct": { + "meta": { + "metric_type": "gauge", + "unit": "percent" + }, + "scaling_factor": 1000, + "type": "scaled_float" + } + } + } + } + } + } + }, + "memory": { + "properties": { + "rss": { + "properties": { + "bytes": { + "meta": { + "metric_type": "gauge", + "unit": "byte" + }, + "type": "long" + } + } + }, + "size": { + "meta": { + "metric_type": "gauge", + "unit": "byte" + }, + "type": "long" + } + } + } + } + } + } + }, + "tags": { + "ignore_above": 1024, + "type": "keyword" + }, + "threat": { + "properties": { + "enrichments": { + "properties": { + "indicator": { + "properties": { + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "confidence": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "file": { + "properties": { + "accessed": { + "type": "date" + }, + "attributes": { + "ignore_above": 1024, + "type": "keyword" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "created": { + "type": "date" + }, + "ctime": { + "type": "date" + }, + "device": { + "ignore_above": 1024, + "type": "keyword" + }, + "directory": { + "ignore_above": 1024, + "type": "keyword" + }, + "drive_letter": { + "ignore_above": 1, + "type": "keyword" + }, + "elf": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "byte_order": { + "ignore_above": 1024, + "type": "keyword" + }, + "cpu_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "creation_date": { + "type": "date" + }, + "exports": { + "type": "flattened" + }, + "header": { + "properties": { + "abi_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "ignore_above": 1024, + "type": "keyword" + }, + "entrypoint": { + "type": "long" + }, + "object_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "os_abi": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "imports": { + "type": "flattened" + }, + "sections": { + "properties": { + "chi2": { + "type": "long" + }, + "entropy": { + "type": "long" + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_offset": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_size": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "virtual_address": { + "type": "long" + }, + "virtual_size": { + "type": "long" + } + }, + "type": "nested" + }, + "segments": { + "properties": { + "sections": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + }, + "type": "nested" + }, + "shared_libraries": { + "ignore_above": 1024, + "type": "keyword" + }, + "telfhash": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "gid": { + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "ignore_above": 1024, + "type": "keyword" + }, + "inode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "mode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mtime": { + "type": "date" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "owner": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "size": { + "type": "long" + }, + "target_path": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "first_seen": { + "type": "date" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "last_seen": { + "type": "date" + }, + "marking": { + "properties": { + "tlp": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "modified_at": { + "type": "date" + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "port": { + "type": "long" + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "registry": { + "properties": { + "data": { + "properties": { + "bytes": { + "ignore_above": 1024, + "type": "keyword" + }, + "strings": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hive": { + "ignore_above": 1024, + "type": "keyword" + }, + "key": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "value": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "scanner_stats": { + "type": "long" + }, + "sightings": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "fragment": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "password": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "port": { + "type": "long" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "scheme": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "username": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "matched": { + "properties": { + "atomic": { + "ignore_above": 1024, + "type": "keyword" + }, + "field": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "index": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + }, + "type": "nested" + }, + "framework": { + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "alias": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "indicator": { + "properties": { + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "confidence": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "file": { + "properties": { + "accessed": { + "type": "date" + }, + "attributes": { + "ignore_above": 1024, + "type": "keyword" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "created": { + "type": "date" + }, + "ctime": { + "type": "date" + }, + "device": { + "ignore_above": 1024, + "type": "keyword" + }, + "directory": { + "ignore_above": 1024, + "type": "keyword" + }, + "drive_letter": { + "ignore_above": 1, + "type": "keyword" + }, + "elf": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "byte_order": { + "ignore_above": 1024, + "type": "keyword" + }, + "cpu_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "creation_date": { + "type": "date" + }, + "exports": { + "type": "flattened" + }, + "header": { + "properties": { + "abi_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "ignore_above": 1024, + "type": "keyword" + }, + "entrypoint": { + "type": "long" + }, + "object_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "os_abi": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "imports": { + "type": "flattened" + }, + "sections": { + "properties": { + "chi2": { + "type": "long" + }, + "entropy": { + "type": "long" + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_offset": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_size": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "virtual_address": { + "type": "long" + }, + "virtual_size": { + "type": "long" + } + }, + "type": "nested" + }, + "segments": { + "properties": { + "sections": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + }, + "type": "nested" + }, + "shared_libraries": { + "ignore_above": 1024, + "type": "keyword" + }, + "telfhash": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "gid": { + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "ignore_above": 1024, + "type": "keyword" + }, + "inode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "mode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mtime": { + "type": "date" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "owner": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "size": { + "type": "long" + }, + "target_path": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "first_seen": { + "type": "date" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "last_seen": { + "type": "date" + }, + "marking": { + "properties": { + "tlp": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "modified_at": { + "type": "date" + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "port": { + "type": "long" + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "registry": { + "properties": { + "data": { + "properties": { + "bytes": { + "ignore_above": 1024, + "type": "keyword" + }, + "strings": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hive": { + "ignore_above": 1024, + "type": "keyword" + }, + "key": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "value": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "scanner_stats": { + "type": "long" + }, + "sightings": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "fragment": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "password": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "port": { + "type": "long" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "scheme": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "username": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "software": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "platforms": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "tactic": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "technique": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "subtechnique": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + } + } + }, + "timeseries": { + "properties": { + "instance": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "timestamp": { + "properties": { + "us": { + "type": "long" + } + } + }, + "tls": { + "properties": { + "cipher": { + "ignore_above": 1024, + "type": "keyword" + }, + "client": { + "properties": { + "certificate": { + "ignore_above": 1024, + "type": "keyword" + }, + "certificate_chain": { + "ignore_above": 1024, + "type": "keyword" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "issuer": { + "ignore_above": 1024, + "type": "keyword" + }, + "ja3": { + "ignore_above": 1024, + "type": "keyword" + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "server_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "ignore_above": 1024, + "type": "keyword" + }, + "supported_ciphers": { + "ignore_above": 1024, + "type": "keyword" + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "established": { + "type": "boolean" + }, + "next_protocol": { + "ignore_above": 1024, + "type": "keyword" + }, + "resumed": { + "type": "boolean" + }, + "server": { + "properties": { + "certificate": { + "ignore_above": 1024, + "type": "keyword" + }, + "certificate_chain": { + "ignore_above": 1024, + "type": "keyword" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "issuer": { + "ignore_above": 1024, + "type": "keyword" + }, + "ja3s": { + "ignore_above": 1024, + "type": "keyword" + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "subject": { + "ignore_above": 1024, + "type": "keyword" + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + }, + "version_protocol": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "trace": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "transaction": { + "dynamic": "false", + "properties": { + "breakdown": { + "properties": { + "count": { + "type": "long" + } + } + }, + "duration": { + "properties": { + "histogram": { + "type": "histogram" + }, + "us": { + "type": "long" + } + } + }, + "experience": { + "properties": { + "cls": { + "scaling_factor": 1000000, + "type": "scaled_float" + }, + "fid": { + "scaling_factor": 1000000, + "type": "scaled_float" + }, + "longtask": { + "properties": { + "count": { + "type": "long" + }, + "max": { + "scaling_factor": 1000000, + "type": "scaled_float" + }, + "sum": { + "scaling_factor": 1000000, + "type": "scaled_float" + } + } + }, + "tbt": { + "scaling_factor": 1000000, + "type": "scaled_float" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "marks": { + "dynamic": "true", + "properties": { + "*": { + "properties": { + "*": { + "dynamic": "true", + "type": "object" + } + } + } + } + }, + "message": { + "dynamic": "false", + "properties": { + "age": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "queue": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "result": { + "ignore_above": 1024, + "type": "keyword" + }, + "root": { + "type": "boolean" + }, + "sampled": { + "type": "boolean" + }, + "self_time": { + "properties": { + "count": { + "type": "long" + }, + "sum": { + "properties": { + "us": { + "meta": { + "unit": "micros" + }, + "type": "long" + } + } + } + } + }, + "span_count": { + "properties": { + "dropped": { + "type": "long" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "url": { + "dynamic": "false", + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "fragment": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "password": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "port": { + "type": "long" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "scheme": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "username": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "user": { + "dynamic": "false", + "properties": { + "changes": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "effective": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + }, + "target": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "user_agent": { + "dynamic": "false", + "properties": { + "device": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "vulnerability": { + "properties": { + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "classification": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "enumeration": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "report_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "scanner": { + "properties": { + "vendor": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "score": { + "properties": { + "base": { + "type": "float" + }, + "environmental": { + "type": "float" + }, + "temporal": { + "type": "float" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "severity": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "settings": { + "index": { + "codec": "best_compression", + "lifecycle": { + "name": "apm-rollover-30-days", + "rollover_alias": "apm-8.0.0-span" + }, + "mapping": { + "total_fields": { + "limit": "2000" + } + }, + "max_docvalue_fields_search": "200", + "number_of_replicas": "0", + "number_of_shards": "1", + "priority": "100", + "refresh_interval": "1ms" + } + } + } +} + +{ + "type": "index", + "value": { + "aliases": { + "apm-8.0.0-transaction": { + "is_write_index": true + } + }, + "index": "apm-8.0.0-transaction-000001", + "mappings": { + "_meta": { + "beat": "apm", + "version": "8.0.0" + }, + "date_detection": false, + "dynamic_templates": [ + { + "labels": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "labels.*" + } + }, + { + "container.labels": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "container.labels.*" + } + }, + { + "fields": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "fields.*" + } + }, + { + "docker.container.labels": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "docker.container.labels.*" + } + }, + { + "kubernetes.labels.*": { + "mapping": { + "type": "keyword" + }, + "path_match": "kubernetes.labels.*" + } + }, + { + "kubernetes.annotations.*": { + "mapping": { + "type": "keyword" + }, + "path_match": "kubernetes.annotations.*" + } + }, + { + "kubernetes.selectors.*": { + "mapping": { + "type": "keyword" + }, + "path_match": "kubernetes.selectors.*" + } + }, + { + "labels_string": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "labels.*" + } + }, + { + "labels_boolean": { + "mapping": { + "type": "boolean" + }, + "match_mapping_type": "boolean", + "path_match": "labels.*" + } + }, + { + "labels_*": { + "mapping": { + "scaling_factor": 1000000, + "type": "scaled_float" + }, + "path_match": "labels.*" + } + }, + { + "histogram": { + "mapping": { + "type": "histogram" + } + } + }, + { + "transaction.marks": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "transaction.marks.*" + } + }, + { + "transaction.marks.*.*": { + "mapping": { + "scaling_factor": 1000000, + "type": "scaled_float" + }, + "path_match": "transaction.marks.*.*" + } + }, + { + "strings_as_keyword": { + "mapping": { + "ignore_above": 1024, + "type": "keyword" + }, + "match_mapping_type": "string" + } + } + ], + "properties": { + "@timestamp": { + "type": "date" + }, + "agent": { + "dynamic": "false", + "properties": { + "build": { + "properties": { + "original": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ephemeral_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "hostname": { + "path": "agent.name", + "type": "alias" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "child": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "client": { + "dynamic": "false", + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "cloud": { + "properties": { + "account": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "availability_zone": { + "ignore_above": 1024, + "type": "keyword" + }, + "image": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "instance": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "machine": { + "dynamic": "false", + "properties": { + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "origin": { + "dynamic": "false", + "properties": { + "account": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "region": { + "ignore_above": 1024, + "type": "keyword" + }, + "service": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "project": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "region": { + "ignore_above": 1024, + "type": "keyword" + }, + "service": { + "dynamic": "false", + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "container": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "image": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "tag": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "labels": { + "type": "object" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "runtime": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "data_stream": { + "properties": { + "dataset": { + "type": "constant_keyword" + }, + "namespace": { + "type": "constant_keyword" + }, + "type": { + "type": "constant_keyword" + } + } + }, + "destination": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "dll": { + "properties": { + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "dns": { + "properties": { + "answers": { + "properties": { + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "ttl": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "header_flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "op_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "question": { + "properties": { + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "resolved_ip": { + "type": "ip" + }, + "response_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "docker": { + "properties": { + "container": { + "properties": { + "labels": { + "type": "object" + } + } + } + } + }, + "ecs": { + "properties": { + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "elf": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "byte_order": { + "ignore_above": 1024, + "type": "keyword" + }, + "cpu_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "creation_date": { + "type": "date" + }, + "exports": { + "type": "flattened" + }, + "header": { + "properties": { + "abi_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "ignore_above": 1024, + "type": "keyword" + }, + "entrypoint": { + "type": "long" + }, + "object_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "os_abi": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "imports": { + "type": "flattened" + }, + "sections": { + "properties": { + "chi2": { + "type": "long" + }, + "entropy": { + "type": "long" + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_offset": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_size": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "virtual_address": { + "type": "long" + }, + "virtual_size": { + "type": "long" + } + }, + "type": "nested" + }, + "segments": { + "properties": { + "sections": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + }, + "type": "nested" + }, + "shared_libraries": { + "ignore_above": 1024, + "type": "keyword" + }, + "telfhash": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "error": { + "dynamic": "false", + "properties": { + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "culprit": { + "ignore_above": 1024, + "type": "keyword" + }, + "exception": { + "properties": { + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "handled": { + "type": "boolean" + }, + "message": { + "norms": false, + "type": "text" + }, + "module": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "grouping_key": { + "ignore_above": 1024, + "type": "keyword" + }, + "grouping_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "log": { + "properties": { + "level": { + "ignore_above": 1024, + "type": "keyword" + }, + "logger_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "message": { + "norms": false, + "type": "text" + }, + "param_message": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "message": { + "norms": false, + "type": "text" + }, + "stack_trace": { + "doc_values": false, + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "index": false, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "event": { + "properties": { + "action": { + "ignore_above": 1024, + "type": "keyword" + }, + "agent_id_status": { + "ignore_above": 1024, + "type": "keyword" + }, + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "created": { + "type": "date" + }, + "dataset": { + "ignore_above": 1024, + "type": "keyword" + }, + "duration": { + "type": "long" + }, + "end": { + "type": "date" + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "ingested": { + "type": "date" + }, + "kind": { + "ignore_above": 1024, + "type": "keyword" + }, + "module": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "doc_values": false, + "ignore_above": 1024, + "index": false, + "type": "keyword" + }, + "outcome": { + "ignore_above": 1024, + "type": "keyword" + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "reason": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "risk_score": { + "type": "float" + }, + "risk_score_norm": { + "type": "float" + }, + "sequence": { + "type": "long" + }, + "severity": { + "type": "long" + }, + "start": { + "type": "date" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "faas": { + "dynamic": "false", + "properties": { + "coldstart": { + "type": "boolean" + }, + "execution": { + "ignore_above": 1024, + "type": "keyword" + }, + "trigger": { + "properties": { + "request_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "fields": { + "type": "object" + }, + "file": { + "properties": { + "accessed": { + "type": "date" + }, + "attributes": { + "ignore_above": 1024, + "type": "keyword" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "created": { + "type": "date" + }, + "ctime": { + "type": "date" + }, + "device": { + "ignore_above": 1024, + "type": "keyword" + }, + "directory": { + "ignore_above": 1024, + "type": "keyword" + }, + "drive_letter": { + "ignore_above": 1, + "type": "keyword" + }, + "elf": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "byte_order": { + "ignore_above": 1024, + "type": "keyword" + }, + "cpu_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "creation_date": { + "type": "date" + }, + "exports": { + "type": "flattened" + }, + "header": { + "properties": { + "abi_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "ignore_above": 1024, + "type": "keyword" + }, + "entrypoint": { + "type": "long" + }, + "object_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "os_abi": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "imports": { + "type": "flattened" + }, + "sections": { + "properties": { + "chi2": { + "type": "long" + }, + "entropy": { + "type": "long" + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_offset": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_size": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "virtual_address": { + "type": "long" + }, + "virtual_size": { + "type": "long" + } + }, + "type": "nested" + }, + "segments": { + "properties": { + "sections": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + }, + "type": "nested" + }, + "shared_libraries": { + "ignore_above": 1024, + "type": "keyword" + }, + "telfhash": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "gid": { + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "ignore_above": 1024, + "type": "keyword" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "inode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "mode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mtime": { + "type": "date" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "owner": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "size": { + "type": "long" + }, + "target_path": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "host": { + "dynamic": "false", + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "containerized": { + "type": "boolean" + }, + "cpu": { + "properties": { + "usage": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "disk": { + "properties": { + "read": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "write": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "network": { + "properties": { + "egress": { + "properties": { + "bytes": { + "type": "long" + }, + "packets": { + "type": "long" + } + } + }, + "ingress": { + "properties": { + "bytes": { + "type": "long" + }, + "packets": { + "type": "long" + } + } + } + } + }, + "os": { + "properties": { + "build": { + "ignore_above": 1024, + "type": "keyword" + }, + "codename": { + "ignore_above": 1024, + "type": "keyword" + }, + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "uptime": { + "type": "long" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "http": { + "dynamic": "false", + "properties": { + "request": { + "properties": { + "body": { + "properties": { + "bytes": { + "type": "long" + }, + "content": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "bytes": { + "type": "long" + }, + "headers": { + "enabled": false, + "type": "object" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "method": { + "ignore_above": 1024, + "type": "keyword" + }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "referrer": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "response": { + "properties": { + "body": { + "properties": { + "bytes": { + "type": "long" + }, + "content": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "bytes": { + "type": "long" + }, + "finished": { + "type": "boolean" + }, + "headers": { + "enabled": false, + "type": "object" + }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "status_code": { + "type": "long" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "interface": { + "properties": { + "alias": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "kubernetes": { + "dynamic": "false", + "properties": { + "annotations": { + "properties": { + "*": { + "type": "object" + } + } + }, + "container": { + "properties": { + "image": { + "path": "container.image.name", + "type": "alias" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "deployment": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "labels": { + "properties": { + "*": { + "type": "object" + } + } + }, + "namespace": { + "ignore_above": 1024, + "type": "keyword" + }, + "node": { + "properties": { + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pod": { + "properties": { + "ip": { + "type": "ip" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "replicaset": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "selectors": { + "properties": { + "*": { + "type": "object" + } + } + }, + "statefulset": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "labels": { + "dynamic": "true", + "type": "object" + }, + "log": { + "properties": { + "file": { + "properties": { + "path": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "level": { + "ignore_above": 1024, + "type": "keyword" + }, + "logger": { + "ignore_above": 1024, + "type": "keyword" + }, + "origin": { + "properties": { + "file": { + "properties": { + "line": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "function": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "original": { + "doc_values": false, + "ignore_above": 1024, + "index": false, + "type": "keyword" + }, + "syslog": { + "properties": { + "facility": { + "properties": { + "code": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "priority": { + "type": "long" + }, + "severity": { + "properties": { + "code": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + } + } + }, + "message": { + "norms": false, + "type": "text" + }, + "metricset": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "period": { + "meta": { + "unit": "ms" + }, + "type": "long" + } + } + }, + "network": { + "dynamic": "false", + "properties": { + "application": { + "ignore_above": 1024, + "type": "keyword" + }, + "bytes": { + "type": "long" + }, + "carrier": { + "properties": { + "icc": { + "ignore_above": 1024, + "type": "keyword" + }, + "mcc": { + "ignore_above": 1024, + "type": "keyword" + }, + "mnc": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "community_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "connection": { + "properties": { + "subtype": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "direction": { + "ignore_above": 1024, + "type": "keyword" + }, + "forwarded_ip": { + "type": "ip" + }, + "iana_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "inner": { + "properties": { + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "packets": { + "type": "long" + }, + "protocol": { + "ignore_above": 1024, + "type": "keyword" + }, + "transport": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "observer": { + "dynamic": "false", + "properties": { + "egress": { + "properties": { + "interface": { + "properties": { + "alias": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "zone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ephemeral_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "ingress": { + "properties": { + "interface": { + "properties": { + "alias": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "zone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "listening": { + "ignore_above": 1024, + "type": "keyword" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "vendor": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + }, + "version_major": { + "type": "byte" + } + } + }, + "orchestrator": { + "properties": { + "api_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "cluster": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "namespace": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "resource": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "organization": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "package": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "build_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "checksum": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "install_scope": { + "ignore_above": 1024, + "type": "keyword" + }, + "installed": { + "type": "date" + }, + "license": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "size": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "parent": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "process": { + "dynamic": "false", + "properties": { + "args": { + "ignore_above": 1024, + "type": "keyword" + }, + "args_count": { + "type": "long" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "command_line": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "elf": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "byte_order": { + "ignore_above": 1024, + "type": "keyword" + }, + "cpu_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "creation_date": { + "type": "date" + }, + "exports": { + "type": "flattened" + }, + "header": { + "properties": { + "abi_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "ignore_above": 1024, + "type": "keyword" + }, + "entrypoint": { + "type": "long" + }, + "object_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "os_abi": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "imports": { + "type": "flattened" + }, + "sections": { + "properties": { + "chi2": { + "type": "long" + }, + "entropy": { + "type": "long" + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_offset": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_size": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "virtual_address": { + "type": "long" + }, + "virtual_size": { + "type": "long" + } + }, + "type": "nested" + }, + "segments": { + "properties": { + "sections": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + }, + "type": "nested" + }, + "shared_libraries": { + "ignore_above": 1024, + "type": "keyword" + }, + "telfhash": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "entity_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "executable": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "exit_code": { + "type": "long" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "owner": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "parent": { + "properties": { + "args": { + "ignore_above": 1024, + "type": "keyword" + }, + "args_count": { + "type": "long" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "command_line": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "elf": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "byte_order": { + "ignore_above": 1024, + "type": "keyword" + }, + "cpu_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "creation_date": { + "type": "date" + }, + "exports": { + "type": "flattened" + }, + "header": { + "properties": { + "abi_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "ignore_above": 1024, + "type": "keyword" + }, + "entrypoint": { + "type": "long" + }, + "object_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "os_abi": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "imports": { + "type": "flattened" + }, + "sections": { + "properties": { + "chi2": { + "type": "long" + }, + "entropy": { + "type": "long" + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_offset": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_size": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "virtual_address": { + "type": "long" + }, + "virtual_size": { + "type": "long" + } + }, + "type": "nested" + }, + "segments": { + "properties": { + "sections": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + }, + "type": "nested" + }, + "shared_libraries": { + "ignore_above": 1024, + "type": "keyword" + }, + "telfhash": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "entity_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "executable": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "exit_code": { + "type": "long" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pgid": { + "type": "long" + }, + "pid": { + "type": "long" + }, + "ppid": { + "type": "long" + }, + "start": { + "type": "date" + }, + "thread": { + "properties": { + "id": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "title": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "uptime": { + "type": "long" + }, + "working_directory": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pgid": { + "type": "long" + }, + "pid": { + "type": "long" + }, + "ppid": { + "type": "long" + }, + "start": { + "type": "date" + }, + "thread": { + "properties": { + "id": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "title": { + "ignore_above": 1024, + "type": "keyword" + }, + "uptime": { + "type": "long" + }, + "working_directory": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "processor": { + "properties": { + "event": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "profile": { + "dynamic": "false", + "properties": { + "alloc_objects": { + "properties": { + "count": { + "type": "long" + } + } + }, + "alloc_space": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "cpu": { + "properties": { + "ns": { + "meta": { + "unit": "nanos" + }, + "type": "long" + } + } + }, + "duration": { + "meta": { + "unit": "nanos" + }, + "type": "long" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "inuse_objects": { + "properties": { + "count": { + "type": "long" + } + } + }, + "inuse_space": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "samples": { + "properties": { + "count": { + "type": "long" + } + } + }, + "stack": { + "dynamic": "false", + "properties": { + "filename": { + "ignore_above": 1024, + "type": "keyword" + }, + "function": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "line": { + "type": "long" + } + } + }, + "top": { + "dynamic": "false", + "properties": { + "filename": { + "ignore_above": 1024, + "type": "keyword" + }, + "function": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "line": { + "type": "long" + } + } + }, + "wall": { + "properties": { + "us": { + "meta": { + "unit": "micros" + }, + "type": "long" + } + } + } + } + }, + "registry": { + "properties": { + "data": { + "properties": { + "bytes": { + "ignore_above": 1024, + "type": "keyword" + }, + "strings": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hive": { + "ignore_above": 1024, + "type": "keyword" + }, + "key": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "value": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "related": { + "properties": { + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "hosts": { + "ignore_above": 1024, + "type": "keyword" + }, + "ip": { + "type": "ip" + }, + "user": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "rule": { + "properties": { + "author": { + "ignore_above": 1024, + "type": "keyword" + }, + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "license": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "ruleset": { + "ignore_above": 1024, + "type": "keyword" + }, + "uuid": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "server": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "service": { + "dynamic": "false", + "properties": { + "environment": { + "ignore_above": 1024, + "type": "keyword" + }, + "ephemeral_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "framework": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "language": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "node": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "origin": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "runtime": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "session": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "sequence": { + "type": "long" + } + } + }, + "source": { + "dynamic": "false", + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "sourcemap": { + "dynamic": "false", + "properties": { + "bundle_filepath": { + "ignore_above": 1024, + "type": "keyword" + }, + "service": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "span": { + "dynamic": "false", + "properties": { + "action": { + "ignore_above": 1024, + "type": "keyword" + }, + "composite": { + "dynamic": "false", + "properties": { + "compression_strategy": { + "ignore_above": 1024, + "type": "keyword" + }, + "count": { + "type": "long" + }, + "sum": { + "properties": { + "us": { + "type": "long" + } + } + } + } + }, + "db": { + "dynamic": "false", + "properties": { + "link": { + "ignore_above": 1024, + "type": "keyword" + }, + "rows_affected": { + "type": "long" + } + } + }, + "destination": { + "dynamic": "false", + "properties": { + "service": { + "dynamic": "false", + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "resource": { + "ignore_above": 1024, + "type": "keyword" + }, + "response_time": { + "properties": { + "count": { + "type": "long" + }, + "sum": { + "properties": { + "us": { + "meta": { + "unit": "micros" + }, + "type": "long" + } + } + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "duration": { + "properties": { + "us": { + "type": "long" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "message": { + "dynamic": "false", + "properties": { + "age": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "queue": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "self_time": { + "properties": { + "count": { + "type": "long" + }, + "sum": { + "properties": { + "us": { + "meta": { + "unit": "micros" + }, + "type": "long" + } + } + } + } + }, + "start": { + "properties": { + "us": { + "type": "long" + } + } + }, + "subtype": { + "ignore_above": 1024, + "type": "keyword" + }, + "sync": { + "type": "boolean" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "system": { + "properties": { + "cpu": { + "properties": { + "total": { + "properties": { + "norm": { + "properties": { + "pct": { + "meta": { + "metric_type": "gauge", + "unit": "percent" + }, + "scaling_factor": 1000, + "type": "scaled_float" + } + } + } + } + } + } + }, + "memory": { + "properties": { + "actual": { + "properties": { + "free": { + "meta": { + "metric_type": "gauge", + "unit": "byte" + }, + "type": "long" + } + } + }, + "total": { + "meta": { + "metric_type": "gauge", + "unit": "byte" + }, + "type": "long" + } + } + }, + "process": { + "properties": { + "cgroup": { + "properties": { + "cpu": { + "properties": { + "cfs": { + "properties": { + "period": { + "properties": { + "us": { + "meta": { + "metric_type": "gauge", + "unit": "micros" + }, + "type": "long" + } + } + }, + "quota": { + "properties": { + "us": { + "meta": { + "metric_type": "gauge", + "unit": "micros" + }, + "type": "long" + } + } + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "stats": { + "properties": { + "periods": { + "meta": { + "metric_type": "counter" + }, + "type": "long" + }, + "throttled": { + "properties": { + "ns": { + "meta": { + "metric_type": "counter", + "unit": "nanos" + }, + "type": "long" + }, + "periods": { + "meta": { + "metric_type": "counter" + }, + "type": "long" + } + } + } + } + } + } + }, + "cpuacct": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "total": { + "properties": { + "ns": { + "meta": { + "metric_type": "counter", + "unit": "nanos" + }, + "type": "long" + } + } + } + } + }, + "memory": { + "properties": { + "mem": { + "properties": { + "limit": { + "properties": { + "bytes": { + "meta": { + "metric_type": "gauge", + "unit": "byte" + }, + "type": "long" + } + } + }, + "usage": { + "properties": { + "bytes": { + "meta": { + "metric_type": "gauge", + "unit": "byte" + }, + "type": "long" + } + } + } + } + } + } + } + } + }, + "cpu": { + "properties": { + "total": { + "properties": { + "norm": { + "properties": { + "pct": { + "meta": { + "metric_type": "gauge", + "unit": "percent" + }, + "scaling_factor": 1000, + "type": "scaled_float" + } + } + } + } + } + } + }, + "memory": { + "properties": { + "rss": { + "properties": { + "bytes": { + "meta": { + "metric_type": "gauge", + "unit": "byte" + }, + "type": "long" + } + } + }, + "size": { + "meta": { + "metric_type": "gauge", + "unit": "byte" + }, + "type": "long" + } + } + } + } + } + } + }, + "tags": { + "ignore_above": 1024, + "type": "keyword" + }, + "threat": { + "properties": { + "enrichments": { + "properties": { + "indicator": { + "properties": { + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "confidence": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "file": { + "properties": { + "accessed": { + "type": "date" + }, + "attributes": { + "ignore_above": 1024, + "type": "keyword" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "created": { + "type": "date" + }, + "ctime": { + "type": "date" + }, + "device": { + "ignore_above": 1024, + "type": "keyword" + }, + "directory": { + "ignore_above": 1024, + "type": "keyword" + }, + "drive_letter": { + "ignore_above": 1, + "type": "keyword" + }, + "elf": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "byte_order": { + "ignore_above": 1024, + "type": "keyword" + }, + "cpu_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "creation_date": { + "type": "date" + }, + "exports": { + "type": "flattened" + }, + "header": { + "properties": { + "abi_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "ignore_above": 1024, + "type": "keyword" + }, + "entrypoint": { + "type": "long" + }, + "object_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "os_abi": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "imports": { + "type": "flattened" + }, + "sections": { + "properties": { + "chi2": { + "type": "long" + }, + "entropy": { + "type": "long" + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_offset": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_size": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "virtual_address": { + "type": "long" + }, + "virtual_size": { + "type": "long" + } + }, + "type": "nested" + }, + "segments": { + "properties": { + "sections": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + }, + "type": "nested" + }, + "shared_libraries": { + "ignore_above": 1024, + "type": "keyword" + }, + "telfhash": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "gid": { + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "ignore_above": 1024, + "type": "keyword" + }, + "inode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "mode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mtime": { + "type": "date" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "owner": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "size": { + "type": "long" + }, + "target_path": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "first_seen": { + "type": "date" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "last_seen": { + "type": "date" + }, + "marking": { + "properties": { + "tlp": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "modified_at": { + "type": "date" + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "port": { + "type": "long" + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "registry": { + "properties": { + "data": { + "properties": { + "bytes": { + "ignore_above": 1024, + "type": "keyword" + }, + "strings": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hive": { + "ignore_above": 1024, + "type": "keyword" + }, + "key": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "value": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "scanner_stats": { + "type": "long" + }, + "sightings": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "fragment": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "password": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "port": { + "type": "long" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "scheme": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "username": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "matched": { + "properties": { + "atomic": { + "ignore_above": 1024, + "type": "keyword" + }, + "field": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "index": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + }, + "type": "nested" + }, + "framework": { + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "alias": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "indicator": { + "properties": { + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "confidence": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "file": { + "properties": { + "accessed": { + "type": "date" + }, + "attributes": { + "ignore_above": 1024, + "type": "keyword" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "signing_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "team_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "created": { + "type": "date" + }, + "ctime": { + "type": "date" + }, + "device": { + "ignore_above": 1024, + "type": "keyword" + }, + "directory": { + "ignore_above": 1024, + "type": "keyword" + }, + "drive_letter": { + "ignore_above": 1, + "type": "keyword" + }, + "elf": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "byte_order": { + "ignore_above": 1024, + "type": "keyword" + }, + "cpu_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "creation_date": { + "type": "date" + }, + "exports": { + "type": "flattened" + }, + "header": { + "properties": { + "abi_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "ignore_above": 1024, + "type": "keyword" + }, + "entrypoint": { + "type": "long" + }, + "object_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "os_abi": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "imports": { + "type": "flattened" + }, + "sections": { + "properties": { + "chi2": { + "type": "long" + }, + "entropy": { + "type": "long" + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_offset": { + "ignore_above": 1024, + "type": "keyword" + }, + "physical_size": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "virtual_address": { + "type": "long" + }, + "virtual_size": { + "type": "long" + } + }, + "type": "nested" + }, + "segments": { + "properties": { + "sections": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + }, + "type": "nested" + }, + "shared_libraries": { + "ignore_above": 1024, + "type": "keyword" + }, + "telfhash": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "gid": { + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "ignore_above": 1024, + "type": "keyword" + }, + "inode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "mode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mtime": { + "type": "date" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "owner": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "size": { + "type": "long" + }, + "target_path": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "first_seen": { + "type": "date" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "postal_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + }, + "ssdeep": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "last_seen": { + "type": "date" + }, + "marking": { + "properties": { + "tlp": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "modified_at": { + "type": "date" + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "port": { + "type": "long" + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "registry": { + "properties": { + "data": { + "properties": { + "bytes": { + "ignore_above": 1024, + "type": "keyword" + }, + "strings": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hive": { + "ignore_above": 1024, + "type": "keyword" + }, + "key": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "value": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "scanner_stats": { + "type": "long" + }, + "sightings": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "fragment": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "password": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "port": { + "type": "long" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "scheme": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "username": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "software": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "platforms": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "tactic": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "technique": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "subtechnique": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + } + } + }, + "timeseries": { + "properties": { + "instance": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "timestamp": { + "properties": { + "us": { + "type": "long" + } + } + }, + "tls": { + "properties": { + "cipher": { + "ignore_above": 1024, + "type": "keyword" + }, + "client": { + "properties": { + "certificate": { + "ignore_above": 1024, + "type": "keyword" + }, + "certificate_chain": { + "ignore_above": 1024, + "type": "keyword" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "issuer": { + "ignore_above": 1024, + "type": "keyword" + }, + "ja3": { + "ignore_above": 1024, + "type": "keyword" + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "server_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "ignore_above": 1024, + "type": "keyword" + }, + "supported_ciphers": { + "ignore_above": 1024, + "type": "keyword" + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "established": { + "type": "boolean" + }, + "next_protocol": { + "ignore_above": 1024, + "type": "keyword" + }, + "resumed": { + "type": "boolean" + }, + "server": { + "properties": { + "certificate": { + "ignore_above": 1024, + "type": "keyword" + }, + "certificate_chain": { + "ignore_above": 1024, + "type": "keyword" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "issuer": { + "ignore_above": 1024, + "type": "keyword" + }, + "ja3s": { + "ignore_above": 1024, + "type": "keyword" + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "subject": { + "ignore_above": 1024, + "type": "keyword" + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + }, + "version_protocol": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "trace": { + "dynamic": "false", + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "transaction": { + "dynamic": "false", + "properties": { + "breakdown": { + "properties": { + "count": { + "type": "long" + } + } + }, + "duration": { + "properties": { + "histogram": { + "type": "histogram" + }, + "us": { + "type": "long" + } + } + }, + "experience": { + "properties": { + "cls": { + "scaling_factor": 1000000, + "type": "scaled_float" + }, + "fid": { + "scaling_factor": 1000000, + "type": "scaled_float" + }, + "longtask": { + "properties": { + "count": { + "type": "long" + }, + "max": { + "scaling_factor": 1000000, + "type": "scaled_float" + }, + "sum": { + "scaling_factor": 1000000, + "type": "scaled_float" + } + } + }, + "tbt": { + "scaling_factor": 1000000, + "type": "scaled_float" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "marks": { + "dynamic": "true", + "properties": { + "*": { + "properties": { + "*": { + "dynamic": "true", + "type": "object" + } + } + } + } + }, + "message": { + "dynamic": "false", + "properties": { + "age": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "queue": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "result": { + "ignore_above": 1024, + "type": "keyword" + }, + "root": { + "type": "boolean" + }, + "sampled": { + "type": "boolean" + }, + "self_time": { + "properties": { + "count": { + "type": "long" + }, + "sum": { + "properties": { + "us": { + "meta": { + "unit": "micros" + }, + "type": "long" + } + } + } + } + }, + "span_count": { + "properties": { + "dropped": { + "type": "long" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "url": { + "dynamic": "false", + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "fragment": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "password": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "port": { + "type": "long" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "scheme": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "username": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "user": { + "dynamic": "false", + "properties": { + "changes": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "effective": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + }, + "target": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "user_agent": { + "dynamic": "false", + "properties": { + "device": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "vulnerability": { + "properties": { + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "classification": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "enumeration": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "report_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "scanner": { + "properties": { + "vendor": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "score": { + "properties": { + "base": { + "type": "float" + }, + "environmental": { + "type": "float" + }, + "temporal": { + "type": "float" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "severity": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "settings": { + "index": { + "codec": "best_compression", + "lifecycle": { + "name": "apm-rollover-30-days", + "rollover_alias": "apm-8.0.0-transaction" + }, + "mapping": { + "total_fields": { + "limit": "2000" + } + }, + "max_docvalue_fields_search": "200", + "number_of_replicas": "0", + "number_of_shards": "1", + "priority": "100", + "refresh_interval": "1ms" + } + } + } +} \ No newline at end of file diff --git a/x-pack/test/apm_api_integration/common/fixtures/es_archiver/archives_metadata.ts b/x-pack/test/apm_api_integration/common/fixtures/es_archiver/archives_metadata.ts index 3382f0f8ee460..f2c41a0c2f084 100644 --- a/x-pack/test/apm_api_integration/common/fixtures/es_archiver/archives_metadata.ts +++ b/x-pack/test/apm_api_integration/common/fixtures/es_archiver/archives_metadata.ts @@ -5,10 +5,13 @@ * 2.0. */ -/* eslint-disable-next-line*/ - export default { +export default { 'apm_8.0.0': { start: '2021-08-03T06:50:15.910Z', end: '2021-08-03T07:20:15.910Z', }, + 'apm_data_generation_8.0.0': { + start: '2021-10-05T13:21:00.000Z', + end: '2021-10-05T13:36:59.999Z', + }, }; diff --git a/x-pack/test/apm_api_integration/common/registry.ts b/x-pack/test/apm_api_integration/common/registry.ts index 0f0af0bda6ab8..e22742b0fd7bb 100644 --- a/x-pack/test/apm_api_integration/common/registry.ts +++ b/x-pack/test/apm_api_integration/common/registry.ts @@ -20,7 +20,8 @@ type ArchiveName = | 'ml_8.0.0' | 'observability_overview' | 'rum_8.0.0' - | 'rum_test_data'; + | 'rum_test_data' + | 'apm_data_generation_8.0.0'; interface RunCondition { config: APMFtrConfigName; diff --git a/x-pack/test/apm_api_integration/tests/index.ts b/x-pack/test/apm_api_integration/tests/index.ts index c8a57bc613a92..504f1cac2f162 100644 --- a/x-pack/test/apm_api_integration/tests/index.ts +++ b/x-pack/test/apm_api_integration/tests/index.ts @@ -108,6 +108,10 @@ export default function apmApiIntegrationTests(providerContext: FtrProviderConte loadTestFile(require.resolve('./services/throughput')); }); + describe('throughput', function () { + loadTestFile(require.resolve('./throughput')); + }); + describe('services/top_services', function () { loadTestFile(require.resolve('./services/top_services')); }); diff --git a/x-pack/test/apm_api_integration/tests/services/throughput.ts b/x-pack/test/apm_api_integration/tests/services/throughput.ts index d7e54ca15b919..b688678269f8a 100644 --- a/x-pack/test/apm_api_integration/tests/services/throughput.ts +++ b/x-pack/test/apm_api_integration/tests/services/throughput.ts @@ -6,21 +6,21 @@ */ import expect from '@kbn/expect'; -import { first, last, mean } from 'lodash'; +import { first, last, mean, meanBy } from 'lodash'; import moment from 'moment'; import { isFiniteNumber } from '../../../../plugins/apm/common/utils/is_finite_number'; import { APIReturnType } from '../../../../plugins/apm/public/services/rest/createCallApmApi'; +import { createApmApiSupertest } from '../../common/apm_api_supertest'; import archives_metadata from '../../common/fixtures/es_archiver/archives_metadata'; import { FtrProviderContext } from '../../common/ftr_provider_context'; import { registry } from '../../common/registry'; -import { createApmApiSupertest } from '../../common/apm_api_supertest'; type ThroughputReturn = APIReturnType<'GET /api/apm/services/{serviceName}/throughput'>; export default function ApiTest({ getService }: FtrProviderContext) { const apmApiSupertest = createApmApiSupertest(getService('supertest')); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_data_generation_8.0.0'; const metadata = archives_metadata[archiveName]; registry.when('Throughput when data is not loaded', { config: 'basic', archives: [] }, () => { @@ -29,7 +29,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { endpoint: 'GET /api/apm/services/{serviceName}/throughput', params: { path: { - serviceName: 'opbeans-java', + serviceName: 'opbeans-go', }, query: { start: metadata.start, @@ -47,108 +47,95 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); }); - let throughputResponse: ThroughputReturn; + async function callThroughApis() { + const path = { + serviceName: 'opbeans-go', + }; + const commonQuery = { + start: metadata.start, + end: metadata.end, + transactionType: 'request', + environment: 'ENVIRONMENT_ALL', + }; + const [throughputMetricsResponse, throughputTransactionsResponse] = await Promise.all([ + apmApiSupertest({ + endpoint: 'GET /api/apm/services/{serviceName}/throughput', + params: { + path, + query: { + ...commonQuery, + kuery: 'processor.event : "metric"', + }, + }, + }), + apmApiSupertest({ + endpoint: 'GET /api/apm/services/{serviceName}/throughput', + params: { + path, + query: { + ...commonQuery, + kuery: 'processor.event : "transaction"', + _inspect: true, + }, + }, + }), + ]); + return { + throughputMetrics: throughputMetricsResponse.body, + throughputTransactions: throughputTransactionsResponse.body, + }; + } + registry.when( 'Throughput when data is loaded', { config: 'basic', archives: [archiveName] }, () => { - describe('with kql filter to force metrics-based UI', () => { + let throughputMetrics: ThroughputReturn; + let throughputTransactions: ThroughputReturn; + + describe('compare metrics and transactions values', () => { before(async () => { - const response = await apmApiSupertest({ - endpoint: 'GET /api/apm/services/{serviceName}/throughput', - params: { - path: { - serviceName: 'opbeans-java', - }, - query: { - start: metadata.start, - end: metadata.end, - transactionType: 'request', - environment: 'ENVIRONMENT_ALL', - kuery: 'processor.event : "metric"', - }, - }, - }); - throughputResponse = response.body; + const throughputApiResponse = await callThroughApis(); + throughputMetrics = throughputApiResponse.throughputMetrics; + throughputTransactions = throughputApiResponse.throughputTransactions; }); - it('returns some data', () => { - expect(throughputResponse.currentPeriod.length).to.be.greaterThan(0); - expect(throughputResponse.previousPeriod.length).not.to.be.greaterThan(0); + it('returns some transactions data', () => { + expect(throughputTransactions.currentPeriod.length).to.be.greaterThan(0); + const nonNullTransactionsDataPoints = throughputTransactions.currentPeriod.filter( + ({ y }) => isFiniteNumber(y) + ); + expect(nonNullTransactionsDataPoints.length).to.be.greaterThan(0); + }); - const nonNullDataPoints = throughputResponse.currentPeriod.filter(({ y }) => + it('returns some metrics data', () => { + expect(throughputMetrics.currentPeriod.length).to.be.greaterThan(0); + const nonNullMetricsDataPoints = throughputTransactions.currentPeriod.filter(({ y }) => isFiniteNumber(y) ); - - expect(nonNullDataPoints.length).to.be.greaterThan(0); + expect(nonNullMetricsDataPoints.length).to.be.greaterThan(0); }); - it('has the correct start date', () => { - expectSnapshot( - new Date(first(throughputResponse.currentPeriod)?.x ?? NaN).toISOString() - ).toMatchInline(`"2021-08-03T06:50:00.000Z"`); + it('has same mean value for metrics and transactions data', () => { + const transactionsMean = meanBy(throughputTransactions.currentPeriod, 'y'); + const metricsMean = meanBy(throughputMetrics.currentPeriod, 'y'); + expect(transactionsMean).to.equal(metricsMean); + expectSnapshot(transactionsMean).toMatchInline(`100`); + expectSnapshot(metricsMean).toMatchInline(`100`); }); - it('has the correct end date', () => { - expectSnapshot( - new Date(last(throughputResponse.currentPeriod)?.x ?? NaN).toISOString() - ).toMatchInline(`"2021-08-03T07:20:00.000Z"`); + it('uses 10s time interval between buckets for transactions data', () => { + const firstTimerange = throughputTransactions.currentPeriod[0].x; + const secondTimerange = throughputTransactions.currentPeriod[1].x; + const timeIntervalAsSeconds = (secondTimerange - firstTimerange) / 1000; + expect(timeIntervalAsSeconds).to.equal(10); }); - it('has the correct throughput avg', () => { - const avg = mean(throughputResponse.currentPeriod.map((d) => d.y)); - expectSnapshot(avg).toMatchInline(`7.2258064516129`); - }); - }); - - describe('with kql filter to force transaction-based UI', () => { - describe('calculate throughput per minute because of time range', () => { - before(async () => { - const response = await apmApiSupertest({ - endpoint: 'GET /api/apm/services/{serviceName}/throughput', - params: { - path: { - serviceName: 'opbeans-java', - }, - query: { - kuery: 'processor.event : "transaction"', - start: metadata.start, - end: metadata.end, - transactionType: 'request', - environment: 'ENVIRONMENT_ALL', - }, - }, - }); - throughputResponse = response.body; - }); - - it('returns some data', () => { - expect(throughputResponse.currentPeriod.length).to.be.greaterThan(0); - expect(throughputResponse.previousPeriod.length).not.to.be.greaterThan(0); - - const nonNullDataPoints = throughputResponse.currentPeriod.filter(({ y }) => - isFiniteNumber(y) - ); - - expect(nonNullDataPoints.length).to.be.greaterThan(0); - }); - - it('has the correct start date', () => { - expectSnapshot( - new Date(first(throughputResponse.currentPeriod)?.x ?? NaN).toISOString() - ).toMatchInline(`"2021-08-03T06:50:00.000Z"`); - }); - - it('has the correct end date', () => { - expectSnapshot( - new Date(last(throughputResponse.currentPeriod)?.x ?? NaN).toISOString() - ).toMatchInline(`"2021-08-03T07:20:00.000Z"`); - }); - - it('has the correct throughput avg', () => { - const avg = mean(throughputResponse.currentPeriod.map((d) => d.y)); - expectSnapshot(avg).toMatchInline(`7.44262295081967`); - }); + it('uses 1m time interval between buckets for metrics data', () => { + const firstTimerange = throughputMetrics.currentPeriod[0].x; + const secondTimerange = throughputMetrics.currentPeriod[1].x; + const timeIntervalAsMinutes = (secondTimerange - firstTimerange) / 1000 / 60; + expect(timeIntervalAsMinutes).to.equal(1); }); }); } @@ -158,12 +145,14 @@ export default function ApiTest({ getService }: FtrProviderContext) { 'Throughput when data is loaded with time comparison', { config: 'basic', archives: [archiveName] }, () => { + let throughputResponse: ThroughputReturn; + before(async () => { const response = await apmApiSupertest({ endpoint: 'GET /api/apm/services/{serviceName}/throughput', params: { path: { - serviceName: 'opbeans-java', + serviceName: 'opbeans-go', }, query: { transactionType: 'request', @@ -195,24 +184,16 @@ export default function ApiTest({ getService }: FtrProviderContext) { expect(previousPeriodNonNullDataPoints.length).to.be.greaterThan(0); }); - it('has the correct start date', () => { - expectSnapshot( - new Date(first(throughputResponse.currentPeriod)?.x ?? NaN).toISOString() - ).toMatchInline(`"2021-08-03T07:05:10.000Z"`); - - expectSnapshot( + it('has same start time for both periods', () => { + expect(new Date(first(throughputResponse.currentPeriod)?.x ?? NaN).toISOString()).to.equal( new Date(first(throughputResponse.previousPeriod)?.x ?? NaN).toISOString() - ).toMatchInline(`"2021-08-03T07:05:10.000Z"`); + ); }); - it('has the correct end date', () => { - expectSnapshot( - new Date(last(throughputResponse.currentPeriod)?.x ?? NaN).toISOString() - ).toMatchInline(`"2021-08-03T07:20:10.000Z"`); - - expectSnapshot( + it('has same end time for both periods', () => { + expect(new Date(last(throughputResponse.currentPeriod)?.x ?? NaN).toISOString()).to.equal( new Date(last(throughputResponse.previousPeriod)?.x ?? NaN).toISOString() - ).toMatchInline(`"2021-08-03T07:20:10.000Z"`); + ); }); it('returns same number of buckets for both periods', () => { @@ -221,11 +202,10 @@ export default function ApiTest({ getService }: FtrProviderContext) { ); }); - it('calculates the correct throughput avg for both periods', () => { + it('has same mea value for both periods', () => { const currentPeriodAvg = mean(throughputResponse.currentPeriod.map((d) => d.y)); - expectSnapshot(currentPeriodAvg).toMatchInline(`6.46153846153846`); const previousPeriodAvg = mean(throughputResponse.previousPeriod.map((d) => d.y)); - expectSnapshot(previousPeriodAvg).toMatchInline(`8.50549450549451`); + expect(currentPeriodAvg).to.equal(previousPeriodAvg); }); } ); diff --git a/x-pack/test/apm_api_integration/tests/throughput/index.ts b/x-pack/test/apm_api_integration/tests/throughput/index.ts index c406e7655c18c..0fc724d1093bb 100644 --- a/x-pack/test/apm_api_integration/tests/throughput/index.ts +++ b/x-pack/test/apm_api_integration/tests/throughput/index.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { sum } from 'lodash'; +import { mean, sum } from 'lodash'; import { LatencyAggregationType } from '../../../../plugins/apm/common/latency_aggregation_types'; import { APIReturnType } from '../../../../plugins/apm/public/services/rest/createCallApmApi'; import { createApmApiSupertest } from '../../common/apm_api_supertest'; @@ -22,23 +22,20 @@ type TransactionsDetailsReturn = APIReturnType<'GET /api/apm/services/{serviceNa export default function ApiTest({ getService }: FtrProviderContext) { const apmApiSupertest = createApmApiSupertest(getService('supertest')); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_data_generation_8.0.0'; const metadata = archives_metadata[archiveName]; let throughputResponse: ThroughputReturn; let serviceResponse: ServiceReturn; let transactionsDetailsReturn: TransactionsDetailsReturn; - const deltaAsMinute = - (new Date(metadata.end).valueOf() - new Date(metadata.start).valueOf()) / 1000 / 60; - function callAPIs({ processorEvent }: { processorEvent: 'transaction' | 'metric' }) { return Promise.all([ apmApiSupertest({ endpoint: 'GET /api/apm/services', params: { query: { - kuery: `service.name : "opbeans-java" and processor.event : "${processorEvent}"`, + kuery: `service.name : "opbeans-go" and processor.event : "${processorEvent}"`, start: metadata.start, end: metadata.end, environment: 'ENVIRONMENT_ALL', @@ -49,7 +46,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { endpoint: 'GET /api/apm/services/{serviceName}/throughput', params: { path: { - serviceName: 'opbeans-java', + serviceName: 'opbeans-go', }, query: { kuery: `processor.event : "${processorEvent}"`, @@ -64,7 +61,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { endpoint: `GET /api/apm/services/{serviceName}/transactions/groups/main_statistics`, params: { path: { - serviceName: 'opbeans-java', + serviceName: 'opbeans-go', }, query: { kuery: `processor.event : "${processorEvent}"`, @@ -101,16 +98,12 @@ export default function ApiTest({ getService }: FtrProviderContext) { const serviceApiThroughput = serviceResponse.items[0].throughput; // return of calling GET /api/apm/services/{serviceName}/throughput - const throughputChartApiSum = sum(throughputResponse.currentPeriod.map((d) => d.y)); - - // needs to divide by 2 first because for the requested time range the bucket size will be 30s - const throughputChartApiTPM = throughputChartApiSum / 2 / deltaAsMinute; + const throughputChartApiMean = mean(throughputResponse.currentPeriod.map((d) => d.y)); const transactionsThroughputSum = sum( transactionsDetailsReturn.transactionGroups.map((data) => data.throughput) ); - - expect(roundNumber(serviceApiThroughput)).to.be(roundNumber(throughputChartApiTPM)); + expect(roundNumber(serviceApiThroughput)).to.be(roundNumber(throughputChartApiMean)); expect(roundNumber(serviceApiThroughput)).to.be(roundNumber(transactionsThroughputSum)); }); }); @@ -133,15 +126,14 @@ export default function ApiTest({ getService }: FtrProviderContext) { const serviceApiThroughput = serviceResponse.items[0].throughput; // return of calling GET /api/apm/services/{serviceName}/throughput - const throughputChartApiSum = sum(throughputResponse.currentPeriod.map((d) => d.y)); - const throughputChartApiTPM = throughputChartApiSum / deltaAsMinute; + const throughputChartApiMean = mean(throughputResponse.currentPeriod.map((d) => d.y)); // return of calling GET /api/apm/services/{serviceName}/transactions/groups/main_statistics const transactionsThroughputSum = sum( transactionsDetailsReturn.transactionGroups.map((data) => data.throughput) ); - expect(roundNumber(serviceApiThroughput)).to.be(roundNumber(throughputChartApiTPM)); + expect(roundNumber(serviceApiThroughput)).to.be(roundNumber(throughputChartApiMean)); expect(roundNumber(serviceApiThroughput)).to.be(roundNumber(transactionsThroughputSum)); }); }); From cfd6c2064f9f037cc54f736033d671a4f7ce6983 Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Tue, 5 Oct 2021 15:29:13 -0400 Subject: [PATCH 22/26] addressing PR changes --- .../tests/throughput/index.ts | 124 +++++++++--------- 1 file changed, 59 insertions(+), 65 deletions(-) diff --git a/x-pack/test/apm_api_integration/tests/throughput/index.ts b/x-pack/test/apm_api_integration/tests/throughput/index.ts index 0fc724d1093bb..55fa1b8a12c72 100644 --- a/x-pack/test/apm_api_integration/tests/throughput/index.ts +++ b/x-pack/test/apm_api_integration/tests/throughput/index.ts @@ -8,101 +8,106 @@ import expect from '@kbn/expect'; import { mean, sum } from 'lodash'; import { LatencyAggregationType } from '../../../../plugins/apm/common/latency_aggregation_types'; -import { APIReturnType } from '../../../../plugins/apm/public/services/rest/createCallApmApi'; +import { PromiseReturnType } from '../../../../plugins/observability/typings/common'; import { createApmApiSupertest } from '../../common/apm_api_supertest'; import archives_metadata from '../../common/fixtures/es_archiver/archives_metadata'; import { FtrProviderContext } from '../../common/ftr_provider_context'; import { registry } from '../../common/registry'; import { roundNumber } from '../../utils'; -type ThroughputReturn = APIReturnType<'GET /api/apm/services/{serviceName}/throughput'>; -type ServiceReturn = APIReturnType<'GET /api/apm/services'>; -type TransactionsDetailsReturn = APIReturnType<'GET /api/apm/services/{serviceName}/transactions/groups/main_statistics'>; - export default function ApiTest({ getService }: FtrProviderContext) { const apmApiSupertest = createApmApiSupertest(getService('supertest')); const archiveName = 'apm_data_generation_8.0.0'; const metadata = archives_metadata[archiveName]; - let throughputResponse: ThroughputReturn; - let serviceResponse: ServiceReturn; - let transactionsDetailsReturn: TransactionsDetailsReturn; - - function callAPIs({ processorEvent }: { processorEvent: 'transaction' | 'metric' }) { - return Promise.all([ + async function getThroughputValues({ + processorEvent, + serviceName, + }: { + processorEvent: 'transaction' | 'metric'; + serviceName: string; + }) { + const commonQuery = { + start: metadata.start, + end: metadata.end, + environment: 'ENVIRONMENT_ALL', + }; + const [ + serviceApiResponse, + serviceThroughputApiResponse, + transactionsDetailsApiReturn, + ] = await Promise.all([ apmApiSupertest({ endpoint: 'GET /api/apm/services', params: { query: { - kuery: `service.name : "opbeans-go" and processor.event : "${processorEvent}"`, - start: metadata.start, - end: metadata.end, - environment: 'ENVIRONMENT_ALL', + ...commonQuery, + kuery: `service.name : "${serviceName}" and processor.event : "${processorEvent}"`, }, }, }), apmApiSupertest({ endpoint: 'GET /api/apm/services/{serviceName}/throughput', params: { - path: { - serviceName: 'opbeans-go', - }, + path: { serviceName }, query: { + ...commonQuery, kuery: `processor.event : "${processorEvent}"`, - start: metadata.start, - end: metadata.end, transactionType: 'request', - environment: 'ENVIRONMENT_ALL', }, }, }), apmApiSupertest({ endpoint: `GET /api/apm/services/{serviceName}/transactions/groups/main_statistics`, params: { - path: { - serviceName: 'opbeans-go', - }, + path: { serviceName }, query: { + ...commonQuery, kuery: `processor.event : "${processorEvent}"`, - start: metadata.start, - end: metadata.end, transactionType: 'request', - environment: 'ENVIRONMENT_ALL', latencyAggregationType: 'avg' as LatencyAggregationType, }, }, }), ]); + const serviceApiThroughput = serviceApiResponse.body.items[0].throughput; + + const throughputChartApiMean = mean( + serviceThroughputApiResponse.body.currentPeriod.map((d) => d.y) + ); + + const transactionsThroughputSum = sum( + transactionsDetailsApiReturn.body.transactionGroups.map((data) => data.throughput) + ); + + return { + serviceApiThroughput, + throughputChartApiMean, + transactionsThroughputSum, + }; } + let throughputValues: PromiseReturnType; + registry.when( 'Throughput value across apis', { config: 'basic', archives: [archiveName] }, () => { describe('with kql filter to force transaction-based UI', () => { before(async () => { - const [ - serviceApiResponse, - serviceThroughputApiResponse, - transactionsDetailsApiReturn, - ] = await callAPIs({ processorEvent: 'transaction' }); - - serviceResponse = serviceApiResponse.body; - throughputResponse = serviceThroughputApiResponse.body; - transactionsDetailsReturn = transactionsDetailsApiReturn.body; + throughputValues = await getThroughputValues({ + serviceName: 'opbeans-go', + processorEvent: 'transaction', + }); }); it('matches throughput value betwen service, throughput chart and transactions apis ', () => { - // return of calling GET /api/apm/services api - const serviceApiThroughput = serviceResponse.items[0].throughput; - - // return of calling GET /api/apm/services/{serviceName}/throughput - const throughputChartApiMean = mean(throughputResponse.currentPeriod.map((d) => d.y)); - - const transactionsThroughputSum = sum( - transactionsDetailsReturn.transactionGroups.map((data) => data.throughput) - ); + const { + serviceApiThroughput, + throughputChartApiMean, + transactionsThroughputSum, + } = throughputValues; expect(roundNumber(serviceApiThroughput)).to.be(roundNumber(throughputChartApiMean)); expect(roundNumber(serviceApiThroughput)).to.be(roundNumber(transactionsThroughputSum)); }); @@ -110,29 +115,18 @@ export default function ApiTest({ getService }: FtrProviderContext) { describe('with kql filter to force metric-based UI', () => { before(async () => { - const [ - serviceApiResponse, - serviceThroughputApiResponse, - transactionsDetailsApiReturn, - ] = await callAPIs({ processorEvent: 'metric' }); - - serviceResponse = serviceApiResponse.body; - throughputResponse = serviceThroughputApiResponse.body; - transactionsDetailsReturn = transactionsDetailsApiReturn.body; + throughputValues = await getThroughputValues({ + serviceName: 'opbeans-go', + processorEvent: 'metric', + }); }); it('matches throughput value betwen service, throughput chart and transactions apis ', () => { - // return of calling GET /api/apm/services api - const serviceApiThroughput = serviceResponse.items[0].throughput; - - // return of calling GET /api/apm/services/{serviceName}/throughput - const throughputChartApiMean = mean(throughputResponse.currentPeriod.map((d) => d.y)); - - // return of calling GET /api/apm/services/{serviceName}/transactions/groups/main_statistics - const transactionsThroughputSum = sum( - transactionsDetailsReturn.transactionGroups.map((data) => data.throughput) - ); - + const { + serviceApiThroughput, + throughputChartApiMean, + transactionsThroughputSum, + } = throughputValues; expect(roundNumber(serviceApiThroughput)).to.be(roundNumber(throughputChartApiMean)); expect(roundNumber(serviceApiThroughput)).to.be(roundNumber(transactionsThroughputSum)); }); From a8ea02ef630f8791e08869dadee0bba6074f0c05 Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Tue, 5 Oct 2021 16:00:15 -0400 Subject: [PATCH 23/26] adding dependencies test --- .../tests/services/throughput.ts | 1 - .../tests/throughput/index.ts | 50 +++++++++++++++++-- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/x-pack/test/apm_api_integration/tests/services/throughput.ts b/x-pack/test/apm_api_integration/tests/services/throughput.ts index b688678269f8a..cb846a410166d 100644 --- a/x-pack/test/apm_api_integration/tests/services/throughput.ts +++ b/x-pack/test/apm_api_integration/tests/services/throughput.ts @@ -75,7 +75,6 @@ export default function ApiTest({ getService }: FtrProviderContext) { query: { ...commonQuery, kuery: 'processor.event : "transaction"', - _inspect: true, }, }, }), diff --git a/x-pack/test/apm_api_integration/tests/throughput/index.ts b/x-pack/test/apm_api_integration/tests/throughput/index.ts index 55fa1b8a12c72..7a926ed88eeaf 100644 --- a/x-pack/test/apm_api_integration/tests/throughput/index.ts +++ b/x-pack/test/apm_api_integration/tests/throughput/index.ts @@ -8,6 +8,7 @@ import expect from '@kbn/expect'; import { mean, sum } from 'lodash'; import { LatencyAggregationType } from '../../../../plugins/apm/common/latency_aggregation_types'; +import { BackendNode } from '../../../../plugins/apm/common/connections'; import { PromiseReturnType } from '../../../../plugins/observability/typings/common'; import { createApmApiSupertest } from '../../common/apm_api_supertest'; import archives_metadata from '../../common/fixtures/es_archiver/archives_metadata'; @@ -36,7 +37,9 @@ export default function ApiTest({ getService }: FtrProviderContext) { const [ serviceApiResponse, serviceThroughputApiResponse, - transactionsDetailsApiReturn, + transactionsDetailsApiResponse, + serviceDependencyAPIResponse, + topBackendsAPIResponse, ] = await Promise.all([ apmApiSupertest({ endpoint: 'GET /api/apm/services', @@ -70,6 +73,27 @@ export default function ApiTest({ getService }: FtrProviderContext) { }, }, }), + apmApiSupertest({ + endpoint: `GET /api/apm/services/{serviceName}/dependencies`, + params: { + path: { serviceName }, + query: { + ...commonQuery, + numBuckets: 20, + offset: '1d', + }, + }, + }), + apmApiSupertest({ + endpoint: `GET /api/apm/backends/top_backends`, + params: { + query: { + ...commonQuery, + numBuckets: 20, + kuery: '', + }, + }, + }), ]); const serviceApiThroughput = serviceApiResponse.body.items[0].throughput; @@ -78,13 +102,21 @@ export default function ApiTest({ getService }: FtrProviderContext) { ); const transactionsThroughputSum = sum( - transactionsDetailsApiReturn.body.transactionGroups.map((data) => data.throughput) + transactionsDetailsApiResponse.body.transactionGroups.map((data) => data.throughput) ); return { serviceApiThroughput, throughputChartApiMean, transactionsThroughputSum, + serviceDependencies: serviceDependencyAPIResponse.body.serviceDependencies.map((item) => ({ + backendName: (item.location as BackendNode).backendName, + throughputValue: item.currentStats.throughput.value, + })), + topDependencies: topBackendsAPIResponse.body.backends.map((item) => ({ + backendName: (item.location as BackendNode).backendName, + throughputValue: item.currentStats.throughput.value, + })), }; } @@ -102,7 +134,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); }); - it('matches throughput value betwen service, throughput chart and transactions apis ', () => { + it('matches throughput value between service, throughput chart and transactions apis ', () => { const { serviceApiThroughput, throughputChartApiMean, @@ -111,6 +143,11 @@ export default function ApiTest({ getService }: FtrProviderContext) { expect(roundNumber(serviceApiThroughput)).to.be(roundNumber(throughputChartApiMean)); expect(roundNumber(serviceApiThroughput)).to.be(roundNumber(transactionsThroughputSum)); }); + + it('matches throughput value between service dependencies and top backends', () => { + const { topDependencies, serviceDependencies } = throughputValues; + expect(serviceDependencies).to.equal(topDependencies); + }); }); describe('with kql filter to force metric-based UI', () => { @@ -121,7 +158,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); }); - it('matches throughput value betwen service, throughput chart and transactions apis ', () => { + it('matches throughput value between service, throughput chart and transactions apis ', () => { const { serviceApiThroughput, throughputChartApiMean, @@ -130,6 +167,11 @@ export default function ApiTest({ getService }: FtrProviderContext) { expect(roundNumber(serviceApiThroughput)).to.be(roundNumber(throughputChartApiMean)); expect(roundNumber(serviceApiThroughput)).to.be(roundNumber(transactionsThroughputSum)); }); + + it('matches throughput value between service dependencies and top backends', () => { + const { topDependencies, serviceDependencies } = throughputValues; + expect(serviceDependencies).to.equal(topDependencies); + }); }); } ); From 5ef60cea2ec044333bb27b1d500e4f2467bbbf2e Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Tue, 5 Oct 2021 16:54:56 -0400 Subject: [PATCH 24/26] adding tests for dependencies apis --- .../get_throughput_charts_for_backend.ts | 14 ++++- .../tests/throughput/index.ts | 54 ++++++++++++++----- 2 files changed, 54 insertions(+), 14 deletions(-) diff --git a/x-pack/plugins/apm/server/lib/backends/get_throughput_charts_for_backend.ts b/x-pack/plugins/apm/server/lib/backends/get_throughput_charts_for_backend.ts index d396ccfa1319d..f728707d03d31 100644 --- a/x-pack/plugins/apm/server/lib/backends/get_throughput_charts_for_backend.ts +++ b/x-pack/plugins/apm/server/lib/backends/get_throughput_charts_for_backend.ts @@ -5,7 +5,10 @@ * 2.0. */ -import { SPAN_DESTINATION_SERVICE_RESOURCE } from '../../../common/elasticsearch_fieldnames'; +import { + SPAN_DESTINATION_SERVICE_RESOURCE, + SPAN_DESTINATION_SERVICE_RESPONSE_TIME_COUNT, +} from '../../../common/elasticsearch_fieldnames'; import { environmentQuery } from '../../../common/utils/environment_query'; import { kqlQuery, rangeQuery } from '../../../../observability/server'; import { ProcessorEvent } from '../../../common/processor_event'; @@ -69,6 +72,13 @@ export async function getThroughputChartsForBackend({ min_doc_count: 0, extended_bounds: { min: startWithOffset, max: endWithOffset }, }, + aggs: { + sumSpanDestination: { + sum: { + field: SPAN_DESTINATION_SERVICE_RESPONSE_TIME_COUNT, + }, + }, + }, }, }, }, @@ -80,7 +90,7 @@ export async function getThroughputChartsForBackend({ x: bucket.key + offsetInMs, y: calculateThroughputWithInterval({ bucketSize, - value: bucket.doc_count, + value: bucket.sumSpanDestination.value || 0, }), }; }) ?? [] diff --git a/x-pack/test/apm_api_integration/tests/throughput/index.ts b/x-pack/test/apm_api_integration/tests/throughput/index.ts index 7a926ed88eeaf..59b5c55130555 100644 --- a/x-pack/test/apm_api_integration/tests/throughput/index.ts +++ b/x-pack/test/apm_api_integration/tests/throughput/index.ts @@ -6,9 +6,9 @@ */ import expect from '@kbn/expect'; -import { mean, sum } from 'lodash'; -import { LatencyAggregationType } from '../../../../plugins/apm/common/latency_aggregation_types'; +import { meanBy, sumBy } from 'lodash'; import { BackendNode } from '../../../../plugins/apm/common/connections'; +import { LatencyAggregationType } from '../../../../plugins/apm/common/latency_aggregation_types'; import { PromiseReturnType } from '../../../../plugins/observability/typings/common'; import { createApmApiSupertest } from '../../common/apm_api_supertest'; import archives_metadata from '../../common/fixtures/es_archiver/archives_metadata'; @@ -35,11 +35,12 @@ export default function ApiTest({ getService }: FtrProviderContext) { environment: 'ENVIRONMENT_ALL', }; const [ - serviceApiResponse, - serviceThroughputApiResponse, - transactionsDetailsApiResponse, + serviceAPIResponse, + serviceThroughputAPIResponse, + transactionsDetailsAPIResponse, serviceDependencyAPIResponse, topBackendsAPIResponse, + backendThroughputChartAPIResponse, ] = await Promise.all([ apmApiSupertest({ endpoint: 'GET /api/apm/services', @@ -94,15 +95,29 @@ export default function ApiTest({ getService }: FtrProviderContext) { }, }, }), + apmApiSupertest({ + endpoint: `GET /api/apm/backends/{backendName}/charts/throughput`, + params: { + path: { backendName: 'elasticsearch' }, + query: { + ...commonQuery, + kuery: '', + }, + }, + }), ]); - const serviceApiThroughput = serviceApiResponse.body.items[0].throughput; + const serviceApiThroughput = serviceAPIResponse.body.items[0].throughput; - const throughputChartApiMean = mean( - serviceThroughputApiResponse.body.currentPeriod.map((d) => d.y) + const throughputChartApiMean = meanBy(serviceThroughputAPIResponse.body.currentPeriod, 'y'); + + const transactionsThroughputSum = sumBy( + transactionsDetailsAPIResponse.body.transactionGroups, + 'throughput' ); - const transactionsThroughputSum = sum( - transactionsDetailsApiResponse.body.transactionGroups.map((data) => data.throughput) + const backendThroughputChartMean = meanBy( + backendThroughputChartAPIResponse.body.currentTimeseries, + 'y' ); return { @@ -117,6 +132,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { backendName: (item.location as BackendNode).backendName, throughputValue: item.currentStats.throughput.value, })), + backendThroughputChartMean, }; } @@ -146,7 +162,14 @@ export default function ApiTest({ getService }: FtrProviderContext) { it('matches throughput value between service dependencies and top backends', () => { const { topDependencies, serviceDependencies } = throughputValues; - expect(serviceDependencies).to.equal(topDependencies); + expect(serviceDependencies).to.eql(topDependencies); + }); + + it('matches throughput value between service dependencies and backend throughput chart', () => { + const { backendThroughputChartMean, serviceDependencies } = throughputValues; + expect(roundNumber(serviceDependencies[0].throughputValue)).to.equal( + roundNumber(backendThroughputChartMean) + ); }); }); @@ -170,7 +193,14 @@ export default function ApiTest({ getService }: FtrProviderContext) { it('matches throughput value between service dependencies and top backends', () => { const { topDependencies, serviceDependencies } = throughputValues; - expect(serviceDependencies).to.equal(topDependencies); + expect(serviceDependencies).to.eql(topDependencies); + }); + + it('matches throughput value between service dependencies and backend throughput chart', () => { + const { backendThroughputChartMean, serviceDependencies } = throughputValues; + expect(roundNumber(serviceDependencies[0].throughputValue)).to.equal( + roundNumber(backendThroughputChartMean) + ); }); }); } From 9489676964db6e48b2ba12e9053589bd9b2e0529 Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Wed, 6 Oct 2021 09:49:04 -0400 Subject: [PATCH 25/26] addressing pr changes --- .../get_throughput_charts_for_backend.ts | 4 +- .../tests/services/throughput.ts | 190 ++++++++---------- .../tests/throughput/index.ts | 115 ++++++----- 3 files changed, 145 insertions(+), 164 deletions(-) diff --git a/x-pack/plugins/apm/server/lib/backends/get_throughput_charts_for_backend.ts b/x-pack/plugins/apm/server/lib/backends/get_throughput_charts_for_backend.ts index f728707d03d31..fc620c5650545 100644 --- a/x-pack/plugins/apm/server/lib/backends/get_throughput_charts_for_backend.ts +++ b/x-pack/plugins/apm/server/lib/backends/get_throughput_charts_for_backend.ts @@ -73,7 +73,7 @@ export async function getThroughputChartsForBackend({ extended_bounds: { min: startWithOffset, max: endWithOffset }, }, aggs: { - sumSpanDestination: { + spanDestinationLatencySum: { sum: { field: SPAN_DESTINATION_SERVICE_RESPONSE_TIME_COUNT, }, @@ -90,7 +90,7 @@ export async function getThroughputChartsForBackend({ x: bucket.key + offsetInMs, y: calculateThroughputWithInterval({ bucketSize, - value: bucket.sumSpanDestination.value || 0, + value: bucket.spanDestinationLatencySum.value || 0, }), }; }) ?? [] diff --git a/x-pack/test/apm_api_integration/tests/services/throughput.ts b/x-pack/test/apm_api_integration/tests/services/throughput.ts index cb846a410166d..07da146cbf452 100644 --- a/x-pack/test/apm_api_integration/tests/services/throughput.ts +++ b/x-pack/test/apm_api_integration/tests/services/throughput.ts @@ -47,72 +47,48 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); }); - async function callThroughApis() { - const path = { - serviceName: 'opbeans-go', - }; - const commonQuery = { - start: metadata.start, - end: metadata.end, - transactionType: 'request', - environment: 'ENVIRONMENT_ALL', - }; - const [throughputMetricsResponse, throughputTransactionsResponse] = await Promise.all([ - apmApiSupertest({ - endpoint: 'GET /api/apm/services/{serviceName}/throughput', - params: { - path, - query: { - ...commonQuery, - kuery: 'processor.event : "metric"', - }, + async function fetchThroughput(processorEvent: 'metric' | 'transaction') { + const throughputResponse = await apmApiSupertest({ + endpoint: 'GET /api/apm/services/{serviceName}/throughput', + params: { + path: { serviceName: 'opbeans-go' }, + query: { + start: metadata.start, + end: metadata.end, + transactionType: 'request', + environment: 'ENVIRONMENT_ALL', + kuery: `processor.event : "${processorEvent}"`, }, - }), - apmApiSupertest({ - endpoint: 'GET /api/apm/services/{serviceName}/throughput', - params: { - path, - query: { - ...commonQuery, - kuery: 'processor.event : "transaction"', - }, - }, - }), - ]); - return { - throughputMetrics: throughputMetricsResponse.body, - throughputTransactions: throughputTransactionsResponse.body, - }; + }, + }); + return throughputResponse.body; } registry.when( 'Throughput when data is loaded', { config: 'basic', archives: [archiveName] }, () => { - let throughputMetrics: ThroughputReturn; - let throughputTransactions: ThroughputReturn; + describe('without comparisons', () => { + let throughputMetrics: ThroughputReturn; + let throughputTransactions: ThroughputReturn; - describe('compare metrics and transactions values', () => { before(async () => { - const throughputApiResponse = await callThroughApis(); - throughputMetrics = throughputApiResponse.throughputMetrics; - throughputTransactions = throughputApiResponse.throughputTransactions; + [throughputMetrics, throughputTransactions] = await Promise.all([ + fetchThroughput('metric'), + fetchThroughput('transaction'), + ]); }); it('returns some transactions data', () => { expect(throughputTransactions.currentPeriod.length).to.be.greaterThan(0); - const nonNullTransactionsDataPoints = throughputTransactions.currentPeriod.filter( - ({ y }) => isFiniteNumber(y) - ); - expect(nonNullTransactionsDataPoints.length).to.be.greaterThan(0); + const hasData = throughputTransactions.currentPeriod.some(({ y }) => isFiniteNumber(y)); + expect(hasData).to.equal(true); }); it('returns some metrics data', () => { expect(throughputMetrics.currentPeriod.length).to.be.greaterThan(0); - const nonNullMetricsDataPoints = throughputTransactions.currentPeriod.filter(({ y }) => - isFiniteNumber(y) - ); - expect(nonNullMetricsDataPoints.length).to.be.greaterThan(0); + const hasData = throughputMetrics.currentPeriod.some(({ y }) => isFiniteNumber(y)); + expect(hasData).to.equal(true); }); it('has same mean value for metrics and transactions data', () => { @@ -123,88 +99,84 @@ export default function ApiTest({ getService }: FtrProviderContext) { expectSnapshot(metricsMean).toMatchInline(`100`); }); - it('uses 10s time interval between buckets for transactions data', () => { + it('has a bucket size of 10 seconds for transactions data', () => { const firstTimerange = throughputTransactions.currentPeriod[0].x; const secondTimerange = throughputTransactions.currentPeriod[1].x; const timeIntervalAsSeconds = (secondTimerange - firstTimerange) / 1000; expect(timeIntervalAsSeconds).to.equal(10); }); - it('uses 1m time interval between buckets for metrics data', () => { + it('has a bucket size of 1 minute for metrics data', () => { const firstTimerange = throughputMetrics.currentPeriod[0].x; const secondTimerange = throughputMetrics.currentPeriod[1].x; const timeIntervalAsMinutes = (secondTimerange - firstTimerange) / 1000 / 60; expect(timeIntervalAsMinutes).to.equal(1); }); }); - } - ); - registry.when( - 'Throughput when data is loaded with time comparison', - { config: 'basic', archives: [archiveName] }, - () => { - let throughputResponse: ThroughputReturn; - - before(async () => { - const response = await apmApiSupertest({ - endpoint: 'GET /api/apm/services/{serviceName}/throughput', - params: { - path: { - serviceName: 'opbeans-go', - }, - query: { - transactionType: 'request', - start: moment(metadata.end).subtract(15, 'minutes').toISOString(), - end: metadata.end, - comparisonStart: metadata.start, - comparisonEnd: moment(metadata.start).add(15, 'minutes').toISOString(), - environment: 'ENVIRONMENT_ALL', - kuery: '', + describe('with comparisons', () => { + let throughputResponse: ThroughputReturn; + + before(async () => { + const response = await apmApiSupertest({ + endpoint: 'GET /api/apm/services/{serviceName}/throughput', + params: { + path: { + serviceName: 'opbeans-go', + }, + query: { + transactionType: 'request', + start: moment(metadata.end).subtract(15, 'minutes').toISOString(), + end: metadata.end, + comparisonStart: metadata.start, + comparisonEnd: moment(metadata.start).add(15, 'minutes').toISOString(), + environment: 'ENVIRONMENT_ALL', + kuery: '', + }, }, - }, - }); + }); - throughputResponse = response.body; - }); + throughputResponse = response.body; + }); - it('returns some data', () => { - expect(throughputResponse.currentPeriod.length).to.be.greaterThan(0); - expect(throughputResponse.previousPeriod.length).to.be.greaterThan(0); + it('returns some data', () => { + expect(throughputResponse.currentPeriod.length).to.be.greaterThan(0); + expect(throughputResponse.previousPeriod.length).to.be.greaterThan(0); - const currentPeriodNonNullDataPoints = throughputResponse.currentPeriod.filter(({ y }) => - isFiniteNumber(y) - ); - const previousPeriodNonNullDataPoints = throughputResponse.previousPeriod.filter(({ y }) => - isFiniteNumber(y) - ); + const currentPeriodNonNullDataPoints = throughputResponse.currentPeriod.filter(({ y }) => + isFiniteNumber(y) + ); + const previousPeriodNonNullDataPoints = throughputResponse.previousPeriod.filter( + ({ y }) => isFiniteNumber(y) + ); - expect(currentPeriodNonNullDataPoints.length).to.be.greaterThan(0); - expect(previousPeriodNonNullDataPoints.length).to.be.greaterThan(0); - }); + expect(currentPeriodNonNullDataPoints.length).to.be.greaterThan(0); + expect(previousPeriodNonNullDataPoints.length).to.be.greaterThan(0); + }); - it('has same start time for both periods', () => { - expect(new Date(first(throughputResponse.currentPeriod)?.x ?? NaN).toISOString()).to.equal( - new Date(first(throughputResponse.previousPeriod)?.x ?? NaN).toISOString() - ); - }); + it('has same start time for both periods', () => { + expect( + new Date(first(throughputResponse.currentPeriod)?.x ?? NaN).toISOString() + ).to.equal(new Date(first(throughputResponse.previousPeriod)?.x ?? NaN).toISOString()); + }); - it('has same end time for both periods', () => { - expect(new Date(last(throughputResponse.currentPeriod)?.x ?? NaN).toISOString()).to.equal( - new Date(last(throughputResponse.previousPeriod)?.x ?? NaN).toISOString() - ); - }); + it('has same end time for both periods', () => { + expect(new Date(last(throughputResponse.currentPeriod)?.x ?? NaN).toISOString()).to.equal( + new Date(last(throughputResponse.previousPeriod)?.x ?? NaN).toISOString() + ); + }); - it('returns same number of buckets for both periods', () => { - expect(throughputResponse.currentPeriod.length).to.be( - throughputResponse.previousPeriod.length - ); - }); + it('returns same number of buckets for both periods', () => { + expect(throughputResponse.currentPeriod.length).to.be( + throughputResponse.previousPeriod.length + ); + }); - it('has same mea value for both periods', () => { - const currentPeriodAvg = mean(throughputResponse.currentPeriod.map((d) => d.y)); - const previousPeriodAvg = mean(throughputResponse.previousPeriod.map((d) => d.y)); - expect(currentPeriodAvg).to.equal(previousPeriodAvg); + it('has same mea value for both periods', () => { + const currentPeriodAvg = mean(throughputResponse.currentPeriod.map((d) => d.y)); + const previousPeriodAvg = mean(throughputResponse.previousPeriod.map((d) => d.y)); + expect(currentPeriodAvg).to.equal(previousPeriodAvg); + }); }); } ); diff --git a/x-pack/test/apm_api_integration/tests/throughput/index.ts b/x-pack/test/apm_api_integration/tests/throughput/index.ts index 59b5c55130555..d050c62442702 100644 --- a/x-pack/test/apm_api_integration/tests/throughput/index.ts +++ b/x-pack/test/apm_api_integration/tests/throughput/index.ts @@ -35,7 +35,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { environment: 'ENVIRONMENT_ALL', }; const [ - serviceAPIResponse, + serviceInventoryAPIResponse, serviceThroughputAPIResponse, transactionsDetailsAPIResponse, serviceDependencyAPIResponse, @@ -106,7 +106,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { }, }), ]); - const serviceApiThroughput = serviceAPIResponse.body.items[0].throughput; + const serviceInventoryThroughput = serviceInventoryAPIResponse.body.items[0].throughput; const throughputChartApiMean = meanBy(serviceThroughputAPIResponse.body.currentPeriod, 'y'); @@ -121,7 +121,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { ); return { - serviceApiThroughput, + serviceInventoryThroughput, throughputChartApiMean, transactionsThroughputSum, serviceDependencies: serviceDependencyAPIResponse.body.serviceDependencies.map((item) => ({ @@ -136,73 +136,82 @@ export default function ApiTest({ getService }: FtrProviderContext) { }; } - let throughputValues: PromiseReturnType; + let throughputMetricValues: PromiseReturnType; + let throughputTransactionValues: PromiseReturnType; - registry.when( - 'Throughput value across apis', - { config: 'basic', archives: [archiveName] }, - () => { - describe('with kql filter to force transaction-based UI', () => { - before(async () => { - throughputValues = await getThroughputValues({ + registry.when('Throughput value', { config: 'basic', archives: [archiveName] }, () => { + describe('compare throughput value across different APIs', () => { + before(async () => { + [throughputTransactionValues, throughputMetricValues] = await Promise.all([ + getThroughputValues({ serviceName: 'opbeans-go', processorEvent: 'transaction', - }); - }); + }), + getThroughputValues({ + serviceName: 'opbeans-go', + processorEvent: 'metric', + }), + ]); + }); - it('matches throughput value between service, throughput chart and transactions apis ', () => { + describe('compare throughput value between service inventory, throughput chart and transactions apis', () => { + it('matches transactions throughput values', () => { const { - serviceApiThroughput, + serviceInventoryThroughput, throughputChartApiMean, transactionsThroughputSum, - } = throughputValues; - expect(roundNumber(serviceApiThroughput)).to.be(roundNumber(throughputChartApiMean)); - expect(roundNumber(serviceApiThroughput)).to.be(roundNumber(transactionsThroughputSum)); - }); - - it('matches throughput value between service dependencies and top backends', () => { - const { topDependencies, serviceDependencies } = throughputValues; - expect(serviceDependencies).to.eql(topDependencies); - }); - - it('matches throughput value between service dependencies and backend throughput chart', () => { - const { backendThroughputChartMean, serviceDependencies } = throughputValues; - expect(roundNumber(serviceDependencies[0].throughputValue)).to.equal( - roundNumber(backendThroughputChartMean) + } = throughputTransactionValues; + expect(roundNumber(serviceInventoryThroughput)).to.be( + roundNumber(throughputChartApiMean) + ); + expect(roundNumber(serviceInventoryThroughput)).to.be( + roundNumber(transactionsThroughputSum) ); }); - }); - - describe('with kql filter to force metric-based UI', () => { - before(async () => { - throughputValues = await getThroughputValues({ - serviceName: 'opbeans-go', - processorEvent: 'metric', - }); - }); - - it('matches throughput value between service, throughput chart and transactions apis ', () => { + it('matches metrics throughput values', () => { const { - serviceApiThroughput, + serviceInventoryThroughput, throughputChartApiMean, transactionsThroughputSum, - } = throughputValues; - expect(roundNumber(serviceApiThroughput)).to.be(roundNumber(throughputChartApiMean)); - expect(roundNumber(serviceApiThroughput)).to.be(roundNumber(transactionsThroughputSum)); + } = throughputMetricValues; + expect(roundNumber(serviceInventoryThroughput)).to.be( + roundNumber(throughputChartApiMean) + ); + expect(roundNumber(serviceInventoryThroughput)).to.be( + roundNumber(transactionsThroughputSum) + ); }); + it('has same throughput value for metrics and transactions data', () => { + expect(roundNumber(throughputMetricValues.serviceInventoryThroughput)).to.be( + roundNumber(throughputTransactionValues.serviceInventoryThroughput) + ); + expect(roundNumber(throughputMetricValues.throughputChartApiMean)).to.be( + roundNumber(throughputTransactionValues.throughputChartApiMean) + ); + expect(roundNumber(throughputMetricValues.transactionsThroughputSum)).to.be( + roundNumber(throughputTransactionValues.transactionsThroughputSum) + ); + }); + }); - it('matches throughput value between service dependencies and top backends', () => { - const { topDependencies, serviceDependencies } = throughputValues; + describe('compare throughput value between service dependencies and top backends', () => { + it('matches transactions throughput values', () => { + const { topDependencies, serviceDependencies } = throughputTransactionValues; expect(serviceDependencies).to.eql(topDependencies); }); - - it('matches throughput value between service dependencies and backend throughput chart', () => { - const { backendThroughputChartMean, serviceDependencies } = throughputValues; - expect(roundNumber(serviceDependencies[0].throughputValue)).to.equal( - roundNumber(backendThroughputChartMean) + it('matches metrics throughput values', () => { + const { topDependencies, serviceDependencies } = throughputMetricValues; + expect(serviceDependencies).to.eql(topDependencies); + }); + it('has same throughput value for metrics and transactions data', () => { + expect(throughputTransactionValues.serviceDependencies).to.eql( + throughputMetricValues.serviceDependencies + ); + expect(throughputTransactionValues.topDependencies).to.eql( + throughputMetricValues.topDependencies ); }); }); - } - ); + }); + }); } From a281db34956074359df2922737ddd1216f268675 Mon Sep 17 00:00:00 2001 From: cauemarcondes Date: Wed, 6 Oct 2021 09:51:32 -0400 Subject: [PATCH 26/26] renaming archives --- .../data.json.gz | Bin .../mappings.json | 0 .../data.json.gz | Bin .../mappings.json | 0 .../fixtures/es_archiver/archives_metadata.ts | 4 +- .../apm_api_integration/common/registry.ts | 4 +- .../tests/alerts/chart_preview.ts | 2 +- .../errors_failed_transactions.ts | 4 +- .../tests/correlations/errors_overall.ts | 4 +- .../tests/correlations/latency_overall.ts | 4 +- .../correlations/latency_slow_transactions.ts | 4 +- .../tests/inspect/inspect.ts | 2 +- .../tests/observability_overview/has_data.ts | 2 +- .../observability_overview.ts | 2 +- .../tests/service_maps/service_maps.ts | 227 +++++++++--------- .../service_overview/dependencies/index.ts | 2 +- .../service_overview/instance_details.ts | 2 +- .../instances_detailed_statistics.ts | 2 +- .../instances_main_statistics.ts | 2 +- .../tests/services/agent.ts | 2 +- .../error_groups_detailed_statistics.ts | 2 +- .../services/error_groups_main_statistics.ts | 2 +- .../tests/services/service_details.ts | 2 +- .../tests/services/service_icons.ts | 2 +- .../services/services_detailed_statistics.ts | 2 +- .../tests/services/throughput.ts | 2 +- .../tests/services/top_services.ts | 2 +- .../tests/services/transaction_types.ts | 2 +- .../tests/settings/agent_configuration.ts | 2 +- .../tests/settings/custom_link.ts | 2 +- .../tests/throughput/index.ts | 2 +- .../tests/traces/top_traces.ts | 2 +- .../tests/transactions/breakdown.ts | 2 +- .../tests/transactions/error_rate.ts | 2 +- .../tests/transactions/latency.ts | 2 +- .../tests/transactions/trace_samples.ts | 2 +- ...transactions_groups_detailed_statistics.ts | 2 +- .../transactions_groups_main_statistics.ts | 2 +- 38 files changed, 156 insertions(+), 149 deletions(-) rename x-pack/test/apm_api_integration/common/fixtures/es_archiver/{apm_8.0.0 => apm_opbeans_8.0.0}/data.json.gz (100%) rename x-pack/test/apm_api_integration/common/fixtures/es_archiver/{apm_8.0.0 => apm_opbeans_8.0.0}/mappings.json (100%) rename x-pack/test/apm_api_integration/common/fixtures/es_archiver/{apm_data_generation_8.0.0 => apm_synthetic_8.0.0}/data.json.gz (100%) rename x-pack/test/apm_api_integration/common/fixtures/es_archiver/{apm_data_generation_8.0.0 => apm_synthetic_8.0.0}/mappings.json (100%) diff --git a/x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_8.0.0/data.json.gz b/x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_opbeans_8.0.0/data.json.gz similarity index 100% rename from x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_8.0.0/data.json.gz rename to x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_opbeans_8.0.0/data.json.gz diff --git a/x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_8.0.0/mappings.json b/x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_opbeans_8.0.0/mappings.json similarity index 100% rename from x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_8.0.0/mappings.json rename to x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_opbeans_8.0.0/mappings.json diff --git a/x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_data_generation_8.0.0/data.json.gz b/x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_synthetic_8.0.0/data.json.gz similarity index 100% rename from x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_data_generation_8.0.0/data.json.gz rename to x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_synthetic_8.0.0/data.json.gz diff --git a/x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_data_generation_8.0.0/mappings.json b/x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_synthetic_8.0.0/mappings.json similarity index 100% rename from x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_data_generation_8.0.0/mappings.json rename to x-pack/test/apm_api_integration/common/fixtures/es_archiver/apm_synthetic_8.0.0/mappings.json diff --git a/x-pack/test/apm_api_integration/common/fixtures/es_archiver/archives_metadata.ts b/x-pack/test/apm_api_integration/common/fixtures/es_archiver/archives_metadata.ts index f2c41a0c2f084..734e803cf7e0d 100644 --- a/x-pack/test/apm_api_integration/common/fixtures/es_archiver/archives_metadata.ts +++ b/x-pack/test/apm_api_integration/common/fixtures/es_archiver/archives_metadata.ts @@ -6,11 +6,11 @@ */ export default { - 'apm_8.0.0': { + 'apm_opbeans_8.0.0': { start: '2021-08-03T06:50:15.910Z', end: '2021-08-03T07:20:15.910Z', }, - 'apm_data_generation_8.0.0': { + 'apm_synthetic_8.0.0': { start: '2021-10-05T13:21:00.000Z', end: '2021-10-05T13:36:59.999Z', }, diff --git a/x-pack/test/apm_api_integration/common/registry.ts b/x-pack/test/apm_api_integration/common/registry.ts index e22742b0fd7bb..42bb5d295f10c 100644 --- a/x-pack/test/apm_api_integration/common/registry.ts +++ b/x-pack/test/apm_api_integration/common/registry.ts @@ -14,14 +14,14 @@ import { APMFtrConfigName } from '../configs'; import { FtrProviderContext } from './ftr_provider_context'; type ArchiveName = - | 'apm_8.0.0' + | 'apm_opbeans_8.0.0' | '8.0.0' | 'metrics_8.0.0' | 'ml_8.0.0' | 'observability_overview' | 'rum_8.0.0' | 'rum_test_data' - | 'apm_data_generation_8.0.0'; + | 'apm_synthetic_8.0.0'; interface RunCondition { config: APMFtrConfigName; diff --git a/x-pack/test/apm_api_integration/tests/alerts/chart_preview.ts b/x-pack/test/apm_api_integration/tests/alerts/chart_preview.ts index 9f8f245c085a1..796ac0512ffeb 100644 --- a/x-pack/test/apm_api_integration/tests/alerts/chart_preview.ts +++ b/x-pack/test/apm_api_integration/tests/alerts/chart_preview.ts @@ -13,7 +13,7 @@ import { registry } from '../../common/registry'; export default function ApiTest({ getService }: FtrProviderContext) { const apmApiSupertest = createApmApiSupertest(getService('supertest')); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const { end } = archives[archiveName]; const start = new Date(Date.parse(end) - 600000).toISOString(); diff --git a/x-pack/test/apm_api_integration/tests/correlations/errors_failed_transactions.ts b/x-pack/test/apm_api_integration/tests/correlations/errors_failed_transactions.ts index 31715b0019017..9ba89a4e4c244 100644 --- a/x-pack/test/apm_api_integration/tests/correlations/errors_failed_transactions.ts +++ b/x-pack/test/apm_api_integration/tests/correlations/errors_failed_transactions.ts @@ -14,7 +14,7 @@ import { registry } from '../../common/registry'; export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const range = archives_metadata[archiveName]; const url = format({ @@ -42,7 +42,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { registry.when( 'correlations errors failed transactions with data and default args', - { config: 'trial', archives: ['apm_8.0.0'] }, + { config: 'trial', archives: ['apm_opbeans_8.0.0'] }, () => { type ResponseBody = APIReturnType<'GET /api/apm/correlations/errors/failed_transactions'>; let response: { diff --git a/x-pack/test/apm_api_integration/tests/correlations/errors_overall.ts b/x-pack/test/apm_api_integration/tests/correlations/errors_overall.ts index a4e4077a17483..a5fd5bd11282e 100644 --- a/x-pack/test/apm_api_integration/tests/correlations/errors_overall.ts +++ b/x-pack/test/apm_api_integration/tests/correlations/errors_overall.ts @@ -14,7 +14,7 @@ import { registry } from '../../common/registry'; export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const range = archives_metadata[archiveName]; const url = format({ @@ -42,7 +42,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { registry.when( 'correlations errors overall with data and default args', - { config: 'trial', archives: ['apm_8.0.0'] }, + { config: 'trial', archives: ['apm_opbeans_8.0.0'] }, () => { type ResponseBody = APIReturnType<'GET /api/apm/correlations/errors/overall_timeseries'>; let response: { diff --git a/x-pack/test/apm_api_integration/tests/correlations/latency_overall.ts b/x-pack/test/apm_api_integration/tests/correlations/latency_overall.ts index cfbe63e976655..260eb21fddb5b 100644 --- a/x-pack/test/apm_api_integration/tests/correlations/latency_overall.ts +++ b/x-pack/test/apm_api_integration/tests/correlations/latency_overall.ts @@ -14,7 +14,7 @@ import { registry } from '../../common/registry'; export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const range = archives_metadata[archiveName]; const url = format({ @@ -42,7 +42,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { registry.when( 'correlations latency overall with data and default args', - { config: 'trial', archives: ['apm_8.0.0'] }, + { config: 'trial', archives: ['apm_opbeans_8.0.0'] }, () => { type ResponseBody = APIReturnType<'GET /api/apm/correlations/latency/overall_distribution'>; let response: { diff --git a/x-pack/test/apm_api_integration/tests/correlations/latency_slow_transactions.ts b/x-pack/test/apm_api_integration/tests/correlations/latency_slow_transactions.ts index 469ae22c86b24..f86b4c9d23ef0 100644 --- a/x-pack/test/apm_api_integration/tests/correlations/latency_slow_transactions.ts +++ b/x-pack/test/apm_api_integration/tests/correlations/latency_slow_transactions.ts @@ -14,7 +14,7 @@ import { registry } from '../../common/registry'; export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const range = archives_metadata[archiveName]; const url = format({ @@ -45,7 +45,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { registry.when( 'correlations latency slow transactions with data and default args', - { config: 'trial', archives: ['apm_8.0.0'] }, + { config: 'trial', archives: ['apm_opbeans_8.0.0'] }, () => { type ResponseBody = APIReturnType<'GET /api/apm/correlations/latency/slow_transactions'>; let response: { diff --git a/x-pack/test/apm_api_integration/tests/inspect/inspect.ts b/x-pack/test/apm_api_integration/tests/inspect/inspect.ts index 22623cb266203..b895455b87a09 100644 --- a/x-pack/test/apm_api_integration/tests/inspect/inspect.ts +++ b/x-pack/test/apm_api_integration/tests/inspect/inspect.ts @@ -14,7 +14,7 @@ import archives_metadata from '../../common/fixtures/es_archiver/archives_metada export default function customLinksTests({ getService }: FtrProviderContext) { const supertestRead = createApmApiSupertest(getService('supertest')); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const metadata = archives_metadata[archiveName]; registry.when('Inspect feature', { config: 'trial', archives: [archiveName] }, () => { diff --git a/x-pack/test/apm_api_integration/tests/observability_overview/has_data.ts b/x-pack/test/apm_api_integration/tests/observability_overview/has_data.ts index c6bdce217e229..bbe9aa8e78b73 100644 --- a/x-pack/test/apm_api_integration/tests/observability_overview/has_data.ts +++ b/x-pack/test/apm_api_integration/tests/observability_overview/has_data.ts @@ -44,7 +44,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { registry.when( 'Observability overview when APM data is loaded', - { config: 'basic', archives: ['apm_8.0.0'] }, + { config: 'basic', archives: ['apm_opbeans_8.0.0'] }, () => { it('returns true when there is at least one document on transaction, error or metrics indices', async () => { const response = await apmApiSupertest({ diff --git a/x-pack/test/apm_api_integration/tests/observability_overview/observability_overview.ts b/x-pack/test/apm_api_integration/tests/observability_overview/observability_overview.ts index 2baf74330fb22..116539c533964 100644 --- a/x-pack/test/apm_api_integration/tests/observability_overview/observability_overview.ts +++ b/x-pack/test/apm_api_integration/tests/observability_overview/observability_overview.ts @@ -14,7 +14,7 @@ import { roundNumber } from '../../utils'; export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const metadata = archives_metadata[archiveName]; // url parameters diff --git a/x-pack/test/apm_api_integration/tests/service_maps/service_maps.ts b/x-pack/test/apm_api_integration/tests/service_maps/service_maps.ts index a509b8386b1f0..875080278be25 100644 --- a/x-pack/test/apm_api_integration/tests/service_maps/service_maps.ts +++ b/x-pack/test/apm_api_integration/tests/service_maps/service_maps.ts @@ -18,7 +18,7 @@ export default function serviceMapsApiTests({ getService }: FtrProviderContext) const supertest = getService('supertest'); const supertestAsApmReadUserWithoutMlAccess = getService('supertestAsApmReadUserWithoutMlAccess'); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const metadata = archives_metadata[archiveName]; const start = encodeURIComponent(metadata.start); const end = encodeURIComponent(metadata.end); @@ -98,31 +98,34 @@ export default function serviceMapsApiTests({ getService }: FtrProviderContext) }); }); - registry.when('Service Map with data', { config: 'trial', archives: ['apm_8.0.0'] }, () => { - describe('/api/apm/service-map', () => { - let response: PromiseReturnType; - - before(async () => { - response = await supertest.get( - `/api/apm/service-map?start=${start}&end=${end}&environment=ENVIRONMENT_ALL` - ); - }); + registry.when( + 'Service Map with data', + { config: 'trial', archives: ['apm_opbeans_8.0.0'] }, + () => { + describe('/api/apm/service-map', () => { + let response: PromiseReturnType; + + before(async () => { + response = await supertest.get( + `/api/apm/service-map?start=${start}&end=${end}&environment=ENVIRONMENT_ALL` + ); + }); - it('returns service map elements', () => { - expect(response.status).to.be(200); - expect(response.body.elements.length).to.be.greaterThan(0); - }); + it('returns service map elements', () => { + expect(response.status).to.be(200); + expect(response.body.elements.length).to.be.greaterThan(0); + }); - it('returns the correct data', () => { - const elements: Array<{ data: Record }> = response.body.elements; + it('returns the correct data', () => { + const elements: Array<{ data: Record }> = response.body.elements; - const serviceNames = uniq( - elements - .filter((element) => element.data['service.name'] !== undefined) - .map((element) => element.data['service.name']) - ).sort(); + const serviceNames = uniq( + elements + .filter((element) => element.data['service.name'] !== undefined) + .map((element) => element.data['service.name']) + ).sort(); - expectSnapshot(serviceNames).toMatchInline(` + expectSnapshot(serviceNames).toMatchInline(` Array [ "auditbeat", "opbeans-dotnet", @@ -135,13 +138,13 @@ export default function serviceMapsApiTests({ getService }: FtrProviderContext) ] `); - const externalDestinations = uniq( - elements - .filter((element) => element.data.target?.startsWith('>')) - .map((element) => element.data.target) - ).sort(); + const externalDestinations = uniq( + elements + .filter((element) => element.data.target?.startsWith('>')) + .map((element) => element.data.target) + ).sort(); - expectSnapshot(externalDestinations).toMatchInline(` + expectSnapshot(externalDestinations).toMatchInline(` Array [ ">elasticsearch", ">postgresql", @@ -150,41 +153,43 @@ export default function serviceMapsApiTests({ getService }: FtrProviderContext) ] `); - expectSnapshot(elements).toMatch(); - }); + expectSnapshot(elements).toMatch(); + }); - describe('with ML data', () => { - describe('with the default apm user', () => { - before(async () => { - response = await supertest.get( - `/api/apm/service-map?start=${start}&end=${end}&environment=ENVIRONMENT_ALL` - ); - }); + describe('with ML data', () => { + describe('with the default apm user', () => { + before(async () => { + response = await supertest.get( + `/api/apm/service-map?start=${start}&end=${end}&environment=ENVIRONMENT_ALL` + ); + }); - it('returns service map elements with anomaly stats', () => { - expect(response.status).to.be(200); - const dataWithAnomalies = response.body.elements.filter( - (el: { data: { serviceAnomalyStats?: {} } }) => !isEmpty(el.data.serviceAnomalyStats) - ); + it('returns service map elements with anomaly stats', () => { + expect(response.status).to.be(200); + const dataWithAnomalies = response.body.elements.filter( + (el: { data: { serviceAnomalyStats?: {} } }) => + !isEmpty(el.data.serviceAnomalyStats) + ); - expect(dataWithAnomalies).not.to.be.empty(); + expect(dataWithAnomalies).not.to.be.empty(); - dataWithAnomalies.forEach(({ data }: any) => { - expect( - Object.values(data.serviceAnomalyStats).filter((value) => isEmpty(value)) - ).to.not.empty(); + dataWithAnomalies.forEach(({ data }: any) => { + expect( + Object.values(data.serviceAnomalyStats).filter((value) => isEmpty(value)) + ).to.not.empty(); + }); }); - }); - it('returns the correct anomaly stats', () => { - const dataWithAnomalies = response.body.elements.filter( - (el: { data: { serviceAnomalyStats?: {} } }) => !isEmpty(el.data.serviceAnomalyStats) - ); + it('returns the correct anomaly stats', () => { + const dataWithAnomalies = response.body.elements.filter( + (el: { data: { serviceAnomalyStats?: {} } }) => + !isEmpty(el.data.serviceAnomalyStats) + ); - expect(dataWithAnomalies).not.to.be.empty(); + expect(dataWithAnomalies).not.to.be.empty(); - expectSnapshot(dataWithAnomalies.length).toMatchInline(`7`); - expectSnapshot(dataWithAnomalies.slice(0, 3)).toMatchInline(` + expectSnapshot(dataWithAnomalies.length).toMatchInline(`7`); + expectSnapshot(dataWithAnomalies.slice(0, 3)).toMatchInline(` Array [ Object { "data": Object { @@ -237,63 +242,64 @@ export default function serviceMapsApiTests({ getService }: FtrProviderContext) ] `); - expectSnapshot(response.body).toMatch(); + expectSnapshot(response.body).toMatch(); + }); }); - }); - describe('with a user that does not have access to ML', () => { - before(async () => { - response = await supertestAsApmReadUserWithoutMlAccess.get( - `/api/apm/service-map?start=${start}&end=${end}&environment=ENVIRONMENT_ALL` - ); - }); + describe('with a user that does not have access to ML', () => { + before(async () => { + response = await supertestAsApmReadUserWithoutMlAccess.get( + `/api/apm/service-map?start=${start}&end=${end}&environment=ENVIRONMENT_ALL` + ); + }); - it('returns service map elements without anomaly stats', () => { - expect(response.status).to.be(200); + it('returns service map elements without anomaly stats', () => { + expect(response.status).to.be(200); - const dataWithAnomalies = response.body.elements.filter( - (el: { data: { serviceAnomalyStats?: {} } }) => !isEmpty(el.data.serviceAnomalyStats) - ); + const dataWithAnomalies = response.body.elements.filter( + (el: { data: { serviceAnomalyStats?: {} } }) => + !isEmpty(el.data.serviceAnomalyStats) + ); - expect(dataWithAnomalies).to.be.empty(); + expect(dataWithAnomalies).to.be.empty(); + }); }); }); - }); - describe('with a single service', () => { - describe('when ENVIRONMENT_ALL is selected', () => { - it('returns service map elements', async () => { - response = await supertest.get( - url.format({ - pathname: '/api/apm/service-map', - query: { - environment: 'ENVIRONMENT_ALL', - start: metadata.start, - end: metadata.end, - serviceName: 'opbeans-java', - }, - }) - ); + describe('with a single service', () => { + describe('when ENVIRONMENT_ALL is selected', () => { + it('returns service map elements', async () => { + response = await supertest.get( + url.format({ + pathname: '/api/apm/service-map', + query: { + environment: 'ENVIRONMENT_ALL', + start: metadata.start, + end: metadata.end, + serviceName: 'opbeans-java', + }, + }) + ); - expect(response.status).to.be(200); - expect(response.body.elements.length).to.be.greaterThan(1); + expect(response.status).to.be(200); + expect(response.body.elements.length).to.be.greaterThan(1); + }); }); }); }); - }); - describe('/api/apm/service-map/service/{serviceName}', () => { - it('returns an object with data', async () => { - const q = querystring.stringify({ - start: metadata.start, - end: metadata.end, - environment: 'ENVIRONMENT_ALL', - }); - const response = await supertest.get(`/api/apm/service-map/service/opbeans-node?${q}`); + describe('/api/apm/service-map/service/{serviceName}', () => { + it('returns an object with data', async () => { + const q = querystring.stringify({ + start: metadata.start, + end: metadata.end, + environment: 'ENVIRONMENT_ALL', + }); + const response = await supertest.get(`/api/apm/service-map/service/opbeans-node?${q}`); - expect(response.status).to.be(200); + expect(response.status).to.be(200); - expectSnapshot(response.body).toMatchInline(` + expectSnapshot(response.body).toMatchInline(` Object { "avgCpuUsage": 0.240216666666667, "avgErrorRate": 0, @@ -304,21 +310,21 @@ export default function serviceMapsApiTests({ getService }: FtrProviderContext) }, } `); + }); }); - }); - describe('/api/apm/service-map/backend/{backendName}', () => { - it('returns an object with data', async () => { - const q = querystring.stringify({ - start: metadata.start, - end: metadata.end, - environment: 'ENVIRONMENT_ALL', - }); - const response = await supertest.get(`/api/apm/service-map/backend/postgresql?${q}`); + describe('/api/apm/service-map/backend/{backendName}', () => { + it('returns an object with data', async () => { + const q = querystring.stringify({ + start: metadata.start, + end: metadata.end, + environment: 'ENVIRONMENT_ALL', + }); + const response = await supertest.get(`/api/apm/service-map/backend/postgresql?${q}`); - expect(response.status).to.be(200); + expect(response.status).to.be(200); - expectSnapshot(response.body).toMatchInline(` + expectSnapshot(response.body).toMatchInline(` Object { "avgErrorRate": 0, "transactionStats": Object { @@ -327,7 +333,8 @@ export default function serviceMapsApiTests({ getService }: FtrProviderContext) }, } `); + }); }); - }); - }); + } + ); } diff --git a/x-pack/test/apm_api_integration/tests/service_overview/dependencies/index.ts b/x-pack/test/apm_api_integration/tests/service_overview/dependencies/index.ts index 942378477f04c..535a1b722cf96 100644 --- a/x-pack/test/apm_api_integration/tests/service_overview/dependencies/index.ts +++ b/x-pack/test/apm_api_integration/tests/service_overview/dependencies/index.ts @@ -25,7 +25,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { const apmApiSupertest = createApmApiSupertest(getService('supertest')); const es = getService('es'); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const { start, end } = archives[archiveName]; function getName(node: Node) { diff --git a/x-pack/test/apm_api_integration/tests/service_overview/instance_details.ts b/x-pack/test/apm_api_integration/tests/service_overview/instance_details.ts index 52525abe50373..710eb1f078369 100644 --- a/x-pack/test/apm_api_integration/tests/service_overview/instance_details.ts +++ b/x-pack/test/apm_api_integration/tests/service_overview/instance_details.ts @@ -19,7 +19,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); const apmApiSupertest = createApmApiSupertest(supertest); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const { start, end } = archives[archiveName]; registry.when( diff --git a/x-pack/test/apm_api_integration/tests/service_overview/instances_detailed_statistics.ts b/x-pack/test/apm_api_integration/tests/service_overview/instances_detailed_statistics.ts index cdea0da2671bb..6120c07e1b62c 100644 --- a/x-pack/test/apm_api_integration/tests/service_overview/instances_detailed_statistics.ts +++ b/x-pack/test/apm_api_integration/tests/service_overview/instances_detailed_statistics.ts @@ -21,7 +21,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); const apmApiSupertest = createApmApiSupertest(supertest); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const { start, end } = archives[archiveName]; interface Response { diff --git a/x-pack/test/apm_api_integration/tests/service_overview/instances_main_statistics.ts b/x-pack/test/apm_api_integration/tests/service_overview/instances_main_statistics.ts index d8b51a1a4ddbd..9e30d757788cf 100644 --- a/x-pack/test/apm_api_integration/tests/service_overview/instances_main_statistics.ts +++ b/x-pack/test/apm_api_integration/tests/service_overview/instances_main_statistics.ts @@ -19,7 +19,7 @@ import { LatencyAggregationType } from '../../../../plugins/apm/common/latency_a export default function ApiTest({ getService }: FtrProviderContext) { const apmApiSupertest = createApmApiSupertest(getService('supertest')); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const { start, end } = archives[archiveName]; registry.when( diff --git a/x-pack/test/apm_api_integration/tests/services/agent.ts b/x-pack/test/apm_api_integration/tests/services/agent.ts index 5fd222c72a3b2..6e1ed30370a13 100644 --- a/x-pack/test/apm_api_integration/tests/services/agent.ts +++ b/x-pack/test/apm_api_integration/tests/services/agent.ts @@ -13,7 +13,7 @@ import { registry } from '../../common/registry'; export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const range = archives[archiveName]; const start = encodeURIComponent(range.start); const end = encodeURIComponent(range.end); diff --git a/x-pack/test/apm_api_integration/tests/services/error_groups_detailed_statistics.ts b/x-pack/test/apm_api_integration/tests/services/error_groups_detailed_statistics.ts index d7eea2d24ddd3..149b3cfb539aa 100644 --- a/x-pack/test/apm_api_integration/tests/services/error_groups_detailed_statistics.ts +++ b/x-pack/test/apm_api_integration/tests/services/error_groups_detailed_statistics.ts @@ -21,7 +21,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); const apmApiSupertest = createApmApiSupertest(supertest); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const metadata = archives_metadata[archiveName]; const { start, end } = metadata; diff --git a/x-pack/test/apm_api_integration/tests/services/error_groups_main_statistics.ts b/x-pack/test/apm_api_integration/tests/services/error_groups_main_statistics.ts index 1dbd01cd9b4f7..1c99119fe3244 100644 --- a/x-pack/test/apm_api_integration/tests/services/error_groups_main_statistics.ts +++ b/x-pack/test/apm_api_integration/tests/services/error_groups_main_statistics.ts @@ -17,7 +17,7 @@ type ErrorGroupsMainStatistics = APIReturnType<'GET /api/apm/services/{serviceNa export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const metadata = archives_metadata[archiveName]; const { start, end } = metadata; diff --git a/x-pack/test/apm_api_integration/tests/services/service_details.ts b/x-pack/test/apm_api_integration/tests/services/service_details.ts index 1f4b4a2c9909b..195a8e8d50da6 100644 --- a/x-pack/test/apm_api_integration/tests/services/service_details.ts +++ b/x-pack/test/apm_api_integration/tests/services/service_details.ts @@ -14,7 +14,7 @@ import { registry } from '../../common/registry'; export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const { start, end } = archives[archiveName]; registry.when( diff --git a/x-pack/test/apm_api_integration/tests/services/service_icons.ts b/x-pack/test/apm_api_integration/tests/services/service_icons.ts index 5f16ad1d57f2b..63bc9528134d1 100644 --- a/x-pack/test/apm_api_integration/tests/services/service_icons.ts +++ b/x-pack/test/apm_api_integration/tests/services/service_icons.ts @@ -14,7 +14,7 @@ import { registry } from '../../common/registry'; export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const { start, end } = archives[archiveName]; registry.when('Service icons when data is not loaded', { config: 'basic', archives: [] }, () => { diff --git a/x-pack/test/apm_api_integration/tests/services/services_detailed_statistics.ts b/x-pack/test/apm_api_integration/tests/services/services_detailed_statistics.ts index f19cb71018be0..44245b3a04b0e 100644 --- a/x-pack/test/apm_api_integration/tests/services/services_detailed_statistics.ts +++ b/x-pack/test/apm_api_integration/tests/services/services_detailed_statistics.ts @@ -18,7 +18,7 @@ type ServicesDetailedStatisticsReturn = APIReturnType<'GET /api/apm/services/det export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const metadata = archives_metadata[archiveName]; const { start, end } = metadata; const serviceNames = ['opbeans-java', 'opbeans-go']; diff --git a/x-pack/test/apm_api_integration/tests/services/throughput.ts b/x-pack/test/apm_api_integration/tests/services/throughput.ts index 07da146cbf452..482e6ad653c5f 100644 --- a/x-pack/test/apm_api_integration/tests/services/throughput.ts +++ b/x-pack/test/apm_api_integration/tests/services/throughput.ts @@ -20,7 +20,7 @@ type ThroughputReturn = APIReturnType<'GET /api/apm/services/{serviceName}/throu export default function ApiTest({ getService }: FtrProviderContext) { const apmApiSupertest = createApmApiSupertest(getService('supertest')); - const archiveName = 'apm_data_generation_8.0.0'; + const archiveName = 'apm_synthetic_8.0.0'; const metadata = archives_metadata[archiveName]; registry.when('Throughput when data is not loaded', { config: 'basic', archives: [] }, () => { diff --git a/x-pack/test/apm_api_integration/tests/services/top_services.ts b/x-pack/test/apm_api_integration/tests/services/top_services.ts index a9562ee4f7597..6a80273938683 100644 --- a/x-pack/test/apm_api_integration/tests/services/top_services.ts +++ b/x-pack/test/apm_api_integration/tests/services/top_services.ts @@ -17,7 +17,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); const supertestAsApmReadUserWithoutMlAccess = getService('supertestAsApmReadUserWithoutMlAccess'); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const range = archives_metadata[archiveName]; diff --git a/x-pack/test/apm_api_integration/tests/services/transaction_types.ts b/x-pack/test/apm_api_integration/tests/services/transaction_types.ts index 568d75c3e9cc7..95621d05741b6 100644 --- a/x-pack/test/apm_api_integration/tests/services/transaction_types.ts +++ b/x-pack/test/apm_api_integration/tests/services/transaction_types.ts @@ -13,7 +13,7 @@ import { registry } from '../../common/registry'; export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const metadata = archives_metadata[archiveName]; // url parameters diff --git a/x-pack/test/apm_api_integration/tests/settings/agent_configuration.ts b/x-pack/test/apm_api_integration/tests/settings/agent_configuration.ts index 166c95b5f6de7..9b30ed2c70ca1 100644 --- a/x-pack/test/apm_api_integration/tests/settings/agent_configuration.ts +++ b/x-pack/test/apm_api_integration/tests/settings/agent_configuration.ts @@ -19,7 +19,7 @@ export default function agentConfigurationTests({ getService }: FtrProviderConte const log = getService('log'); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; function getServices() { return supertestRead({ diff --git a/x-pack/test/apm_api_integration/tests/settings/custom_link.ts b/x-pack/test/apm_api_integration/tests/settings/custom_link.ts index 7f1fb7df68390..c9b0156db5fff 100644 --- a/x-pack/test/apm_api_integration/tests/settings/custom_link.ts +++ b/x-pack/test/apm_api_integration/tests/settings/custom_link.ts @@ -16,7 +16,7 @@ export default function customLinksTests({ getService }: FtrProviderContext) { const supertestWrite = createApmApiSupertest(getService('supertestAsApmWriteUser')); const log = getService('log'); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; registry.when('Custom links with a basic license', { config: 'basic', archives: [] }, () => { it('returns a 403 forbidden', async () => { diff --git a/x-pack/test/apm_api_integration/tests/throughput/index.ts b/x-pack/test/apm_api_integration/tests/throughput/index.ts index d050c62442702..c01b0ed786e88 100644 --- a/x-pack/test/apm_api_integration/tests/throughput/index.ts +++ b/x-pack/test/apm_api_integration/tests/throughput/index.ts @@ -19,7 +19,7 @@ import { roundNumber } from '../../utils'; export default function ApiTest({ getService }: FtrProviderContext) { const apmApiSupertest = createApmApiSupertest(getService('supertest')); - const archiveName = 'apm_data_generation_8.0.0'; + const archiveName = 'apm_synthetic_8.0.0'; const metadata = archives_metadata[archiveName]; async function getThroughputValues({ diff --git a/x-pack/test/apm_api_integration/tests/traces/top_traces.ts b/x-pack/test/apm_api_integration/tests/traces/top_traces.ts index 670d21a8c4e00..4d596bc935a61 100644 --- a/x-pack/test/apm_api_integration/tests/traces/top_traces.ts +++ b/x-pack/test/apm_api_integration/tests/traces/top_traces.ts @@ -14,7 +14,7 @@ import { registry } from '../../common/registry'; export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const metadata = archives_metadata[archiveName]; // url parameters diff --git a/x-pack/test/apm_api_integration/tests/transactions/breakdown.ts b/x-pack/test/apm_api_integration/tests/transactions/breakdown.ts index 92fdbc3588e39..5f942b8b7cfc1 100644 --- a/x-pack/test/apm_api_integration/tests/transactions/breakdown.ts +++ b/x-pack/test/apm_api_integration/tests/transactions/breakdown.ts @@ -13,7 +13,7 @@ import { registry } from '../../common/registry'; export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const metadata = archives_metadata[archiveName]; const start = encodeURIComponent(metadata.start); diff --git a/x-pack/test/apm_api_integration/tests/transactions/error_rate.ts b/x-pack/test/apm_api_integration/tests/transactions/error_rate.ts index c302d87d92ef9..6923d4c901fdc 100644 --- a/x-pack/test/apm_api_integration/tests/transactions/error_rate.ts +++ b/x-pack/test/apm_api_integration/tests/transactions/error_rate.ts @@ -19,7 +19,7 @@ type ErrorRate = APIReturnType<'GET /api/apm/services/{serviceName}/transactions export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; // url parameters const { start, end } = archives_metadata[archiveName]; diff --git a/x-pack/test/apm_api_integration/tests/transactions/latency.ts b/x-pack/test/apm_api_integration/tests/transactions/latency.ts index c39ca76036e33..f8e59ec7ef45f 100644 --- a/x-pack/test/apm_api_integration/tests/transactions/latency.ts +++ b/x-pack/test/apm_api_integration/tests/transactions/latency.ts @@ -19,7 +19,7 @@ type LatencyChartReturnType = APIReturnType<'GET /api/apm/services/{serviceName} export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const { start, end } = archives_metadata[archiveName]; diff --git a/x-pack/test/apm_api_integration/tests/transactions/trace_samples.ts b/x-pack/test/apm_api_integration/tests/transactions/trace_samples.ts index 73b1bbfd781d0..45a25e2096afe 100644 --- a/x-pack/test/apm_api_integration/tests/transactions/trace_samples.ts +++ b/x-pack/test/apm_api_integration/tests/transactions/trace_samples.ts @@ -14,7 +14,7 @@ import { registry } from '../../common/registry'; export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const metadata = archives_metadata[archiveName]; const url = `/api/apm/services/opbeans-java/transactions/traces/samples?${qs.stringify({ diff --git a/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_detailed_statistics.ts b/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_detailed_statistics.ts index b71079b881206..b25830755eb31 100644 --- a/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_detailed_statistics.ts +++ b/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_detailed_statistics.ts @@ -20,7 +20,7 @@ type TransactionsGroupsDetailedStatistics = APIReturnType<'GET /api/apm/services export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const { start, end } = archives[archiveName]; const transactionNames = ['DispatcherServlet#doGet', 'APIRestController#customers']; diff --git a/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_main_statistics.ts b/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_main_statistics.ts index b659618499d35..673cf5b4a9705 100644 --- a/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_main_statistics.ts +++ b/x-pack/test/apm_api_integration/tests/transactions/transactions_groups_main_statistics.ts @@ -18,7 +18,7 @@ type TransactionsGroupsPrimaryStatistics = APIReturnType<'GET /api/apm/services/ export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const archiveName = 'apm_8.0.0'; + const archiveName = 'apm_opbeans_8.0.0'; const { start, end } = archives[archiveName]; registry.when(