diff --git a/x-pack/plugins/infra/common/http_api/snapshot_api.ts b/x-pack/plugins/infra/common/http_api/snapshot_api.ts index 3f8e4b5597f31..6b3a683ef7d26 100644 --- a/x-pack/plugins/infra/common/http_api/snapshot_api.ts +++ b/x-pack/plugins/infra/common/http_api/snapshot_api.ts @@ -115,6 +115,7 @@ export const SnapshotRequestRT = rt.intersection([ region: rt.string, filterQuery: rt.union([rt.string, rt.null]), overrideCompositeSize: rt.number, + dropPartialBuckets: rt.boolean, }), ]); diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpi_charts/tile.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpi_charts/tile.tsx index ed5d0f5831ca6..1b86c5a543d06 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpi_charts/tile.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpi_charts/tile.tsx @@ -22,6 +22,7 @@ export const Tile = ({ type, ...props }: Props) => { metrics: [{ type }], groupBy: null, includeTimeseries: true, + dropPartialBuckets: false, }); return ; diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_snaphot.ts b/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_snaphot.ts index 8818fac0e39ee..ae39a5f03ea7e 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_snaphot.ts +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_snaphot.ts @@ -34,6 +34,7 @@ export function useSnapshot({ groupBy = null, sendRequestImmediately = true, includeTimeseries = true, + dropPartialBuckets = true, requestTs, ...args }: UseSnapshotRequest) { @@ -56,6 +57,7 @@ export function useSnapshot({ lookbackSize: 5, }, includeTimeseries, + dropPartialBuckets, }; const { error, loading, response, makeRequest } = useHTTPRequest( diff --git a/x-pack/plugins/infra/server/routes/snapshot/lib/transform_metrics_ui_response.ts b/x-pack/plugins/infra/server/routes/snapshot/lib/transform_metrics_ui_response.ts index 4b3682db3d1f6..f11a67ecb4a0c 100644 --- a/x-pack/plugins/infra/server/routes/snapshot/lib/transform_metrics_ui_response.ts +++ b/x-pack/plugins/infra/server/routes/snapshot/lib/transform_metrics_ui_response.ts @@ -23,7 +23,7 @@ import { applyMetadataToLastPath } from './apply_metadata_to_last_path'; const getMetricValue = (row: MetricsAPIRow) => { if (!isNumber(row.metric_0)) return null; const value = row.metric_0; - return isFinite(value) ? value : null; + return Number.isFinite(value) ? value : null; }; const calculateMax = (rows: MetricsAPIRow[]) => { @@ -31,7 +31,8 @@ const calculateMax = (rows: MetricsAPIRow[]) => { }; const calculateAvg = (rows: MetricsAPIRow[]): number => { - return sum(rows.map(getMetricValue)) / rows.length || 0; + const values = rows.map(getMetricValue).filter(Number.isFinite); + return sum(values) / Math.max(values.length, 1); }; const getLastValue = (rows: MetricsAPIRow[]) => { diff --git a/x-pack/plugins/infra/server/routes/snapshot/lib/transform_request_to_metrics_api_request.ts b/x-pack/plugins/infra/server/routes/snapshot/lib/transform_request_to_metrics_api_request.ts index ae342cfad7b28..890295561e3a7 100644 --- a/x-pack/plugins/infra/server/routes/snapshot/lib/transform_request_to_metrics_api_request.ts +++ b/x-pack/plugins/infra/server/routes/snapshot/lib/transform_request_to_metrics_api_request.ts @@ -45,7 +45,7 @@ export const transformRequestToMetricsAPIRequest = async ({ ? snapshotRequest.overrideCompositeSize : compositeSize, alignDataToEnd: true, - dropPartialBuckets: true, + dropPartialBuckets: snapshotRequest.dropPartialBuckets ?? true, includeTimeseries: snapshotRequest.includeTimeseries, }; diff --git a/x-pack/test/api_integration/apis/metrics_ui/snapshot.ts b/x-pack/test/api_integration/apis/metrics_ui/snapshot.ts index 9fa041108964e..8eef4dc32df1c 100644 --- a/x-pack/test/api_integration/apis/metrics_ui/snapshot.ts +++ b/x-pack/test/api_integration/apis/metrics_ui/snapshot.ts @@ -248,7 +248,7 @@ export default function ({ getService }: FtrProviderContext) { name: 'cpu', value: null, max: 0.47105555555555556, - avg: 0.0672936507936508, + avg: 0.47105555555555556, }; expect(snapshot).to.have.property('nodes');