Browse Source

fix(metrics): disable gauge alerts (#70329)

Ogi 10 months ago
parent
commit
d23ed4797b

+ 4 - 0
static/app/utils/metrics/index.tsx

@@ -340,6 +340,10 @@ export function isSpanSelfTime({mri}: {mri: MRI}) {
   );
 }
 
+export function isGaugeMetric({mri}: {mri: MRI}) {
+  return parseMRI(mri)?.type === 'g';
+}
+
 export function getFieldFromMetricsQuery(metricsQuery: MetricsQuery) {
   if (isCustomMetric(metricsQuery)) {
     return MRIToField(metricsQuery.mri, metricsQuery.op);

+ 10 - 8
static/app/views/alerts/rules/metric/mriField.tsx

@@ -6,7 +6,7 @@ import SelectControl from 'sentry/components/forms/controls/selectControl';
 import {t} from 'sentry/locale';
 import {space} from 'sentry/styles/space';
 import type {MetricMeta, MRI, ParsedMRI, Project} from 'sentry/types';
-import {isAllowedOp} from 'sentry/utils/metrics';
+import {isAllowedOp, isGaugeMetric} from 'sentry/utils/metrics';
 import {getReadableMetricType} from 'sentry/utils/metrics/formatters';
 import {
   DEFAULT_METRIC_ALERT_FIELD,
@@ -34,13 +34,15 @@ function MriField({aggregate, project, onChange}: Props) {
   ]);
 
   const metaArr = useMemo(() => {
-    return meta.map(
-      metric =>
-        ({
-          ...metric,
-          ...parseMRI(metric.mri),
-        }) as ParsedMRI & MetricMeta
-    );
+    return meta
+      .filter(({mri}) => !isGaugeMetric({mri}))
+      .map(
+        metric =>
+          ({
+            ...metric,
+            ...parseMRI(metric.mri),
+          }) as ParsedMRI & MetricMeta
+      );
   }, [meta]);
 
   const selectedValues = parseField(aggregate) ?? {mri: '' as MRI, op: ''};

+ 2 - 1
static/app/views/metrics/metricQueryContextMenu.tsx

@@ -18,7 +18,7 @@ import {
 import {t} from 'sentry/locale';
 import type {Organization} from 'sentry/types/organization';
 import {trackAnalytics} from 'sentry/utils/analytics';
-import {isCustomMeasurement, isCustomMetric} from 'sentry/utils/metrics';
+import {isCustomMeasurement, isCustomMetric, isGaugeMetric} from 'sentry/utils/metrics';
 import {
   convertToDashboardWidget,
   encodeWidgetQuery,
@@ -188,6 +188,7 @@ export function getCreateAlert(organization: Organization, metricsQuery: Metrics
     !metricsQuery.mri ||
     !metricsQuery.op ||
     isCustomMeasurement(metricsQuery) ||
+    isGaugeMetric(metricsQuery) ||
     !organization.access.includes('alerts:write')
   ) {
     return undefined;