Skip to content

Commit

Permalink
[RAM] Bug ordering log KPI (#142940)
Browse files Browse the repository at this point in the history
* add ordering + bigger bucket for the KPI

* css cleanup
  • Loading branch information
XavierM authored Oct 11, 2022
1 parent 44a4b98 commit 2efcf7a
Show file tree
Hide file tree
Showing 7 changed files with 168 additions and 75 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1711,13 +1711,18 @@ describe('getExecutionKPIAggregation', () => {
executionUuid: {
terms: {
field: 'kibana.alert.rule.execution.uuid',
size: 1000,
order: [
{
'ruleExecution>executeStartTime': 'desc',
},
],
size: 10000,
},
aggs: {
executionUuidSorted: {
bucket_sort: {
from: 0,
size: 1000,
size: 10000,
gap_policy: 'insert_zeros',
},
},
Expand Down Expand Up @@ -1777,6 +1782,11 @@ describe('getExecutionKPIAggregation', () => {
},
},
aggs: {
executeStartTime: {
min: {
field: 'event.start',
},
},
numTriggeredActions: {
sum: {
field: 'kibana.alert.rule.execution.metrics.number_of_triggered_actions',
Expand Down Expand Up @@ -1850,13 +1860,18 @@ describe('getExecutionKPIAggregation', () => {
executionUuid: {
terms: {
field: 'kibana.alert.rule.execution.uuid',
size: 1000,
order: [
{
'ruleExecution>executeStartTime': 'desc',
},
],
size: 10000,
},
aggs: {
executionUuidSorted: {
bucket_sort: {
from: 0,
size: 1000,
size: 10000,
gap_policy: 'insert_zeros',
},
},
Expand Down Expand Up @@ -1928,6 +1943,11 @@ describe('getExecutionKPIAggregation', () => {
},
},
aggs: {
executeStartTime: {
min: {
field: 'event.start',
},
},
numTriggeredActions: {
sum: {
field: 'kibana.alert.rule.execution.metrics.number_of_triggered_actions',
Expand Down Expand Up @@ -2001,13 +2021,18 @@ describe('getExecutionKPIAggregation', () => {
executionUuid: {
terms: {
field: 'kibana.alert.rule.execution.uuid',
size: 1000,
order: [
{
'ruleExecution>executeStartTime': 'desc',
},
],
size: 10000,
},
aggs: {
executionUuidSorted: {
bucket_sort: {
from: 0,
size: 1000,
size: 10000,
gap_policy: 'insert_zeros',
},
},
Expand Down Expand Up @@ -2079,6 +2104,11 @@ describe('getExecutionKPIAggregation', () => {
},
},
aggs: {
executeStartTime: {
min: {
field: 'event.start',
},
},
numTriggeredActions: {
sum: {
field: 'kibana.alert.rule.execution.metrics.number_of_triggered_actions',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import { parseDuration } from '.';
import { IExecutionLog, IExecutionLogResult, EMPTY_EXECUTION_KPI_RESULT } from '../../common';

const DEFAULT_MAX_BUCKETS_LIMIT = 1000; // do not retrieve more than this number of executions
const DEFAULT_MAX_KPI_BUCKETS_LIMIT = 10000;

const RULE_ID_FIELD = 'rule.id';
const RULE_NAME_FIELD = 'rule.name';
Expand Down Expand Up @@ -148,13 +149,14 @@ export const getExecutionKPIAggregation = (filter?: IExecutionLogAggOptions['fil
// Bucket by execution UUID
terms: {
field: EXECUTION_UUID_FIELD,
size: DEFAULT_MAX_BUCKETS_LIMIT,
size: DEFAULT_MAX_KPI_BUCKETS_LIMIT,
order: formatSortForTermSort([{ timestamp: { order: 'desc' } }]),
},
aggs: {
executionUuidSorted: {
bucket_sort: {
from: 0,
size: 1000,
size: DEFAULT_MAX_KPI_BUCKETS_LIMIT,
gap_policy: 'insert_zeros' as estypes.AggregationsGapPolicy,
},
},
Expand All @@ -181,6 +183,11 @@ export const getExecutionKPIAggregation = (filter?: IExecutionLogAggOptions['fil
},
},
aggs: {
executeStartTime: {
min: {
field: START_FIELD,
},
},
numTriggeredActions: {
sum: {
field: 'kibana.alert.rule.execution.metrics.number_of_triggered_actions',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,12 @@ export function RuleComponent({
defaultMessage: 'Alerts',
}),
'data-test-subj': 'ruleAlertListTab',
content: renderRuleAlertList(),
content: (
<>
<EuiSpacer />
{renderRuleAlertList()}
</>
),
},
{
id: EVENT_LOG_LIST_TAB,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ export const RuleEventLogList = <T extends RuleEventLogListOptions>(
requestRefresh={requestRefresh}
fetchRuleSummary={fetchRuleSummary}
/>
<EuiSpacer />
<RuleEventLogListTableWithApi
localStorageKey={localStorageKey}
ruleId={ruleId}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,16 +62,55 @@ describe('rule_event_log_list_kpi', () => {
/>
);

expect(wrapper.find('[data-test-subj="centerJustifiedSpinner"]').exists()).toBeTruthy();
expect(
wrapper
.find('[data-test-subj="ruleEventLogKpi-successOutcome"] .euiStat__title')
.first()
.text()
).toEqual('--');
expect(
wrapper
.find('[data-test-subj="ruleEventLogKpi-unknownOutcome"] .euiStat__title')
.first()
.text()
).toEqual('--');
expect(
wrapper
.find('[data-test-subj="ruleEventLogKpi-failureOutcome"] .euiStat__title')
.first()
.text()
).toEqual('--');
expect(
wrapper.find('[data-test-subj="ruleEventLogKpi-activeAlerts"] .euiStat__title').first().text()
).toEqual('--');
expect(
wrapper.find('[data-test-subj="ruleEventLogKpi-newAlerts"] .euiStat__title').first().text()
).toEqual('--');
expect(
wrapper
.find('[data-test-subj="ruleEventLogKpi-recoveredAlerts"] .euiStat__title')
.first()
.text()
).toEqual('--');
expect(
wrapper
.find('[data-test-subj="ruleEventLogKpi-erroredActions"] .euiStat__title')
.first()
.text()
).toEqual('--');
expect(
wrapper
.find('[data-test-subj="ruleEventLogKpi-triggeredActions"] .euiStat__title')
.first()
.text()
).toEqual('--');

// Let the load resolve
await act(async () => {
await nextTick();
wrapper.update();
});

expect(wrapper.find('[data-test-subj="centerJustifiedSpinner"]').exists()).toBeFalsy();

expect(loadExecutionKPIAggregationsMock).toHaveBeenCalledWith(
expect.objectContaining({
id: '123',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import {
withBulkRuleOperations,
} from '../../common/components/with_bulk_rule_api_operations';
import { useKibana } from '../../../../common/lib/kibana';
import { CenterJustifiedSpinner } from '../../../components/center_justified_spinner';
import { RuleEventLogListStatus } from './rule_event_log_list_status';

const getParsedDate = (date: string) => {
Expand All @@ -35,21 +34,21 @@ const API_FAILED_MESSAGE = i18n.translate(
const RESPONSE_TOOLTIP = i18n.translate(
'xpack.triggersActionsUI.sections.ruleDetails.ruleEventLogListKpi.responseTooltip',
{
defaultMessage: 'The responses for the latest rule runs.',
defaultMessage: 'The responses for up to 10,000 most recent rule runs.',
}
);

const ALERTS_TOOLTIP = i18n.translate(
'xpack.triggersActionsUI.sections.ruleDetails.ruleEventLogListKpi.alertsTooltip',
{
defaultMessage: 'The alert statuses for the latest rule runs.',
defaultMessage: 'The alert statuses for up to 10,000 most recent rule runs.',
}
);

const ACTIONS_TOOLTIP = i18n.translate(
'xpack.triggersActionsUI.sections.ruleDetails.ruleEventLogListKpi.actionsTooltip',
{
defaultMessage: 'The action statuses for the latest rule runs.',
defaultMessage: 'The action statuses for up to 10,000 most recent rule runs.',
}
);

Expand Down Expand Up @@ -147,9 +146,7 @@ export const RuleEventLogListKPI = (props: RuleEventLogListKPIProps) => {
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [refreshToken]);

if (isLoading || !kpi) {
return <CenterJustifiedSpinner />;
}
const isLoadingData = useMemo(() => isLoading || !kpi, [isLoading, kpi]);

const getStatDescription = (element: React.ReactNode) => {
return (
Expand All @@ -170,23 +167,26 @@ export const RuleEventLogListKPI = (props: RuleEventLogListKPIProps) => {
data-test-subj="ruleEventLogKpi-successOutcome"
description={getStatDescription(<RuleEventLogListStatus status="success" />)}
titleSize="s"
title={kpi.success}
title={kpi?.success ?? 0}
isLoading={isLoadingData}
/>
</EuiFlexItem>
<EuiFlexItem>
<EuiStat
data-test-subj="ruleEventLogKpi-unknownOutcome"
description={getStatDescription(<RuleEventLogListStatus status="unknown" />)}
titleSize="s"
title={kpi.unknown}
title={kpi?.unknown ?? 0}
isLoading={isLoadingData}
/>
</EuiFlexItem>
<EuiFlexItem>
<EuiStat
data-test-subj="ruleEventLogKpi-failureOutcome"
description={getStatDescription(<RuleEventLogListStatus status="failure" />)}
titleSize="s"
title={kpi.failure}
title={kpi?.failure ?? 0}
isLoading={isLoadingData}
/>
</EuiFlexItem>
</EuiFlexGroup>
Expand All @@ -200,23 +200,26 @@ export const RuleEventLogListKPI = (props: RuleEventLogListKPIProps) => {
data-test-subj="ruleEventLogKpi-activeAlerts"
description={getStatDescription('Active')}
titleSize="s"
title={kpi.activeAlerts}
title={kpi?.activeAlerts ?? 0}
isLoading={isLoadingData}
/>
</EuiFlexItem>
<EuiFlexItem>
<EuiStat
data-test-subj="ruleEventLogKpi-newAlerts"
description={getStatDescription('New')}
titleSize="s"
title={kpi.newAlerts}
title={kpi?.newAlerts ?? 0}
isLoading={isLoadingData}
/>
</EuiFlexItem>
<EuiFlexItem>
<EuiStat
data-test-subj="ruleEventLogKpi-recoveredAlerts"
description={getStatDescription('Recovered')}
titleSize="s"
title={kpi.recoveredAlerts}
title={kpi?.recoveredAlerts ?? 0}
isLoading={isLoadingData}
/>
</EuiFlexItem>
</EuiFlexGroup>
Expand All @@ -230,15 +233,17 @@ export const RuleEventLogListKPI = (props: RuleEventLogListKPIProps) => {
data-test-subj="ruleEventLogKpi-erroredActions"
description={getStatDescription('Errored')}
titleSize="s"
title={kpi.erroredActions}
title={kpi?.erroredActions ?? 0}
isLoading={isLoadingData}
/>
</EuiFlexItem>
<EuiFlexItem>
<EuiStat
data-test-subj="ruleEventLogKpi-triggeredActions"
description={getStatDescription('Triggered')}
titleSize="s"
title={kpi.triggeredActions}
title={kpi?.triggeredActions ?? 0}
isLoading={isLoadingData}
/>
</EuiFlexItem>
</EuiFlexGroup>
Expand Down
Loading

0 comments on commit 2efcf7a

Please sign in to comment.