@oneuptime/common 10.2.15 → 10.2.17
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.
- package/Server/API/DashboardAPI.ts +0 -6
- package/Server/Services/DockerHostService.ts +91 -0
- package/Server/Services/IncidentService.ts +60 -23
- package/Server/Services/KubernetesClusterService.ts +92 -0
- package/Types/Dashboard/DashboardComponents/DashboardValueComponent.ts +15 -0
- package/Types/Dashboard/DashboardTemplates.ts +260 -971
- package/Types/Dashboard/DashboardVariable.ts +0 -8
- package/UI/Components/Charts/Utils/DataPoint.ts +0 -0
- package/Utils/Dashboard/Components/DashboardValueComponent.ts +36 -2
- package/Utils/ValueFormatter.ts +57 -0
- package/build/dist/Server/API/DashboardAPI.js +0 -3
- package/build/dist/Server/API/DashboardAPI.js.map +1 -1
- package/build/dist/Server/Services/DockerHostService.js +73 -0
- package/build/dist/Server/Services/DockerHostService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +55 -18
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterService.js +74 -0
- package/build/dist/Server/Services/KubernetesClusterService.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardValueComponent.js +14 -1
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardValueComponent.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardTemplates.js +240 -928
- package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
- package/build/dist/UI/Components/Charts/Utils/DataPoint.js +0 -0
- package/build/dist/UI/Components/Charts/Utils/DataPoint.js.map +1 -1
- package/build/dist/Utils/Dashboard/Components/DashboardValueComponent.js +31 -1
- package/build/dist/Utils/Dashboard/Components/DashboardValueComponent.js.map +1 -1
- package/build/dist/Utils/ValueFormatter.js +51 -0
- package/build/dist/Utils/ValueFormatter.js.map +1 -1
- package/package.json +1 -1
|
@@ -22,14 +22,6 @@ export default interface DashboardVariable {
|
|
|
22
22
|
* of this attribute across the current time range.
|
|
23
23
|
*/
|
|
24
24
|
attributeKey?: string | undefined;
|
|
25
|
-
/*
|
|
26
|
-
* For TelemetryAttribute: optional metric name to scope the option
|
|
27
|
-
* lookup to. When set, the dropdown lists distinct attribute values
|
|
28
|
-
* observed on that metric only (e.g. distinct `k8s.pod.name` values
|
|
29
|
-
* emitted by `k8s.container.cpu_usage`). Leave undefined to list
|
|
30
|
-
* values across every metric in the project.
|
|
31
|
-
*/
|
|
32
|
-
metricName?: string | undefined;
|
|
33
25
|
// Current selected value(s)
|
|
34
26
|
selectedValue?: string | undefined;
|
|
35
27
|
selectedValues?: Array<string> | undefined;
|
|
Binary file
|
|
@@ -3,7 +3,9 @@ import {
|
|
|
3
3
|
ComponentArgumentSection,
|
|
4
4
|
ComponentInputType,
|
|
5
5
|
} from "../../../Types/Dashboard/DashboardComponents/ComponentArgument";
|
|
6
|
-
import DashboardValueComponent
|
|
6
|
+
import DashboardValueComponent, {
|
|
7
|
+
DashboardValueTrendDirection,
|
|
8
|
+
} from "../../../Types/Dashboard/DashboardComponents/DashboardValueComponent";
|
|
7
9
|
import DashboardComponentType from "../../../Types/Dashboard/DashboardComponentType";
|
|
8
10
|
import { ObjectType } from "../../../Types/JSON";
|
|
9
11
|
import ObjectID from "../../../Types/ObjectID";
|
|
@@ -15,10 +17,17 @@ const DataSourceSection: ComponentArgumentSection = {
|
|
|
15
17
|
order: 1,
|
|
16
18
|
};
|
|
17
19
|
|
|
20
|
+
const DisplaySection: ComponentArgumentSection = {
|
|
21
|
+
name: "Display",
|
|
22
|
+
description: "Tune how the trend arrow is coloured",
|
|
23
|
+
order: 2,
|
|
24
|
+
defaultCollapsed: true,
|
|
25
|
+
};
|
|
26
|
+
|
|
18
27
|
const ThresholdsSection: ComponentArgumentSection = {
|
|
19
28
|
name: "Thresholds",
|
|
20
29
|
description: "Set warning and critical levels",
|
|
21
|
-
order:
|
|
30
|
+
order: 3,
|
|
22
31
|
defaultCollapsed: true,
|
|
23
32
|
};
|
|
24
33
|
|
|
@@ -71,6 +80,31 @@ export default class DashboardValueComponentUtil extends DashboardBaseComponentU
|
|
|
71
80
|
section: DataSourceSection,
|
|
72
81
|
});
|
|
73
82
|
|
|
83
|
+
componentArguments.push({
|
|
84
|
+
name: "Trend Direction",
|
|
85
|
+
description:
|
|
86
|
+
"How the trend arrow is coloured. Auto reads the metric name (e.g. 'error_count' and 'latency' are treated as 'higher is worse'). Pick a value to override.",
|
|
87
|
+
required: false,
|
|
88
|
+
type: ComponentInputType.Dropdown,
|
|
89
|
+
id: "trendDirection",
|
|
90
|
+
isAdvanced: true,
|
|
91
|
+
section: DisplaySection,
|
|
92
|
+
dropdownOptions: [
|
|
93
|
+
{
|
|
94
|
+
label: "Auto (detect from metric name)",
|
|
95
|
+
value: DashboardValueTrendDirection.Auto,
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
label: "Higher is better (↑ green)",
|
|
99
|
+
value: DashboardValueTrendDirection.HigherIsBetter,
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
label: "Higher is worse (↑ red)",
|
|
103
|
+
value: DashboardValueTrendDirection.HigherIsWorse,
|
|
104
|
+
},
|
|
105
|
+
],
|
|
106
|
+
});
|
|
107
|
+
|
|
74
108
|
componentArguments.push({
|
|
75
109
|
name: "Warning Threshold",
|
|
76
110
|
description: "Yellow background when value exceeds this",
|
package/Utils/ValueFormatter.ts
CHANGED
|
@@ -189,6 +189,27 @@ function formatWithThresholds(
|
|
|
189
189
|
): FormattedValue {
|
|
190
190
|
const absValue: number = Math.abs(value);
|
|
191
191
|
|
|
192
|
+
/*
|
|
193
|
+
* 0 is a tricky edge case for descending-threshold tables: the table
|
|
194
|
+
* always has a `threshold: 0` entry at the bottom (the smallest sub-
|
|
195
|
+
* unit — ns for seconds, B for bytes), and `0 >= 0` short-circuits the
|
|
196
|
+
* loop on that entry. The result is that a 0-value `seconds` metric
|
|
197
|
+
* renders as "0 ns" instead of "0 sec". Use the natural unit
|
|
198
|
+
* (divisor === 1) when the value is exactly 0 so the suffix matches
|
|
199
|
+
* the input scale.
|
|
200
|
+
*/
|
|
201
|
+
if (absValue === 0) {
|
|
202
|
+
const natural: UnitThreshold =
|
|
203
|
+
thresholds.find((t: UnitThreshold) => {
|
|
204
|
+
return t.divisor === 1;
|
|
205
|
+
}) ?? (thresholds[thresholds.length - 1] as UnitThreshold);
|
|
206
|
+
return {
|
|
207
|
+
value: "0",
|
|
208
|
+
unit: natural.unit,
|
|
209
|
+
formatted: `0 ${natural.unit}`,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
|
|
192
213
|
for (const t of thresholds) {
|
|
193
214
|
if (absValue >= t.threshold) {
|
|
194
215
|
const scaled: number = value / t.divisor;
|
|
@@ -414,6 +435,42 @@ export default class ValueFormatter {
|
|
|
414
435
|
return fractionMetricSuffixRegex.test(metricName);
|
|
415
436
|
}
|
|
416
437
|
|
|
438
|
+
/*
|
|
439
|
+
* Direction-of-goodness heuristic for trend coloring. Returns true when a
|
|
440
|
+
* rising value on this metric should be shown as bad (red ↑) and a falling
|
|
441
|
+
* value as good (green ↓) — the opposite of the default "up = good".
|
|
442
|
+
*
|
|
443
|
+
* Caller is responsible for the inversion; this method only classifies.
|
|
444
|
+
* Conservative by default: when the metric name carries no signal we
|
|
445
|
+
* return `false` so generic counters (request rate, network I/O, span
|
|
446
|
+
* count) keep the up = good colour scheme. Explicit "higher is better"
|
|
447
|
+
* tokens (uptime/availability/online/ready/healthy/available/success/
|
|
448
|
+
* passed) take precedence — without that allowlist `oneuptime.monitor.
|
|
449
|
+
* online` would match nothing and incorrectly fall through; the suffix
|
|
450
|
+
* test then catches incident counts, error rates, MTTR/MTTA, response
|
|
451
|
+
* times, CPU/memory usage, restarts, pressure, queue backlogs, etc.
|
|
452
|
+
*
|
|
453
|
+
* Adding a metric here is a single regex edit. If a dashboard widget
|
|
454
|
+
* really needs to override this for a specific case, callers can set
|
|
455
|
+
* `higherIsBetter` explicitly on the trend display.
|
|
456
|
+
*/
|
|
457
|
+
public static isHigherWorseMetric(metricName: string | undefined): boolean {
|
|
458
|
+
if (!metricName) {
|
|
459
|
+
return false;
|
|
460
|
+
}
|
|
461
|
+
const lower: string = metricName.toLowerCase();
|
|
462
|
+
|
|
463
|
+
const higherIsBetter: RegExp =
|
|
464
|
+
/\b(uptime|availability|online|ready|healthy|available|success|passed|ok|alive|up)\b/;
|
|
465
|
+
if (higherIsBetter.test(lower)) {
|
|
466
|
+
return false;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
const higherIsWorse: RegExp =
|
|
470
|
+
/(error|fail(?:ure|ed)?|incident|exception|crash|restart|timeout|dropped|aborted?|reject(?:ed)?|mttr|mtta|latenc(?:y|ies)|duration|[._-]time\b|time[._-]to[._-]|usage|utilization|pressure|unresolved|pending|backlog|lag|delay|saturation|throttl|stall|missed?)/;
|
|
471
|
+
return higherIsWorse.test(lower);
|
|
472
|
+
}
|
|
473
|
+
|
|
417
474
|
// Check if a unit is one we can auto-scale (bytes, seconds, etc.)
|
|
418
475
|
public static isScalableUnit(unit: string): boolean {
|
|
419
476
|
if (!unit || unit.trim() === "") {
|
|
@@ -242,8 +242,6 @@ export default class DashboardAPI extends BaseAPI {
|
|
|
242
242
|
if (!attributeKey || !attributeKey.trim()) {
|
|
243
243
|
throw new BadDataException("attributeKey is required.");
|
|
244
244
|
}
|
|
245
|
-
const metricNameRaw = req.body && req.body["metricName"];
|
|
246
|
-
const metricName = metricNameRaw && metricNameRaw.trim() ? metricNameRaw : undefined;
|
|
247
245
|
const telemetryTypeRaw = req.body && req.body["telemetryType"];
|
|
248
246
|
let telemetryType = TelemetryType.Metric;
|
|
249
247
|
if (telemetryTypeRaw) {
|
|
@@ -271,7 +269,6 @@ export default class DashboardAPI extends BaseAPI {
|
|
|
271
269
|
projectId: dashboard.projectId,
|
|
272
270
|
telemetryType,
|
|
273
271
|
attributeKey: attributeKey.trim(),
|
|
274
|
-
metricName,
|
|
275
272
|
});
|
|
276
273
|
return Response.sendJsonObjectResponse(req, res, {
|
|
277
274
|
values,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardAPI.js","sourceRoot":"","sources":["../../../../Server/API/DashboardAPI.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DashboardAPI.js","sourceRoot":"","sources":["../../../../Server/API/DashboardAPI.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,iCAAiC,CAAC;AAC7D,OAAO,gBAEN,MAAM,8BAA8B,CAAC;AACtC,OAAO,sBAAsB,MAAM,oCAAoC,CAAC;AACxE,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,MAAM,EAAE,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAOtE,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AACzC,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AACtE,OAAO,iBAAiB,MAAM,yCAAyC,CAAC;AACxE,OAAO,YAAY,MAAM,0BAA0B,CAAC;AACpD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,SAAS,MAAM,uCAAuC,CAAC;AAE9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,yCAAyC,EAAE,MAAM,sCAAsC,CAAC;AAGjG,OAAO,aAAa,MAAM,2BAA2B,CAAC;AACtD,OAAO,yBAAyB,MAAM,uCAAuC,CAAC;AAC9E,OAAO,aAAa,MAAM,qCAAqC,CAAC;AAEhE,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,OAGzC;IACC;;QACE,KAAK,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QAEnC,mDAAmD;QACnD,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,GAAG,MAAA,IAAI,IAAI,CAAC,UAAU,EAAE;aACrB,cAAc,EAAE,0CACf,QAAQ,EAAE,2BAA2B,EACzC,cAAc,CAAC,iBAAiB,EAChC,KAAK,EAAE,GAAmB,EAAE,GAAoB,EAAE,IAAkB,EAAE,EAAE;;YACtE,IAAI,CAAC;gBACH,MAAM,mBAAmB,GAAW,GAAG,CAAC,MAAM,CAC5C,qBAAqB,CACZ,CAAC;gBAEZ,IAAI,WAAW,GAAoB,IAAI,CAAC;gBAExC,IAAI,mBAAmB,IAAI,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC7D,6CAA6C;oBAC7C,MAAM,eAAe,GACnB,MAAM,sBAAsB,CAAC,SAAS,CAAC;wBACrC,KAAK,EAAE;4BACL,UAAU,EAAE,mBAAmB;4BAC/B,MAAM,EAAE;gCACN,UAAU,EAAE,IAAI;6BACV;yBACT;wBACD,MAAM,EAAE;4BACN,WAAW,EAAE,IAAI;yBAClB;wBACD,KAAK,EAAE;4BACL,MAAM,EAAE,IAAI;yBACb;qBACF,CAAC,CAAC;oBAEL,IAAI,CAAC,eAAe,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;wBACrD,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,iBAAiB,CAAC,qBAAqB,CAAC,CAC7C,CAAC;oBACJ,CAAC;oBAED,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC;gBAC5C,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC;wBACH,WAAW,GAAG,IAAI,QAAQ,CAAC,mBAAmB,CAAC,CAAC;oBAClD,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,MAAM,CAAC,KAAK,CACV,GAAG,EACH,2BAA2B,CAAC,GAAuB,CAAC,CACrD,CAAC;wBACF,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,gBAAgB,CAAC,sBAAsB,CAAC,CAC7C,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,MAAM,SAAS,GACb,MAAM,gBAAgB,CAAC,WAAW,CAAC;oBACjC,EAAE,EAAE,WAAW;oBACf,MAAM,EAAE;wBACN,GAAG,EAAE,IAAI;wBACT,IAAI,EAAE,IAAI;wBACV,WAAW,EAAE,IAAI;wBACjB,SAAS,EAAE,IAAI;wBACf,eAAe,EAAE,IAAI;qBACtB;oBACD,KAAK,EAAE;wBACL,MAAM,EAAE,IAAI;qBACb;iBACF,CAAC,CAAC;gBAEL,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,iBAAiB,CAAC,qBAAqB,CAAC,CAC7C,CAAC;gBACJ,CAAC;gBAED,OAAO,QAAQ,CAAC,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE;oBAC/C,GAAG,EAAE,CAAA,MAAA,SAAS,CAAC,GAAG,0CAAE,QAAQ,EAAE,KAAI,EAAE;oBACpC,KAAK,EAAE,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,IAAI,WAAW;oBAC3D,WAAW,EACT,SAAS,CAAC,eAAe;wBACzB,SAAS,CAAC,WAAW;wBACrB,sCAAsC;iBACzC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,CAAC;YACZ,CAAC;QACH,CAAC,CACF,CAAC;QAEF,6BAA6B;QAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,GAAG,MAAA,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,cAAc,EAAE,0CAAE,QAAQ,EAAE,SAAS,EAC9D,cAAc,CAAC,iBAAiB,EAChC,KAAK,EAAE,GAAmB,EAAE,GAAoB,EAAE,IAAkB,EAAE,EAAE;YACtE,IAAI,CAAC;gBACH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACxB,MAAM,IAAI,gBAAgB,CAAC,oCAAoC,CAAC,CAAC;gBACnE,CAAC;gBAED,MAAM,MAAM,GAAW,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAW,CAAC;gBAEpD,MAAM,eAAe,GACnB,MAAM,sBAAsB,CAAC,SAAS,CAAC;oBACrC,KAAK,EAAE;wBACL,UAAU,EAAE,MAAM;wBAClB,MAAM,EAAE;4BACN,UAAU,EAAE,IAAI;yBACV;qBACT;oBACD,MAAM,EAAE;wBACN,WAAW,EAAE,IAAI;qBAClB;oBACD,KAAK,EAAE;wBACL,MAAM,EAAE,IAAI;qBACb;iBACF,CAAC,CAAC;gBAEL,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,MAAM,IAAI,gBAAgB,CAAC,qCAAqC,CAAC,CAAC;gBACpE,CAAC;gBAED,MAAM,QAAQ,GAAa,eAAe,CAAC,WAAY,CAAC;gBAExD,OAAO,QAAQ,CAAC,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE;oBAC/C,WAAW,EAAE,QAAQ,CAAC,QAAQ,EAAE;iBACjC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,CAAC;YACZ,CAAC;QACH,CAAC,CACF,CAAC;QAEF,mEAAmE;QACnE,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,GAAG,MAAA,IAAI,IAAI,CAAC,UAAU,EAAE;aACrB,cAAc,EAAE,0CACf,QAAQ,EAAE,wBAAwB,EACtC,cAAc,CAAC,iBAAiB,EAChC,KAAK,EAAE,GAAmB,EAAE,GAAoB,EAAE,IAAkB,EAAE,EAAE;;YACtE,IAAI,CAAC;gBACH,MAAM,WAAW,GAAa,IAAI,QAAQ,CACxC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAW,CACpC,CAAC;gBAEF,MAAM,SAAS,GACb,MAAM,gBAAgB,CAAC,WAAW,CAAC;oBACjC,EAAE,EAAE,WAAW;oBACf,MAAM,EAAE;wBACN,GAAG,EAAE,IAAI;wBACT,IAAI,EAAE,IAAI;wBACV,WAAW,EAAE,IAAI;wBACjB,iBAAiB,EAAE,IAAI;wBACvB,oBAAoB,EAAE,IAAI;wBAC1B,SAAS,EAAE,IAAI;wBACf,eAAe,EAAE,IAAI;wBACrB,QAAQ,EAAE;4BACR,IAAI,EAAE,IAAI;4BACV,QAAQ,EAAE,IAAI;yBACf;wBACD,WAAW,EAAE;4BACX,IAAI,EAAE,IAAI;4BACV,QAAQ,EAAE,IAAI;yBACf;qBACF;oBACD,KAAK,EAAE;wBACL,MAAM,EAAE,IAAI;qBACb;iBACF,CAAC,CAAC;gBAEL,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,MAAM,IAAI,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;gBACrD,CAAC;gBAED,OAAO,QAAQ,CAAC,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE;oBAC/C,GAAG,EAAE,CAAA,MAAA,SAAS,CAAC,GAAG,0CAAE,QAAQ,EAAE,KAAI,EAAE;oBACpC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,WAAW;oBACnC,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,EAAE;oBACxC,iBAAiB,EAAE,SAAS,CAAC,iBAAiB,IAAI,KAAK;oBACvD,oBAAoB,EAAE,SAAS,CAAC,oBAAoB,IAAI,KAAK;oBAC7D,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,EAAE;oBACpC,eAAe,EAAE,SAAS,CAAC,eAAe,IAAI,EAAE;oBAChD,QAAQ,EAAE,YAAY,CAAC,yBAAyB,CAC9C,SAAS,CAAC,QAAQ,CACnB;oBACD,WAAW,EAAE,YAAY,CAAC,yBAAyB,CACjD,SAAS,CAAC,WAAW,CACtB;iBACF,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,CAAC;YACZ,CAAC;QACH,CAAC,CACF,CAAC;QAEF,oFAAoF;QACpF,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,GAAG,MAAA,IAAI,IAAI,CAAC,UAAU,EAAE;aACrB,cAAc,EAAE,0CACf,QAAQ,EAAE,2BAA2B,EACzC,cAAc,CAAC,iBAAiB,EAChC,KAAK,EAAE,GAAmB,EAAE,GAAoB,EAAE,IAAkB,EAAE,EAAE;;YACtE,IAAI,CAAC;gBACH,MAAM,WAAW,GAAa,IAAI,QAAQ,CACxC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAW,CACpC,CAAC;gBAEF,0EAA0E;gBAC1E,MAAM,YAAY,GAGd,MAAM,gBAAgB,CAAC,aAAa,CAAC;oBACvC,WAAW;oBACX,GAAG;iBACJ,CAAC,CAAC;gBAEH,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;oBAChC,MAAM,CACJ,YAAY,CAAC,KAAK;wBAClB,IAAI,gBAAgB,CAAC,kCAAkC,CAAC,CACzD,CAAC;gBACJ,CAAC;gBAED,MAAM,SAAS,GACb,MAAM,gBAAgB,CAAC,WAAW,CAAC;oBACjC,EAAE,EAAE,WAAW;oBACf,MAAM,EAAE;wBACN,GAAG,EAAE,IAAI;wBACT,IAAI,EAAE,IAAI;wBACV,WAAW,EAAE,IAAI;wBACjB,mBAAmB,EAAE,IAAI;wBACzB,SAAS,EAAE,IAAI;wBACf,eAAe,EAAE,IAAI;wBACrB,QAAQ,EAAE;4BACR,IAAI,EAAE,IAAI;4BACV,QAAQ,EAAE,IAAI;yBACf;qBACF;oBACD,KAAK,EAAE;wBACL,MAAM,EAAE,IAAI;qBACb;iBACF,CAAC,CAAC;gBAEL,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,MAAM,IAAI,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;gBACrD,CAAC;gBAED,OAAO,QAAQ,CAAC,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE;oBAC/C,GAAG,EAAE,CAAA,MAAA,SAAS,CAAC,GAAG,0CAAE,QAAQ,EAAE,KAAI,EAAE;oBACpC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,WAAW;oBACnC,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,EAAE;oBACxC,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,EAAE;oBACpC,eAAe,EAAE,SAAS,CAAC,eAAe,IAAI,EAAE;oBAChD,QAAQ,EAAE,YAAY,CAAC,yBAAyB,CAC9C,SAAS,CAAC,QAAQ,CACnB;oBACD,mBAAmB,EAAE,SAAS,CAAC,mBAAmB;wBAChD,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,mBAA0B,CAAC;wBAC/D,CAAC,CAAC,IAAI;iBACT,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,CAAC;YACZ,CAAC;QACH,CAAC,CACF,CAAC;QAEF;;;;;;;;WAQG;QACH,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,GAAG,MAAA,IAAI,IAAI,CAAC,UAAU,EAAE;aACrB,cAAc,EAAE,0CACf,QAAQ,EAAE,gCAAgC,EAC9C,cAAc,CAAC,iBAAiB,EAChC,KAAK,EAAE,GAAmB,EAAE,GAAoB,EAAE,IAAkB,EAAE,EAAE;YACtE,IAAI,CAAC;gBACH,MAAM,WAAW,GAAa,IAAI,QAAQ,CACxC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAW,CACpC,CAAC;gBAEF,MAAM,YAAY,GAGd,MAAM,gBAAgB,CAAC,aAAa,CAAC;oBACvC,WAAW;oBACX,GAAG;iBACJ,CAAC,CAAC;gBAEH,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;oBAChC,MAAM,CACJ,YAAY,CAAC,KAAK;wBAClB,IAAI,gBAAgB,CAAC,kCAAkC,CAAC,CACzD,CAAC;gBACJ,CAAC;gBAED,MAAM,YAAY,GAChB,GAAG,CAAC,IAAI,IAAK,GAAG,CAAC,IAAI,CAAC,cAAc,CAAY,CAAC;gBAEnD,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC1C,MAAM,IAAI,gBAAgB,CAAC,2BAA2B,CAAC,CAAC;gBAC1D,CAAC;gBAED,MAAM,gBAAgB,GACpB,GAAG,CAAC,IAAI,IAAK,GAAG,CAAC,IAAI,CAAC,eAAe,CAAY,CAAC;gBACpD,IAAI,aAAa,GAAkB,aAAa,CAAC,MAAM,CAAC;gBACxD,IAAI,gBAAgB,EAAE,CAAC;oBACrB,MAAM,KAAK,GACT,MAAM,CAAC,MAAM,CAAC,aAAa,CAC5B,CAAC,QAAQ,CAAC,gBAAgB,CAAC;wBAC1B,CAAC,CAAE,gBAAkC;wBACrC,CAAC,CAAC,SAAS,CAAC;oBACd,IAAI,KAAK,EAAE,CAAC;wBACV,aAAa,GAAG,KAAK,CAAC;oBACxB,CAAC;gBACH,CAAC;gBAED,MAAM,SAAS,GACb,MAAM,gBAAgB,CAAC,WAAW,CAAC;oBACjC,EAAE,EAAE,WAAW;oBACf,MAAM,EAAE;wBACN,GAAG,EAAE,IAAI;wBACT,SAAS,EAAE,IAAI;qBAChB;oBACD,KAAK,EAAE;wBACL,MAAM,EAAE,IAAI;qBACb;iBACF,CAAC,CAAC;gBAEL,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;oBACvC,MAAM,IAAI,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;gBACrD,CAAC;gBAED,MAAM,MAAM,GACV,MAAM,yBAAyB,CAAC,oBAAoB,CAAC;oBACnD,SAAS,EAAE,SAAS,CAAC,SAAS;oBAC9B,aAAa;oBACb,YAAY,EAAE,YAAY,CAAC,IAAI,EAAE;iBAClC,CAAC,CAAC;gBAEL,OAAO,QAAQ,CAAC,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE;oBAC/C,MAAM;iBACP,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,CAAC;YACZ,CAAC;QACH,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,GAAG,MAAA,IAAI,IAAI,CAAC,UAAU,EAAE;aACrB,cAAc,EAAE,0CACf,QAAQ,EAAE,+BAA+B,EAC7C,cAAc,CAAC,iBAAiB,EAChC,KAAK,EAAE,GAAmB,EAAE,GAAoB,EAAE,IAAkB,EAAE,EAAE;YACtE,IAAI,CAAC;gBACH,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;oBAC/B,MAAM,IAAI,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;gBACvD,CAAC;gBAED,MAAM,WAAW,GAAa,IAAI,QAAQ,CACxC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAW,CACpC,CAAC;gBAEF,MAAM,QAAQ,GACZ,GAAG,CAAC,IAAI,IAAK,GAAG,CAAC,IAAI,CAAC,UAAU,CAAY,CAAC;gBAE/C,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,MAAM,IAAI,gBAAgB,CAAC,8BAA8B,CAAC,CAAC;gBAC7D,CAAC;gBAED,MAAM,SAAS,GACb,MAAM,gBAAgB,CAAC,WAAW,CAAC;oBACjC,EAAE,EAAE,WAAW;oBACf,MAAM,EAAE;wBACN,GAAG,EAAE,IAAI;wBACT,SAAS,EAAE,IAAI;wBACf,oBAAoB,EAAE,IAAI;wBAC1B,cAAc,EAAE,IAAI;wBACpB,iBAAiB,EAAE,IAAI;qBACxB;oBACD,KAAK,EAAE;wBACL,MAAM,EAAE,IAAI;qBACb;iBACF,CAAC,CAAC;gBAEL,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,MAAM,IAAI,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;gBACrD,CAAC;gBAED,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;oBACjC,MAAM,IAAI,gBAAgB,CACxB,4CAA4C,CAC7C,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC,SAAS,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;oBACjE,MAAM,IAAI,gBAAgB,CACxB,6DAA6D,CAC9D,CAAC;gBACJ,CAAC;gBAED,MAAM,WAAW,GAAW,MAAM,YAAY,CAAC,SAAS,CACtD,QAAQ,EACR,gBAAgB,CACjB,CAAC;gBAEF,IAAI,WAAW,KAAK,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC;oBACxD,MAAM,IAAI,gBAAgB,CACxB,yCAAyC,CAC1C,CAAC;gBACJ,CAAC;gBAED,UAAU,CAAC,gCAAgC,CAAC;oBAC1C,eAAe,EAAE,GAAG;oBACpB,WAAW;iBACZ,CAAC,CAAC;gBAEH,OAAO,QAAQ,CAAC,wBAAwB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACrD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,CAAC;YACZ,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,yBAAyB,CACtC,IAAS;QAET,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,MAAc,CAAC;QACnB,MAAM,UAAU,GAAQ,IAAI,CAAC,IAAI,CAAC;QAElC,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;aAAM,IACL,UAAU;YACV,OAAO,UAAU,KAAK,QAAQ;YAC9B,UAAU,CAAC,KAAK;YAChB,UAAU,CAAC,KAAK,CAAC,IAAI,EACrB,CAAC;YACD,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjE,CAAC;aAAM,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC1C,MAAM,GAAG,UAAU,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAG,IAAI,CAAC,QAAmB,IAAI,WAAW;SACnD,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -15,9 +15,12 @@ import QueryHelper from "../Types/Database/QueryHelper";
|
|
|
15
15
|
import OneUptimeDate from "../../Types/Date";
|
|
16
16
|
import LIMIT_MAX from "../../Types/Database/LimitMax";
|
|
17
17
|
import GlobalCache from "../Infrastructure/GlobalCache";
|
|
18
|
+
import logger from "../Utils/Logger";
|
|
18
19
|
import crypto from "crypto";
|
|
19
20
|
const LAST_SEEN_CACHE_NAMESPACE = "docker-host-last-seen";
|
|
20
21
|
const LAST_SEEN_THROTTLE_SECONDS = 60;
|
|
22
|
+
const LABELS_APPLIED_CACHE_NAMESPACE = "docker-host-labels-applied";
|
|
23
|
+
const LABELS_APPLIED_CACHE_TTL_SECONDS = 60;
|
|
21
24
|
export class Service extends DatabaseService {
|
|
22
25
|
constructor() {
|
|
23
26
|
super(Model);
|
|
@@ -116,6 +119,62 @@ export class Service extends DatabaseService {
|
|
|
116
119
|
},
|
|
117
120
|
});
|
|
118
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* Additively attach labels to a Docker host. Existing labels are
|
|
124
|
+
* never removed — manual labels set via the UI survive ingest. The
|
|
125
|
+
* set of labelIds passed in is fingerprinted and cached for 60s so
|
|
126
|
+
* the common case (steady-state collector pushing the same label
|
|
127
|
+
* set every batch) costs one in-memory lookup, not a join-table
|
|
128
|
+
* scan.
|
|
129
|
+
*/
|
|
130
|
+
async attachLabels(data) {
|
|
131
|
+
var _a;
|
|
132
|
+
if (!data.labelIds || data.labelIds.length === 0) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const cacheKey = data.dockerHostId.toString();
|
|
136
|
+
const fingerprint = fingerprintLabelIds(data.labelIds);
|
|
137
|
+
const cached = await GlobalCache.getString(LABELS_APPLIED_CACHE_NAMESPACE, cacheKey);
|
|
138
|
+
if (cached === fingerprint) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
try {
|
|
142
|
+
const dockerHostIdStr = data.dockerHostId.toString();
|
|
143
|
+
const existingLabels = await this.getRepository()
|
|
144
|
+
.createQueryBuilder()
|
|
145
|
+
.relation(Model, "labels")
|
|
146
|
+
.of(dockerHostIdStr)
|
|
147
|
+
.loadMany();
|
|
148
|
+
const existingIds = new Set();
|
|
149
|
+
for (const lbl of existingLabels) {
|
|
150
|
+
const idStr = (_a = lbl._id) === null || _a === void 0 ? void 0 : _a.toString();
|
|
151
|
+
if (idStr) {
|
|
152
|
+
existingIds.add(idStr);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
const toAddIds = [];
|
|
156
|
+
const seen = new Set();
|
|
157
|
+
for (const id of data.labelIds) {
|
|
158
|
+
const idStr = id.toString();
|
|
159
|
+
if (existingIds.has(idStr) || seen.has(idStr)) {
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
seen.add(idStr);
|
|
163
|
+
toAddIds.push(idStr);
|
|
164
|
+
}
|
|
165
|
+
if (toAddIds.length > 0) {
|
|
166
|
+
await this.getRepository()
|
|
167
|
+
.createQueryBuilder()
|
|
168
|
+
.relation(Model, "labels")
|
|
169
|
+
.of(dockerHostIdStr)
|
|
170
|
+
.add(toAddIds);
|
|
171
|
+
}
|
|
172
|
+
await GlobalCache.setString(LABELS_APPLIED_CACHE_NAMESPACE, cacheKey, fingerprint, { expiresInSeconds: LABELS_APPLIED_CACHE_TTL_SECONDS });
|
|
173
|
+
}
|
|
174
|
+
catch (err) {
|
|
175
|
+
logger.warn(`DockerHostService.attachLabels failed for docker host ${data.dockerHostId.toString()}: ${err instanceof Error ? err.message : String(err)}`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
119
178
|
async markDisconnectedHosts() {
|
|
120
179
|
const fiveMinutesAgo = OneUptimeDate.addRemoveMinutes(OneUptimeDate.getCurrentDate(), -5);
|
|
121
180
|
const connectedHosts = await this.findBy({
|
|
@@ -159,11 +218,25 @@ __decorate([
|
|
|
159
218
|
__metadata("design:paramtypes", [ObjectID, Object]),
|
|
160
219
|
__metadata("design:returntype", Promise)
|
|
161
220
|
], Service.prototype, "updateLastSeen", null);
|
|
221
|
+
__decorate([
|
|
222
|
+
CaptureSpan(),
|
|
223
|
+
__metadata("design:type", Function),
|
|
224
|
+
__metadata("design:paramtypes", [Object]),
|
|
225
|
+
__metadata("design:returntype", Promise)
|
|
226
|
+
], Service.prototype, "attachLabels", null);
|
|
162
227
|
__decorate([
|
|
163
228
|
CaptureSpan(),
|
|
164
229
|
__metadata("design:type", Function),
|
|
165
230
|
__metadata("design:paramtypes", []),
|
|
166
231
|
__metadata("design:returntype", Promise)
|
|
167
232
|
], Service.prototype, "markDisconnectedHosts", null);
|
|
233
|
+
function fingerprintLabelIds(labelIds) {
|
|
234
|
+
const sorted = labelIds
|
|
235
|
+
.map((id) => {
|
|
236
|
+
return id.toString();
|
|
237
|
+
})
|
|
238
|
+
.sort();
|
|
239
|
+
return crypto.createHash("sha1").update(sorted.join(",")).digest("hex");
|
|
240
|
+
}
|
|
168
241
|
export default new Service();
|
|
169
242
|
//# sourceMappingURL=DockerHostService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DockerHostService.js","sourceRoot":"","sources":["../../../../Server/Services/DockerHostService.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"DockerHostService.js","sourceRoot":"","sources":["../../../../Server/Services/DockerHostService.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,7 @@ import Metric, { MetricPointType, ServiceType, } from "../../Models/AnalyticsMod
|
|
|
42
42
|
import OneUptimeDate from "../../Types/Date";
|
|
43
43
|
import TelemetryUtil from "../Utils/Telemetry/Telemetry";
|
|
44
44
|
import logger from "../Utils/Logger";
|
|
45
|
+
import NotEqual from "../../Types/BaseDatabase/NotEqual";
|
|
45
46
|
import IncidentFeedService from "./IncidentFeedService";
|
|
46
47
|
import IncidentSlaService from "./IncidentSlaService";
|
|
47
48
|
import { setIsPublicForMarkdownImages } from "../Utils/InlineImageAccessTokenSync";
|
|
@@ -1899,11 +1900,25 @@ ${incidentSeverity.name}
|
|
|
1899
1900
|
},
|
|
1900
1901
|
});
|
|
1901
1902
|
const firstIncidentStateTimeline = incidentStateTimelines[0];
|
|
1902
|
-
|
|
1903
|
+
/*
|
|
1904
|
+
* Delete the existing metrics for this incident so the time-varying
|
|
1905
|
+
* ones (TimeToAcknowledge / TimeToResolve / IncidentDuration /
|
|
1906
|
+
* TimeInState) get rewritten with the latest state-timeline values
|
|
1907
|
+
* on this refresh. IncidentCount is excluded from the delete: it is
|
|
1908
|
+
* a constant `value = 1` keyed by `serviceId + bucketTime` that
|
|
1909
|
+
* never changes. Re-emitting it across refreshes inflated the
|
|
1910
|
+
* 1-minute aggregating materialized view (`MetricItemAggMV1m_mv`),
|
|
1911
|
+
* because the MV trigger only fires on inserts — ALTER DELETE
|
|
1912
|
+
* mutations don't roll back the previously-accumulated
|
|
1913
|
+
* `sumState` / `countState`. That's why the Incident Dashboard
|
|
1914
|
+
* sum-of-IncidentCount widget read ~33% higher than the actual
|
|
1915
|
+
* unique-incident count.
|
|
1916
|
+
*/
|
|
1903
1917
|
await MetricService.deleteBy({
|
|
1904
1918
|
query: {
|
|
1905
1919
|
projectId: incident.projectId,
|
|
1906
1920
|
serviceId: data.incidentId,
|
|
1921
|
+
name: new NotEqual(IncidentMetricType.IncidentCount),
|
|
1907
1922
|
},
|
|
1908
1923
|
props: {
|
|
1909
1924
|
isRoot: true,
|
|
@@ -1941,27 +1956,49 @@ ${incidentSeverity.name}
|
|
|
1941
1956
|
ownerTeamIds: ownerTeamIds.join(", "),
|
|
1942
1957
|
ownerTeamNames: ownerTeamNames.join(", "),
|
|
1943
1958
|
};
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
1959
|
+
/*
|
|
1960
|
+
* Only emit IncidentCount on the very first refresh (i.e. when no
|
|
1961
|
+
* existing IncidentCount row is present for this serviceId). See
|
|
1962
|
+
* the delete comment above — emitting it on every refresh would
|
|
1963
|
+
* accumulate phantom `sumState` entries in the MV that ALTER
|
|
1964
|
+
* DELETE can't undo. By keeping the original row alive and never
|
|
1965
|
+
* re-emitting, the dashboard Sum stays equal to the true count of
|
|
1966
|
+
* distinct incidents.
|
|
1967
|
+
*/
|
|
1968
|
+
const existingIncidentCount = await MetricService.countBy({
|
|
1969
|
+
query: {
|
|
1970
|
+
projectId: incident.projectId,
|
|
1971
|
+
serviceId: data.incidentId,
|
|
1972
|
+
name: IncidentMetricType.IncidentCount,
|
|
1973
|
+
},
|
|
1974
|
+
skip: 0,
|
|
1975
|
+
limit: 1,
|
|
1976
|
+
props: {
|
|
1977
|
+
isRoot: true,
|
|
1978
|
+
},
|
|
1979
|
+
});
|
|
1980
|
+
if (existingIncidentCount.toNumber() === 0) {
|
|
1981
|
+
const incidentCountMetric = new Metric();
|
|
1982
|
+
incidentCountMetric.projectId = incident.projectId;
|
|
1983
|
+
incidentCountMetric.serviceId = incident.id;
|
|
1984
|
+
incidentCountMetric.serviceType = ServiceType.Incident;
|
|
1985
|
+
incidentCountMetric.name = IncidentMetricType.IncidentCount;
|
|
1986
|
+
incidentCountMetric.value = 1;
|
|
1987
|
+
incidentCountMetric.attributes = Object.assign({}, baseMetricAttributes);
|
|
1988
|
+
incidentCountMetric.attributeKeys = TelemetryUtil.getAttributeKeys(incidentCountMetric.attributes);
|
|
1989
|
+
incidentCountMetric.time = incidentStartsAt;
|
|
1990
|
+
incidentCountMetric.timeUnixNano = OneUptimeDate.toUnixNano(incidentCountMetric.time);
|
|
1991
|
+
incidentCountMetric.metricPointType = MetricPointType.Sum;
|
|
1992
|
+
incidentCountMetric.retentionDate = incidentMetricRetentionDate;
|
|
1993
|
+
itemsToSave.push(incidentCountMetric);
|
|
1994
|
+
}
|
|
1995
|
+
// Always register the metric type so it shows up in the type catalog.
|
|
1958
1996
|
const metricType = new MetricType();
|
|
1959
|
-
metricType.name =
|
|
1997
|
+
metricType.name = IncidentMetricType.IncidentCount;
|
|
1960
1998
|
metricType.description = "Number of incidents created";
|
|
1961
1999
|
metricType.unit = "";
|
|
1962
2000
|
metricType.services = [];
|
|
1963
|
-
|
|
1964
|
-
metricTypesMap[incidentCountMetric.name] = metricType;
|
|
2001
|
+
metricTypesMap[IncidentMetricType.IncidentCount] = metricType;
|
|
1965
2002
|
// is the incident acknowledged?
|
|
1966
2003
|
const isIncidentAcknowledged = incidentStateTimelines.some((timeline) => {
|
|
1967
2004
|
var _a;
|