@oneuptime/common 10.5.32 → 10.5.33

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 (34) hide show
  1. package/Models/DatabaseModels/KubernetesResource.ts +37 -0
  2. package/Server/API/KubernetesResourceAPI.ts +18 -9
  3. package/Server/Infrastructure/Postgres/SchemaMigrations/1780651429467-AddKubernetesLatestMemoryPercent.ts +19 -0
  4. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
  5. package/Server/Services/KubernetesResourceService.ts +37 -11
  6. package/Server/Utils/Monitor/MonitorAlert.ts +34 -0
  7. package/Server/Utils/Monitor/MonitorIncident.ts +60 -93
  8. package/Server/Utils/Monitor/MonitorMaintenanceSuppression.ts +229 -0
  9. package/Server/Utils/Monitor/MonitorResource.ts +18 -0
  10. package/Server/Utils/Monitor/SeriesResourceLabels.ts +156 -0
  11. package/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.ts +211 -0
  12. package/build/dist/Models/DatabaseModels/KubernetesResource.js +38 -0
  13. package/build/dist/Models/DatabaseModels/KubernetesResource.js.map +1 -1
  14. package/build/dist/Server/API/KubernetesResourceAPI.js +6 -4
  15. package/build/dist/Server/API/KubernetesResourceAPI.js.map +1 -1
  16. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780651429467-AddKubernetesLatestMemoryPercent.js +12 -0
  17. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780651429467-AddKubernetesLatestMemoryPercent.js.map +1 -0
  18. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
  19. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  20. package/build/dist/Server/Services/KubernetesResourceService.js +13 -5
  21. package/build/dist/Server/Services/KubernetesResourceService.js.map +1 -1
  22. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +36 -17
  23. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  24. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +60 -107
  25. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  26. package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js +165 -0
  27. package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js.map +1 -0
  28. package/build/dist/Server/Utils/Monitor/MonitorResource.js +16 -0
  29. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  30. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +106 -0
  31. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -0
  32. package/build/dist/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.js +142 -0
  33. package/build/dist/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.js.map +1 -0
  34. package/package.json +1 -1
@@ -34,6 +34,7 @@ import logger from "../Logger";
34
34
  import CaptureSpan from "../Telemetry/CaptureSpan";
35
35
  import MonitorTemplateUtil from "./MonitorTemplateUtil";
36
36
  import OneUptimeDate from "../../../Types/Date";
37
+ import SeriesResourceLabels from "./SeriesResourceLabels";
37
38
  export default class MonitorIncident {
38
39
  static async checkOpenIncidentsAndCloseIfResolved(input) {
39
40
  var _a, _b, _c, _d, _e;
@@ -93,7 +94,7 @@ export default class MonitorIncident {
93
94
  return openIncidents;
94
95
  }
95
96
  static async criteriaMetCreateIncidentsAndUpdateMonitorStatus(input) {
96
- 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;
97
+ 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, _2, _3;
97
98
  const incidentLogAttributes = {
98
99
  projectId: (_a = input.monitor.projectId) === null || _a === void 0 ? void 0 : _a.toString(),
99
100
  };
@@ -135,6 +136,29 @@ export default class MonitorIncident {
135
136
  const seriesFingerprint = seriesMatch === null || seriesMatch === void 0 ? void 0 : seriesMatch.fingerprint;
136
137
  const seriesLabels = seriesMatch === null || seriesMatch === void 0 ? void 0 : seriesMatch.labels;
137
138
  const seriesRootCause = (seriesMatch === null || seriesMatch === void 0 ? void 0 : seriesMatch.rootCause) || input.rootCause;
139
+ /*
140
+ * Per-series scheduled-maintenance suppression: this series'
141
+ * resource is inside an ongoing maintenance window, so skip
142
+ * creating an incident for it. Other series on the same monitor
143
+ * whose resources are not under maintenance still get incidents.
144
+ * Note: we only suppress *new* creation — any incident already
145
+ * open for this series is left to the normal resolve path
146
+ * (checkOpenIncidentsAndCloseIfResolved still sees the full
147
+ * breaching set), so a real incident raised before maintenance
148
+ * is not silently closed.
149
+ */
150
+ if (seriesFingerprint &&
151
+ ((_e = input.suppressedSeriesFingerprints) === null || _e === void 0 ? void 0 : _e.has(seriesFingerprint))) {
152
+ logger.debug(`${(_f = input.monitor.id) === null || _f === void 0 ? void 0 : _f.toString()} - Skipping incident for series ${seriesFingerprint}: its resource is under an active scheduled maintenance window.`, incidentLogAttributes);
153
+ (_g = input.evaluationSummary) === null || _g === void 0 ? void 0 : _g.events.push({
154
+ type: "incident-skipped",
155
+ title: "Incident suppressed by scheduled maintenance",
156
+ message: "Skipped creating an incident because the resource for this series is under an active scheduled maintenance window.",
157
+ relatedCriteriaId: (_h = input.criteriaInstance.data) === null || _h === void 0 ? void 0 : _h.id,
158
+ at: OneUptimeDate.getCurrentDate(),
159
+ });
160
+ continue;
161
+ }
138
162
  const alreadyOpenIncident = openIncidents.find((incident) => {
139
163
  var _a;
140
164
  return (incident.createdCriteriaId ===
@@ -144,8 +168,8 @@ export default class MonitorIncident {
144
168
  (incident.seriesFingerprint || undefined) === seriesFingerprint);
145
169
  });
146
170
  const hasAlreadyOpenIncident = Boolean(alreadyOpenIncident);
147
- logger.debug(`${(_e = input.monitor.id) === null || _e === void 0 ? void 0 : _e.toString()} - Open Incident ${(_f = alreadyOpenIncident === null || alreadyOpenIncident === void 0 ? void 0 : alreadyOpenIncident.id) === null || _f === void 0 ? void 0 : _f.toString()}`, incidentLogAttributes);
148
- logger.debug(`${(_g = input.monitor.id) === null || _g === void 0 ? void 0 : _g.toString()} - Has open incident ${hasAlreadyOpenIncident}`, incidentLogAttributes);
171
+ logger.debug(`${(_j = input.monitor.id) === null || _j === void 0 ? void 0 : _j.toString()} - Open Incident ${(_k = alreadyOpenIncident === null || alreadyOpenIncident === void 0 ? void 0 : alreadyOpenIncident.id) === null || _k === void 0 ? void 0 : _k.toString()}`, incidentLogAttributes);
172
+ logger.debug(`${(_l = input.monitor.id) === null || _l === void 0 ? void 0 : _l.toString()} - Has open incident ${hasAlreadyOpenIncident}`, incidentLogAttributes);
149
173
  if (hasAlreadyOpenIncident) {
150
174
  /*
151
175
  * Use the open incident's already-rendered title when
@@ -156,19 +180,19 @@ export default class MonitorIncident {
156
180
  * incident somehow has no title.
157
181
  */
158
182
  const renderedTitle = (alreadyOpenIncident === null || alreadyOpenIncident === void 0 ? void 0 : alreadyOpenIncident.title) || criteriaIncident.title;
159
- (_h = input.evaluationSummary) === null || _h === void 0 ? void 0 : _h.events.push({
183
+ (_m = input.evaluationSummary) === null || _m === void 0 ? void 0 : _m.events.push({
160
184
  type: "incident-skipped",
161
185
  title: `Incident already active: ${renderedTitle}`,
162
186
  message: "Skipped creating a new incident because an active incident exists for this criteria.",
163
- relatedCriteriaId: (_j = input.criteriaInstance.data) === null || _j === void 0 ? void 0 : _j.id,
164
- relatedIncidentId: (_k = alreadyOpenIncident === null || alreadyOpenIncident === void 0 ? void 0 : alreadyOpenIncident.id) === null || _k === void 0 ? void 0 : _k.toString(),
187
+ relatedCriteriaId: (_o = input.criteriaInstance.data) === null || _o === void 0 ? void 0 : _o.id,
188
+ relatedIncidentId: (_p = alreadyOpenIncident === null || alreadyOpenIncident === void 0 ? void 0 : alreadyOpenIncident.id) === null || _p === void 0 ? void 0 : _p.toString(),
165
189
  relatedIncidentNumber: alreadyOpenIncident === null || alreadyOpenIncident === void 0 ? void 0 : alreadyOpenIncident.incidentNumber,
166
190
  relatedIncidentNumberWithPrefix: alreadyOpenIncident === null || alreadyOpenIncident === void 0 ? void 0 : alreadyOpenIncident.incidentNumberWithPrefix,
167
191
  at: OneUptimeDate.getCurrentDate(),
168
192
  });
169
193
  continue;
170
194
  }
171
- logger.debug(`${(_l = input.monitor.id) === null || _l === void 0 ? void 0 : _l.toString()} - Create incident.`, incidentLogAttributes);
195
+ logger.debug(`${(_q = input.monitor.id) === null || _q === void 0 ? void 0 : _q.toString()} - Create incident.`, incidentLogAttributes);
172
196
  const incident = new Incident();
173
197
  const storageMap = MonitorTemplateUtil.buildTemplateStorageMap({
174
198
  monitorType: input.monitor.monitorType,
@@ -221,7 +245,7 @@ export default class MonitorIncident {
221
245
  * "Cannot read properties of undefined (reading 'toString')" and failed
222
246
  * the job on every cycle for the affected monitor.
223
247
  */
224
- if ((_m = input.criteriaInstance.data) === null || _m === void 0 ? void 0 : _m.id) {
248
+ if ((_r = input.criteriaInstance.data) === null || _r === void 0 ? void 0 : _r.id) {
225
249
  incident.createdCriteriaId =
226
250
  input.criteriaInstance.data.id.toString();
227
251
  }
@@ -240,14 +264,14 @@ export default class MonitorIncident {
240
264
  });
241
265
  }
242
266
  incident.onCallDutyPolicies =
243
- ((_o = criteriaIncident.onCallPolicyIds) === null || _o === void 0 ? void 0 : _o.map((id) => {
267
+ ((_s = criteriaIncident.onCallPolicyIds) === null || _s === void 0 ? void 0 : _s.map((id) => {
244
268
  const onCallPolicy = new OnCallDutyPolicy();
245
269
  onCallPolicy._id = id.toString();
246
270
  return onCallPolicy;
247
271
  })) || [];
248
272
  // Set labels from criteria
249
273
  incident.labels =
250
- ((_p = criteriaIncident.labelIds) === null || _p === void 0 ? void 0 : _p.map((id) => {
274
+ ((_t = criteriaIncident.labelIds) === null || _t === void 0 ? void 0 : _t.map((id) => {
251
275
  const label = new Label();
252
276
  label._id = id.toString();
253
277
  return label;
@@ -275,11 +299,11 @@ export default class MonitorIncident {
275
299
  });
276
300
  }
277
301
  if (DisableAutomaticIncidentCreation) {
278
- (_q = input.evaluationSummary) === null || _q === void 0 ? void 0 : _q.events.push({
302
+ (_u = input.evaluationSummary) === null || _u === void 0 ? void 0 : _u.events.push({
279
303
  type: "incident-skipped",
280
304
  title: "Incident creation skipped",
281
305
  message: "Automatic incident creation is disabled by environment configuration.",
282
- relatedCriteriaId: (_r = input.criteriaInstance.data) === null || _r === void 0 ? void 0 : _r.id,
306
+ relatedCriteriaId: (_v = input.criteriaInstance.data) === null || _v === void 0 ? void 0 : _v.id,
283
307
  at: OneUptimeDate.getCurrentDate(),
284
308
  });
285
309
  return;
@@ -291,8 +315,8 @@ export default class MonitorIncident {
291
315
  },
292
316
  });
293
317
  // Add owner teams and users after incident creation
294
- if (((_s = criteriaIncident.ownerTeamIds) === null || _s === void 0 ? void 0 : _s.length) ||
295
- ((_t = criteriaIncident.ownerUserIds) === null || _t === void 0 ? void 0 : _t.length)) {
318
+ if (((_w = criteriaIncident.ownerTeamIds) === null || _w === void 0 ? void 0 : _w.length) ||
319
+ ((_x = criteriaIncident.ownerUserIds) === null || _x === void 0 ? void 0 : _x.length)) {
296
320
  await IncidentService.addOwners(input.monitor.projectId, createdIncident.id, criteriaIncident.ownerUserIds || [], criteriaIncident.ownerTeamIds || [], true, // notify owners
297
321
  {
298
322
  isRoot: true,
@@ -316,20 +340,20 @@ export default class MonitorIncident {
316
340
  isRoot: true,
317
341
  },
318
342
  });
319
- logger.debug(`${(_u = input.monitor.id) === null || _u === void 0 ? void 0 : _u.toString()} - Assigned incident member role ${assignment.roleId.toString()} to user ${assignment.userId.toString()}`, incidentLogAttributes);
343
+ logger.debug(`${(_y = input.monitor.id) === null || _y === void 0 ? void 0 : _y.toString()} - Assigned incident member role ${assignment.roleId.toString()} to user ${assignment.userId.toString()}`, incidentLogAttributes);
320
344
  }
321
345
  }
322
346
  catch (memberError) {
323
- logger.error(`${(_v = input.monitor.id) === null || _v === void 0 ? void 0 : _v.toString()} - Failed to assign incident member role: ${memberError}`, incidentLogAttributes);
347
+ logger.error(`${(_z = input.monitor.id) === null || _z === void 0 ? void 0 : _z.toString()} - Failed to assign incident member role: ${memberError}`, incidentLogAttributes);
324
348
  }
325
349
  }
326
350
  }
327
- (_w = input.evaluationSummary) === null || _w === void 0 ? void 0 : _w.events.push({
351
+ (_0 = input.evaluationSummary) === null || _0 === void 0 ? void 0 : _0.events.push({
328
352
  type: "incident-created",
329
353
  title: `Incident created: ${createdIncident.title || criteriaIncident.title}`,
330
- message: `Incident triggered from criteria "${((_x = input.criteriaInstance.data) === null || _x === void 0 ? void 0 : _x.name) || "Unnamed criteria"}".`,
331
- relatedCriteriaId: (_y = input.criteriaInstance.data) === null || _y === void 0 ? void 0 : _y.id,
332
- relatedIncidentId: (_z = createdIncident.id) === null || _z === void 0 ? void 0 : _z.toString(),
354
+ message: `Incident triggered from criteria "${((_1 = input.criteriaInstance.data) === null || _1 === void 0 ? void 0 : _1.name) || "Unnamed criteria"}".`,
355
+ relatedCriteriaId: (_2 = input.criteriaInstance.data) === null || _2 === void 0 ? void 0 : _2.id,
356
+ relatedIncidentId: (_3 = createdIncident.id) === null || _3 === void 0 ? void 0 : _3.toString(),
333
357
  relatedIncidentNumber: createdIncident.incidentNumber,
334
358
  relatedIncidentNumberWithPrefix: createdIncident.incidentNumberWithPrefix,
335
359
  at: OneUptimeDate.getCurrentDate(),
@@ -338,112 +362,41 @@ export default class MonitorIncident {
338
362
  }
339
363
  }
340
364
  /*
341
- * Pull every host / docker-host / k8s-cluster identifier out of the
342
- * series labels and attach the matching project-scoped records to
343
- * the incident. Series labels carry both raw OTel resource
344
- * attributes (`host.name`, `k8s.cluster.name`) and the OneUptime
345
- * stamps added at ingest (`oneuptime.host.id`,
346
- * `oneuptime.docker.host.id`, `oneuptime.kubernetes.cluster.id` and
347
- * their `.name` twins). OTel resource attributes are stored under
348
- * the `resource.` prefix in ClickHouse, so prefixed and unprefixed
349
- * forms are both accepted — whichever the group-by query surfaced,
350
- * we'll find it. Multi-value labels are flattened, so a series that
351
- * groups by a multi-valued attribute attaches every matching
352
- * record. Lookups are always project-scoped so a stale or hostile
353
- * stamp can't pull in a record from another tenant.
354
- *
355
- * For Docker hosts we deliberately ignore raw `host.name`/
356
- * `oneuptime.host.name`: those are the Host's territory, and the
357
- * ingest pipeline stamps `oneuptime.docker.host.*` independently
358
- * when the source is a docker host.
365
+ * Pull every host / docker-host / k8s-cluster / service identifier
366
+ * out of the series labels and attach the matching project-scoped
367
+ * records to the incident. The label-key resource-type mapping
368
+ * lives in SeriesResourceLabels (shared with the scheduled-maintenance
369
+ * suppression path so the two never disagree about which labels
370
+ * identify which resource). Lookups are always project-scoped so a
371
+ * stale or hostile stamp can't pull in a record from another tenant.
359
372
  */
360
373
  static async linkResourceContextFromSeries(input) {
361
- const collect = (keys) => {
362
- const found = new Set();
363
- for (const key of keys) {
364
- const value = input.seriesLabels[key];
365
- if (typeof value === "string" && value.length > 0) {
366
- found.add(value);
367
- continue;
368
- }
369
- if (Array.isArray(value)) {
370
- for (const item of value) {
371
- if (typeof item === "string" && item.length > 0) {
372
- found.add(item);
373
- }
374
- }
375
- }
376
- }
377
- return Array.from(found);
378
- };
379
- const hostIds = collect([
380
- "resource.oneuptime.host.id",
381
- "oneuptime.host.id",
382
- ]);
383
- const hostNames = collect([
384
- "resource.oneuptime.host.name",
385
- "oneuptime.host.name",
386
- "resource.host.name",
387
- "host.name",
388
- ]);
389
- const dockerHostIds = collect([
390
- "resource.oneuptime.docker.host.id",
391
- "oneuptime.docker.host.id",
392
- ]);
393
- const dockerHostNames = collect([
394
- "resource.oneuptime.docker.host.name",
395
- "oneuptime.docker.host.name",
396
- ]);
397
- const clusterIds = collect([
398
- "resource.oneuptime.kubernetes.cluster.id",
399
- "oneuptime.kubernetes.cluster.id",
400
- ]);
401
- const clusterNames = collect([
402
- "resource.oneuptime.kubernetes.cluster.name",
403
- "oneuptime.kubernetes.cluster.name",
404
- "resource.k8s.cluster.name",
405
- "k8s.cluster.name",
406
- ]);
407
- /*
408
- * Services come from OTel-ingested telemetry. The ingest pipeline
409
- * auto-creates a Service row keyed by `service.name`, so any series
410
- * label that carries that attribute (raw or prefixed) tells us the
411
- * emitting service. We also accept the `oneuptime.service.id`
412
- * stamp for callers that already resolved the ID upstream.
413
- */
414
- const serviceIds = collect([
415
- "resource.oneuptime.service.id",
416
- "oneuptime.service.id",
417
- ]);
418
- const serviceNames = collect([
419
- "resource.service.name",
420
- "service.name",
421
- ]);
374
+ const refs = SeriesResourceLabels.extractResourceRefs(input.seriesLabels);
422
375
  const [resolvedHosts, resolvedDockerHosts, resolvedClusters, resolvedServices,] = await Promise.all([
423
376
  this.resolveResourceIds({
424
- ids: hostIds,
425
- names: hostNames,
377
+ ids: refs.hostIds,
378
+ names: refs.hostNames,
426
379
  nameColumn: "hostIdentifier",
427
380
  projectId: input.projectId,
428
381
  findBy: HostService.findBy.bind(HostService),
429
382
  }),
430
383
  this.resolveResourceIds({
431
- ids: dockerHostIds,
432
- names: dockerHostNames,
384
+ ids: refs.dockerHostIds,
385
+ names: refs.dockerHostNames,
433
386
  nameColumn: "hostIdentifier",
434
387
  projectId: input.projectId,
435
388
  findBy: DockerHostService.findBy.bind(DockerHostService),
436
389
  }),
437
390
  this.resolveResourceIds({
438
- ids: clusterIds,
439
- names: clusterNames,
391
+ ids: refs.kubernetesClusterIds,
392
+ names: refs.kubernetesClusterNames,
440
393
  nameColumn: "clusterIdentifier",
441
394
  projectId: input.projectId,
442
395
  findBy: KubernetesClusterService.findBy.bind(KubernetesClusterService),
443
396
  }),
444
397
  this.resolveResourceIds({
445
- ids: serviceIds,
446
- names: serviceNames,
398
+ ids: refs.serviceIds,
399
+ names: refs.serviceNames,
447
400
  nameColumn: "name",
448
401
  projectId: input.projectId,
449
402
  findBy: ServiceService.findBy.bind(ServiceService),
@@ -1 +1 @@
1
- {"version":3,"file":"MonitorIncident.js","sourceRoot":"","sources":["../../../../../Server/Utils/Monitor/MonitorIncident.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MonitorIncident.js","sourceRoot":"","sources":["../../../../../Server/Utils/Monitor/MonitorIncident.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,165 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { LIMIT_PER_PROJECT } from "../../../Types/Database/LimitMax";
11
+ import ScheduledMaintenanceService from "../../Services/ScheduledMaintenanceService";
12
+ import CaptureSpan from "../Telemetry/CaptureSpan";
13
+ import SeriesResourceLabels from "./SeriesResourceLabels";
14
+ /*
15
+ * Per-series counterpart to the whole-monitor
16
+ * `disableActiveMonitoringBecauseOfScheduledMaintenanceEvent` flag.
17
+ *
18
+ * A grouped metric monitor (group-by `host.name`, say) evaluates its
19
+ * criteria once per series and creates one incident/alert per breaching
20
+ * series. The whole-monitor flag is all-or-nothing: it only fires when
21
+ * the *monitor itself* is attached to a maintenance event, and it would
22
+ * silence every series. That leaves a gap — attaching only some of the
23
+ * underlying resources (10 of 100 hosts) to a maintenance window did
24
+ * nothing, because nothing maps an attached host back to the series it
25
+ * owns.
26
+ *
27
+ * This util closes that gap: it returns the fingerprints of the series
28
+ * whose resource is under an ongoing maintenance window, so the
29
+ * incident/alert creation loops can skip exactly those series while the
30
+ * other 90 hosts keep alerting. It covers every resource type a
31
+ * maintenance event can attach to AND a series can identify: Host,
32
+ * DockerHost, KubernetesCluster, and Service.
33
+ */
34
+ export default class MonitorMaintenanceSuppression {
35
+ /*
36
+ * Resolve the per-series suppression set for one project. Returns an
37
+ * empty set on the common paths — no per-series matches, or no
38
+ * ongoing maintenance touching any resource — so callers pay at most
39
+ * one query and nothing when there is no maintenance.
40
+ */
41
+ static async getSuppressedSeriesFingerprints(input) {
42
+ if (!input.matchesPerSeries || input.matchesPerSeries.length === 0) {
43
+ return new Set();
44
+ }
45
+ const maintained = await this.getResourcesUnderOngoingMaintenance(input.projectId);
46
+ if (!this.hasAnyMaintainedResource(maintained)) {
47
+ return new Set();
48
+ }
49
+ return this.getSuppressedFingerprintsForMaintainedResources({
50
+ matchesPerSeries: input.matchesPerSeries,
51
+ maintained,
52
+ });
53
+ }
54
+ /*
55
+ * Pure matching step, split out from the query so it can be unit
56
+ * tested without a database. For each series, pull the resource
57
+ * identifiers out of its labels and suppress the series if any of
58
+ * them is under maintenance.
59
+ */
60
+ static getSuppressedFingerprintsForMaintainedResources(input) {
61
+ const suppressed = new Set();
62
+ for (const series of input.matchesPerSeries) {
63
+ if (!series.fingerprint || !series.labels) {
64
+ continue;
65
+ }
66
+ const refs = SeriesResourceLabels.extractResourceRefs(series.labels);
67
+ const isUnderMaintenance = this.intersects(refs.hostIds, input.maintained.hosts.ids) ||
68
+ this.intersects(refs.hostNames, input.maintained.hosts.names) ||
69
+ this.intersects(refs.dockerHostIds, input.maintained.dockerHosts.ids) ||
70
+ this.intersects(refs.dockerHostNames, input.maintained.dockerHosts.names) ||
71
+ this.intersects(refs.kubernetesClusterIds, input.maintained.kubernetesClusters.ids) ||
72
+ this.intersects(refs.kubernetesClusterNames, input.maintained.kubernetesClusters.names) ||
73
+ this.intersects(refs.serviceIds, input.maintained.services.ids) ||
74
+ this.intersects(refs.serviceNames, input.maintained.services.names);
75
+ if (isUnderMaintenance) {
76
+ suppressed.add(series.fingerprint);
77
+ }
78
+ }
79
+ return suppressed;
80
+ }
81
+ static intersects(values, set) {
82
+ for (const value of values) {
83
+ if (set.has(value)) {
84
+ return true;
85
+ }
86
+ }
87
+ return false;
88
+ }
89
+ static hasAnyMaintainedResource(maintained) {
90
+ return (maintained.hosts.ids.size > 0 ||
91
+ maintained.hosts.names.size > 0 ||
92
+ maintained.dockerHosts.ids.size > 0 ||
93
+ maintained.dockerHosts.names.size > 0 ||
94
+ maintained.kubernetesClusters.ids.size > 0 ||
95
+ maintained.kubernetesClusters.names.size > 0 ||
96
+ maintained.services.ids.size > 0 ||
97
+ maintained.services.names.size > 0);
98
+ }
99
+ /*
100
+ * Collect the ids + identifiers of every Host / DockerHost /
101
+ * KubernetesCluster / Service attached to an ongoing maintenance event
102
+ * in this project. Monitors attached to the event are intentionally
103
+ * not collected here — those are already handled upstream by the
104
+ * whole-monitor disable flag, which short-circuits evaluation before
105
+ * we ever reach per-series creation.
106
+ */
107
+ static async getResourcesUnderOngoingMaintenance(projectId) {
108
+ const maintained = {
109
+ hosts: { ids: new Set(), names: new Set() },
110
+ dockerHosts: { ids: new Set(), names: new Set() },
111
+ kubernetesClusters: { ids: new Set(), names: new Set() },
112
+ services: { ids: new Set(), names: new Set() },
113
+ };
114
+ const ongoingEvents = await ScheduledMaintenanceService.findBy({
115
+ query: {
116
+ projectId: projectId,
117
+ currentScheduledMaintenanceState: {
118
+ isOngoingState: true,
119
+ },
120
+ },
121
+ select: {
122
+ _id: true,
123
+ hosts: { _id: true, hostIdentifier: true },
124
+ dockerHosts: { _id: true, hostIdentifier: true },
125
+ kubernetesClusters: { _id: true, clusterIdentifier: true },
126
+ services: { _id: true, name: true },
127
+ },
128
+ skip: 0,
129
+ limit: LIMIT_PER_PROJECT,
130
+ props: {
131
+ isRoot: true,
132
+ },
133
+ });
134
+ for (const event of ongoingEvents) {
135
+ for (const host of event.hosts || []) {
136
+ this.addKey(maintained.hosts, host._id, host.hostIdentifier);
137
+ }
138
+ for (const dockerHost of event.dockerHosts || []) {
139
+ this.addKey(maintained.dockerHosts, dockerHost._id, dockerHost.hostIdentifier);
140
+ }
141
+ for (const cluster of event.kubernetesClusters || []) {
142
+ this.addKey(maintained.kubernetesClusters, cluster._id, cluster.clusterIdentifier);
143
+ }
144
+ for (const service of event.services || []) {
145
+ this.addKey(maintained.services, service._id, service.name);
146
+ }
147
+ }
148
+ return maintained;
149
+ }
150
+ static addKey(keySet, id, name) {
151
+ if (id) {
152
+ keySet.ids.add(String(id));
153
+ }
154
+ if (name) {
155
+ keySet.names.add(name);
156
+ }
157
+ }
158
+ }
159
+ __decorate([
160
+ CaptureSpan(),
161
+ __metadata("design:type", Function),
162
+ __metadata("design:paramtypes", [Object]),
163
+ __metadata("design:returntype", Promise)
164
+ ], MonitorMaintenanceSuppression, "getSuppressedSeriesFingerprints", null);
165
+ //# sourceMappingURL=MonitorMaintenanceSuppression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonitorMaintenanceSuppression.js","sourceRoot":"","sources":["../../../../../Server/Utils/Monitor/MonitorMaintenanceSuppression.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,7 @@ import OneUptimeDate from "../../../Types/Date";
23
23
  import TelemetryType from "../../../Types/Telemetry/TelemetryType";
24
24
  import MonitorIncident from "./MonitorIncident";
25
25
  import MonitorAlert from "./MonitorAlert";
26
+ import MonitorMaintenanceSuppression from "./MonitorMaintenanceSuppression";
26
27
  import MonitorStatusTimelineUtil from "./MonitorStatusTimeline";
27
28
  import CaptureSpan from "../Telemetry/CaptureSpan";
28
29
  import ExceptionMessages from "../../../Types/Exception/ExceptionMessages";
@@ -481,6 +482,19 @@ export default class MonitorResourceUtil {
481
482
  at: OneUptimeDate.getCurrentDate(),
482
483
  });
483
484
  }
485
+ /*
486
+ * For grouped metric monitors, work out which breaching series
487
+ * belong to a resource that is currently inside an ongoing
488
+ * scheduled maintenance window. Those series are suppressed
489
+ * below so the monitor keeps alerting on the rest. Computed once
490
+ * and shared by both the incident and alert paths. Cheap on the
491
+ * common path: no per-series matches, or no ongoing maintenance,
492
+ * returns an empty set after at most one query.
493
+ */
494
+ const suppressedSeriesFingerprints = await MonitorMaintenanceSuppression.getSuppressedSeriesFingerprints({
495
+ projectId: monitor.projectId,
496
+ matchesPerSeries: response.perSeriesMatches,
497
+ });
484
498
  await MonitorIncident.criteriaMetCreateIncidentsAndUpdateMonitorStatus({
485
499
  monitor: monitor,
486
500
  rootCause: response.rootCause,
@@ -492,6 +506,7 @@ export default class MonitorResourceUtil {
492
506
  telemetryQuery: telemetryQuery,
493
507
  },
494
508
  matchesPerSeries: response.perSeriesMatches,
509
+ suppressedSeriesFingerprints,
495
510
  });
496
511
  await MonitorAlert.criteriaMetCreateAlertsAndUpdateMonitorStatus({
497
512
  monitor: monitor,
@@ -504,6 +519,7 @@ export default class MonitorResourceUtil {
504
519
  telemetryQuery: telemetryQuery,
505
520
  },
506
521
  matchesPerSeries: response.perSeriesMatches,
522
+ suppressedSeriesFingerprints,
507
523
  });
508
524
  }
509
525
  else if (!response.criteriaMetId &&