[APM] Alert rules: The transaction type and environment options are not filtered by the selected service (#149849)

closes https://github.com/elastic/kibana/issues/128257



https://user-images.githubusercontent.com/55978943/215530743-46577bb1-5cdd-459c-990e-aae00f604720.mov

---------

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
Cauê Marcondes 2023-01-30 12:40:04 -05:00 committed by GitHub
parent b9a999f7f8
commit ad75d900c9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 44 additions and 5 deletions

View file

@ -94,11 +94,17 @@ export function ErrorCountRuleType(props: Props) {
const fields = [ const fields = [
<ServiceField <ServiceField
currentValue={params.serviceName} currentValue={params.serviceName}
onChange={(value) => setRuleParams('serviceName', value)} onChange={(value) => {
if (value !== params.serviceName) {
setRuleParams('serviceName', value);
setRuleParams('environment', ENVIRONMENT_ALL.value);
}
}}
/>, />,
<EnvironmentField <EnvironmentField
currentValue={params.environment} currentValue={params.environment}
onChange={(value) => setRuleParams('environment', value)} onChange={(value) => setRuleParams('environment', value)}
serviceName={params.serviceName}
/>, />,
<IsAboveField <IsAboveField
value={params.threshold} value={params.threshold}

View file

@ -71,15 +71,23 @@ export function TransactionDurationAnomalyRuleType(props: Props) {
const fields = [ const fields = [
<ServiceField <ServiceField
currentValue={params.serviceName} currentValue={params.serviceName}
onChange={(value) => setRuleParams('serviceName', value)} onChange={(value) => {
if (value !== params.serviceName) {
setRuleParams('serviceName', value);
setRuleParams('transactionType', '');
setRuleParams('environment', ENVIRONMENT_ALL.value);
}
}}
/>, />,
<TransactionTypeField <TransactionTypeField
currentValue={params.transactionType} currentValue={params.transactionType}
onChange={(value) => setRuleParams('transactionType', value)} onChange={(value) => setRuleParams('transactionType', value)}
serviceName={params.serviceName}
/>, />,
<EnvironmentField <EnvironmentField
currentValue={params.environment} currentValue={params.environment}
onChange={(value) => setRuleParams('environment', value)} onChange={(value) => setRuleParams('environment', value)}
serviceName={params.serviceName}
/>, />,
<PopoverExpression <PopoverExpression
value={<AnomalySeverity type={params.anomalySeverityType} />} value={<AnomalySeverity type={params.anomalySeverityType} />}

View file

@ -146,15 +146,23 @@ export function TransactionDurationRuleType(props: Props) {
<ServiceField <ServiceField
allowAll={false} allowAll={false}
currentValue={params.serviceName} currentValue={params.serviceName}
onChange={(value) => setRuleParams('serviceName', value)} onChange={(value) => {
if (value !== params.serviceName) {
setRuleParams('serviceName', value);
setRuleParams('transactionType', '');
setRuleParams('environment', ENVIRONMENT_ALL.value);
}
}}
/>, />,
<TransactionTypeField <TransactionTypeField
currentValue={params.transactionType} currentValue={params.transactionType}
onChange={(value) => setRuleParams('transactionType', value)} onChange={(value) => setRuleParams('transactionType', value)}
serviceName={params.serviceName}
/>, />,
<EnvironmentField <EnvironmentField
currentValue={params.environment} currentValue={params.environment}
onChange={(value) => setRuleParams('environment', value)} onChange={(value) => setRuleParams('environment', value)}
serviceName={params.serviceName}
/>, />,
<PopoverExpression <PopoverExpression
value={params.aggregationType} value={params.aggregationType}

View file

@ -99,15 +99,23 @@ export function TransactionErrorRateRuleType(props: Props) {
const fields = [ const fields = [
<ServiceField <ServiceField
currentValue={params.serviceName} currentValue={params.serviceName}
onChange={(value) => setRuleParams('serviceName', value)} onChange={(value) => {
if (value !== params.serviceName) {
setRuleParams('serviceName', value);
setRuleParams('transactionType', '');
setRuleParams('environment', ENVIRONMENT_ALL.value);
}
}}
/>, />,
<TransactionTypeField <TransactionTypeField
currentValue={params.transactionType} currentValue={params.transactionType}
onChange={(value) => setRuleParams('transactionType', value)} onChange={(value) => setRuleParams('transactionType', value)}
serviceName={params.serviceName}
/>, />,
<EnvironmentField <EnvironmentField
currentValue={params.environment} currentValue={params.environment}
onChange={(value) => setRuleParams('environment', value)} onChange={(value) => setRuleParams('environment', value)}
serviceName={params.serviceName}
/>, />,
<IsAboveField <IsAboveField
value={params.threshold} value={params.threshold}

View file

@ -63,9 +63,11 @@ export function ServiceField({
export function EnvironmentField({ export function EnvironmentField({
currentValue, currentValue,
onChange, onChange,
serviceName,
}: { }: {
currentValue: string; currentValue: string;
onChange: (value?: string) => void; onChange: (value?: string) => void;
serviceName?: string;
}) { }) {
return ( return (
<PopoverExpression <PopoverExpression
@ -90,6 +92,7 @@ export function EnvironmentField({
})} })}
start={moment().subtract(24, 'h').toISOString()} start={moment().subtract(24, 'h').toISOString()}
end={moment().toISOString()} end={moment().toISOString()}
serviceName={serviceName}
/> />
</PopoverExpression> </PopoverExpression>
); );
@ -98,9 +101,11 @@ export function EnvironmentField({
export function TransactionTypeField({ export function TransactionTypeField({
currentValue, currentValue,
onChange, onChange,
serviceName,
}: { }: {
currentValue?: string; currentValue?: string;
onChange: (value?: string) => void; onChange: (value?: string) => void;
serviceName?: string;
}) { }) {
const label = i18n.translate('xpack.apm.alerting.fields.type', { const label = i18n.translate('xpack.apm.alerting.fields.type', {
defaultMessage: 'Type', defaultMessage: 'Type',
@ -126,6 +131,7 @@ export function TransactionTypeField({
)} )}
start={moment().subtract(24, 'h').toISOString()} start={moment().subtract(24, 'h').toISOString()}
end={moment().toISOString()} end={moment().toISOString()}
serviceName={serviceName}
/> />
</PopoverExpression> </PopoverExpression>
); );

View file

@ -23,6 +23,7 @@ interface SuggestionsSelectProps {
placeholder: string; placeholder: string;
dataTestSubj?: string; dataTestSubj?: string;
prepend?: string; prepend?: string;
serviceName?: string;
} }
export function SuggestionsSelect({ export function SuggestionsSelect({
@ -38,6 +39,7 @@ export function SuggestionsSelect({
dataTestSubj, dataTestSubj,
isClearable = true, isClearable = true,
prepend, prepend,
serviceName,
}: SuggestionsSelectProps) { }: SuggestionsSelectProps) {
let defaultOption: EuiComboBoxOptionOption<string> | undefined; let defaultOption: EuiComboBoxOptionOption<string> | undefined;
@ -59,11 +61,12 @@ export function SuggestionsSelect({
fieldValue: searchValue, fieldValue: searchValue,
start, start,
end, end,
serviceName,
}, },
}, },
}); });
}, },
[fieldName, searchValue, start, end], [fieldName, searchValue, start, end, serviceName],
{ preservePreviousData: false } { preservePreviousData: false }
); );