Browse Source

feat(alerts): Add `is:unresolved` to errors metric alert (#60433)

Scott Cooper 1 year ago
parent
commit
b4e42c634c

+ 2 - 1
static/app/views/alerts/create.tsx

@@ -98,12 +98,13 @@ class Create extends Component<Props, State> {
   render() {
     const {hasMetricAlerts, organization, project, location, members} = this.props;
     const {alertType} = this.state;
-    const {aggregate, dataset, eventTypes, createFromWizard, createFromDiscover} =
+    const {aggregate, dataset, eventTypes, createFromWizard, createFromDiscover, query} =
       location?.query ?? {};
     const wizardTemplate: WizardRuleTemplate = {
       aggregate: aggregate ?? DEFAULT_WIZARD_TEMPLATE.aggregate,
       dataset: dataset ?? DEFAULT_WIZARD_TEMPLATE.dataset,
       eventTypes: eventTypes ?? DEFAULT_WIZARD_TEMPLATE.eventTypes,
+      query: query ?? DEFAULT_WIZARD_TEMPLATE.query,
     };
     const eventView = createFromDiscover ? EventView.fromLocation(location) : undefined;
 

+ 2 - 1
static/app/views/alerts/rules/metric/constants.tsx

@@ -196,7 +196,7 @@ export function createRuleFromEventView(eventView: EventView): UnsavedMetricRule
 export function createRuleFromWizardTemplate(
   wizardTemplate: WizardRuleTemplate
 ): UnsavedMetricRule {
-  const {eventTypes, aggregate, dataset} = wizardTemplate;
+  const {eventTypes, aggregate, dataset, query} = wizardTemplate;
   const defaultRuleOptions: Partial<UnsavedMetricRule> = {};
 
   if (isSessionAggregate(aggregate)) {
@@ -213,6 +213,7 @@ export function createRuleFromWizardTemplate(
     eventTypes: [eventTypes],
     aggregate,
     dataset,
+    query: query ?? '',
   };
 }
 

+ 9 - 0
static/app/views/alerts/wizard/index.tsx

@@ -68,6 +68,15 @@ function AlertWizard({organization, params, location, projectId}: AlertWizardPro
       metricRuleTemplate = {...metricRuleTemplate, dataset: Dataset.METRICS};
     }
 
+    if (
+      !organization.features.includes('metric-alert-ignore-archived') &&
+      metricRuleTemplate?.dataset === Dataset.ERRORS
+    ) {
+      // Pre-fill is:unresolved for error metric alerts
+      // Filters out events in issues that are archived or resolved
+      metricRuleTemplate = {...metricRuleTemplate, query: 'is:unresolved'};
+    }
+
     const renderNoAccess = p => (
       <Hovercard
         body={

+ 1 - 0
static/app/views/alerts/wizard/options.tsx

@@ -118,6 +118,7 @@ export type WizardRuleTemplate = {
   aggregate: string;
   dataset: Dataset;
   eventTypes: EventTypes;
+  query?: string;
 };
 
 export const AlertWizardRuleTemplates: Record<