Skip to content

Commit c03c7b3

Browse files
[Security Solution] Refactor Hosts Kpi to use Search Strategy (#77606)
1 parent c63ee1b commit c03c7b3

File tree

60 files changed

+1663
-842
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+1663
-842
lines changed

x-pack/plugins/security_solution/common/search_strategy/security_solution/hosts/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export * from './authentications';
99
export * from './common';
1010
export * from './details';
1111
export * from './first_last_seen';
12+
export * from './kpi';
1213
export * from './overview';
1314
export * from './uncommon_processes';
1415

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
7+
import { IEsSearchResponse } from '../../../../../../../../../src/plugins/data/common';
8+
import { Inspect, Maybe } from '../../../../common';
9+
import { RequestBasicOptions } from '../../..';
10+
import { HostsKpiHistogramData } from '../common';
11+
12+
export interface HostsKpiAuthenticationsHistogramCount {
13+
doc_count: number;
14+
}
15+
16+
export type HostsKpiAuthenticationsRequestOptions = RequestBasicOptions;
17+
18+
export interface HostsKpiAuthenticationsStrategyResponse extends IEsSearchResponse {
19+
authenticationsSuccess: Maybe<number>;
20+
authenticationsSuccessHistogram: Maybe<HostsKpiHistogramData[]>;
21+
authenticationsFailure: Maybe<number>;
22+
authenticationsFailureHistogram: Maybe<HostsKpiHistogramData[]>;
23+
inspect?: Maybe<Inspect>;
24+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
7+
/*
8+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
9+
* or more contributor license agreements. Licensed under the Elastic License;
10+
* you may not use this file except in compliance with the Elastic License.
11+
*/
12+
13+
import { Maybe } from '../../../../common';
14+
15+
export interface HostsKpiHistogramData {
16+
x?: Maybe<number>;
17+
y?: Maybe<number>;
18+
}
19+
20+
export interface HostsKpiHistogram<T> {
21+
key_as_string: string;
22+
key: number;
23+
doc_count: number;
24+
count: T;
25+
}
26+
27+
export interface HostsKpiGeneralHistogramCount {
28+
value: number;
29+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
7+
import { IEsSearchResponse } from '../../../../../../../../../src/plugins/data/common';
8+
import { Inspect, Maybe } from '../../../../common';
9+
import { RequestBasicOptions } from '../../..';
10+
import { HostsKpiHistogramData } from '../common';
11+
12+
export type HostsKpiHostsRequestOptions = RequestBasicOptions;
13+
14+
export interface HostsKpiHostsStrategyResponse extends IEsSearchResponse {
15+
hosts: Maybe<number>;
16+
hostsHistogram: Maybe<HostsKpiHistogramData[]>;
17+
inspect?: Maybe<Inspect>;
18+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
7+
export * from './authentications';
8+
export * from './common';
9+
export * from './hosts';
10+
export * from './unique_ips';
11+
12+
import { HostsKpiAuthenticationsStrategyResponse } from './authentications';
13+
import { HostsKpiHostsStrategyResponse } from './hosts';
14+
import { HostsKpiUniqueIpsStrategyResponse } from './unique_ips';
15+
16+
export enum HostsKpiQueries {
17+
kpiAuthentications = 'hostsKpiAuthentications',
18+
kpiHosts = 'hostsKpiHosts',
19+
kpiUniqueIps = 'hostsKpiUniqueIps',
20+
}
21+
22+
export type HostsKpiStrategyResponse =
23+
| Omit<HostsKpiAuthenticationsStrategyResponse, 'rawResponse'>
24+
| Omit<HostsKpiHostsStrategyResponse, 'rawResponse'>
25+
| Omit<HostsKpiUniqueIpsStrategyResponse, 'rawResponse'>;
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
7+
import { IEsSearchResponse } from '../../../../../../../../../src/plugins/data/common';
8+
import { Inspect, Maybe } from '../../../../common';
9+
import { RequestBasicOptions } from '../../..';
10+
import { HostsKpiHistogramData } from '../common';
11+
12+
export type HostsKpiUniqueIpsRequestOptions = RequestBasicOptions;
13+
14+
export interface HostsKpiUniqueIpsStrategyResponse extends IEsSearchResponse {
15+
uniqueSourceIps: Maybe<number>;
16+
uniqueSourceIpsHistogram: Maybe<HostsKpiHistogramData[]>;
17+
uniqueDestinationIps: Maybe<number>;
18+
uniqueDestinationIpsHistogram: Maybe<HostsKpiHistogramData[]>;
19+
inspect?: Maybe<Inspect>;
20+
}

x-pack/plugins/security_solution/common/search_strategy/security_solution/index.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,13 @@ import {
2020
HostsStrategyResponse,
2121
HostUncommonProcessesStrategyResponse,
2222
HostUncommonProcessesRequestOptions,
23+
HostsKpiQueries,
24+
HostsKpiAuthenticationsStrategyResponse,
25+
HostsKpiAuthenticationsRequestOptions,
26+
HostsKpiHostsStrategyResponse,
27+
HostsKpiHostsRequestOptions,
28+
HostsKpiUniqueIpsStrategyResponse,
29+
HostsKpiUniqueIpsRequestOptions,
2330
} from './hosts';
2431
import {
2532
NetworkQueries,
@@ -70,6 +77,7 @@ export * from './network';
7077

7178
export type FactoryQueryTypes =
7279
| HostsQueries
80+
| HostsKpiQueries
7381
| NetworkQueries
7482
| NetworkKpiQueries
7583
| typeof MatrixHistogramQuery;
@@ -106,6 +114,12 @@ export type StrategyResponseType<T extends FactoryQueryTypes> = T extends HostsQ
106114
? HostFirstLastSeenStrategyResponse
107115
: T extends HostsQueries.uncommonProcesses
108116
? HostUncommonProcessesStrategyResponse
117+
: T extends HostsKpiQueries.kpiAuthentications
118+
? HostsKpiAuthenticationsStrategyResponse
119+
: T extends HostsKpiQueries.kpiHosts
120+
? HostsKpiHostsStrategyResponse
121+
: T extends HostsKpiQueries.kpiUniqueIps
122+
? HostsKpiUniqueIpsStrategyResponse
109123
: T extends NetworkQueries.details
110124
? NetworkDetailsStrategyResponse
111125
: T extends NetworkQueries.dns
@@ -148,6 +162,12 @@ export type StrategyRequestType<T extends FactoryQueryTypes> = T extends HostsQu
148162
? HostFirstLastSeenRequestOptions
149163
: T extends HostsQueries.uncommonProcesses
150164
? HostUncommonProcessesRequestOptions
165+
: T extends HostsKpiQueries.kpiAuthentications
166+
? HostsKpiAuthenticationsRequestOptions
167+
: T extends HostsKpiQueries.kpiHosts
168+
? HostsKpiHostsRequestOptions
169+
: T extends HostsKpiQueries.kpiUniqueIps
170+
? HostsKpiUniqueIpsRequestOptions
151171
: T extends NetworkQueries.details
152172
? NetworkDetailsRequestOptions
153173
: T extends NetworkQueries.dns

x-pack/plugins/security_solution/public/common/components/stat_items/index.test.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,10 @@ import {
3939
} from '../../mock';
4040
import { State, createStore } from '../../store';
4141
import { Provider as ReduxStoreProvider } from 'react-redux';
42-
import { KpiHostsData } from '../../../graphql/types';
43-
import { NetworkKpiStrategyResponse } from '../../../../common/search_strategy';
42+
import {
43+
HostsKpiStrategyResponse,
44+
NetworkKpiStrategyResponse,
45+
} from '../../../../common/search_strategy';
4446

4547
const from = '2019-06-15T06:00:00.000Z';
4648
const to = '2019-06-18T06:00:00.000Z';
@@ -242,7 +244,7 @@ describe('useKpiMatrixStatus', () => {
242244
data,
243245
}: {
244246
fieldsMapping: Readonly<StatItems[]>;
245-
data: NetworkKpiStrategyResponse | KpiHostsData;
247+
data: NetworkKpiStrategyResponse | HostsKpiStrategyResponse;
246248
}) => {
247249
const statItemsProps: StatItemsProps[] = useKpiMatrixStatus(
248250
fieldsMapping,

x-pack/plugins/security_solution/public/common/components/stat_items/index.tsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@ import { get, getOr } from 'lodash/fp';
1818
import React, { useState, useEffect } from 'react';
1919
import styled from 'styled-components';
2020

21-
import { NetworkKpiStrategyResponse } from '../../../../common/search_strategy';
22-
import { KpiHostsData } from '../../../graphql/types';
21+
import {
22+
HostsKpiStrategyResponse,
23+
NetworkKpiStrategyResponse,
24+
} from '../../../../common/search_strategy';
2325
import { AreaChart } from '../charts/areachart';
2426
import { BarChart } from '../charts/barchart';
2527
import { ChartSeriesData, ChartData, ChartSeriesConfigs, UpdateDateRange } from '../charts/common';
@@ -113,12 +115,12 @@ export const barchartConfigs = (config?: { onElementClick?: ElementClickListener
113115

114116
export const addValueToFields = (
115117
fields: StatItem[],
116-
data: KpiHostsData | NetworkKpiStrategyResponse
118+
data: HostsKpiStrategyResponse | NetworkKpiStrategyResponse
117119
): StatItem[] => fields.map((field) => ({ ...field, value: get(field.key, data) }));
118120

119121
export const addValueToAreaChart = (
120122
fields: StatItem[],
121-
data: KpiHostsData | NetworkKpiStrategyResponse
123+
data: HostsKpiStrategyResponse | NetworkKpiStrategyResponse
122124
): ChartSeriesData[] =>
123125
fields
124126
.filter((field) => get(`${field.key}Histogram`, data) != null)
@@ -130,7 +132,7 @@ export const addValueToAreaChart = (
130132

131133
export const addValueToBarChart = (
132134
fields: StatItem[],
133-
data: KpiHostsData | NetworkKpiStrategyResponse
135+
data: HostsKpiStrategyResponse | NetworkKpiStrategyResponse
134136
): ChartSeriesData[] => {
135137
if (fields.length === 0) return [];
136138
return fields.reduce((acc: ChartSeriesData[], field: StatItem, idx: number) => {
@@ -159,7 +161,7 @@ export const addValueToBarChart = (
159161

160162
export const useKpiMatrixStatus = (
161163
mappings: Readonly<StatItems[]>,
162-
data: KpiHostsData | NetworkKpiStrategyResponse,
164+
data: HostsKpiStrategyResponse | NetworkKpiStrategyResponse,
163165
id: string,
164166
from: string,
165167
to: string,

x-pack/plugins/security_solution/public/hosts/components/authentications_table/translations.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import { i18n } from '@kbn/i18n';
88

99
export const AUTHENTICATIONS = i18n.translate(
10-
'xpack.securitySolution.authenticationsTable.authenticationFailures',
10+
'xpack.securitySolution.authenticationsTable.authentications',
1111
{
1212
defaultMessage: 'Authentications',
1313
}

0 commit comments

Comments
 (0)