@oneuptime/common 11.3.5 → 11.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/Server/Infrastructure/Queue.ts +103 -16
  2. package/Server/Services/AnalyticsDatabaseService.ts +9 -5
  3. package/Server/Services/TeamMemberService.ts +38 -1
  4. package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +31 -0
  5. package/Server/Utils/Monitor/IncomingRequestIncidentGrouping.ts +428 -0
  6. package/Server/Utils/Monitor/MonitorAlert.ts +158 -8
  7. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +26 -0
  8. package/Server/Utils/Monitor/MonitorIncident.ts +147 -2
  9. package/Server/Utils/Monitor/MonitorResource.ts +74 -0
  10. package/Tests/Server/Utils/AnalyticsDatabase/ClusterAwareSchema.test.ts +2 -1
  11. package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +32 -0
  12. package/Tests/Server/Utils/Monitor/IncomingRequestIncidentGrouping.test.ts +389 -0
  13. package/Tests/Server/Utils/Monitor/SeriesAbsenceResolutionGuard.test.ts +177 -0
  14. package/Tests/Types/Events/Recurring.test.ts +475 -0
  15. package/Tests/Types/Monitor/CriteriaFilter.test.ts +348 -0
  16. package/Tests/Types/OnCallDutyPolicy/RestrictionTimes.test.ts +331 -0
  17. package/Tests/UI/Components/Alert.test.tsx +23 -15
  18. package/Tests/UI/Components/Breadcrumbs.test.tsx +18 -6
  19. package/Tests/UI/Components/Button.test.tsx +3 -3
  20. package/Tests/UI/Components/DictionaryFilterOperator.test.ts +174 -0
  21. package/Tests/UI/Components/EmptyState/EmptyState.test.tsx +4 -3
  22. package/Tests/UI/Components/Input.test.tsx +3 -2
  23. package/Tests/UI/Components/Pill.test.tsx +4 -2
  24. package/Tests/UI/Components/SideMenuItem.test.tsx +18 -8
  25. package/Tests/UI/Components/TextArea.test.tsx +6 -4
  26. package/Types/Monitor/IncomingMonitor/IncidentGroupingConfig.ts +74 -0
  27. package/Types/Monitor/MonitorCriteriaInstance.ts +22 -0
  28. package/UI/Components/Dictionary/Dictionary.tsx +123 -50
  29. package/UI/Components/Dictionary/DictionaryFilterOperator.ts +96 -1
  30. package/UI/Components/MasterPage/MasterPage.tsx +5 -3
  31. package/build/dist/Server/Infrastructure/Queue.js +83 -15
  32. package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
  33. package/build/dist/Server/Services/AnalyticsDatabaseService.js +9 -5
  34. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  35. package/build/dist/Server/Services/TeamMemberService.js +37 -1
  36. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  37. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +26 -0
  38. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
  39. package/build/dist/Server/Utils/Monitor/IncomingRequestIncidentGrouping.js +288 -0
  40. package/build/dist/Server/Utils/Monitor/IncomingRequestIncidentGrouping.js.map +1 -0
  41. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +119 -8
  42. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  43. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +24 -0
  44. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  45. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +103 -2
  46. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  47. package/build/dist/Server/Utils/Monitor/MonitorResource.js +62 -0
  48. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  49. package/build/dist/Types/Monitor/IncomingMonitor/IncidentGroupingConfig.js +8 -0
  50. package/build/dist/Types/Monitor/IncomingMonitor/IncidentGroupingConfig.js.map +1 -0
  51. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +10 -0
  52. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  53. package/build/dist/UI/Components/Dictionary/Dictionary.js +60 -9
  54. package/build/dist/UI/Components/Dictionary/Dictionary.js.map +1 -1
  55. package/build/dist/UI/Components/Dictionary/DictionaryFilterOperator.js +69 -0
  56. package/build/dist/UI/Components/Dictionary/DictionaryFilterOperator.js.map +1 -1
  57. package/build/dist/UI/Components/MasterPage/MasterPage.js +5 -3
  58. package/build/dist/UI/Components/MasterPage/MasterPage.js.map +1 -1
  59. package/package.json +1 -1
@@ -0,0 +1,288 @@
1
+ import logger from "../Logger";
2
+ import VMUtil from "../VM/VMAPI";
3
+ import MetricSeriesFingerprint from "../../../Utils/Metrics/MetricSeriesFingerprint";
4
+ import Typeof from "../../../Types/Typeof";
5
+ const DEFAULT_MAX_KEYS_PER_PAYLOAD = 100;
6
+ const ARRAY_WILDCARD = "[*]";
7
+ /**
8
+ * Turns an incoming-request / webhook payload into per-key incident
9
+ * matches, so a single monitor can hold multiple concurrent incidents —
10
+ * one per distinct value (Grafana alert name, fingerprint, etc.). This
11
+ * reuses the same `seriesFingerprint` mechanism metric monitors use for
12
+ * per-series incidents; see {@link IncidentGroupingConfig}.
13
+ */
14
+ export default class IncomingRequestIncidentGrouping {
15
+ /**
16
+ * Parse the request body into a JSON object. Bodies arrive either
17
+ * pre-parsed (JSONObject) or as a raw JSON string depending on the
18
+ * ingestion path; both are handled. Non-JSON / non-object bodies
19
+ * (e.g. a bare string heartbeat) return null — grouping is a no-op.
20
+ */
21
+ static getRequestBodyObject(dataToProcess) {
22
+ const body = dataToProcess.requestBody;
23
+ if (!body) {
24
+ return null;
25
+ }
26
+ if (typeof body === Typeof.String) {
27
+ try {
28
+ const parsed = JSON.parse(body);
29
+ return parsed &&
30
+ typeof parsed === Typeof.Object &&
31
+ !Array.isArray(parsed)
32
+ ? parsed
33
+ : null;
34
+ }
35
+ catch (_a) {
36
+ return null;
37
+ }
38
+ }
39
+ if (typeof body === Typeof.Object && !Array.isArray(body)) {
40
+ return body;
41
+ }
42
+ return null;
43
+ }
44
+ /**
45
+ * Firing matches for one criteria — used by the criteria evaluator to
46
+ * fan a matched incoming-request criteria into one incident per key.
47
+ * Returns an empty array when grouping is not configured (preserving
48
+ * the legacy single-incident behaviour) or when there is no usable
49
+ * payload (e.g. the heartbeat-timeout re-evaluation cron, which carries
50
+ * no fresh body).
51
+ */
52
+ static collectFiringMatches(input) {
53
+ var _a, _b;
54
+ const grouping = (_a = input.criteriaInstance.data) === null || _a === void 0 ? void 0 : _a.incidentGrouping;
55
+ if (!(grouping === null || grouping === void 0 ? void 0 : grouping.groupByJSONPath)) {
56
+ return [];
57
+ }
58
+ if (input.dataToProcess
59
+ .onlyCheckForIncomingRequestReceivedAt) {
60
+ return [];
61
+ }
62
+ const criteriaId = (_b = input.criteriaInstance.data) === null || _b === void 0 ? void 0 : _b.id;
63
+ if (!criteriaId) {
64
+ return [];
65
+ }
66
+ const body = this.getRequestBodyObject(input.dataToProcess);
67
+ if (!body) {
68
+ return [];
69
+ }
70
+ const matches = [];
71
+ for (const item of this.extractItems({ requestBody: body, grouping })) {
72
+ if (item.isResolved) {
73
+ // A resolved event never opens an incident.
74
+ continue;
75
+ }
76
+ matches.push({
77
+ criteriaMetId: criteriaId,
78
+ fingerprint: item.fingerprint,
79
+ labels: item.labels,
80
+ rootCause: input.rootCause ||
81
+ `Incoming request matched grouping key \`${item.keyValue}\`.`,
82
+ metricContext: undefined,
83
+ });
84
+ }
85
+ return matches;
86
+ }
87
+ /**
88
+ * Fingerprints the payload explicitly classifies as resolved, across
89
+ * every grouping-enabled criteria on the monitor's step. The caller
90
+ * resolves the matching open incidents (event-driven resolution: only
91
+ * keys the payload says recovered are closed — never by absence).
92
+ */
93
+ static collectResolvedFingerprints(input) {
94
+ var _a;
95
+ if (input.dataToProcess
96
+ .onlyCheckForIncomingRequestReceivedAt) {
97
+ return [];
98
+ }
99
+ const body = this.getRequestBodyObject(input.dataToProcess);
100
+ if (!body) {
101
+ return [];
102
+ }
103
+ const fingerprints = new Set();
104
+ for (const criteriaInstance of input.criteriaInstances) {
105
+ const grouping = (_a = criteriaInstance.data) === null || _a === void 0 ? void 0 : _a.incidentGrouping;
106
+ if (!(grouping === null || grouping === void 0 ? void 0 : grouping.groupByJSONPath)) {
107
+ continue;
108
+ }
109
+ for (const item of this.extractItems({ requestBody: body, grouping })) {
110
+ if (item.isResolved) {
111
+ fingerprints.add(item.fingerprint);
112
+ }
113
+ }
114
+ }
115
+ return Array.from(fingerprints);
116
+ }
117
+ /**
118
+ * Whether any criteria on the step has grouping configured. Used to
119
+ * force per-series mode so a grouped criteria never falls back to a
120
+ * single whole-monitor incident on a payload that yields no firing key.
121
+ */
122
+ static isGroupingConfigured(criteriaInstance) {
123
+ var _a, _b;
124
+ return Boolean((_b = (_a = criteriaInstance === null || criteriaInstance === void 0 ? void 0 : criteriaInstance.data) === null || _a === void 0 ? void 0 : _a.incidentGrouping) === null || _b === void 0 ? void 0 : _b.groupByJSONPath);
125
+ }
126
+ /**
127
+ * Extract all distinct keys from a payload for one grouping config,
128
+ * classifying each as firing or resolved. Deduplicates by fingerprint
129
+ * and caps the count at `maxKeysPerPayload` to bound cardinality.
130
+ */
131
+ static extractItems(input) {
132
+ const { requestBody, grouping } = input;
133
+ const groupByPath = this.normalizePath(grouping.groupByJSONPath);
134
+ if (!groupByPath) {
135
+ return [];
136
+ }
137
+ const labelKey = this.labelKeyFromPath(groupByPath);
138
+ const maxKeys = grouping.maxKeysPerPayload && grouping.maxKeysPerPayload > 0
139
+ ? grouping.maxKeysPerPayload
140
+ : DEFAULT_MAX_KEYS_PER_PAYLOAD;
141
+ const items = [];
142
+ const seenFingerprints = new Set();
143
+ const addItem = (keyValue, isResolved) => {
144
+ const labels = { [labelKey]: keyValue };
145
+ const fingerprint = MetricSeriesFingerprint.computeFingerprint(labels);
146
+ if (seenFingerprints.has(fingerprint)) {
147
+ // Same key twice in one payload — keep the first occurrence.
148
+ return;
149
+ }
150
+ seenFingerprints.add(fingerprint);
151
+ items.push({ fingerprint, labels, keyValue, isResolved });
152
+ };
153
+ const wildcardIndex = groupByPath.indexOf(ARRAY_WILDCARD);
154
+ // Simple (non-array) path: a single key for the whole payload.
155
+ if (wildcardIndex === -1) {
156
+ const keyValue = this.toScalarString(VMUtil.deepFind(requestBody, groupByPath));
157
+ if (keyValue === null) {
158
+ return [];
159
+ }
160
+ addItem(keyValue, this.isResolvedForScope(requestBody, requestBody, grouping, false));
161
+ return items;
162
+ }
163
+ // Array fan-out: one key per element of the array at the `[*]` prefix.
164
+ const prefixPath = groupByPath
165
+ .slice(0, wildcardIndex)
166
+ .replace(/\.$/, "");
167
+ const elementSuffix = this.stripLeadingDot(groupByPath.slice(wildcardIndex + ARRAY_WILDCARD.length));
168
+ const arrayValue = prefixPath
169
+ ? VMUtil.deepFind(requestBody, prefixPath)
170
+ : requestBody;
171
+ if (!Array.isArray(arrayValue)) {
172
+ return [];
173
+ }
174
+ for (const element of arrayValue) {
175
+ if (items.length >= maxKeys) {
176
+ logger.warn(`IncomingRequestIncidentGrouping: payload produced more than ${maxKeys} keys for path "${groupByPath}"; remaining keys ignored.`);
177
+ break;
178
+ }
179
+ const isObjectElement = Boolean(element) && typeof element === Typeof.Object;
180
+ let keyValue;
181
+ if (elementSuffix) {
182
+ // `prefix[*].sub.path` — element must be an object to dig into.
183
+ if (!isObjectElement) {
184
+ continue;
185
+ }
186
+ keyValue = this.toScalarString(VMUtil.deepFind(element, elementSuffix));
187
+ }
188
+ else {
189
+ // `prefix[*]` — the array element itself is the key (array of scalars).
190
+ keyValue = this.toScalarString(element);
191
+ }
192
+ if (keyValue === null) {
193
+ continue;
194
+ }
195
+ /*
196
+ * Per-element resolve classification only applies when the element
197
+ * is an object (so `[*].status` can be read off it). For scalar
198
+ * elements there is no per-element field, so fall back to root scope.
199
+ */
200
+ addItem(keyValue, this.isResolvedForScope(isObjectElement ? element : requestBody, requestBody, grouping, isObjectElement));
201
+ }
202
+ return items;
203
+ }
204
+ /**
205
+ * Classify whether the configured resolve condition holds. When the
206
+ * resolve path uses `[*]` AND we are evaluating a specific array element
207
+ * (`isElementContext`), it is read off that element (`elementScope`).
208
+ * Otherwise it is evaluated against the whole payload (`rootScope`).
209
+ *
210
+ * If the resolve path uses `[*]` but the group-by path does NOT (so we
211
+ * are not in element context — a self-contradictory config), the path is
212
+ * evaluated verbatim against the root: `deepFind` does not interpret
213
+ * `[*]`, so it returns undefined (not resolved) rather than silently
214
+ * rebinding to a same-named top-level field.
215
+ */
216
+ static isResolvedForScope(elementScope, rootScope, grouping, isElementContext) {
217
+ if (!grouping.resolvedWhenJSONPath ||
218
+ grouping.resolvedWhenValue === undefined) {
219
+ return false;
220
+ }
221
+ const resolvedPath = this.normalizePath(grouping.resolvedWhenJSONPath);
222
+ const wildcardIndex = resolvedPath.indexOf(ARRAY_WILDCARD);
223
+ let scope = rootScope;
224
+ let path = resolvedPath;
225
+ if (wildcardIndex !== -1 && isElementContext) {
226
+ scope = elementScope;
227
+ path = this.stripLeadingDot(resolvedPath.slice(wildcardIndex + ARRAY_WILDCARD.length));
228
+ }
229
+ if (!path) {
230
+ return false;
231
+ }
232
+ const value = this.toScalarString(VMUtil.deepFind(scope, path));
233
+ return value !== null && value === grouping.resolvedWhenValue;
234
+ }
235
+ /**
236
+ * Derive a human-friendly label key from a JSON path — the last named
237
+ * segment, with array/wildcard syntax stripped. `alerts[*].labels.alertname`
238
+ * → `alertname`. Used as the template variable name (so titles can say
239
+ * `{{alertname}}`) and as the fingerprint label key.
240
+ */
241
+ static labelKeyFromPath(path) {
242
+ const cleaned = path
243
+ .replace(/\[\*\]/g, "")
244
+ .replace(/\[[^\]]*\]/g, "");
245
+ const parts = cleaned.split(".").filter(Boolean);
246
+ return parts.length > 0 ? parts[parts.length - 1] : "key";
247
+ }
248
+ static stripLeadingDot(path) {
249
+ return path.startsWith(".") ? path.slice(1) : path;
250
+ }
251
+ /**
252
+ * Resolve the `requestBody`-rooted path users write — the same convention
253
+ * incident templates and JavaScript-expression filters use — into a path
254
+ * relative to the body (the actual scope `deepFind` resolves against).
255
+ * Both of these forms are accepted and resolve identically:
256
+ *
257
+ * `{{requestBody.alerts[*].labels.alertname}}` (template wrapper)
258
+ * `requestBody.alerts[*].labels.alertname`
259
+ *
260
+ * The `requestBody` root is REQUIRED — a path not rooted there resolves
261
+ * to nothing, so the field has exactly one convention.
262
+ */
263
+ static normalizePath(rawPath) {
264
+ let path = rawPath.trim();
265
+ if (path.startsWith("{{") && path.endsWith("}}")) {
266
+ path = path.slice(2, -2).trim();
267
+ }
268
+ if (path.startsWith("requestBody.")) {
269
+ return path.slice("requestBody.".length);
270
+ }
271
+ return "";
272
+ }
273
+ /**
274
+ * Coerce an extracted value to a non-empty scalar string. Objects and
275
+ * arrays cannot be a grouping key and return null (the item is skipped).
276
+ */
277
+ static toScalarString(value) {
278
+ if (value === undefined || value === null) {
279
+ return null;
280
+ }
281
+ if (typeof value === Typeof.Object) {
282
+ return null;
283
+ }
284
+ const stringValue = String(value);
285
+ return stringValue.length > 0 ? stringValue : null;
286
+ }
287
+ }
288
+ //# sourceMappingURL=IncomingRequestIncidentGrouping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IncomingRequestIncidentGrouping.js","sourceRoot":"","sources":["../../../../../Server/Utils/Monitor/IncomingRequestIncidentGrouping.ts"],"names":[],"mappings":"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"}
@@ -64,6 +64,7 @@ export default class MonitorAlert {
64
64
  autoResolveCriteriaInstanceIdAlertIdsDictionary: input.autoResolveCriteriaInstanceIdAlertIdsDictionary,
65
65
  criteriaInstance: input.criteriaInstance,
66
66
  breachingSeriesFingerprints: input.breachingSeriesFingerprints,
67
+ disableSeriesAbsenceResolution: input.disableSeriesAbsenceResolution,
67
68
  });
68
69
  if (shouldClose) {
69
70
  // then resolve alert.
@@ -86,6 +87,71 @@ export default class MonitorAlert {
86
87
  }
87
88
  return openAlerts;
88
89
  }
90
+ /**
91
+ * Event-driven (incoming-request / webhook) resolution: resolve the open
92
+ * alerts for the given payload-derived fingerprints — and only those —
93
+ * when the criteria that created them has auto-resolve enabled. Mirrors
94
+ * MonitorIncident.resolveSeriesIncidentsByFingerprint; never resolves by
95
+ * absence (a webhook describes only the keys in its payload).
96
+ */
97
+ static async resolveSeriesAlertsByFingerprint(input) {
98
+ var _a, _b, _c, _d;
99
+ if (!input.fingerprints || input.fingerprints.length === 0) {
100
+ return;
101
+ }
102
+ const fingerprintSet = new Set(input.fingerprints);
103
+ const openAlerts = await AlertService.findBy({
104
+ query: {
105
+ monitor: input.monitor.id,
106
+ currentAlertState: {
107
+ isResolvedState: false,
108
+ },
109
+ },
110
+ skip: 0,
111
+ limit: LIMIT_PER_PROJECT,
112
+ select: {
113
+ _id: true,
114
+ title: true,
115
+ createdCriteriaId: true,
116
+ projectId: true,
117
+ alertNumber: true,
118
+ alertNumberWithPrefix: true,
119
+ seriesFingerprint: true,
120
+ },
121
+ props: {
122
+ isRoot: true,
123
+ },
124
+ });
125
+ for (const openAlert of openAlerts) {
126
+ const fingerprint = openAlert.seriesFingerprint || undefined;
127
+ if (!fingerprint || !fingerprintSet.has(fingerprint)) {
128
+ continue;
129
+ }
130
+ const createdCriteriaId = (_a = openAlert.createdCriteriaId) === null || _a === void 0 ? void 0 : _a.toString();
131
+ if (!createdCriteriaId) {
132
+ continue;
133
+ }
134
+ // Only auto-resolve when the creating criteria opted into it.
135
+ const autoResolveTemplates = input.autoResolveCriteriaInstanceIdAlertIdsDictionary[createdCriteriaId];
136
+ if (!autoResolveTemplates || autoResolveTemplates.length === 0) {
137
+ continue;
138
+ }
139
+ await this.resolveOpenAlert({
140
+ openAlert: openAlert,
141
+ rootCause: input.rootCause,
142
+ dataToProcess: input.dataToProcess,
143
+ });
144
+ (_b = input.evaluationSummary) === null || _b === void 0 ? void 0 : _b.events.push({
145
+ type: "alert-resolved",
146
+ title: `Alert resolved: ${(_c = openAlert.id) === null || _c === void 0 ? void 0 : _c.toString()}`,
147
+ message: "Alert auto-resolved because the incoming payload reported this key as resolved.",
148
+ relatedAlertId: (_d = openAlert.id) === null || _d === void 0 ? void 0 : _d.toString(),
149
+ relatedAlertNumber: openAlert.alertNumber,
150
+ relatedAlertNumberWithPrefix: openAlert.alertNumberWithPrefix,
151
+ at: OneUptimeDate.getCurrentDate(),
152
+ });
153
+ }
154
+ }
89
155
  static async criteriaMetCreateAlertsAndUpdateMonitorStatus(input) {
90
156
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1;
91
157
  const alertLogAttributes = {
@@ -93,7 +159,7 @@ export default class MonitorAlert {
93
159
  };
94
160
  // check open alerts
95
161
  logger.debug(`${(_b = input.monitor.id) === null || _b === void 0 ? void 0 : _b.toString()} - Check open alerts.`, alertLogAttributes);
96
- const breachingSeriesFingerprints = input.matchesPerSeries
162
+ const breachingSeriesFingerprints = input.matchesPerSeries && !input.disableSeriesAbsenceResolution
97
163
  ? new Set(input.matchesPerSeries.map((m) => {
98
164
  return m.fingerprint;
99
165
  }))
@@ -107,6 +173,7 @@ export default class MonitorAlert {
107
173
  dataToProcess: input.dataToProcess,
108
174
  evaluationSummary: input.evaluationSummary,
109
175
  breachingSeriesFingerprints,
176
+ disableSeriesAbsenceResolution: input.disableSeriesAbsenceResolution,
110
177
  });
111
178
  if (!((_c = input.criteriaInstance.data) === null || _c === void 0 ? void 0 : _c.createAlerts)) {
112
179
  return;
@@ -122,7 +189,14 @@ export default class MonitorAlert {
122
189
  const clusterContext = await MonitorClusterContextUtil.resolveClusterContextForMonitor({
123
190
  monitor: input.monitor,
124
191
  });
125
- const seriesToProcess = input.matchesPerSeries && input.matchesPerSeries.length > 0
192
+ /*
193
+ * `undefined` matchesPerSeries → legacy single-alert path. A defined
194
+ * (even empty) array → per-series mode: iterate exactly the matches.
195
+ * An empty array therefore creates nothing — used by grouped
196
+ * incoming-request criteria on a payload with no firing key so they
197
+ * don't fall back to a single whole-monitor alert.
198
+ */
199
+ const seriesToProcess = input.matchesPerSeries !== undefined
126
200
  ? input.matchesPerSeries
127
201
  : [undefined];
128
202
  for (const criteriaAlert of ((_d = input.criteriaInstance.data) === null || _d === void 0 ? void 0 : _d.alerts) || []) {
@@ -400,6 +474,7 @@ export default class MonitorAlert {
400
474
  }
401
475
  }
402
476
  static async resolveOpenAlert(input) {
477
+ var _a;
403
478
  const resolvedStateId = await AlertStateTimelineService.getResolvedStateIdForProject(input.openAlert.projectId);
404
479
  const alertStateTimeline = new AlertStateTimeline();
405
480
  alertStateTimeline.alertId = input.openAlert.id;
@@ -413,16 +488,46 @@ export default class MonitorAlert {
413
488
  if (input.dataToProcess) {
414
489
  alertStateTimeline.stateChangeLog = JSON.parse(JSON.stringify(input.dataToProcess));
415
490
  }
416
- await AlertStateTimelineService.create({
417
- data: alertStateTimeline,
418
- props: {
419
- isRoot: true,
420
- },
421
- });
491
+ try {
492
+ await AlertStateTimelineService.create({
493
+ data: alertStateTimeline,
494
+ props: {
495
+ isRoot: true,
496
+ },
497
+ });
498
+ }
499
+ catch (err) {
500
+ /*
501
+ * Idempotent concurrency race: two evaluations for the same monitor
502
+ * (e.g. the explicit per-key resolveSeriesAlertsByFingerprint path and
503
+ * the checkOpenAlertsAndCloseIfResolved path) can both decide to resolve
504
+ * the same open alert near-simultaneously. The loser's onBeforeCreate
505
+ * dedupe throws this exact BadDataException. Treat as a no-op at debug
506
+ * level instead of failing the queue job. Mirrors resolveOpenIncident.
507
+ */
508
+ if (err instanceof BadDataException &&
509
+ err.message === "Alert state cannot be same as previous state.") {
510
+ logger.debug(`${(_a = input.openAlert.id) === null || _a === void 0 ? void 0 : _a.toString()} - Alert already in resolved state; skipping duplicate state timeline (concurrent race).`);
511
+ }
512
+ else {
513
+ throw err;
514
+ }
515
+ }
422
516
  }
423
517
  static shouldCloseAlert(input) {
424
518
  var _a, _b, _c, _d, _e, _f, _g;
425
519
  const openSeriesFingerprint = input.openAlert.seriesFingerprint || undefined;
520
+ /*
521
+ * Event-driven (incoming-request / webhook) per-key alerts must NEVER
522
+ * be resolved by absence — only explicitly, via
523
+ * resolveSeriesAlertsByFingerprint, when the payload reports the key as
524
+ * recovered. Mirrors MonitorIncident.shouldCloseIncident. Without this
525
+ * guard, a heartbeat-timeout cron tick or a rejected webhook would
526
+ * bulk-resolve all open per-key alerts by absence.
527
+ */
528
+ if (input.disableSeriesAbsenceResolution && openSeriesFingerprint) {
529
+ return false;
530
+ }
426
531
  /*
427
532
  * Per-series auto-resolve: when a breaching-series set is given and
428
533
  * this alert has a fingerprint, resolve whenever the fingerprint is
@@ -470,6 +575,12 @@ __decorate([
470
575
  __metadata("design:paramtypes", [Object]),
471
576
  __metadata("design:returntype", Promise)
472
577
  ], MonitorAlert, "checkOpenAlertsAndCloseIfResolved", null);
578
+ __decorate([
579
+ CaptureSpan(),
580
+ __metadata("design:type", Function),
581
+ __metadata("design:paramtypes", [Object]),
582
+ __metadata("design:returntype", Promise)
583
+ ], MonitorAlert, "resolveSeriesAlertsByFingerprint", null);
473
584
  __decorate([
474
585
  CaptureSpan(),
475
586
  __metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"MonitorAlert.js","sourceRoot":"","sources":["../../../../../Server/Utils/Monitor/MonitorAlert.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MonitorAlert.js","sourceRoot":"","sources":["../../../../../Server/Utils/Monitor/MonitorAlert.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import APIRequestCriteria from "./Criteria/APIRequestCriteria";
5
5
  import CustomCodeMonitoringCriteria from "./Criteria/CustomCodeMonitorCriteria";
6
6
  import IncomingEmailCriteria from "./Criteria/IncomingEmailCriteria";
7
7
  import IncomingRequestCriteria from "./Criteria/IncomingRequestCriteria";
8
+ import IncomingRequestIncidentGrouping from "./IncomingRequestIncidentGrouping";
8
9
  import SSLMonitorCriteria from "./Criteria/SSLMonitorCriteria";
9
10
  import ServerMonitorCriteria from "./Criteria/ServerMonitorCriteria";
10
11
  import SyntheticMonitoringCriteria from "./Criteria/SyntheticMonitor";
@@ -142,6 +143,16 @@ ${contextBlock}
142
143
  if (perSeriesMatches.length > 0) {
143
144
  input.probeApiIngestResponse.perSeriesMatches = perSeriesMatches;
144
145
  }
146
+ else if (input.monitor.monitorType === MonitorType.IncomingRequest &&
147
+ IncomingRequestIncidentGrouping.isGroupingConfigured(criteriaInstance)) {
148
+ /*
149
+ * Grouped incoming-request criteria that produced no firing key
150
+ * (e.g. a pure "resolved" webhook). Force per-series mode with an
151
+ * empty set so the create path does NOT fall back to opening a
152
+ * single whole-monitor incident.
153
+ */
154
+ input.probeApiIngestResponse.perSeriesMatches = [];
155
+ }
145
156
  break;
146
157
  }
147
158
  }
@@ -157,6 +168,19 @@ ${contextBlock}
157
168
  */
158
169
  static async collectPerSeriesMatches(input) {
159
170
  var _a, _b, _c, _d;
171
+ /*
172
+ * Incoming Request / webhook monitors fan out per payload-derived key
173
+ * (e.g. one incident per Grafana alert name) when incidentGrouping is
174
+ * configured. No-op (returns []) when grouping is not configured, so
175
+ * existing incoming-request monitors keep their single-incident
176
+ * behaviour.
177
+ */
178
+ if (input.monitor.monitorType === MonitorType.IncomingRequest) {
179
+ return IncomingRequestIncidentGrouping.collectFiringMatches({
180
+ dataToProcess: input.dataToProcess,
181
+ criteriaInstance: input.criteriaInstance,
182
+ });
183
+ }
160
184
  if (input.monitor.monitorType !== MonitorType.Metrics &&
161
185
  input.monitor.monitorType !== MonitorType.Kubernetes &&
162
186
  input.monitor.monitorType !== MonitorType.Docker &&