@oneuptime/common 11.0.1 → 11.0.3

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 (577) hide show
  1. package/Models/DatabaseModels/Alert.ts +276 -0
  2. package/Models/DatabaseModels/AlertLabelRule.ts +38 -0
  3. package/Models/DatabaseModels/AlertOwnerRule.ts +38 -0
  4. package/Models/DatabaseModels/CephCluster.ts +964 -0
  5. package/Models/DatabaseModels/CephClusterLabelRule.ts +514 -0
  6. package/Models/DatabaseModels/CephClusterOwnerRule.ts +596 -0
  7. package/Models/DatabaseModels/CephClusterOwnerTeam.ts +487 -0
  8. package/Models/DatabaseModels/CephClusterOwnerUser.ts +486 -0
  9. package/Models/DatabaseModels/CephResource.ts +809 -0
  10. package/Models/DatabaseModels/DockerSwarmCluster.ts +989 -0
  11. package/Models/DatabaseModels/DockerSwarmClusterLabelRule.ts +514 -0
  12. package/Models/DatabaseModels/DockerSwarmClusterOwnerRule.ts +596 -0
  13. package/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.ts +487 -0
  14. package/Models/DatabaseModels/DockerSwarmClusterOwnerUser.ts +486 -0
  15. package/Models/DatabaseModels/DockerSwarmResource.ts +750 -0
  16. package/Models/DatabaseModels/Host.ts +64 -0
  17. package/Models/DatabaseModels/Incident.ts +276 -0
  18. package/Models/DatabaseModels/IncidentLabelRule.ts +38 -0
  19. package/Models/DatabaseModels/IncidentOwnerRule.ts +38 -0
  20. package/Models/DatabaseModels/IncidentTemplate.ts +56 -0
  21. package/Models/DatabaseModels/Index.ts +48 -0
  22. package/Models/DatabaseModels/PodmanHost.ts +859 -0
  23. package/Models/DatabaseModels/PodmanHostLabelRule.ts +514 -0
  24. package/Models/DatabaseModels/PodmanHostOwnerRule.ts +596 -0
  25. package/Models/DatabaseModels/PodmanHostOwnerTeam.ts +487 -0
  26. package/Models/DatabaseModels/PodmanHostOwnerUser.ts +486 -0
  27. package/Models/DatabaseModels/PodmanResource.ts +498 -0
  28. package/Models/DatabaseModels/ProxmoxCluster.ts +943 -0
  29. package/Models/DatabaseModels/ProxmoxClusterLabelRule.ts +514 -0
  30. package/Models/DatabaseModels/ProxmoxClusterOwnerRule.ts +596 -0
  31. package/Models/DatabaseModels/ProxmoxClusterOwnerTeam.ts +487 -0
  32. package/Models/DatabaseModels/ProxmoxClusterOwnerUser.ts +486 -0
  33. package/Models/DatabaseModels/ProxmoxResource.ts +726 -0
  34. package/Models/DatabaseModels/ScheduledMaintenance.ts +220 -0
  35. package/Models/DatabaseModels/ScheduledMaintenanceLabelRule.ts +38 -0
  36. package/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.ts +38 -0
  37. package/Models/DatabaseModels/ScheduledMaintenanceTemplate.ts +56 -0
  38. package/Models/DatabaseModels/TelemetryException.ts +2 -0
  39. package/Server/API/BillingInvoiceAPI.ts +47 -7
  40. package/Server/API/CephResourceAPI.ts +134 -0
  41. package/Server/API/DashboardAPI.ts +135 -0
  42. package/Server/API/DockerSwarmResourceAPI.ts +137 -0
  43. package/Server/API/ProjectAPI.ts +15 -0
  44. package/Server/API/ProxmoxResourceAPI.ts +132 -0
  45. package/Server/API/ResellerPlanAPI.ts +17 -0
  46. package/Server/API/TelemetryAPI.ts +8 -1
  47. package/Server/Infrastructure/GlobalCache.ts +8 -2
  48. package/Server/Infrastructure/Postgres/SchemaMigrations/1781500000000-AddProxmoxAndCephClusterTables.ts +163 -0
  49. package/Server/Infrastructure/Postgres/SchemaMigrations/1781587937032-MigrationName.ts +3199 -0
  50. package/Server/Infrastructure/Postgres/SchemaMigrations/1781600000000-AddProxmoxCephV2Columns.ts +211 -0
  51. package/Server/Infrastructure/Postgres/SchemaMigrations/1781600000001-AddProxmoxCephActivityAndRules.ts +590 -0
  52. package/Server/Infrastructure/Postgres/SchemaMigrations/1781700000000-AddProxmoxCephV3Columns.ts +64 -0
  53. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
  54. package/Server/Infrastructure/Redis.ts +40 -12
  55. package/Server/Services/AlertLabelRuleEngineService.ts +29 -0
  56. package/Server/Services/AlertOwnerRuleEngineService.ts +67 -0
  57. package/Server/Services/AnalyticsDatabaseService.ts +1 -1
  58. package/Server/Services/BillingService.ts +109 -21
  59. package/Server/Services/CephClusterLabelRuleEngineService.ts +200 -0
  60. package/Server/Services/CephClusterLabelRuleService.ts +14 -0
  61. package/Server/Services/CephClusterOwnerRuleEngineService.ts +218 -0
  62. package/Server/Services/CephClusterOwnerRuleService.ts +14 -0
  63. package/Server/Services/CephClusterOwnerTeamService.ts +10 -0
  64. package/Server/Services/CephClusterOwnerUserService.ts +10 -0
  65. package/Server/Services/CephClusterService.ts +401 -0
  66. package/Server/Services/CephResourceService.ts +383 -0
  67. package/Server/Services/CloudResourceService.ts +11 -3
  68. package/Server/Services/DockerHostService.ts +11 -3
  69. package/Server/Services/DockerSwarmClusterLabelRuleEngineService.ts +214 -0
  70. package/Server/Services/DockerSwarmClusterLabelRuleService.ts +14 -0
  71. package/Server/Services/DockerSwarmClusterOwnerRuleEngineService.ts +232 -0
  72. package/Server/Services/DockerSwarmClusterOwnerRuleService.ts +14 -0
  73. package/Server/Services/DockerSwarmClusterOwnerTeamService.ts +10 -0
  74. package/Server/Services/DockerSwarmClusterOwnerUserService.ts +10 -0
  75. package/Server/Services/DockerSwarmClusterService.ts +404 -0
  76. package/Server/Services/DockerSwarmResourceService.ts +381 -0
  77. package/Server/Services/ExceptionAggregationService.ts +3 -0
  78. package/Server/Services/HostService.ts +11 -3
  79. package/Server/Services/IncidentLabelRuleEngineService.ts +27 -0
  80. package/Server/Services/IncidentOwnerRuleEngineService.ts +67 -0
  81. package/Server/Services/IncidentService.ts +11 -0
  82. package/Server/Services/Index.ts +38 -0
  83. package/Server/Services/KubernetesClusterService.ts +11 -3
  84. package/Server/Services/LogAggregationService.ts +3 -0
  85. package/Server/Services/MetricAggregationService.ts +3 -0
  86. package/Server/Services/OpenTelemetryIngestService.ts +73 -0
  87. package/Server/Services/PodmanHostLabelRuleEngineService.ts +198 -0
  88. package/Server/Services/PodmanHostLabelRuleService.ts +14 -0
  89. package/Server/Services/PodmanHostOwnerRuleEngineService.ts +216 -0
  90. package/Server/Services/PodmanHostOwnerRuleService.ts +14 -0
  91. package/Server/Services/PodmanHostOwnerTeamService.ts +10 -0
  92. package/Server/Services/PodmanHostOwnerUserService.ts +10 -0
  93. package/Server/Services/PodmanHostService.ts +368 -0
  94. package/Server/Services/PodmanResourceService.ts +310 -0
  95. package/Server/Services/ProxmoxClusterLabelRuleEngineService.ts +204 -0
  96. package/Server/Services/ProxmoxClusterLabelRuleService.ts +14 -0
  97. package/Server/Services/ProxmoxClusterOwnerRuleEngineService.ts +222 -0
  98. package/Server/Services/ProxmoxClusterOwnerRuleService.ts +14 -0
  99. package/Server/Services/ProxmoxClusterOwnerTeamService.ts +10 -0
  100. package/Server/Services/ProxmoxClusterOwnerUserService.ts +10 -0
  101. package/Server/Services/ProxmoxClusterService.ts +382 -0
  102. package/Server/Services/ProxmoxResourceService.ts +404 -0
  103. package/Server/Services/RumApplicationService.ts +11 -3
  104. package/Server/Services/ScheduledMaintenanceLabelRuleEngineService.ts +29 -0
  105. package/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.ts +67 -0
  106. package/Server/Services/ServerlessFunctionService.ts +11 -3
  107. package/Server/Services/TelemetryUsageBillingService.ts +59 -3
  108. package/Server/Services/TraceAggregationService.ts +3 -0
  109. package/Server/Types/AnalyticsDatabase/AggregateBy.ts +8 -23
  110. package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +13 -0
  111. package/Server/Utils/Monitor/MonitorAlert.ts +55 -0
  112. package/Server/Utils/Monitor/MonitorClusterContext.ts +158 -0
  113. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +650 -4
  114. package/Server/Utils/Monitor/MonitorIncident.ts +175 -7
  115. package/Server/Utils/Monitor/MonitorMaintenanceSuppression.ts +56 -6
  116. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +6 -1
  117. package/Server/Utils/Monitor/SeriesResourceLabels.ts +59 -0
  118. package/Server/Utils/Profiling.ts +37 -2
  119. package/Server/Utils/Telemetry/EntityRegistry.ts +4 -0
  120. package/Server/Utils/Telemetry/ProxmoxCephSnapshotScan.ts +1096 -0
  121. package/Server/Utils/Telemetry/ResourceFacetResolver.ts +49 -0
  122. package/Server/Utils/Telemetry/Telemetry.ts +10 -0
  123. package/Server/Utils/Telemetry/TelemetryEntity.ts +107 -0
  124. package/Server/Utils/Telemetry.ts +8 -19
  125. package/Tests/Server/API/BillingInvoiceAPI.test.ts +194 -0
  126. package/Tests/Server/API/ProjectAPI.test.ts +91 -0
  127. package/Tests/Server/API/ResellerPlanAPI.test.ts +207 -0
  128. package/Tests/Server/Infrastructure/GlobalCache.test.ts +100 -0
  129. package/Tests/Server/Services/BillingService.test.ts +323 -0
  130. package/Tests/Server/Services/CephResourceService.test.ts +264 -0
  131. package/Tests/Server/Services/ProxmoxResourceService.test.ts +326 -0
  132. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluator.test.ts +322 -0
  133. package/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.ts +14 -0
  134. package/Tests/Server/Utils/Telemetry/ProxmoxCephSnapshotScan.test.ts +879 -0
  135. package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +196 -0
  136. package/Tests/Types/DockerSwarm/DockerSwarmInventoryExtractor.test.ts +667 -0
  137. package/Tests/Types/Monitor/CephAlertTemplates.test.ts +1231 -0
  138. package/Tests/Types/Monitor/DockerSwarmAlertTemplates.test.ts +528 -0
  139. package/Tests/Types/Monitor/ProxmoxAlertTemplates.test.ts +732 -0
  140. package/Tests/Utils/Telemetry/EntityRelationship.test.ts +49 -0
  141. package/Tests/Utils/Telemetry/HeartbeatAvailability.test.ts +423 -0
  142. package/Types/BaseDatabase/AggregationIntervalUtil.ts +74 -0
  143. package/Types/Dashboard/DashboardComponentType.ts +11 -0
  144. package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +4 -0
  145. package/Types/Dashboard/DashboardComponents/DashboardCephOsdListComponent.ts +15 -0
  146. package/Types/Dashboard/DashboardComponents/DashboardCephPoolListComponent.ts +14 -0
  147. package/Types/Dashboard/DashboardComponents/DashboardDockerSwarmNodeListComponent.ts +17 -0
  148. package/Types/Dashboard/DashboardComponents/DashboardDockerSwarmServiceListComponent.ts +17 -0
  149. package/Types/Dashboard/DashboardComponents/DashboardPodmanContainerListComponent.ts +16 -0
  150. package/Types/Dashboard/DashboardComponents/DashboardPodmanHostListComponent.ts +15 -0
  151. package/Types/Dashboard/DashboardComponents/DashboardPodmanImageListComponent.ts +16 -0
  152. package/Types/Dashboard/DashboardComponents/DashboardPodmanNetworkListComponent.ts +15 -0
  153. package/Types/Dashboard/DashboardComponents/DashboardPodmanVolumeListComponent.ts +15 -0
  154. package/Types/Dashboard/DashboardComponents/DashboardProxmoxGuestListComponent.ts +17 -0
  155. package/Types/Dashboard/DashboardComponents/DashboardProxmoxNodeListComponent.ts +16 -0
  156. package/Types/Dashboard/DashboardTemplates.ts +640 -0
  157. package/Types/DockerSwarm/DockerSwarmInventoryExtractor.ts +452 -0
  158. package/Types/Icon/IconProp.ts +3 -0
  159. package/Types/Monitor/CephAlertTemplates.ts +1647 -0
  160. package/Types/Monitor/CephMetricCatalog.ts +409 -0
  161. package/Types/Monitor/DockerSwarmAlertTemplates.ts +461 -0
  162. package/Types/Monitor/DockerSwarmMetricCatalog.ts +139 -0
  163. package/Types/Monitor/HostAlertTemplates.ts +455 -0
  164. package/Types/Monitor/HostMetricCatalog.ts +177 -0
  165. package/Types/Monitor/MetricMonitor/MetricMonitorResponse.ts +65 -0
  166. package/Types/Monitor/MonitorStep.ts +163 -0
  167. package/Types/Monitor/MonitorStepCephMonitor.ts +57 -0
  168. package/Types/Monitor/MonitorStepDockerSwarmMonitor.ts +74 -0
  169. package/Types/Monitor/MonitorStepHostMonitor.ts +30 -0
  170. package/Types/Monitor/MonitorStepPodmanMonitor.ts +38 -0
  171. package/Types/Monitor/MonitorStepProxmoxMonitor.ts +81 -0
  172. package/Types/Monitor/MonitorType.ts +71 -1
  173. package/Types/Monitor/PodmanAlertTemplates.ts +507 -0
  174. package/Types/Monitor/PodmanMetricCatalog.ts +226 -0
  175. package/Types/Monitor/ProxmoxAlertTemplates.ts +899 -0
  176. package/Types/Monitor/ProxmoxMetricCatalog.ts +382 -0
  177. package/Types/Permission.ts +1029 -104
  178. package/Types/Podman/PodmanInventoryExtractor.ts +343 -0
  179. package/Types/Telemetry/EntityType.ts +23 -0
  180. package/Types/Telemetry/ServiceType.ts +4 -0
  181. package/UI/Components/Icon/Icon.tsx +141 -0
  182. package/UI/Components/LogsViewer/LogsViewer.tsx +44 -1
  183. package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +28 -0
  184. package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +15 -5
  185. package/UI/Utils/Telemetry/Telemetry.ts +16 -21
  186. package/UI/Utils/TelemetryService.ts +8 -3
  187. package/Utils/Dashboard/Components/DashboardCephOsdListComponent.ts +63 -0
  188. package/Utils/Dashboard/Components/DashboardCephPoolListComponent.ts +32 -0
  189. package/Utils/Dashboard/Components/DashboardCephResourceListShared.ts +61 -0
  190. package/Utils/Dashboard/Components/DashboardDockerSwarmNodeListComponent.ts +70 -0
  191. package/Utils/Dashboard/Components/DashboardDockerSwarmResourceListShared.ts +61 -0
  192. package/Utils/Dashboard/Components/DashboardDockerSwarmServiceListComponent.ts +71 -0
  193. package/Utils/Dashboard/Components/DashboardPodmanContainerListComponent.ts +100 -0
  194. package/Utils/Dashboard/Components/DashboardPodmanHostListComponent.ts +88 -0
  195. package/Utils/Dashboard/Components/DashboardPodmanImageListComponent.ts +97 -0
  196. package/Utils/Dashboard/Components/DashboardPodmanNetworkListComponent.ts +87 -0
  197. package/Utils/Dashboard/Components/DashboardPodmanVolumeListComponent.ts +87 -0
  198. package/Utils/Dashboard/Components/DashboardProxmoxGuestListComponent.ts +69 -0
  199. package/Utils/Dashboard/Components/DashboardProxmoxNodeListComponent.ts +55 -0
  200. package/Utils/Dashboard/Components/DashboardProxmoxResourceListShared.ts +61 -0
  201. package/Utils/Dashboard/Components/Index.ts +79 -0
  202. package/Utils/Telemetry/EntityKey.ts +53 -0
  203. package/Utils/Telemetry/EntityRelationship.ts +6 -0
  204. package/Utils/Telemetry/HeartbeatAvailability.ts +262 -0
  205. package/build/dist/Models/DatabaseModels/Alert.js +270 -0
  206. package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
  207. package/build/dist/Models/DatabaseModels/AlertLabelRule.js +39 -0
  208. package/build/dist/Models/DatabaseModels/AlertLabelRule.js.map +1 -1
  209. package/build/dist/Models/DatabaseModels/AlertOwnerRule.js +39 -0
  210. package/build/dist/Models/DatabaseModels/AlertOwnerRule.js.map +1 -1
  211. package/build/dist/Models/DatabaseModels/CephCluster.js +992 -0
  212. package/build/dist/Models/DatabaseModels/CephCluster.js.map +1 -0
  213. package/build/dist/Models/DatabaseModels/CephClusterLabelRule.js +522 -0
  214. package/build/dist/Models/DatabaseModels/CephClusterLabelRule.js.map +1 -0
  215. package/build/dist/Models/DatabaseModels/CephClusterOwnerRule.js +603 -0
  216. package/build/dist/Models/DatabaseModels/CephClusterOwnerRule.js.map +1 -0
  217. package/build/dist/Models/DatabaseModels/CephClusterOwnerTeam.js +503 -0
  218. package/build/dist/Models/DatabaseModels/CephClusterOwnerTeam.js.map +1 -0
  219. package/build/dist/Models/DatabaseModels/CephClusterOwnerUser.js +502 -0
  220. package/build/dist/Models/DatabaseModels/CephClusterOwnerUser.js.map +1 -0
  221. package/build/dist/Models/DatabaseModels/CephResource.js +846 -0
  222. package/build/dist/Models/DatabaseModels/CephResource.js.map +1 -0
  223. package/build/dist/Models/DatabaseModels/DockerSwarmCluster.js +1018 -0
  224. package/build/dist/Models/DatabaseModels/DockerSwarmCluster.js.map +1 -0
  225. package/build/dist/Models/DatabaseModels/DockerSwarmClusterLabelRule.js +522 -0
  226. package/build/dist/Models/DatabaseModels/DockerSwarmClusterLabelRule.js.map +1 -0
  227. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerRule.js +603 -0
  228. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerRule.js.map +1 -0
  229. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.js +503 -0
  230. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.js.map +1 -0
  231. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerUser.js +502 -0
  232. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerUser.js.map +1 -0
  233. package/build/dist/Models/DatabaseModels/DockerSwarmResource.js +787 -0
  234. package/build/dist/Models/DatabaseModels/DockerSwarmResource.js.map +1 -0
  235. package/build/dist/Models/DatabaseModels/Host.js +63 -0
  236. package/build/dist/Models/DatabaseModels/Host.js.map +1 -1
  237. package/build/dist/Models/DatabaseModels/Incident.js +270 -0
  238. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  239. package/build/dist/Models/DatabaseModels/IncidentLabelRule.js +39 -0
  240. package/build/dist/Models/DatabaseModels/IncidentLabelRule.js.map +1 -1
  241. package/build/dist/Models/DatabaseModels/IncidentOwnerRule.js +39 -0
  242. package/build/dist/Models/DatabaseModels/IncidentOwnerRule.js.map +1 -1
  243. package/build/dist/Models/DatabaseModels/IncidentTemplate.js +54 -0
  244. package/build/dist/Models/DatabaseModels/IncidentTemplate.js.map +1 -1
  245. package/build/dist/Models/DatabaseModels/Index.js +48 -0
  246. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  247. package/build/dist/Models/DatabaseModels/PodmanHost.js +885 -0
  248. package/build/dist/Models/DatabaseModels/PodmanHost.js.map +1 -0
  249. package/build/dist/Models/DatabaseModels/PodmanHostLabelRule.js +522 -0
  250. package/build/dist/Models/DatabaseModels/PodmanHostLabelRule.js.map +1 -0
  251. package/build/dist/Models/DatabaseModels/PodmanHostOwnerRule.js +603 -0
  252. package/build/dist/Models/DatabaseModels/PodmanHostOwnerRule.js.map +1 -0
  253. package/build/dist/Models/DatabaseModels/PodmanHostOwnerTeam.js +503 -0
  254. package/build/dist/Models/DatabaseModels/PodmanHostOwnerTeam.js.map +1 -0
  255. package/build/dist/Models/DatabaseModels/PodmanHostOwnerUser.js +502 -0
  256. package/build/dist/Models/DatabaseModels/PodmanHostOwnerUser.js.map +1 -0
  257. package/build/dist/Models/DatabaseModels/PodmanResource.js +526 -0
  258. package/build/dist/Models/DatabaseModels/PodmanResource.js.map +1 -0
  259. package/build/dist/Models/DatabaseModels/ProxmoxCluster.js +967 -0
  260. package/build/dist/Models/DatabaseModels/ProxmoxCluster.js.map +1 -0
  261. package/build/dist/Models/DatabaseModels/ProxmoxClusterLabelRule.js +522 -0
  262. package/build/dist/Models/DatabaseModels/ProxmoxClusterLabelRule.js.map +1 -0
  263. package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerRule.js +603 -0
  264. package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerRule.js.map +1 -0
  265. package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerTeam.js +503 -0
  266. package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerTeam.js.map +1 -0
  267. package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerUser.js +502 -0
  268. package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerUser.js.map +1 -0
  269. package/build/dist/Models/DatabaseModels/ProxmoxResource.js +761 -0
  270. package/build/dist/Models/DatabaseModels/ProxmoxResource.js.map +1 -0
  271. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +216 -0
  272. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
  273. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceLabelRule.js +39 -0
  274. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceLabelRule.js.map +1 -1
  275. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.js +39 -0
  276. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.js.map +1 -1
  277. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js +54 -0
  278. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js.map +1 -1
  279. package/build/dist/Models/DatabaseModels/TelemetryException.js +2 -0
  280. package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
  281. package/build/dist/Server/API/BillingInvoiceAPI.js +35 -5
  282. package/build/dist/Server/API/BillingInvoiceAPI.js.map +1 -1
  283. package/build/dist/Server/API/CephResourceAPI.js +98 -0
  284. package/build/dist/Server/API/CephResourceAPI.js.map +1 -0
  285. package/build/dist/Server/API/DashboardAPI.js +135 -0
  286. package/build/dist/Server/API/DashboardAPI.js.map +1 -1
  287. package/build/dist/Server/API/DockerSwarmResourceAPI.js +100 -0
  288. package/build/dist/Server/API/DockerSwarmResourceAPI.js.map +1 -0
  289. package/build/dist/Server/API/ProjectAPI.js +11 -0
  290. package/build/dist/Server/API/ProjectAPI.js.map +1 -1
  291. package/build/dist/Server/API/ProxmoxResourceAPI.js +95 -0
  292. package/build/dist/Server/API/ProxmoxResourceAPI.js.map +1 -0
  293. package/build/dist/Server/API/ResellerPlanAPI.js +17 -3
  294. package/build/dist/Server/API/ResellerPlanAPI.js.map +1 -1
  295. package/build/dist/Server/API/TelemetryAPI.js +8 -1
  296. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  297. package/build/dist/Server/Infrastructure/GlobalCache.js +7 -2
  298. package/build/dist/Server/Infrastructure/GlobalCache.js.map +1 -1
  299. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781500000000-AddProxmoxAndCephClusterTables.js +76 -0
  300. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781500000000-AddProxmoxAndCephClusterTables.js.map +1 -0
  301. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781587937032-MigrationName.js +1100 -0
  302. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781587937032-MigrationName.js.map +1 -0
  303. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781600000000-AddProxmoxCephV2Columns.js +108 -0
  304. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781600000000-AddProxmoxCephV2Columns.js.map +1 -0
  305. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781600000001-AddProxmoxCephActivityAndRules.js +253 -0
  306. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781600000001-AddProxmoxCephActivityAndRules.js.map +1 -0
  307. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781700000000-AddProxmoxCephV3Columns.js +43 -0
  308. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781700000000-AddProxmoxCephV3Columns.js.map +1 -0
  309. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
  310. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  311. package/build/dist/Server/Infrastructure/Redis.js +31 -8
  312. package/build/dist/Server/Infrastructure/Redis.js.map +1 -1
  313. package/build/dist/Server/Services/AlertLabelRuleEngineService.js +30 -4
  314. package/build/dist/Server/Services/AlertLabelRuleEngineService.js.map +1 -1
  315. package/build/dist/Server/Services/AlertOwnerRuleEngineService.js +62 -5
  316. package/build/dist/Server/Services/AlertOwnerRuleEngineService.js.map +1 -1
  317. package/build/dist/Server/Services/AnalyticsDatabaseService.js +1 -1
  318. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  319. package/build/dist/Server/Services/BillingService.js +85 -23
  320. package/build/dist/Server/Services/BillingService.js.map +1 -1
  321. package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js +166 -0
  322. package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js.map +1 -0
  323. package/build/dist/Server/Services/CephClusterLabelRuleService.js +13 -0
  324. package/build/dist/Server/Services/CephClusterLabelRuleService.js.map +1 -0
  325. package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js +186 -0
  326. package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js.map +1 -0
  327. package/build/dist/Server/Services/CephClusterOwnerRuleService.js +13 -0
  328. package/build/dist/Server/Services/CephClusterOwnerRuleService.js.map +1 -0
  329. package/build/dist/Server/Services/CephClusterOwnerTeamService.js +9 -0
  330. package/build/dist/Server/Services/CephClusterOwnerTeamService.js.map +1 -0
  331. package/build/dist/Server/Services/CephClusterOwnerUserService.js +9 -0
  332. package/build/dist/Server/Services/CephClusterOwnerUserService.js.map +1 -0
  333. package/build/dist/Server/Services/CephClusterService.js +353 -0
  334. package/build/dist/Server/Services/CephClusterService.js.map +1 -0
  335. package/build/dist/Server/Services/CephResourceService.js +257 -0
  336. package/build/dist/Server/Services/CephResourceService.js.map +1 -0
  337. package/build/dist/Server/Services/CloudResourceService.js +10 -2
  338. package/build/dist/Server/Services/CloudResourceService.js.map +1 -1
  339. package/build/dist/Server/Services/DockerHostService.js +10 -2
  340. package/build/dist/Server/Services/DockerHostService.js.map +1 -1
  341. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js +168 -0
  342. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js.map +1 -0
  343. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleService.js +13 -0
  344. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleService.js.map +1 -0
  345. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js +188 -0
  346. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js.map +1 -0
  347. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleService.js +13 -0
  348. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleService.js.map +1 -0
  349. package/build/dist/Server/Services/DockerSwarmClusterOwnerTeamService.js +9 -0
  350. package/build/dist/Server/Services/DockerSwarmClusterOwnerTeamService.js.map +1 -0
  351. package/build/dist/Server/Services/DockerSwarmClusterOwnerUserService.js +9 -0
  352. package/build/dist/Server/Services/DockerSwarmClusterOwnerUserService.js.map +1 -0
  353. package/build/dist/Server/Services/DockerSwarmClusterService.js +353 -0
  354. package/build/dist/Server/Services/DockerSwarmClusterService.js.map +1 -0
  355. package/build/dist/Server/Services/DockerSwarmResourceService.js +258 -0
  356. package/build/dist/Server/Services/DockerSwarmResourceService.js.map +1 -0
  357. package/build/dist/Server/Services/ExceptionAggregationService.js +3 -0
  358. package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
  359. package/build/dist/Server/Services/HostService.js +10 -2
  360. package/build/dist/Server/Services/HostService.js.map +1 -1
  361. package/build/dist/Server/Services/IncidentLabelRuleEngineService.js +28 -4
  362. package/build/dist/Server/Services/IncidentLabelRuleEngineService.js.map +1 -1
  363. package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js +62 -5
  364. package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js.map +1 -1
  365. package/build/dist/Server/Services/IncidentService.js +8 -0
  366. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  367. package/build/dist/Server/Services/Index.js +38 -0
  368. package/build/dist/Server/Services/Index.js.map +1 -1
  369. package/build/dist/Server/Services/KubernetesClusterService.js +10 -2
  370. package/build/dist/Server/Services/KubernetesClusterService.js.map +1 -1
  371. package/build/dist/Server/Services/LogAggregationService.js +3 -0
  372. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  373. package/build/dist/Server/Services/MetricAggregationService.js +3 -0
  374. package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
  375. package/build/dist/Server/Services/OpenTelemetryIngestService.js +69 -9
  376. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  377. package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js +166 -0
  378. package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js.map +1 -0
  379. package/build/dist/Server/Services/PodmanHostLabelRuleService.js +13 -0
  380. package/build/dist/Server/Services/PodmanHostLabelRuleService.js.map +1 -0
  381. package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js +186 -0
  382. package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js.map +1 -0
  383. package/build/dist/Server/Services/PodmanHostOwnerRuleService.js +13 -0
  384. package/build/dist/Server/Services/PodmanHostOwnerRuleService.js.map +1 -0
  385. package/build/dist/Server/Services/PodmanHostOwnerTeamService.js +9 -0
  386. package/build/dist/Server/Services/PodmanHostOwnerTeamService.js.map +1 -0
  387. package/build/dist/Server/Services/PodmanHostOwnerUserService.js +9 -0
  388. package/build/dist/Server/Services/PodmanHostOwnerUserService.js.map +1 -0
  389. package/build/dist/Server/Services/PodmanHostService.js +319 -0
  390. package/build/dist/Server/Services/PodmanHostService.js.map +1 -0
  391. package/build/dist/Server/Services/PodmanResourceService.js +196 -0
  392. package/build/dist/Server/Services/PodmanResourceService.js.map +1 -0
  393. package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js +166 -0
  394. package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js.map +1 -0
  395. package/build/dist/Server/Services/ProxmoxClusterLabelRuleService.js +13 -0
  396. package/build/dist/Server/Services/ProxmoxClusterLabelRuleService.js.map +1 -0
  397. package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js +186 -0
  398. package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js.map +1 -0
  399. package/build/dist/Server/Services/ProxmoxClusterOwnerRuleService.js +13 -0
  400. package/build/dist/Server/Services/ProxmoxClusterOwnerRuleService.js.map +1 -0
  401. package/build/dist/Server/Services/ProxmoxClusterOwnerTeamService.js +9 -0
  402. package/build/dist/Server/Services/ProxmoxClusterOwnerTeamService.js.map +1 -0
  403. package/build/dist/Server/Services/ProxmoxClusterOwnerUserService.js +9 -0
  404. package/build/dist/Server/Services/ProxmoxClusterOwnerUserService.js.map +1 -0
  405. package/build/dist/Server/Services/ProxmoxClusterService.js +337 -0
  406. package/build/dist/Server/Services/ProxmoxClusterService.js.map +1 -0
  407. package/build/dist/Server/Services/ProxmoxResourceService.js +285 -0
  408. package/build/dist/Server/Services/ProxmoxResourceService.js.map +1 -0
  409. package/build/dist/Server/Services/RumApplicationService.js +10 -2
  410. package/build/dist/Server/Services/RumApplicationService.js.map +1 -1
  411. package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js +30 -4
  412. package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js.map +1 -1
  413. package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js +62 -5
  414. package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js.map +1 -1
  415. package/build/dist/Server/Services/ServerlessFunctionService.js +10 -2
  416. package/build/dist/Server/Services/ServerlessFunctionService.js.map +1 -1
  417. package/build/dist/Server/Services/TelemetryUsageBillingService.js +43 -3
  418. package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
  419. package/build/dist/Server/Services/TraceAggregationService.js +3 -0
  420. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  421. package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js +8 -25
  422. package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js.map +1 -1
  423. package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +13 -0
  424. package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
  425. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +44 -0
  426. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  427. package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js +118 -0
  428. package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js.map +1 -0
  429. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +422 -4
  430. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  431. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +137 -8
  432. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  433. package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js +32 -6
  434. package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js.map +1 -1
  435. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +6 -1
  436. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  437. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +39 -0
  438. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -1
  439. package/build/dist/Server/Utils/Profiling.js +24 -3
  440. package/build/dist/Server/Utils/Profiling.js.map +1 -1
  441. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +4 -0
  442. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -1
  443. package/build/dist/Server/Utils/Telemetry/ProxmoxCephSnapshotScan.js +854 -0
  444. package/build/dist/Server/Utils/Telemetry/ProxmoxCephSnapshotScan.js.map +1 -0
  445. package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js +30 -0
  446. package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js.map +1 -1
  447. package/build/dist/Server/Utils/Telemetry/Telemetry.js +6 -0
  448. package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
  449. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +80 -0
  450. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
  451. package/build/dist/Server/Utils/Telemetry.js +8 -10
  452. package/build/dist/Server/Utils/Telemetry.js.map +1 -1
  453. package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js +69 -0
  454. package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js.map +1 -0
  455. package/build/dist/Types/Dashboard/DashboardComponentType.js +11 -0
  456. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  457. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +4 -0
  458. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
  459. package/build/dist/Types/Dashboard/DashboardComponents/DashboardCephOsdListComponent.js +2 -0
  460. package/build/dist/Types/Dashboard/DashboardComponents/DashboardCephOsdListComponent.js.map +1 -0
  461. package/build/dist/Types/Dashboard/DashboardComponents/DashboardCephPoolListComponent.js +2 -0
  462. package/build/dist/Types/Dashboard/DashboardComponents/DashboardCephPoolListComponent.js.map +1 -0
  463. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmNodeListComponent.js +2 -0
  464. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmNodeListComponent.js.map +1 -0
  465. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmServiceListComponent.js +2 -0
  466. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmServiceListComponent.js.map +1 -0
  467. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanContainerListComponent.js +2 -0
  468. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanContainerListComponent.js.map +1 -0
  469. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanHostListComponent.js +2 -0
  470. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanHostListComponent.js.map +1 -0
  471. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanImageListComponent.js +2 -0
  472. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanImageListComponent.js.map +1 -0
  473. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanNetworkListComponent.js +2 -0
  474. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanNetworkListComponent.js.map +1 -0
  475. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanVolumeListComponent.js +2 -0
  476. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanVolumeListComponent.js.map +1 -0
  477. package/build/dist/Types/Dashboard/DashboardComponents/DashboardProxmoxGuestListComponent.js +2 -0
  478. package/build/dist/Types/Dashboard/DashboardComponents/DashboardProxmoxGuestListComponent.js.map +1 -0
  479. package/build/dist/Types/Dashboard/DashboardComponents/DashboardProxmoxNodeListComponent.js +2 -0
  480. package/build/dist/Types/Dashboard/DashboardComponents/DashboardProxmoxNodeListComponent.js.map +1 -0
  481. package/build/dist/Types/Dashboard/DashboardTemplates.js +562 -0
  482. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  483. package/build/dist/Types/DockerSwarm/DockerSwarmInventoryExtractor.js +359 -0
  484. package/build/dist/Types/DockerSwarm/DockerSwarmInventoryExtractor.js.map +1 -0
  485. package/build/dist/Types/Icon/IconProp.js +3 -0
  486. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  487. package/build/dist/Types/Monitor/CephAlertTemplates.js +1379 -0
  488. package/build/dist/Types/Monitor/CephAlertTemplates.js.map +1 -0
  489. package/build/dist/Types/Monitor/CephMetricCatalog.js +353 -0
  490. package/build/dist/Types/Monitor/CephMetricCatalog.js.map +1 -0
  491. package/build/dist/Types/Monitor/DockerSwarmAlertTemplates.js +358 -0
  492. package/build/dist/Types/Monitor/DockerSwarmAlertTemplates.js.map +1 -0
  493. package/build/dist/Types/Monitor/DockerSwarmMetricCatalog.js +103 -0
  494. package/build/dist/Types/Monitor/DockerSwarmMetricCatalog.js.map +1 -0
  495. package/build/dist/Types/Monitor/HostAlertTemplates.js +365 -0
  496. package/build/dist/Types/Monitor/HostAlertTemplates.js.map +1 -0
  497. package/build/dist/Types/Monitor/HostMetricCatalog.js +138 -0
  498. package/build/dist/Types/Monitor/HostMetricCatalog.js.map +1 -0
  499. package/build/dist/Types/Monitor/MonitorStep.js +115 -0
  500. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  501. package/build/dist/Types/Monitor/MonitorStepCephMonitor.js +34 -0
  502. package/build/dist/Types/Monitor/MonitorStepCephMonitor.js.map +1 -0
  503. package/build/dist/Types/Monitor/MonitorStepDockerSwarmMonitor.js +21 -0
  504. package/build/dist/Types/Monitor/MonitorStepDockerSwarmMonitor.js.map +1 -0
  505. package/build/dist/Types/Monitor/MonitorStepHostMonitor.js +20 -0
  506. package/build/dist/Types/Monitor/MonitorStepHostMonitor.js.map +1 -0
  507. package/build/dist/Types/Monitor/MonitorStepPodmanMonitor.js +21 -0
  508. package/build/dist/Types/Monitor/MonitorStepPodmanMonitor.js.map +1 -0
  509. package/build/dist/Types/Monitor/MonitorStepProxmoxMonitor.js +36 -0
  510. package/build/dist/Types/Monitor/MonitorStepProxmoxMonitor.js.map +1 -0
  511. package/build/dist/Types/Monitor/MonitorType.js +66 -1
  512. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  513. package/build/dist/Types/Monitor/PodmanAlertTemplates.js +410 -0
  514. package/build/dist/Types/Monitor/PodmanAlertTemplates.js.map +1 -0
  515. package/build/dist/Types/Monitor/PodmanMetricCatalog.js +192 -0
  516. package/build/dist/Types/Monitor/PodmanMetricCatalog.js.map +1 -0
  517. package/build/dist/Types/Monitor/ProxmoxAlertTemplates.js +743 -0
  518. package/build/dist/Types/Monitor/ProxmoxAlertTemplates.js.map +1 -0
  519. package/build/dist/Types/Monitor/ProxmoxMetricCatalog.js +320 -0
  520. package/build/dist/Types/Monitor/ProxmoxMetricCatalog.js.map +1 -0
  521. package/build/dist/Types/Permission.js +824 -0
  522. package/build/dist/Types/Permission.js.map +1 -1
  523. package/build/dist/Types/Podman/PodmanInventoryExtractor.js +293 -0
  524. package/build/dist/Types/Podman/PodmanInventoryExtractor.js.map +1 -0
  525. package/build/dist/Types/Telemetry/EntityType.js +23 -0
  526. package/build/dist/Types/Telemetry/EntityType.js.map +1 -1
  527. package/build/dist/Types/Telemetry/ServiceType.js +4 -0
  528. package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
  529. package/build/dist/UI/Components/Icon/Icon.js +49 -0
  530. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  531. package/build/dist/UI/Components/LogsViewer/LogsViewer.js +30 -2
  532. package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
  533. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +22 -0
  534. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
  535. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +11 -1
  536. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
  537. package/build/dist/UI/Utils/Telemetry/Telemetry.js +11 -10
  538. package/build/dist/UI/Utils/Telemetry/Telemetry.js.map +1 -1
  539. package/build/dist/UI/Utils/TelemetryService.js +6 -2
  540. package/build/dist/UI/Utils/TelemetryService.js.map +1 -1
  541. package/build/dist/Utils/Dashboard/Components/DashboardCephOsdListComponent.js +50 -0
  542. package/build/dist/Utils/Dashboard/Components/DashboardCephOsdListComponent.js.map +1 -0
  543. package/build/dist/Utils/Dashboard/Components/DashboardCephPoolListComponent.js +27 -0
  544. package/build/dist/Utils/Dashboard/Components/DashboardCephPoolListComponent.js.map +1 -0
  545. package/build/dist/Utils/Dashboard/Components/DashboardCephResourceListShared.js +46 -0
  546. package/build/dist/Utils/Dashboard/Components/DashboardCephResourceListShared.js.map +1 -0
  547. package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmNodeListComponent.js +55 -0
  548. package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmNodeListComponent.js.map +1 -0
  549. package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmResourceListShared.js +46 -0
  550. package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmResourceListShared.js.map +1 -0
  551. package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmServiceListComponent.js +55 -0
  552. package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmServiceListComponent.js.map +1 -0
  553. package/build/dist/Utils/Dashboard/Components/DashboardPodmanContainerListComponent.js +77 -0
  554. package/build/dist/Utils/Dashboard/Components/DashboardPodmanContainerListComponent.js.map +1 -0
  555. package/build/dist/Utils/Dashboard/Components/DashboardPodmanHostListComponent.js +71 -0
  556. package/build/dist/Utils/Dashboard/Components/DashboardPodmanHostListComponent.js.map +1 -0
  557. package/build/dist/Utils/Dashboard/Components/DashboardPodmanImageListComponent.js +77 -0
  558. package/build/dist/Utils/Dashboard/Components/DashboardPodmanImageListComponent.js.map +1 -0
  559. package/build/dist/Utils/Dashboard/Components/DashboardPodmanNetworkListComponent.js +68 -0
  560. package/build/dist/Utils/Dashboard/Components/DashboardPodmanNetworkListComponent.js.map +1 -0
  561. package/build/dist/Utils/Dashboard/Components/DashboardPodmanVolumeListComponent.js +68 -0
  562. package/build/dist/Utils/Dashboard/Components/DashboardPodmanVolumeListComponent.js.map +1 -0
  563. package/build/dist/Utils/Dashboard/Components/DashboardProxmoxGuestListComponent.js +55 -0
  564. package/build/dist/Utils/Dashboard/Components/DashboardProxmoxGuestListComponent.js.map +1 -0
  565. package/build/dist/Utils/Dashboard/Components/DashboardProxmoxNodeListComponent.js +42 -0
  566. package/build/dist/Utils/Dashboard/Components/DashboardProxmoxNodeListComponent.js.map +1 -0
  567. package/build/dist/Utils/Dashboard/Components/DashboardProxmoxResourceListShared.js +46 -0
  568. package/build/dist/Utils/Dashboard/Components/DashboardProxmoxResourceListShared.js.map +1 -0
  569. package/build/dist/Utils/Dashboard/Components/Index.js +44 -0
  570. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  571. package/build/dist/Utils/Telemetry/EntityKey.js +41 -0
  572. package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -1
  573. package/build/dist/Utils/Telemetry/EntityRelationship.js +3 -0
  574. package/build/dist/Utils/Telemetry/EntityRelationship.js.map +1 -1
  575. package/build/dist/Utils/Telemetry/HeartbeatAvailability.js +174 -0
  576. package/build/dist/Utils/Telemetry/HeartbeatAvailability.js.map +1 -0
  577. package/package.json +29 -21
@@ -1,3 +1,5 @@
1
+ import CephCluster from "../../../Models/DatabaseModels/CephCluster";
2
+ import DockerSwarmCluster from "../../../Models/DatabaseModels/DockerSwarmCluster";
1
3
  import DockerHost from "../../../Models/DatabaseModels/DockerHost";
2
4
  import Host from "../../../Models/DatabaseModels/Host";
3
5
  import Incident from "../../../Models/DatabaseModels/Incident";
@@ -8,6 +10,8 @@ import KubernetesCluster from "../../../Models/DatabaseModels/KubernetesCluster"
8
10
  import Label from "../../../Models/DatabaseModels/Label";
9
11
  import Monitor from "../../../Models/DatabaseModels/Monitor";
10
12
  import OnCallDutyPolicy from "../../../Models/DatabaseModels/OnCallDutyPolicy";
13
+ import PodmanHost from "../../../Models/DatabaseModels/PodmanHost";
14
+ import ProxmoxCluster from "../../../Models/DatabaseModels/ProxmoxCluster";
11
15
  import Service from "../../../Models/DatabaseModels/Service";
12
16
  import Includes from "../../../Types/BaseDatabase/Includes";
13
17
  import SortOrder from "../../../Types/BaseDatabase/SortOrder";
@@ -20,10 +24,13 @@ import ObjectID from "../../../Types/ObjectID";
20
24
  import ProbeMonitorResponse from "../../../Types/Probe/ProbeMonitorResponse";
21
25
  import { TelemetryQuery } from "../../../Types/Telemetry/TelemetryQuery";
22
26
  import { DisableAutomaticIncidentCreation } from "../../EnvironmentConfig";
27
+ import CephClusterService from "../../Services/CephClusterService";
23
28
  import DockerHostService from "../../Services/DockerHostService";
24
29
  import HostService from "../../Services/HostService";
25
30
  import IncidentService from "../../Services/IncidentService";
26
31
  import KubernetesClusterService from "../../Services/KubernetesClusterService";
32
+ import PodmanHostService from "../../Services/PodmanHostService";
33
+ import ProxmoxClusterService from "../../Services/ProxmoxClusterService";
27
34
  import ServiceService from "../../Services/ServiceService";
28
35
  import IncidentSeverityService from "../../Services/IncidentSeverityService";
29
36
  import IncidentStateTimelineService from "../../Services/IncidentStateTimelineService";
@@ -37,6 +44,9 @@ import OneUptimeDate from "../../../Types/Date";
37
44
  import MonitorEvaluationSummary from "../../../Types/Monitor/MonitorEvaluationSummary";
38
45
  import { IncidentMemberRoleAssignment } from "../../../Types/Monitor/CriteriaIncident";
39
46
  import { PerSeriesCriteriaMatch } from "../../../Types/Probe/ProbeApiIngestResponse";
47
+ import MonitorClusterContextUtil, {
48
+ MonitorClusterContext,
49
+ } from "./MonitorClusterContext";
40
50
  import SeriesResourceLabels, {
41
51
  SeriesResourceRefs,
42
52
  } from "./SeriesResourceLabels";
@@ -196,6 +206,19 @@ export default class MonitorIncident {
196
206
  return;
197
207
  }
198
208
 
209
+ /*
210
+ * Proxmox/Ceph monitors: resolve the monitored cluster once per
211
+ * evaluation (lookup-only, from the step config's clusterIdentifier)
212
+ * so every incident created below is attached to it. Series labels
213
+ * cannot supply this — they carry datapoint labels (`id`,
214
+ * `ceph_daemon`, `pool_id`), not cluster identity, and ungrouped
215
+ * templates have no series at all. No-op for other monitor types.
216
+ */
217
+ const clusterContext: MonitorClusterContext =
218
+ await MonitorClusterContextUtil.resolveClusterContextForMonitor({
219
+ monitor: input.monitor,
220
+ });
221
+
199
222
  /*
200
223
  * Series-less path: one incident per criteriaIncident template as
201
224
  * before. Series-aware path: one incident per (series × template).
@@ -384,6 +407,15 @@ export default class MonitorIncident {
384
407
  });
385
408
  }
386
409
 
410
+ /*
411
+ * Deterministic Proxmox/Ceph cluster link from the monitor's
412
+ * step config (resolved once above). Runs for both grouped and
413
+ * ungrouped incidents and merges with anything the series-label
414
+ * path resolved, so the per-cluster Activity tabs always see
415
+ * monitor-created incidents.
416
+ */
417
+ this.attachClusterContext({ incident, clusterContext });
418
+
387
419
  incident.onCallDutyPolicies =
388
420
  criteriaIncident.onCallPolicyIds?.map((id: ObjectID) => {
389
421
  const onCallPolicy: OnCallDutyPolicy = new OnCallDutyPolicy();
@@ -527,13 +559,14 @@ export default class MonitorIncident {
527
559
  }
528
560
 
529
561
  /*
530
- * Pull every host / docker-host / k8s-cluster / service identifier
531
- * out of the series labels and attach the matching project-scoped
532
- * records to the incident. The label-key → resource-type mapping
533
- * lives in SeriesResourceLabels (shared with the scheduled-maintenance
534
- * suppression path so the two never disagree about which labels
535
- * identify which resource). Lookups are always project-scoped so a
536
- * stale or hostile stamp can't pull in a record from another tenant.
562
+ * Pull every host / docker-host / k8s-cluster / proxmox-cluster /
563
+ * ceph-cluster / service identifier out of the series labels and
564
+ * attach the matching project-scoped records to the incident. The
565
+ * label-key resource-type mapping lives in SeriesResourceLabels
566
+ * (shared with the scheduled-maintenance suppression path so the two
567
+ * never disagree about which labels identify which resource). Lookups
568
+ * are always project-scoped so a stale or hostile stamp can't pull in
569
+ * a record from another tenant.
537
570
  */
538
571
  private static async linkResourceContextFromSeries(input: {
539
572
  incident: Incident;
@@ -547,8 +580,11 @@ export default class MonitorIncident {
547
580
  const [
548
581
  resolvedHosts,
549
582
  resolvedDockerHosts,
583
+ resolvedPodmanHosts,
550
584
  resolvedClusters,
551
585
  resolvedServices,
586
+ resolvedProxmoxClusters,
587
+ resolvedCephClusters,
552
588
  ] = await Promise.all([
553
589
  this.resolveResourceIds({
554
590
  ids: refs.hostIds,
@@ -564,6 +600,13 @@ export default class MonitorIncident {
564
600
  projectId: input.projectId,
565
601
  findBy: DockerHostService.findBy.bind(DockerHostService),
566
602
  }),
603
+ this.resolveResourceIds({
604
+ ids: refs.podmanHostIds,
605
+ names: refs.podmanHostNames,
606
+ nameColumn: "hostIdentifier",
607
+ projectId: input.projectId,
608
+ findBy: PodmanHostService.findBy.bind(PodmanHostService),
609
+ }),
567
610
  this.resolveResourceIds({
568
611
  ids: refs.kubernetesClusterIds,
569
612
  names: refs.kubernetesClusterNames,
@@ -578,6 +621,20 @@ export default class MonitorIncident {
578
621
  projectId: input.projectId,
579
622
  findBy: ServiceService.findBy.bind(ServiceService),
580
623
  }),
624
+ this.resolveResourceIds({
625
+ ids: [],
626
+ names: refs.proxmoxClusterNames,
627
+ nameColumn: "name",
628
+ projectId: input.projectId,
629
+ findBy: ProxmoxClusterService.findBy.bind(ProxmoxClusterService),
630
+ }),
631
+ this.resolveResourceIds({
632
+ ids: [],
633
+ names: refs.cephClusterNames,
634
+ nameColumn: "name",
635
+ projectId: input.projectId,
636
+ findBy: CephClusterService.findBy.bind(CephClusterService),
637
+ }),
581
638
  ]);
582
639
 
583
640
  if (resolvedHosts.length > 0) {
@@ -596,6 +653,15 @@ export default class MonitorIncident {
596
653
  },
597
654
  );
598
655
  }
656
+ if (resolvedPodmanHosts.length > 0) {
657
+ input.incident.podmanHosts = resolvedPodmanHosts.map(
658
+ (id: string): PodmanHost => {
659
+ const podmanHost: PodmanHost = new PodmanHost();
660
+ podmanHost._id = id;
661
+ return podmanHost;
662
+ },
663
+ );
664
+ }
599
665
  if (resolvedClusters.length > 0) {
600
666
  input.incident.kubernetesClusters = resolvedClusters.map(
601
667
  (id: string): KubernetesCluster => {
@@ -612,6 +678,108 @@ export default class MonitorIncident {
612
678
  return service;
613
679
  });
614
680
  }
681
+ if (resolvedProxmoxClusters.length > 0) {
682
+ input.incident.proxmoxClusters = resolvedProxmoxClusters.map(
683
+ (id: string): ProxmoxCluster => {
684
+ const cluster: ProxmoxCluster = new ProxmoxCluster();
685
+ cluster._id = id;
686
+ return cluster;
687
+ },
688
+ );
689
+ }
690
+ if (resolvedCephClusters.length > 0) {
691
+ input.incident.cephClusters = resolvedCephClusters.map(
692
+ (id: string): CephCluster => {
693
+ const cluster: CephCluster = new CephCluster();
694
+ cluster._id = id;
695
+ return cluster;
696
+ },
697
+ );
698
+ }
699
+ }
700
+
701
+ /*
702
+ * Attach the monitor-step-resolved Proxmox/Ceph cluster ids to the
703
+ * incident, merging with (never overwriting) anything the
704
+ * series-label path already linked. Both paths can resolve the same
705
+ * cluster, so dedupe by id.
706
+ */
707
+ private static attachClusterContext(input: {
708
+ incident: Incident;
709
+ clusterContext: MonitorClusterContext;
710
+ }): void {
711
+ if (input.clusterContext.proxmoxClusterIds.length > 0) {
712
+ const existingIds: Set<string> = new Set<string>(
713
+ (input.incident.proxmoxClusters || []).map(
714
+ (cluster: ProxmoxCluster) => {
715
+ return String(cluster._id);
716
+ },
717
+ ),
718
+ );
719
+
720
+ const merged: Array<ProxmoxCluster> = [
721
+ ...(input.incident.proxmoxClusters || []),
722
+ ];
723
+
724
+ for (const id of input.clusterContext.proxmoxClusterIds) {
725
+ if (existingIds.has(id)) {
726
+ continue;
727
+ }
728
+ const cluster: ProxmoxCluster = new ProxmoxCluster();
729
+ cluster._id = id;
730
+ merged.push(cluster);
731
+ }
732
+
733
+ input.incident.proxmoxClusters = merged;
734
+ }
735
+
736
+ if (input.clusterContext.cephClusterIds.length > 0) {
737
+ const existingIds: Set<string> = new Set<string>(
738
+ (input.incident.cephClusters || []).map((cluster: CephCluster) => {
739
+ return String(cluster._id);
740
+ }),
741
+ );
742
+
743
+ const merged: Array<CephCluster> = [
744
+ ...(input.incident.cephClusters || []),
745
+ ];
746
+
747
+ for (const id of input.clusterContext.cephClusterIds) {
748
+ if (existingIds.has(id)) {
749
+ continue;
750
+ }
751
+ const cluster: CephCluster = new CephCluster();
752
+ cluster._id = id;
753
+ merged.push(cluster);
754
+ }
755
+
756
+ input.incident.cephClusters = merged;
757
+ }
758
+
759
+ if (input.clusterContext.dockerSwarmClusterIds.length > 0) {
760
+ const existingIds: Set<string> = new Set<string>(
761
+ (input.incident.dockerSwarmClusters || []).map(
762
+ (cluster: DockerSwarmCluster) => {
763
+ return String(cluster._id);
764
+ },
765
+ ),
766
+ );
767
+
768
+ const merged: Array<DockerSwarmCluster> = [
769
+ ...(input.incident.dockerSwarmClusters || []),
770
+ ];
771
+
772
+ for (const id of input.clusterContext.dockerSwarmClusterIds) {
773
+ if (existingIds.has(id)) {
774
+ continue;
775
+ }
776
+ const cluster: DockerSwarmCluster = new DockerSwarmCluster();
777
+ cluster._id = id;
778
+ merged.push(cluster);
779
+ }
780
+
781
+ input.incident.dockerSwarmClusters = merged;
782
+ }
615
783
  }
616
784
 
617
785
  /*
@@ -23,7 +23,14 @@ export interface ResourceKeySet {
23
23
  export interface MaintainedResourceKeys {
24
24
  hosts: ResourceKeySet;
25
25
  dockerHosts: ResourceKeySet;
26
+ podmanHosts: ResourceKeySet;
26
27
  kubernetesClusters: ResourceKeySet;
28
+ /*
29
+ * Proxmox/Ceph clusters have no `oneuptime.*.id` label stamp, so only
30
+ * the name set is ever matched; the id set exists for shape parity.
31
+ */
32
+ proxmoxClusters: ResourceKeySet;
33
+ cephClusters: ResourceKeySet;
27
34
  services: ResourceKeySet;
28
35
  }
29
36
 
@@ -45,7 +52,8 @@ export interface MaintainedResourceKeys {
45
52
  * incident/alert creation loops can skip exactly those series while the
46
53
  * other 90 hosts keep alerting. It covers every resource type a
47
54
  * maintenance event can attach to AND a series can identify: Host,
48
- * DockerHost, KubernetesCluster, and Service.
55
+ * DockerHost, KubernetesCluster, ProxmoxCluster, CephCluster, and
56
+ * Service.
49
57
  */
50
58
  export default class MonitorMaintenanceSuppression {
51
59
  /*
@@ -105,6 +113,11 @@ export default class MonitorMaintenanceSuppression {
105
113
  refs.dockerHostNames,
106
114
  input.maintained.dockerHosts.names,
107
115
  ) ||
116
+ this.intersects(refs.podmanHostIds, input.maintained.podmanHosts.ids) ||
117
+ this.intersects(
118
+ refs.podmanHostNames,
119
+ input.maintained.podmanHosts.names,
120
+ ) ||
108
121
  this.intersects(
109
122
  refs.kubernetesClusterIds,
110
123
  input.maintained.kubernetesClusters.ids,
@@ -113,6 +126,14 @@ export default class MonitorMaintenanceSuppression {
113
126
  refs.kubernetesClusterNames,
114
127
  input.maintained.kubernetesClusters.names,
115
128
  ) ||
129
+ this.intersects(
130
+ refs.proxmoxClusterNames,
131
+ input.maintained.proxmoxClusters.names,
132
+ ) ||
133
+ this.intersects(
134
+ refs.cephClusterNames,
135
+ input.maintained.cephClusters.names,
136
+ ) ||
116
137
  this.intersects(refs.serviceIds, input.maintained.services.ids) ||
117
138
  this.intersects(refs.serviceNames, input.maintained.services.names);
118
139
 
@@ -141,8 +162,14 @@ export default class MonitorMaintenanceSuppression {
141
162
  maintained.hosts.names.size > 0 ||
142
163
  maintained.dockerHosts.ids.size > 0 ||
143
164
  maintained.dockerHosts.names.size > 0 ||
165
+ maintained.podmanHosts.ids.size > 0 ||
166
+ maintained.podmanHosts.names.size > 0 ||
144
167
  maintained.kubernetesClusters.ids.size > 0 ||
145
168
  maintained.kubernetesClusters.names.size > 0 ||
169
+ maintained.proxmoxClusters.ids.size > 0 ||
170
+ maintained.proxmoxClusters.names.size > 0 ||
171
+ maintained.cephClusters.ids.size > 0 ||
172
+ maintained.cephClusters.names.size > 0 ||
146
173
  maintained.services.ids.size > 0 ||
147
174
  maintained.services.names.size > 0
148
175
  );
@@ -150,11 +177,11 @@ export default class MonitorMaintenanceSuppression {
150
177
 
151
178
  /*
152
179
  * Collect the ids + identifiers of every Host / DockerHost /
153
- * KubernetesCluster / Service attached to an ongoing maintenance event
154
- * in this project. Monitors attached to the event are intentionally
155
- * not collected here — those are already handled upstream by the
156
- * whole-monitor disable flag, which short-circuits evaluation before
157
- * we ever reach per-series creation.
180
+ * KubernetesCluster / ProxmoxCluster / CephCluster / Service attached
181
+ * to an ongoing maintenance event in this project. Monitors attached
182
+ * to the event are intentionally not collected here — those are
183
+ * already handled upstream by the whole-monitor disable flag, which
184
+ * short-circuits evaluation before we ever reach per-series creation.
158
185
  */
159
186
  private static async getResourcesUnderOngoingMaintenance(
160
187
  projectId: ObjectID,
@@ -162,7 +189,10 @@ export default class MonitorMaintenanceSuppression {
162
189
  const maintained: MaintainedResourceKeys = {
163
190
  hosts: { ids: new Set<string>(), names: new Set<string>() },
164
191
  dockerHosts: { ids: new Set<string>(), names: new Set<string>() },
192
+ podmanHosts: { ids: new Set<string>(), names: new Set<string>() },
165
193
  kubernetesClusters: { ids: new Set<string>(), names: new Set<string>() },
194
+ proxmoxClusters: { ids: new Set<string>(), names: new Set<string>() },
195
+ cephClusters: { ids: new Set<string>(), names: new Set<string>() },
166
196
  services: { ids: new Set<string>(), names: new Set<string>() },
167
197
  };
168
198
 
@@ -178,7 +208,10 @@ export default class MonitorMaintenanceSuppression {
178
208
  _id: true,
179
209
  hosts: { _id: true, hostIdentifier: true },
180
210
  dockerHosts: { _id: true, hostIdentifier: true },
211
+ podmanHosts: { _id: true, hostIdentifier: true },
181
212
  kubernetesClusters: { _id: true, clusterIdentifier: true },
213
+ proxmoxClusters: { _id: true, name: true },
214
+ cephClusters: { _id: true, name: true },
182
215
  services: { _id: true, name: true },
183
216
  },
184
217
  skip: 0,
@@ -199,6 +232,13 @@ export default class MonitorMaintenanceSuppression {
199
232
  dockerHost.hostIdentifier,
200
233
  );
201
234
  }
235
+ for (const podmanHost of event.podmanHosts || []) {
236
+ this.addKey(
237
+ maintained.podmanHosts,
238
+ podmanHost._id,
239
+ podmanHost.hostIdentifier,
240
+ );
241
+ }
202
242
  for (const cluster of event.kubernetesClusters || []) {
203
243
  this.addKey(
204
244
  maintained.kubernetesClusters,
@@ -206,6 +246,16 @@ export default class MonitorMaintenanceSuppression {
206
246
  cluster.clusterIdentifier,
207
247
  );
208
248
  }
249
+ for (const proxmoxCluster of event.proxmoxClusters || []) {
250
+ this.addKey(
251
+ maintained.proxmoxClusters,
252
+ proxmoxCluster._id,
253
+ proxmoxCluster.name,
254
+ );
255
+ }
256
+ for (const cephCluster of event.cephClusters || []) {
257
+ this.addKey(maintained.cephClusters, cephCluster._id, cephCluster.name);
258
+ }
209
259
  for (const service of event.services || []) {
210
260
  this.addKey(maintained.services, service._id, service.name);
211
261
  }
@@ -360,7 +360,12 @@ export default class MonitorTemplateUtil {
360
360
  if (
361
361
  data.monitorType === MonitorType.Metrics ||
362
362
  data.monitorType === MonitorType.Kubernetes ||
363
- data.monitorType === MonitorType.Docker
363
+ data.monitorType === MonitorType.Docker ||
364
+ data.monitorType === MonitorType.Host ||
365
+ data.monitorType === MonitorType.Podman ||
366
+ data.monitorType === MonitorType.DockerSwarm ||
367
+ data.monitorType === MonitorType.Proxmox ||
368
+ data.monitorType === MonitorType.Ceph
364
369
  ) {
365
370
  const metricResponse: MetricMonitorResponse =
366
371
  data.dataToProcess as MetricMonitorResponse;
@@ -48,6 +48,22 @@ export const DockerHostNameLabelKeys: ReadonlyArray<string> = [
48
48
  "oneuptime.docker.host.name",
49
49
  ];
50
50
 
51
+ /*
52
+ * For Podman hosts we deliberately ignore raw `host.name` /
53
+ * `oneuptime.host.name`: those are the Host's territory. The ingest
54
+ * pipeline stamps `oneuptime.podman.host.*` independently when the
55
+ * source is a podman host, so only those keys identify a PodmanHost.
56
+ */
57
+ export const PodmanHostIdLabelKeys: ReadonlyArray<string> = [
58
+ "resource.oneuptime.podman.host.id",
59
+ "oneuptime.podman.host.id",
60
+ ];
61
+
62
+ export const PodmanHostNameLabelKeys: ReadonlyArray<string> = [
63
+ "resource.oneuptime.podman.host.name",
64
+ "oneuptime.podman.host.name",
65
+ ];
66
+
51
67
  export const KubernetesClusterIdLabelKeys: ReadonlyArray<string> = [
52
68
  "resource.oneuptime.kubernetes.cluster.id",
53
69
  "oneuptime.kubernetes.cluster.id",
@@ -60,6 +76,29 @@ export const KubernetesClusterNameLabelKeys: ReadonlyArray<string> = [
60
76
  "k8s.cluster.name",
61
77
  ];
62
78
 
79
+ /*
80
+ * Proxmox/Ceph cluster identity rides the agent-stamped resource
81
+ * attribute (`proxmox.cluster.name` / `ceph.cluster.name`) and its
82
+ * ClickHouse `resource.`-prefixed twin. Ingest keys cluster rows by
83
+ * name only — there is no `oneuptime.*.id` stamp for these clusters —
84
+ * so only name keys exist. The name maps to the cluster model's `name`
85
+ * column. Note the shipped Proxmox/Ceph alert templates group by
86
+ * datapoint labels (`id`, `ceph_daemon`, `pool_id`), so their series
87
+ * labels do NOT carry these keys; the deterministic cluster link for
88
+ * those monitors comes from the monitor step config instead (see
89
+ * MonitorClusterContext). These keys cover user-built monitors that
90
+ * group by the cluster attribute, exactly like the K8s keys above.
91
+ */
92
+ export const ProxmoxClusterNameLabelKeys: ReadonlyArray<string> = [
93
+ "resource.proxmox.cluster.name",
94
+ "proxmox.cluster.name",
95
+ ];
96
+
97
+ export const CephClusterNameLabelKeys: ReadonlyArray<string> = [
98
+ "resource.ceph.cluster.name",
99
+ "ceph.cluster.name",
100
+ ];
101
+
63
102
  /*
64
103
  * Services come from OTel-ingested telemetry. The ingest pipeline
65
104
  * auto-creates a Service row keyed by `service.name`, so any series
@@ -89,8 +128,12 @@ export interface SeriesResourceRefs {
89
128
  hostNames: Array<string>;
90
129
  dockerHostIds: Array<string>;
91
130
  dockerHostNames: Array<string>;
131
+ podmanHostIds: Array<string>;
132
+ podmanHostNames: Array<string>;
92
133
  kubernetesClusterIds: Array<string>;
93
134
  kubernetesClusterNames: Array<string>;
135
+ proxmoxClusterNames: Array<string>;
136
+ cephClusterNames: Array<string>;
94
137
  serviceIds: Array<string>;
95
138
  serviceNames: Array<string>;
96
139
  }
@@ -141,6 +184,14 @@ export default class SeriesResourceLabels {
141
184
  seriesLabels,
142
185
  DockerHostNameLabelKeys,
143
186
  ),
187
+ podmanHostIds: this.collectLabelValues(
188
+ seriesLabels,
189
+ PodmanHostIdLabelKeys,
190
+ ),
191
+ podmanHostNames: this.collectLabelValues(
192
+ seriesLabels,
193
+ PodmanHostNameLabelKeys,
194
+ ),
144
195
  kubernetesClusterIds: this.collectLabelValues(
145
196
  seriesLabels,
146
197
  KubernetesClusterIdLabelKeys,
@@ -149,6 +200,14 @@ export default class SeriesResourceLabels {
149
200
  seriesLabels,
150
201
  KubernetesClusterNameLabelKeys,
151
202
  ),
203
+ proxmoxClusterNames: this.collectLabelValues(
204
+ seriesLabels,
205
+ ProxmoxClusterNameLabelKeys,
206
+ ),
207
+ cephClusterNames: this.collectLabelValues(
208
+ seriesLabels,
209
+ CephClusterNameLabelKeys,
210
+ ),
152
211
  serviceIds: this.collectLabelValues(seriesLabels, ServiceIdLabelKeys),
153
212
  serviceNames: this.collectLabelValues(seriesLabels, ServiceNameLabelKeys),
154
213
  };
@@ -1,9 +1,20 @@
1
- import Pyroscope from "@pyroscope/nodejs";
2
1
  import { EnableProfiling } from "../EnvironmentConfig";
3
2
  import logger, { LogAttributes } from "./Logger";
4
3
  import GracefulShutdown, { ShutdownPriority } from "./GracefulShutdown";
5
4
 
5
+ /*
6
+ * Type-only import: erased at compile time, so it emits NO runtime require.
7
+ * @pyroscope/nodejs pulls in @datadog/pprof, whose native (node-gyp) binding loads
8
+ * at require() time. When no prebuilt binary exists for the running Node ABI (e.g. a
9
+ * newer Node major than the pprof build ships for), that require throws — so the module
10
+ * must never be imported at the top level, or the throw takes down the whole process
11
+ * before init() is even reached. We load it lazily and defensively inside init() instead.
12
+ */
13
+ type PyroscopeModule = typeof import("@pyroscope/nodejs");
14
+
6
15
  export default class Profiling {
16
+ private static pyroscope: PyroscopeModule | null = null;
17
+
7
18
  public static init(data: { serviceName: string }): void {
8
19
  if (!EnableProfiling) {
9
20
  return;
@@ -24,6 +35,25 @@ export default class Profiling {
24
35
  return;
25
36
  }
26
37
 
38
+ let Pyroscope: PyroscopeModule;
39
+ try {
40
+ /*
41
+ * Lazy load so the native pprof binding is only required when profiling is actually
42
+ * enabled, and so a load failure (missing/incompatible prebuilt binary for the running
43
+ * Node ABI) is caught here and degrades to "profiling disabled" instead of crashing
44
+ * the server. Profiling is a best-effort, optional feature.
45
+ */
46
+ // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
47
+ Pyroscope = require("@pyroscope/nodejs") as PyroscopeModule;
48
+ } catch (err) {
49
+ logger.warn(
50
+ "Profiling enabled but the profiler native module could not be loaded. Continuing without profiling.",
51
+ profilingLogAttributes,
52
+ );
53
+ logger.warn(err, profilingLogAttributes);
54
+ return;
55
+ }
56
+
27
57
  try {
28
58
  Pyroscope.init({
29
59
  appName: data.serviceName,
@@ -36,6 +66,8 @@ export default class Profiling {
36
66
 
37
67
  Pyroscope.start();
38
68
 
69
+ this.pyroscope = Pyroscope;
70
+
39
71
  logger.info(
40
72
  `Profiling initialized for service: ${data.serviceName} -> ${serverAddress}`,
41
73
  profilingLogAttributes,
@@ -43,6 +75,7 @@ export default class Profiling {
43
75
  } catch (err) {
44
76
  logger.error("Failed to initialize profiling:", profilingLogAttributes);
45
77
  logger.error(err, profilingLogAttributes);
78
+ return;
46
79
  }
47
80
 
48
81
  // Stop the profiler last (Telemetry tier), alongside the OTEL flush.
@@ -51,7 +84,9 @@ export default class Profiling {
51
84
  ShutdownPriority.Telemetry,
52
85
  async (): Promise<void> => {
53
86
  try {
54
- await Pyroscope.stop();
87
+ if (this.pyroscope) {
88
+ await this.pyroscope.stop();
89
+ }
55
90
  } catch (err) {
56
91
  logger.error("Error stopping profiler:", profilingLogAttributes);
57
92
  logger.error(err, profilingLogAttributes);
@@ -60,6 +60,10 @@ export const DEFAULT_ENTITY_BUDGET: ReadonlyMap<EntityType, number> = new Map<
60
60
  [EntityType.KubernetesNamespace, 1000],
61
61
  [EntityType.KubernetesPod, 5000],
62
62
  [EntityType.KubernetesDeployment, 5000],
63
+ [EntityType.ProxmoxCluster, 10000],
64
+ [EntityType.ProxmoxNode, 1000],
65
+ [EntityType.ProxmoxGuest, 5000],
66
+ [EntityType.CephCluster, 10000],
63
67
  ]);
64
68
 
65
69
  // For types not in the map (future promotions of high-churn types).