Alerting: Unify alert status labels on the alert list panel (#50240)

We do not use the "Inactive" state anywhere in the alerting product, this PR removes the Inactive state filter and instead uses the "Normal" state filter. Backwards compatibility has been added to the alert list panel.

Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
This commit is contained in:
Konrad Lalik
2022-06-09 10:58:57 +02:00
committed by GitHub
co-authored by Gilles De Mey
parent 06bbf870da
commit ab4171770e
4 changed files with 14 additions and 10 deletions
@@ -30,6 +30,14 @@ export function UnifiedAlertList(props: PanelProps<UnifiedAlertListOptions>) {
const dispatch = useDispatch();
const rulesDataSourceNames = useMemo(getAllRulesSourceNames, []);
// backwards compat for "Inactive" state filter
useEffect(() => {
if (props.options.stateFilter.inactive === true) {
props.options.stateFilter.normal = true; // enable the normal filter
}
props.options.stateFilter.inactive = undefined; // now disable inactive
}, [props.options.stateFilter]);
useEffect(() => {
dispatch(fetchAllPromRulesAction());
const interval = setInterval(() => dispatch(fetchAllPromRulesAction()), RULE_LIST_POLL_INTERVAL_MS);
@@ -127,7 +135,7 @@ function filterRules(props: PanelProps<UnifiedAlertListOptions>, rules: PromRule
return (
(options.stateFilter.firing && rule.rule.state === PromAlertingRuleState.Firing) ||
(options.stateFilter.pending && rule.rule.state === PromAlertingRuleState.Pending) ||
(options.stateFilter.inactive && rule.rule.state === PromAlertingRuleState.Inactive)
(options.stateFilter.normal && rule.rule.state === PromAlertingRuleState.Inactive)
);
});
@@ -284,12 +284,6 @@ const unifiedAlertList = new PanelPlugin<UnifiedAlertListOptions>(UnifiedAlertLi
defaultValue: true,
category: ['Alert state filter'],
})
.addBooleanSwitch({
path: 'stateFilter.inactive',
name: 'Inactive',
defaultValue: false,
category: ['Alert state filter'],
})
.addBooleanSwitch({
path: 'stateFilter.noData',
name: 'No Data',
+1 -1
View File
@@ -40,7 +40,7 @@ export interface AlertListOptions {
interface StateFilter {
firing: boolean;
pending: boolean;
inactive: boolean;
inactive?: boolean; // backwards compat
noData: boolean;
normal: boolean;
error: boolean;
@@ -4,7 +4,7 @@ import React, { FC } from 'react';
import { GrafanaTheme2, intervalToAbbreviatedDurationString } from '@grafana/data';
import { Icon, IconName, useStyles2 } from '@grafana/ui';
import alertDef from 'app/features/alerting/state/alertDef';
import { alertStateToState, getFirstActiveAt } from 'app/features/alerting/unified/utils/rules';
import { alertStateToReadable, alertStateToState, getFirstActiveAt } from 'app/features/alerting/unified/utils/rules';
import { PromRuleWithLocation } from 'app/types/unified-alerting';
import { PromAlertingRuleState } from 'app/types/unified-alerting-dto';
@@ -44,7 +44,9 @@ const UngroupedModeView: FC<UngroupedModeProps> = ({ rules, options }) => {
{rule.name}
</div>
<div className={styles.alertDuration}>
<span className={stateStyle[alertStateToState(rule.state)]}>{rule.state.toUpperCase()}</span>{' '}
<span className={stateStyle[alertStateToState(rule.state)]}>
{alertStateToReadable(rule.state)}
</span>{' '}
{firstActiveAt && rule.state !== PromAlertingRuleState.Inactive && (
<>
for{' '}