@oneuptime/common 10.0.71 → 10.0.73

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 (115) hide show
  1. package/Models/DatabaseModels/Alert.ts +55 -0
  2. package/Models/DatabaseModels/Incident.ts +55 -0
  3. package/Models/DatabaseModels/Project.ts +26 -0
  4. package/Models/DatabaseModels/Service.ts +2 -2
  5. package/Models/DatabaseModels/StatusPage.ts +80 -0
  6. package/Server/API/StatusPageAPI.ts +4 -0
  7. package/Server/Infrastructure/Postgres/SchemaMigrations/1776940714709-MigrationName.ts +41 -0
  8. package/Server/Infrastructure/Postgres/SchemaMigrations/1776971364783-AddStatusPageLanguageSettings.ts +25 -0
  9. package/Server/Infrastructure/Postgres/SchemaMigrations/1777018175127-AddTelemetryRetentionSettings.ts +25 -0
  10. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
  11. package/Server/Services/AnalyticsDatabaseService.ts +17 -7
  12. package/Server/Services/OpenTelemetryIngestService.ts +36 -5
  13. package/Server/Services/ServiceService.ts +27 -1
  14. package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +175 -29
  15. package/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.ts +71 -0
  16. package/Server/Utils/Monitor/MonitorAlert.ts +91 -7
  17. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +171 -2
  18. package/Server/Utils/Monitor/MonitorIncident.ts +133 -8
  19. package/Server/Utils/Monitor/MonitorMetricUtil.ts +423 -1
  20. package/Server/Utils/Monitor/MonitorResource.ts +2 -0
  21. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +99 -0
  22. package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.ts +268 -0
  23. package/Types/AdminDashboard/AdminDashboardLanguage.ts +33 -0
  24. package/Types/Infrastructure/BasicMetrics.ts +75 -0
  25. package/Types/Metrics/MetricQueryData.ts +11 -0
  26. package/Types/Monitor/CriteriaFilter.ts +10 -0
  27. package/Types/Monitor/MetricMonitor/MetricCriteriaContext.ts +11 -0
  28. package/Types/Monitor/MetricMonitor/MetricMonitorResponse.ts +10 -0
  29. package/Types/Monitor/MetricMonitor/MetricSeriesResult.ts +20 -0
  30. package/Types/Monitor/MonitorMetricType.ts +34 -0
  31. package/Types/Monitor/ServerMonitor/ServerMonitorResponse.ts +8 -0
  32. package/Types/Probe/ProbeApiIngestResponse.ts +25 -0
  33. package/Types/StatusPage/StatusPageLanguage.ts +30 -0
  34. package/UI/Components/Charts/Area/AreaChart.tsx +17 -12
  35. package/UI/Components/Charts/Bar/BarChart.tsx +16 -11
  36. package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +23 -0
  37. package/UI/Components/Charts/Line/LineChart.tsx +16 -11
  38. package/UI/Components/Filters/FiltersForm.tsx +26 -2
  39. package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +453 -0
  40. package/UI/Components/MonitorTemplateVariables/TemplateVariablesModal.tsx +229 -0
  41. package/Utils/Metrics/MetricSeriesFingerprint.ts +97 -0
  42. package/Utils/Monitor/MonitorMetricType.ts +309 -19
  43. package/build/dist/Models/DatabaseModels/Alert.js +57 -0
  44. package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
  45. package/build/dist/Models/DatabaseModels/Incident.js +57 -0
  46. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  47. package/build/dist/Models/DatabaseModels/Project.js +27 -0
  48. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  49. package/build/dist/Models/DatabaseModels/Service.js +1 -2
  50. package/build/dist/Models/DatabaseModels/Service.js.map +1 -1
  51. package/build/dist/Models/DatabaseModels/StatusPage.js +82 -0
  52. package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
  53. package/build/dist/Server/API/StatusPageAPI.js +4 -0
  54. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  55. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776940714709-MigrationName.js +22 -0
  56. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776940714709-MigrationName.js.map +1 -0
  57. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776971364783-AddStatusPageLanguageSettings.js +14 -0
  58. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776971364783-AddStatusPageLanguageSettings.js.map +1 -0
  59. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1777018175127-AddTelemetryRetentionSettings.js +14 -0
  60. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1777018175127-AddTelemetryRetentionSettings.js.map +1 -0
  61. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
  62. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  63. package/build/dist/Server/Services/AnalyticsDatabaseService.js +14 -4
  64. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  65. package/build/dist/Server/Services/OpenTelemetryIngestService.js +30 -4
  66. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  67. package/build/dist/Server/Services/ServiceService.js +22 -1
  68. package/build/dist/Server/Services/ServiceService.js.map +1 -1
  69. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +132 -30
  70. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js.map +1 -1
  71. package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js +58 -7
  72. package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js.map +1 -1
  73. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +66 -12
  74. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  75. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +112 -0
  76. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  77. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +91 -15
  78. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  79. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +373 -0
  80. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
  81. package/build/dist/Server/Utils/Monitor/MonitorResource.js +2 -0
  82. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  83. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +65 -0
  84. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  85. package/build/dist/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.js +199 -0
  86. package/build/dist/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.js.map +1 -1
  87. package/build/dist/Types/AdminDashboard/AdminDashboardLanguage.js +22 -0
  88. package/build/dist/Types/AdminDashboard/AdminDashboardLanguage.js.map +1 -0
  89. package/build/dist/Types/Monitor/CriteriaFilter.js +10 -0
  90. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  91. package/build/dist/Types/Monitor/MetricMonitor/MetricSeriesResult.js +2 -0
  92. package/build/dist/Types/Monitor/MetricMonitor/MetricSeriesResult.js.map +1 -0
  93. package/build/dist/Types/Monitor/MonitorMetricType.js +28 -0
  94. package/build/dist/Types/Monitor/MonitorMetricType.js.map +1 -1
  95. package/build/dist/Types/StatusPage/StatusPageLanguage.js +22 -0
  96. package/build/dist/Types/StatusPage/StatusPageLanguage.js.map +1 -0
  97. package/build/dist/UI/Components/Charts/Area/AreaChart.js +13 -12
  98. package/build/dist/UI/Components/Charts/Area/AreaChart.js.map +1 -1
  99. package/build/dist/UI/Components/Charts/Bar/BarChart.js +12 -11
  100. package/build/dist/UI/Components/Charts/Bar/BarChart.js.map +1 -1
  101. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +11 -3
  102. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
  103. package/build/dist/UI/Components/Charts/Line/LineChart.js +12 -11
  104. package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
  105. package/build/dist/UI/Components/Filters/FiltersForm.js +6 -2
  106. package/build/dist/UI/Components/Filters/FiltersForm.js.map +1 -1
  107. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +383 -0
  108. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -0
  109. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesModal.js +109 -0
  110. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesModal.js.map +1 -0
  111. package/build/dist/Utils/Metrics/MetricSeriesFingerprint.js +81 -0
  112. package/build/dist/Utils/Metrics/MetricSeriesFingerprint.js.map +1 -0
  113. package/build/dist/Utils/Monitor/MonitorMetricType.js +287 -19
  114. package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
  115. package/package.json +1 -1
@@ -0,0 +1,109 @@
1
+ import Modal, { ModalWidth } from "../Modal/Modal";
2
+ import Icon, { SizeProp } from "../Icon/Icon";
3
+ import IconProp from "../../../Types/Icon/IconProp";
4
+ import React, { useMemo, useState, } from "react";
5
+ import TemplateVariablesCatalog from "./TemplateVariablesCatalog";
6
+ /**
7
+ * Modal that surfaces the dynamic template variables available to the
8
+ * current monitor's incident/alert titles, descriptions, and
9
+ * remediation notes. Organized by monitor type so a metric monitor
10
+ * doesn't show SSL variables (and vice versa), with a live search
11
+ * that scales when a user groups by many attributes.
12
+ *
13
+ * Click a variable to copy `{{var}}` to the clipboard; the chip flips
14
+ * to a "Copied" state briefly so the user gets feedback without a
15
+ * toast.
16
+ */
17
+ const TemplateVariablesModal = (props) => {
18
+ const [search, setSearch] = useState("");
19
+ const [copiedKey, setCopiedKey] = useState(null);
20
+ const groups = useMemo(() => {
21
+ return TemplateVariablesCatalog.getVariables({
22
+ monitorType: props.monitorType,
23
+ seriesAttributeKeys: props.seriesAttributeKeys,
24
+ });
25
+ }, [props.monitorType, props.seriesAttributeKeys]);
26
+ const normalized = search.trim().toLowerCase();
27
+ const filteredGroups = useMemo(() => {
28
+ if (!normalized) {
29
+ return groups;
30
+ }
31
+ return groups
32
+ .map((group) => {
33
+ return Object.assign(Object.assign({}, group), { variables: group.variables.filter((v) => {
34
+ return (v.key.toLowerCase().includes(normalized) ||
35
+ v.description.toLowerCase().includes(normalized));
36
+ }) });
37
+ })
38
+ .filter((group) => {
39
+ return group.variables.length > 0;
40
+ });
41
+ }, [groups, normalized]);
42
+ const copyToClipboard = (key) => {
43
+ const token = `{{${key}}}`;
44
+ if (typeof navigator !== "undefined" &&
45
+ navigator.clipboard &&
46
+ typeof navigator.clipboard.writeText === "function") {
47
+ void navigator.clipboard.writeText(token);
48
+ }
49
+ setCopiedKey(key);
50
+ setTimeout(() => {
51
+ setCopiedKey((current) => {
52
+ return current === key ? null : current;
53
+ });
54
+ }, 1500);
55
+ };
56
+ const renderVariableRow = (v) => {
57
+ const isCopied = copiedKey === v.key;
58
+ return (React.createElement("button", { key: v.key, type: "button", onClick: () => {
59
+ copyToClipboard(v.key);
60
+ }, className: "group w-full rounded-md border border-gray-200 bg-white px-3 py-2.5 text-left transition hover:border-indigo-300 hover:bg-indigo-50/40", title: `Click to copy {{${v.key}}}` },
61
+ React.createElement("div", { className: "flex items-start justify-between gap-3" },
62
+ React.createElement("div", { className: "min-w-0 flex-1" },
63
+ React.createElement("code", { className: "font-mono text-sm text-indigo-700 break-all" }, `{{${v.key}}}`),
64
+ React.createElement("p", { className: "mt-1 text-xs leading-snug text-gray-600" }, v.description),
65
+ v.example ? (React.createElement("p", { className: "mt-1 text-xs text-gray-400" },
66
+ "Example:",
67
+ " ",
68
+ React.createElement("span", { className: "font-mono text-gray-500" }, v.example))) : null),
69
+ React.createElement("span", { className: `shrink-0 inline-flex items-center rounded px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide transition ${isCopied
70
+ ? "bg-emerald-100 text-emerald-700"
71
+ : "bg-gray-100 text-gray-500 group-hover:bg-indigo-100 group-hover:text-indigo-700"}` }, isCopied ? "Copied" : "Copy"))));
72
+ };
73
+ const renderGroup = (group) => {
74
+ return (React.createElement("div", { key: group.title, className: "space-y-2" },
75
+ React.createElement("div", { className: "border-b border-gray-200 pb-1.5" },
76
+ React.createElement("h3", { className: "text-sm font-semibold text-gray-900" }, group.title),
77
+ group.description ? (React.createElement("p", { className: "mt-0.5 text-xs text-gray-500" }, group.description)) : null),
78
+ group.variables.length > 0 ? (React.createElement("div", { className: "grid grid-cols-1 gap-2 sm:grid-cols-2" }, group.variables.map(renderVariableRow))) : (React.createElement("p", { className: "text-xs italic text-gray-400" }, "No variables in this section yet."))));
79
+ };
80
+ const totalVariables = groups.reduce((sum, group) => {
81
+ return sum + group.variables.length;
82
+ }, 0);
83
+ return (React.createElement(Modal, { title: "Dynamic Template Variables", description: `Use these variables in incident and alert titles, descriptions, and remediation notes. Click any variable to copy it. ${totalVariables} variables available for this monitor type.`, onClose: props.onClose, onSubmit: props.onClose, submitButtonText: "Done", modalWidth: ModalWidth.Large },
84
+ React.createElement("div", { className: "space-y-4" },
85
+ React.createElement("div", { className: "relative" },
86
+ React.createElement("div", { className: "pointer-events-none absolute inset-y-0 left-0 flex items-center pl-3" },
87
+ React.createElement(Icon, { icon: IconProp.Search, size: SizeProp.Smaller, className: "h-4 w-4 text-gray-400" })),
88
+ React.createElement("input", { type: "text", value: search, onChange: (e) => {
89
+ setSearch(e.target.value);
90
+ }, placeholder: "Filter variables\u2026", className: "block w-full rounded-md border border-gray-300 bg-white py-2 pl-9 pr-3 text-sm shadow-sm focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500", autoFocus: true })),
91
+ filteredGroups.length === 0 ? (React.createElement("div", { className: "rounded-md border border-gray-200 bg-gray-50 p-6 text-center text-sm text-gray-500" },
92
+ "No variables match ",
93
+ React.createElement("code", { className: "font-mono" }, search),
94
+ ".")) : (React.createElement("div", { className: "space-y-5 max-h-[60vh] overflow-y-auto pr-1" }, filteredGroups.map(renderGroup))),
95
+ React.createElement("div", { className: "rounded-md border border-blue-100 bg-blue-50 p-3 text-xs text-blue-900" },
96
+ React.createElement("p", { className: "font-medium" }, "Syntax tips"),
97
+ React.createElement("ul", { className: "mt-1 list-disc space-y-1 pl-4" },
98
+ React.createElement("li", null,
99
+ "Wrap the variable name in double braces:",
100
+ " ",
101
+ React.createElement("code", { className: "font-mono" }, "{{monitorName}}")),
102
+ React.createElement("li", null,
103
+ "Use dot paths for nested values:",
104
+ " ",
105
+ React.createElement("code", { className: "font-mono" }, "{{responseBody.data.status}}")),
106
+ React.createElement("li", null, "Missing values render as empty strings \u2014 they will not break the template."))))));
107
+ };
108
+ export default TemplateVariablesModal;
109
+ //# sourceMappingURL=TemplateVariablesModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateVariablesModal.js","sourceRoot":"","sources":["../../../../../UI/Components/MonitorTemplateVariables/TemplateVariablesModal.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import { createHash } from "crypto";
2
+ /**
3
+ * Canonicalize a label dictionary (key/value string pairs identifying a
4
+ * metric series) into a stable short hash. Used to key incidents/alerts
5
+ * by the series that breached so one incident is created per host (or
6
+ * per whatever attribute combination the user grouped by) rather than a
7
+ * single incident per monitor.
8
+ */
9
+ class MetricSeriesFingerprint {
10
+ /**
11
+ * Compute a deterministic 16-char hex fingerprint from a label map.
12
+ * Keys are sorted so `{a,b}` and `{b,a}` hash identically. Null and
13
+ * undefined values canonicalize to the empty string so a series that
14
+ * occasionally drops an attribute still maps to the same bucket.
15
+ */
16
+ static computeFingerprint(labels) {
17
+ const keys = Object.keys(labels || {}).sort();
18
+ if (keys.length === 0) {
19
+ return MetricSeriesFingerprint.WholeMonitorFingerprint;
20
+ }
21
+ const parts = [];
22
+ for (const key of keys) {
23
+ const raw = labels[key];
24
+ const value = raw === undefined || raw === null ? "" : String(raw);
25
+ parts.push(`${key}=${value}`);
26
+ }
27
+ return createHash("sha256")
28
+ .update(parts.join("|"))
29
+ .digest("hex")
30
+ .slice(0, 16);
31
+ }
32
+ /**
33
+ * Extract the series labels from an aggregated sample. When
34
+ * `attributeKeys` is provided, pulls those specific keys out of the
35
+ * sample's `attributes` map (OpenTelemetry attributes live nested in
36
+ * a MapStringString column, so users group by "host.name" as an
37
+ * attribute KEY rather than a top-level column). When no keys are
38
+ * provided, falls back to every non-reserved key on the sample so
39
+ * callers that pass top-level group-by columns still work.
40
+ */
41
+ static extractSeriesLabels(input) {
42
+ const result = {};
43
+ const sampleAttributes = input.sample["attributes"] || {};
44
+ if (input.attributeKeys && input.attributeKeys.length > 0) {
45
+ for (const key of input.attributeKeys) {
46
+ const value = sampleAttributes[key];
47
+ if (value !== undefined && value !== null) {
48
+ result[key] = value;
49
+ }
50
+ else {
51
+ /*
52
+ * Preserve the key even when missing so the fingerprint stays
53
+ * stable across evaluations that happen to drop the attribute.
54
+ */
55
+ result[key] = "";
56
+ }
57
+ }
58
+ return result;
59
+ }
60
+ for (const key of Object.keys(input.sample)) {
61
+ if (key === "timestamp" || key === "value") {
62
+ continue;
63
+ }
64
+ const value = input.sample[key];
65
+ if (value === undefined || value === null) {
66
+ continue;
67
+ }
68
+ result[key] = value;
69
+ }
70
+ return result;
71
+ }
72
+ }
73
+ /**
74
+ * Sentinel fingerprint used when a metric monitor has no group-by
75
+ * configured — i.e. traditional whole-monitor evaluation. Using an
76
+ * explicit sentinel (rather than undefined) lets callers store a
77
+ * single value and still use the same dedupe query shape.
78
+ */
79
+ MetricSeriesFingerprint.WholeMonitorFingerprint = "__all__";
80
+ export default MetricSeriesFingerprint;
81
+ //# sourceMappingURL=MetricSeriesFingerprint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetricSeriesFingerprint.js","sourceRoot":"","sources":["../../../../Utils/Metrics/MetricSeriesFingerprint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAIpC;;;;;;GAMG;AACH,MAAqB,uBAAuB;IAS1C;;;;;OAKG;IACI,MAAM,CAAC,kBAAkB,CAAC,MAAkB;QACjD,MAAM,IAAI,GAAkB,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAE7D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,uBAAuB,CAAC,uBAAuB,CAAC;QACzD,CAAC;QAED,MAAM,KAAK,GAAkB,EAAE,CAAC;QAEhC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,GAAG,GAA0B,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM,KAAK,GACT,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvD,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,UAAU,CAAC,QAAQ,CAAC;aACxB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACvB,MAAM,CAAC,KAAK,CAAC;aACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClB,CAAC;IAED;;;;;;;;OAQG;IACI,MAAM,CAAC,mBAAmB,CAAC,KAGjC;QACC,MAAM,MAAM,GAAe,EAAE,CAAC;QAE9B,MAAM,gBAAgB,GAClB,KAAK,CAAC,MAAgC,CAAC,YAAY,CAEvC,IAAI,EAAE,CAAC;QAEvB,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBACtC,MAAM,KAAK,GAA0B,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBAC3D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACN;;;uBAGG;oBACH,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBACnB,CAAC;YACH,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBAC3C,SAAS;YACX,CAAC;YACD,MAAM,KAAK,GAAa,KAAK,CAAC,MAAgC,CAAC,GAAG,CAAC,CAAC;YACpE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC1C,SAAS;YACX,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAkB,CAAC;QACnC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;;AAnFD;;;;;GAKG;AACoB,+CAAuB,GAAW,SAAS,CAAC;eAPhD,uBAAuB"}
@@ -19,6 +19,38 @@ class MonitorMetricTypeUtil {
19
19
  return AggregationType.Avg;
20
20
  case MonitorMetricType.ExecutionTime:
21
21
  return AggregationType.Avg;
22
+ /*
23
+ * Extended server/VM metrics. Cumulative counters (bytes/packets/ops since
24
+ * boot) use Max so the latest value in a time bucket is returned, which the
25
+ * chart/UI can turn into a rate by differencing adjacent buckets. Gauges
26
+ * (percentages, counts, load averages) use Avg.
27
+ */
28
+ case MonitorMetricType.LoadAverage1Min:
29
+ case MonitorMetricType.LoadAverage5Min:
30
+ case MonitorMetricType.LoadAverage15Min:
31
+ case MonitorMetricType.SwapUsagePercent:
32
+ case MonitorMetricType.MemoryAvailableBytes:
33
+ case MonitorMetricType.CPUTimeUserPercent:
34
+ case MonitorMetricType.CPUTimeSystemPercent:
35
+ case MonitorMetricType.CPUTimeIoWaitPercent:
36
+ case MonitorMetricType.CPUTimeIdlePercent:
37
+ case MonitorMetricType.CPUTimeStealPercent:
38
+ case MonitorMetricType.NetworkConnectionsEstablished:
39
+ case MonitorMetricType.NetworkConnectionsListen:
40
+ case MonitorMetricType.ProcessCountTotal:
41
+ return AggregationType.Avg;
42
+ case MonitorMetricType.DiskReadBytesTotal:
43
+ case MonitorMetricType.DiskWriteBytesTotal:
44
+ case MonitorMetricType.DiskReadOpsTotal:
45
+ case MonitorMetricType.DiskWriteOpsTotal:
46
+ case MonitorMetricType.NetworkBytesReceivedTotal:
47
+ case MonitorMetricType.NetworkBytesSentTotal:
48
+ case MonitorMetricType.NetworkPacketsReceivedTotal:
49
+ case MonitorMetricType.NetworkPacketsSentTotal:
50
+ case MonitorMetricType.NetworkErrorsIn:
51
+ case MonitorMetricType.NetworkErrorsOut:
52
+ case MonitorMetricType.HostUptimeSeconds:
53
+ return AggregationType.Max;
22
54
  default:
23
55
  throw new Error("Invalid MonitorMetricType value");
24
56
  }
@@ -39,6 +71,16 @@ class MonitorMetricTypeUtil {
39
71
  return MonitorMetricType.MemoryUsagePercent;
40
72
  case CheckOn.ExecutionTime:
41
73
  return MonitorMetricType.ExecutionTime;
74
+ case CheckOn.LoadAverage1Min:
75
+ return MonitorMetricType.LoadAverage1Min;
76
+ case CheckOn.LoadAverage5Min:
77
+ return MonitorMetricType.LoadAverage5Min;
78
+ case CheckOn.LoadAverage15Min:
79
+ return MonitorMetricType.LoadAverage15Min;
80
+ case CheckOn.SwapUsagePercent:
81
+ return MonitorMetricType.SwapUsagePercent;
82
+ case CheckOn.CPUIoWaitPercent:
83
+ return MonitorMetricType.CPUTimeIoWaitPercent;
42
84
  default:
43
85
  throw new Error("Invalid CheckOn value");
44
86
  }
@@ -53,11 +95,39 @@ class MonitorMetricTypeUtil {
53
95
  ];
54
96
  }
55
97
  if (monitorType === MonitorType.Server) {
98
+ /*
99
+ * Order below reflects the chart display order on the monitor view.
100
+ * Core resource gauges first, then I/O counters, then diagnostics.
101
+ */
56
102
  return [
57
103
  MonitorMetricType.IsOnline,
58
- MonitorMetricType.DiskUsagePercent,
59
104
  MonitorMetricType.CPUUsagePercent,
60
105
  MonitorMetricType.MemoryUsagePercent,
106
+ MonitorMetricType.DiskUsagePercent,
107
+ MonitorMetricType.LoadAverage1Min,
108
+ MonitorMetricType.LoadAverage5Min,
109
+ MonitorMetricType.LoadAverage15Min,
110
+ MonitorMetricType.SwapUsagePercent,
111
+ MonitorMetricType.MemoryAvailableBytes,
112
+ MonitorMetricType.CPUTimeUserPercent,
113
+ MonitorMetricType.CPUTimeSystemPercent,
114
+ MonitorMetricType.CPUTimeIoWaitPercent,
115
+ MonitorMetricType.CPUTimeIdlePercent,
116
+ MonitorMetricType.CPUTimeStealPercent,
117
+ MonitorMetricType.DiskReadBytesTotal,
118
+ MonitorMetricType.DiskWriteBytesTotal,
119
+ MonitorMetricType.DiskReadOpsTotal,
120
+ MonitorMetricType.DiskWriteOpsTotal,
121
+ MonitorMetricType.NetworkBytesReceivedTotal,
122
+ MonitorMetricType.NetworkBytesSentTotal,
123
+ MonitorMetricType.NetworkPacketsReceivedTotal,
124
+ MonitorMetricType.NetworkPacketsSentTotal,
125
+ MonitorMetricType.NetworkErrorsIn,
126
+ MonitorMetricType.NetworkErrorsOut,
127
+ MonitorMetricType.NetworkConnectionsEstablished,
128
+ MonitorMetricType.NetworkConnectionsListen,
129
+ MonitorMetricType.ProcessCountTotal,
130
+ MonitorMetricType.HostUptimeSeconds,
61
131
  ];
62
132
  }
63
133
  if (monitorType === MonitorType.CustomJavaScriptCode) {
@@ -77,6 +147,87 @@ class MonitorMetricTypeUtil {
77
147
  }
78
148
  return [];
79
149
  }
150
+ /*
151
+ * Returns the metrics grouped into display categories. Server monitors get
152
+ * a rich 5-card layout; every other monitor type falls through to a single
153
+ * "Monitor Metrics" category so existing pages look unchanged.
154
+ */
155
+ static getMonitorMetricCategoriesByMonitorType(monitorType) {
156
+ if (monitorType === MonitorType.Server) {
157
+ return [
158
+ {
159
+ title: "Availability",
160
+ description: "Heartbeat, uptime, and process count reported by the agent.",
161
+ metrics: [
162
+ MonitorMetricType.IsOnline,
163
+ MonitorMetricType.HostUptimeSeconds,
164
+ MonitorMetricType.ProcessCountTotal,
165
+ ],
166
+ },
167
+ {
168
+ title: "CPU",
169
+ description: "CPU utilisation, load averages, and time-spent breakdown.",
170
+ metrics: [
171
+ MonitorMetricType.CPUUsagePercent,
172
+ MonitorMetricType.LoadAverage1Min,
173
+ MonitorMetricType.LoadAverage5Min,
174
+ MonitorMetricType.LoadAverage15Min,
175
+ MonitorMetricType.CPUTimeUserPercent,
176
+ MonitorMetricType.CPUTimeSystemPercent,
177
+ MonitorMetricType.CPUTimeIoWaitPercent,
178
+ MonitorMetricType.CPUTimeIdlePercent,
179
+ MonitorMetricType.CPUTimeStealPercent,
180
+ ],
181
+ },
182
+ {
183
+ title: "Memory",
184
+ description: "RAM usage, swap pressure, and bytes still available.",
185
+ metrics: [
186
+ MonitorMetricType.MemoryUsagePercent,
187
+ MonitorMetricType.SwapUsagePercent,
188
+ MonitorMetricType.MemoryAvailableBytes,
189
+ ],
190
+ },
191
+ {
192
+ title: "Disk",
193
+ description: "Space usage and I/O throughput per partition.",
194
+ metrics: [
195
+ MonitorMetricType.DiskUsagePercent,
196
+ MonitorMetricType.DiskReadBytesTotal,
197
+ MonitorMetricType.DiskWriteBytesTotal,
198
+ MonitorMetricType.DiskReadOpsTotal,
199
+ MonitorMetricType.DiskWriteOpsTotal,
200
+ ],
201
+ },
202
+ {
203
+ title: "Network",
204
+ description: "Per-interface throughput, packet errors, and connection counts.",
205
+ metrics: [
206
+ MonitorMetricType.NetworkBytesReceivedTotal,
207
+ MonitorMetricType.NetworkBytesSentTotal,
208
+ MonitorMetricType.NetworkPacketsReceivedTotal,
209
+ MonitorMetricType.NetworkPacketsSentTotal,
210
+ MonitorMetricType.NetworkErrorsIn,
211
+ MonitorMetricType.NetworkErrorsOut,
212
+ MonitorMetricType.NetworkConnectionsEstablished,
213
+ MonitorMetricType.NetworkConnectionsListen,
214
+ ],
215
+ },
216
+ ];
217
+ }
218
+ // Other monitor types keep the single-card layout.
219
+ const metrics = this.getMonitorMetricTypesByMonitorType(monitorType);
220
+ if (metrics.length === 0) {
221
+ return [];
222
+ }
223
+ return [
224
+ {
225
+ title: "Monitor Metrics",
226
+ description: "Performance metrics collected from this monitor.",
227
+ metrics: metrics,
228
+ },
229
+ ];
230
+ }
80
231
  static getTitleByMonitorMetricType(monitorMetricType) {
81
232
  switch (monitorMetricType) {
82
233
  case MonitorMetricType.ResponseTime:
@@ -93,29 +244,65 @@ class MonitorMetricTypeUtil {
93
244
  return "Memory Usage Percent";
94
245
  case MonitorMetricType.ExecutionTime:
95
246
  return "Execution Time";
247
+ case MonitorMetricType.LoadAverage1Min:
248
+ return "Load Average (1 minute)";
249
+ case MonitorMetricType.LoadAverage5Min:
250
+ return "Load Average (5 minute)";
251
+ case MonitorMetricType.LoadAverage15Min:
252
+ return "Load Average (15 minute)";
253
+ case MonitorMetricType.SwapUsagePercent:
254
+ return "Swap Usage Percent";
255
+ case MonitorMetricType.MemoryAvailableBytes:
256
+ return "Memory Available";
257
+ case MonitorMetricType.CPUTimeUserPercent:
258
+ return "CPU Time - User";
259
+ case MonitorMetricType.CPUTimeSystemPercent:
260
+ return "CPU Time - System";
261
+ case MonitorMetricType.CPUTimeIoWaitPercent:
262
+ return "CPU Time - IO Wait";
263
+ case MonitorMetricType.CPUTimeIdlePercent:
264
+ return "CPU Time - Idle";
265
+ case MonitorMetricType.CPUTimeStealPercent:
266
+ return "CPU Time - Steal";
267
+ case MonitorMetricType.DiskReadBytesTotal:
268
+ return "Disk Read Bytes (cumulative)";
269
+ case MonitorMetricType.DiskWriteBytesTotal:
270
+ return "Disk Write Bytes (cumulative)";
271
+ case MonitorMetricType.DiskReadOpsTotal:
272
+ return "Disk Read Ops (cumulative)";
273
+ case MonitorMetricType.DiskWriteOpsTotal:
274
+ return "Disk Write Ops (cumulative)";
275
+ case MonitorMetricType.NetworkBytesReceivedTotal:
276
+ return "Network Bytes Received (cumulative)";
277
+ case MonitorMetricType.NetworkBytesSentTotal:
278
+ return "Network Bytes Sent (cumulative)";
279
+ case MonitorMetricType.NetworkPacketsReceivedTotal:
280
+ return "Network Packets Received (cumulative)";
281
+ case MonitorMetricType.NetworkPacketsSentTotal:
282
+ return "Network Packets Sent (cumulative)";
283
+ case MonitorMetricType.NetworkErrorsIn:
284
+ return "Network Receive Errors";
285
+ case MonitorMetricType.NetworkErrorsOut:
286
+ return "Network Transmit Errors";
287
+ case MonitorMetricType.NetworkConnectionsEstablished:
288
+ return "Network Connections - Established";
289
+ case MonitorMetricType.NetworkConnectionsListen:
290
+ return "Network Connections - Listening";
291
+ case MonitorMetricType.HostUptimeSeconds:
292
+ return "Host Uptime";
293
+ case MonitorMetricType.ProcessCountTotal:
294
+ return "Running Processes";
96
295
  default:
97
296
  return "";
98
297
  }
99
298
  }
100
299
  static getLegendByMonitorMetricType(monitorMetricType) {
101
- switch (monitorMetricType) {
102
- case MonitorMetricType.ResponseTime:
103
- return "Response Time";
104
- case MonitorMetricType.ResponseStatusCode:
105
- return "Response Status Code";
106
- case MonitorMetricType.IsOnline:
107
- return "Is Online";
108
- case MonitorMetricType.DiskUsagePercent:
109
- return "Disk Usage Percent";
110
- case MonitorMetricType.CPUUsagePercent:
111
- return "CPU Usage Percent";
112
- case MonitorMetricType.MemoryUsagePercent:
113
- return "Memory Usage Percent";
114
- case MonitorMetricType.ExecutionTime:
115
- return "Execution Time";
116
- default:
117
- return "";
118
- }
300
+ /*
301
+ * Legend labels default to the title, which also matches the existing behavior
302
+ * for every metric type. Keeping this as a separate function preserves the
303
+ * option to diverge later (e.g. shorter legend labels for dense charts).
304
+ */
305
+ return this.getTitleByMonitorMetricType(monitorMetricType);
119
306
  }
120
307
  static getLegendUnitByMonitorMetricType(monitorMetricType) {
121
308
  switch (monitorMetricType) {
@@ -133,6 +320,39 @@ class MonitorMetricTypeUtil {
133
320
  return "%";
134
321
  case MonitorMetricType.ExecutionTime:
135
322
  return "ms";
323
+ case MonitorMetricType.LoadAverage1Min:
324
+ case MonitorMetricType.LoadAverage5Min:
325
+ case MonitorMetricType.LoadAverage15Min:
326
+ return "";
327
+ case MonitorMetricType.SwapUsagePercent:
328
+ case MonitorMetricType.CPUTimeUserPercent:
329
+ case MonitorMetricType.CPUTimeSystemPercent:
330
+ case MonitorMetricType.CPUTimeIoWaitPercent:
331
+ case MonitorMetricType.CPUTimeIdlePercent:
332
+ case MonitorMetricType.CPUTimeStealPercent:
333
+ return "%";
334
+ case MonitorMetricType.MemoryAvailableBytes:
335
+ case MonitorMetricType.DiskReadBytesTotal:
336
+ case MonitorMetricType.DiskWriteBytesTotal:
337
+ case MonitorMetricType.NetworkBytesReceivedTotal:
338
+ case MonitorMetricType.NetworkBytesSentTotal:
339
+ return "bytes";
340
+ case MonitorMetricType.DiskReadOpsTotal:
341
+ case MonitorMetricType.DiskWriteOpsTotal:
342
+ return "ops";
343
+ case MonitorMetricType.NetworkPacketsReceivedTotal:
344
+ case MonitorMetricType.NetworkPacketsSentTotal:
345
+ return "packets";
346
+ case MonitorMetricType.NetworkErrorsIn:
347
+ case MonitorMetricType.NetworkErrorsOut:
348
+ return "errors";
349
+ case MonitorMetricType.NetworkConnectionsEstablished:
350
+ case MonitorMetricType.NetworkConnectionsListen:
351
+ return "connections";
352
+ case MonitorMetricType.HostUptimeSeconds:
353
+ return "seconds";
354
+ case MonitorMetricType.ProcessCountTotal:
355
+ return "processes";
136
356
  default:
137
357
  return "";
138
358
  }
@@ -153,6 +373,54 @@ class MonitorMetricTypeUtil {
153
373
  return "Memory usage percent is the percentage of memory that is currently being used on a server. It is a measure of how much of the server's memory is being used.";
154
374
  case MonitorMetricType.ExecutionTime:
155
375
  return "Execution time is the time taken for a custom JavaScript code or a synthetic monitor to execute.";
376
+ case MonitorMetricType.LoadAverage1Min:
377
+ return "Average number of runnable or uninterruptible processes over the last 1 minute. Values persistently above the number of CPU cores indicate CPU saturation.";
378
+ case MonitorMetricType.LoadAverage5Min:
379
+ return "Average number of runnable or uninterruptible processes over the last 5 minutes.";
380
+ case MonitorMetricType.LoadAverage15Min:
381
+ return "Average number of runnable or uninterruptible processes over the last 15 minutes — the most stable load indicator.";
382
+ case MonitorMetricType.SwapUsagePercent:
383
+ return "Percentage of swap space in use. Sustained non-zero values typically indicate memory pressure.";
384
+ case MonitorMetricType.MemoryAvailableBytes:
385
+ return "Estimated bytes of memory available for allocating to new processes without swapping.";
386
+ case MonitorMetricType.CPUTimeUserPercent:
387
+ return "Percentage of CPU time spent executing user-space processes.";
388
+ case MonitorMetricType.CPUTimeSystemPercent:
389
+ return "Percentage of CPU time spent executing kernel-space code (system calls, interrupts).";
390
+ case MonitorMetricType.CPUTimeIoWaitPercent:
391
+ return "Percentage of CPU time spent waiting on disk I/O. High iowait often indicates a storage bottleneck.";
392
+ case MonitorMetricType.CPUTimeIdlePercent:
393
+ return "Percentage of CPU time spent idle (not executing any work).";
394
+ case MonitorMetricType.CPUTimeStealPercent:
395
+ return "Percentage of CPU time the hypervisor stole from this VM to service other guests. Only relevant on virtualized hosts.";
396
+ case MonitorMetricType.DiskReadBytesTotal:
397
+ return "Cumulative bytes read from each disk since boot. Take a derivative over time to get read throughput.";
398
+ case MonitorMetricType.DiskWriteBytesTotal:
399
+ return "Cumulative bytes written to each disk since boot. Take a derivative over time to get write throughput.";
400
+ case MonitorMetricType.DiskReadOpsTotal:
401
+ return "Cumulative disk read operations since boot, per disk.";
402
+ case MonitorMetricType.DiskWriteOpsTotal:
403
+ return "Cumulative disk write operations since boot, per disk.";
404
+ case MonitorMetricType.NetworkBytesReceivedTotal:
405
+ return "Cumulative bytes received on each network interface since boot. Derivative over time yields receive throughput.";
406
+ case MonitorMetricType.NetworkBytesSentTotal:
407
+ return "Cumulative bytes transmitted on each network interface since boot. Derivative over time yields send throughput.";
408
+ case MonitorMetricType.NetworkPacketsReceivedTotal:
409
+ return "Cumulative packets received per interface since boot.";
410
+ case MonitorMetricType.NetworkPacketsSentTotal:
411
+ return "Cumulative packets transmitted per interface since boot.";
412
+ case MonitorMetricType.NetworkErrorsIn:
413
+ return "Cumulative receive errors per interface. Increases typically point to cabling, NIC, or driver issues.";
414
+ case MonitorMetricType.NetworkErrorsOut:
415
+ return "Cumulative transmit errors per interface.";
416
+ case MonitorMetricType.NetworkConnectionsEstablished:
417
+ return "Count of network connections currently in ESTABLISHED state.";
418
+ case MonitorMetricType.NetworkConnectionsListen:
419
+ return "Count of sockets currently in LISTEN state — one per service accepting connections.";
420
+ case MonitorMetricType.HostUptimeSeconds:
421
+ return "Seconds since the host was last booted.";
422
+ case MonitorMetricType.ProcessCountTotal:
423
+ return "Number of running processes reported by the agent.";
156
424
  default:
157
425
  return "";
158
426
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MonitorMetricType.js","sourceRoot":"","sources":["../../../../Utils/Monitor/MonitorMetricType.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MonitorMetricType.js","sourceRoot":"","sources":["../../../../Utils/Monitor/MonitorMetricType.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneuptime/common",
3
- "version": "10.0.71",
3
+ "version": "10.0.73",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",