@oneuptime/common 11.0.2 → 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 (344) hide show
  1. package/Models/DatabaseModels/Alert.ts +166 -0
  2. package/Models/DatabaseModels/AlertLabelRule.ts +38 -0
  3. package/Models/DatabaseModels/AlertOwnerRule.ts +38 -0
  4. package/Models/DatabaseModels/DockerSwarmCluster.ts +989 -0
  5. package/Models/DatabaseModels/DockerSwarmClusterLabelRule.ts +514 -0
  6. package/Models/DatabaseModels/DockerSwarmClusterOwnerRule.ts +596 -0
  7. package/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.ts +487 -0
  8. package/Models/DatabaseModels/DockerSwarmClusterOwnerUser.ts +486 -0
  9. package/Models/DatabaseModels/DockerSwarmResource.ts +750 -0
  10. package/Models/DatabaseModels/Incident.ts +166 -0
  11. package/Models/DatabaseModels/IncidentLabelRule.ts +38 -0
  12. package/Models/DatabaseModels/IncidentOwnerRule.ts +38 -0
  13. package/Models/DatabaseModels/IncidentTemplate.ts +56 -0
  14. package/Models/DatabaseModels/Index.ts +24 -0
  15. package/Models/DatabaseModels/PodmanHost.ts +859 -0
  16. package/Models/DatabaseModels/PodmanHostLabelRule.ts +514 -0
  17. package/Models/DatabaseModels/PodmanHostOwnerRule.ts +596 -0
  18. package/Models/DatabaseModels/PodmanHostOwnerTeam.ts +487 -0
  19. package/Models/DatabaseModels/PodmanHostOwnerUser.ts +486 -0
  20. package/Models/DatabaseModels/PodmanResource.ts +498 -0
  21. package/Models/DatabaseModels/ScheduledMaintenance.ts +110 -0
  22. package/Models/DatabaseModels/ScheduledMaintenanceLabelRule.ts +38 -0
  23. package/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.ts +38 -0
  24. package/Models/DatabaseModels/ScheduledMaintenanceTemplate.ts +56 -0
  25. package/Models/DatabaseModels/TelemetryException.ts +2 -0
  26. package/Server/API/DashboardAPI.ts +89 -0
  27. package/Server/API/DockerSwarmResourceAPI.ts +137 -0
  28. package/Server/API/TelemetryAPI.ts +8 -1
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1781587937032-MigrationName.ts +3199 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
  31. package/Server/Services/AlertLabelRuleEngineService.ts +29 -0
  32. package/Server/Services/AlertOwnerRuleEngineService.ts +67 -0
  33. package/Server/Services/DockerSwarmClusterLabelRuleEngineService.ts +214 -0
  34. package/Server/Services/DockerSwarmClusterLabelRuleService.ts +14 -0
  35. package/Server/Services/DockerSwarmClusterOwnerRuleEngineService.ts +232 -0
  36. package/Server/Services/DockerSwarmClusterOwnerRuleService.ts +14 -0
  37. package/Server/Services/DockerSwarmClusterOwnerTeamService.ts +10 -0
  38. package/Server/Services/DockerSwarmClusterOwnerUserService.ts +10 -0
  39. package/Server/Services/DockerSwarmClusterService.ts +404 -0
  40. package/Server/Services/DockerSwarmResourceService.ts +381 -0
  41. package/Server/Services/ExceptionAggregationService.ts +1 -0
  42. package/Server/Services/IncidentLabelRuleEngineService.ts +27 -0
  43. package/Server/Services/IncidentOwnerRuleEngineService.ts +67 -0
  44. package/Server/Services/IncidentService.ts +11 -0
  45. package/Server/Services/Index.ts +14 -0
  46. package/Server/Services/LogAggregationService.ts +1 -0
  47. package/Server/Services/MetricAggregationService.ts +1 -0
  48. package/Server/Services/OpenTelemetryIngestService.ts +37 -0
  49. package/Server/Services/PodmanHostLabelRuleEngineService.ts +198 -0
  50. package/Server/Services/PodmanHostLabelRuleService.ts +14 -0
  51. package/Server/Services/PodmanHostOwnerRuleEngineService.ts +216 -0
  52. package/Server/Services/PodmanHostOwnerRuleService.ts +14 -0
  53. package/Server/Services/PodmanHostOwnerTeamService.ts +10 -0
  54. package/Server/Services/PodmanHostOwnerUserService.ts +10 -0
  55. package/Server/Services/PodmanHostService.ts +368 -0
  56. package/Server/Services/PodmanResourceService.ts +310 -0
  57. package/Server/Services/ScheduledMaintenanceLabelRuleEngineService.ts +29 -0
  58. package/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.ts +67 -0
  59. package/Server/Services/TelemetryUsageBillingService.ts +18 -0
  60. package/Server/Services/TraceAggregationService.ts +1 -0
  61. package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +13 -0
  62. package/Server/Utils/Monitor/MonitorAlert.ts +10 -0
  63. package/Server/Utils/Monitor/MonitorClusterContext.ts +35 -6
  64. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +306 -0
  65. package/Server/Utils/Monitor/MonitorIncident.ts +45 -0
  66. package/Server/Utils/Monitor/MonitorMaintenanceSuppression.ts +17 -0
  67. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +3 -0
  68. package/Server/Utils/Monitor/SeriesResourceLabels.ts +26 -0
  69. package/Server/Utils/Telemetry/ResourceFacetResolver.ts +49 -0
  70. package/Server/Utils/Telemetry/Telemetry.ts +10 -0
  71. package/Server/Utils/Telemetry/TelemetryEntity.ts +22 -0
  72. package/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.ts +1 -0
  73. package/Tests/Types/DockerSwarm/DockerSwarmInventoryExtractor.test.ts +667 -0
  74. package/Tests/Types/Monitor/DockerSwarmAlertTemplates.test.ts +528 -0
  75. package/Types/Dashboard/DashboardComponentType.ts +7 -0
  76. package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +2 -0
  77. package/Types/Dashboard/DashboardComponents/DashboardDockerSwarmNodeListComponent.ts +17 -0
  78. package/Types/Dashboard/DashboardComponents/DashboardDockerSwarmServiceListComponent.ts +17 -0
  79. package/Types/Dashboard/DashboardComponents/DashboardPodmanContainerListComponent.ts +16 -0
  80. package/Types/Dashboard/DashboardComponents/DashboardPodmanHostListComponent.ts +15 -0
  81. package/Types/Dashboard/DashboardComponents/DashboardPodmanImageListComponent.ts +16 -0
  82. package/Types/Dashboard/DashboardComponents/DashboardPodmanNetworkListComponent.ts +15 -0
  83. package/Types/Dashboard/DashboardComponents/DashboardPodmanVolumeListComponent.ts +15 -0
  84. package/Types/Dashboard/DashboardTemplates.ts +194 -0
  85. package/Types/DockerSwarm/DockerSwarmInventoryExtractor.ts +452 -0
  86. package/Types/Icon/IconProp.ts +1 -0
  87. package/Types/Monitor/DockerSwarmAlertTemplates.ts +461 -0
  88. package/Types/Monitor/DockerSwarmMetricCatalog.ts +139 -0
  89. package/Types/Monitor/HostAlertTemplates.ts +455 -0
  90. package/Types/Monitor/HostMetricCatalog.ts +177 -0
  91. package/Types/Monitor/MetricMonitor/MetricMonitorResponse.ts +21 -0
  92. package/Types/Monitor/MonitorStep.ts +99 -0
  93. package/Types/Monitor/MonitorStepDockerSwarmMonitor.ts +74 -0
  94. package/Types/Monitor/MonitorStepHostMonitor.ts +30 -0
  95. package/Types/Monitor/MonitorStepPodmanMonitor.ts +38 -0
  96. package/Types/Monitor/MonitorType.ts +42 -0
  97. package/Types/Monitor/PodmanAlertTemplates.ts +507 -0
  98. package/Types/Monitor/PodmanMetricCatalog.ts +226 -0
  99. package/Types/Permission.ts +465 -4
  100. package/Types/Podman/PodmanInventoryExtractor.ts +343 -0
  101. package/Types/Telemetry/EntityType.ts +12 -0
  102. package/Types/Telemetry/ServiceType.ts +2 -0
  103. package/UI/Components/Icon/Icon.tsx +57 -0
  104. package/UI/Components/LogsViewer/LogsViewer.tsx +44 -1
  105. package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +28 -0
  106. package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +6 -0
  107. package/UI/Utils/TelemetryService.ts +1 -0
  108. package/Utils/Dashboard/Components/DashboardDockerSwarmNodeListComponent.ts +70 -0
  109. package/Utils/Dashboard/Components/DashboardDockerSwarmResourceListShared.ts +61 -0
  110. package/Utils/Dashboard/Components/DashboardDockerSwarmServiceListComponent.ts +71 -0
  111. package/Utils/Dashboard/Components/DashboardPodmanContainerListComponent.ts +100 -0
  112. package/Utils/Dashboard/Components/DashboardPodmanHostListComponent.ts +88 -0
  113. package/Utils/Dashboard/Components/DashboardPodmanImageListComponent.ts +97 -0
  114. package/Utils/Dashboard/Components/DashboardPodmanNetworkListComponent.ts +87 -0
  115. package/Utils/Dashboard/Components/DashboardPodmanVolumeListComponent.ts +87 -0
  116. package/Utils/Dashboard/Components/Index.ts +51 -0
  117. package/Utils/Telemetry/EntityKey.ts +18 -0
  118. package/build/dist/Models/DatabaseModels/Alert.js +162 -0
  119. package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
  120. package/build/dist/Models/DatabaseModels/AlertLabelRule.js +39 -0
  121. package/build/dist/Models/DatabaseModels/AlertLabelRule.js.map +1 -1
  122. package/build/dist/Models/DatabaseModels/AlertOwnerRule.js +39 -0
  123. package/build/dist/Models/DatabaseModels/AlertOwnerRule.js.map +1 -1
  124. package/build/dist/Models/DatabaseModels/DockerSwarmCluster.js +1018 -0
  125. package/build/dist/Models/DatabaseModels/DockerSwarmCluster.js.map +1 -0
  126. package/build/dist/Models/DatabaseModels/DockerSwarmClusterLabelRule.js +522 -0
  127. package/build/dist/Models/DatabaseModels/DockerSwarmClusterLabelRule.js.map +1 -0
  128. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerRule.js +603 -0
  129. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerRule.js.map +1 -0
  130. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.js +503 -0
  131. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.js.map +1 -0
  132. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerUser.js +502 -0
  133. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerUser.js.map +1 -0
  134. package/build/dist/Models/DatabaseModels/DockerSwarmResource.js +787 -0
  135. package/build/dist/Models/DatabaseModels/DockerSwarmResource.js.map +1 -0
  136. package/build/dist/Models/DatabaseModels/Incident.js +162 -0
  137. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  138. package/build/dist/Models/DatabaseModels/IncidentLabelRule.js +39 -0
  139. package/build/dist/Models/DatabaseModels/IncidentLabelRule.js.map +1 -1
  140. package/build/dist/Models/DatabaseModels/IncidentOwnerRule.js +39 -0
  141. package/build/dist/Models/DatabaseModels/IncidentOwnerRule.js.map +1 -1
  142. package/build/dist/Models/DatabaseModels/IncidentTemplate.js +54 -0
  143. package/build/dist/Models/DatabaseModels/IncidentTemplate.js.map +1 -1
  144. package/build/dist/Models/DatabaseModels/Index.js +24 -0
  145. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  146. package/build/dist/Models/DatabaseModels/PodmanHost.js +885 -0
  147. package/build/dist/Models/DatabaseModels/PodmanHost.js.map +1 -0
  148. package/build/dist/Models/DatabaseModels/PodmanHostLabelRule.js +522 -0
  149. package/build/dist/Models/DatabaseModels/PodmanHostLabelRule.js.map +1 -0
  150. package/build/dist/Models/DatabaseModels/PodmanHostOwnerRule.js +603 -0
  151. package/build/dist/Models/DatabaseModels/PodmanHostOwnerRule.js.map +1 -0
  152. package/build/dist/Models/DatabaseModels/PodmanHostOwnerTeam.js +503 -0
  153. package/build/dist/Models/DatabaseModels/PodmanHostOwnerTeam.js.map +1 -0
  154. package/build/dist/Models/DatabaseModels/PodmanHostOwnerUser.js +502 -0
  155. package/build/dist/Models/DatabaseModels/PodmanHostOwnerUser.js.map +1 -0
  156. package/build/dist/Models/DatabaseModels/PodmanResource.js +526 -0
  157. package/build/dist/Models/DatabaseModels/PodmanResource.js.map +1 -0
  158. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +108 -0
  159. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
  160. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceLabelRule.js +39 -0
  161. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceLabelRule.js.map +1 -1
  162. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.js +39 -0
  163. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.js.map +1 -1
  164. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js +54 -0
  165. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js.map +1 -1
  166. package/build/dist/Models/DatabaseModels/TelemetryException.js +2 -0
  167. package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
  168. package/build/dist/Server/API/DashboardAPI.js +89 -0
  169. package/build/dist/Server/API/DashboardAPI.js.map +1 -1
  170. package/build/dist/Server/API/DockerSwarmResourceAPI.js +100 -0
  171. package/build/dist/Server/API/DockerSwarmResourceAPI.js.map +1 -0
  172. package/build/dist/Server/API/TelemetryAPI.js +8 -1
  173. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  174. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781587937032-MigrationName.js +1100 -0
  175. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781587937032-MigrationName.js.map +1 -0
  176. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
  177. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  178. package/build/dist/Server/Services/AlertLabelRuleEngineService.js +30 -4
  179. package/build/dist/Server/Services/AlertLabelRuleEngineService.js.map +1 -1
  180. package/build/dist/Server/Services/AlertOwnerRuleEngineService.js +62 -5
  181. package/build/dist/Server/Services/AlertOwnerRuleEngineService.js.map +1 -1
  182. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js +168 -0
  183. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js.map +1 -0
  184. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleService.js +13 -0
  185. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleService.js.map +1 -0
  186. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js +188 -0
  187. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js.map +1 -0
  188. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleService.js +13 -0
  189. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleService.js.map +1 -0
  190. package/build/dist/Server/Services/DockerSwarmClusterOwnerTeamService.js +9 -0
  191. package/build/dist/Server/Services/DockerSwarmClusterOwnerTeamService.js.map +1 -0
  192. package/build/dist/Server/Services/DockerSwarmClusterOwnerUserService.js +9 -0
  193. package/build/dist/Server/Services/DockerSwarmClusterOwnerUserService.js.map +1 -0
  194. package/build/dist/Server/Services/DockerSwarmClusterService.js +353 -0
  195. package/build/dist/Server/Services/DockerSwarmClusterService.js.map +1 -0
  196. package/build/dist/Server/Services/DockerSwarmResourceService.js +258 -0
  197. package/build/dist/Server/Services/DockerSwarmResourceService.js.map +1 -0
  198. package/build/dist/Server/Services/ExceptionAggregationService.js +1 -0
  199. package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
  200. package/build/dist/Server/Services/IncidentLabelRuleEngineService.js +28 -4
  201. package/build/dist/Server/Services/IncidentLabelRuleEngineService.js.map +1 -1
  202. package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js +62 -5
  203. package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js.map +1 -1
  204. package/build/dist/Server/Services/IncidentService.js +8 -0
  205. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  206. package/build/dist/Server/Services/Index.js +14 -0
  207. package/build/dist/Server/Services/Index.js.map +1 -1
  208. package/build/dist/Server/Services/LogAggregationService.js +1 -0
  209. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  210. package/build/dist/Server/Services/MetricAggregationService.js +1 -0
  211. package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
  212. package/build/dist/Server/Services/OpenTelemetryIngestService.js +43 -13
  213. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  214. package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js +166 -0
  215. package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js.map +1 -0
  216. package/build/dist/Server/Services/PodmanHostLabelRuleService.js +13 -0
  217. package/build/dist/Server/Services/PodmanHostLabelRuleService.js.map +1 -0
  218. package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js +186 -0
  219. package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js.map +1 -0
  220. package/build/dist/Server/Services/PodmanHostOwnerRuleService.js +13 -0
  221. package/build/dist/Server/Services/PodmanHostOwnerRuleService.js.map +1 -0
  222. package/build/dist/Server/Services/PodmanHostOwnerTeamService.js +9 -0
  223. package/build/dist/Server/Services/PodmanHostOwnerTeamService.js.map +1 -0
  224. package/build/dist/Server/Services/PodmanHostOwnerUserService.js +9 -0
  225. package/build/dist/Server/Services/PodmanHostOwnerUserService.js.map +1 -0
  226. package/build/dist/Server/Services/PodmanHostService.js +319 -0
  227. package/build/dist/Server/Services/PodmanHostService.js.map +1 -0
  228. package/build/dist/Server/Services/PodmanResourceService.js +196 -0
  229. package/build/dist/Server/Services/PodmanResourceService.js.map +1 -0
  230. package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js +30 -4
  231. package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js.map +1 -1
  232. package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js +62 -5
  233. package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js.map +1 -1
  234. package/build/dist/Server/Services/TelemetryUsageBillingService.js +13 -0
  235. package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
  236. package/build/dist/Server/Services/TraceAggregationService.js +1 -0
  237. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  238. package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +13 -0
  239. package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
  240. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +8 -0
  241. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  242. package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js +35 -7
  243. package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js.map +1 -1
  244. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +194 -0
  245. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  246. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +35 -1
  247. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  248. package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js +9 -0
  249. package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js.map +1 -1
  250. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +3 -0
  251. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  252. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +16 -0
  253. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -1
  254. package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js +30 -0
  255. package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js.map +1 -1
  256. package/build/dist/Server/Utils/Telemetry/Telemetry.js +6 -0
  257. package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
  258. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +18 -0
  259. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
  260. package/build/dist/Types/Dashboard/DashboardComponentType.js +7 -0
  261. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  262. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +2 -0
  263. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
  264. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmNodeListComponent.js +2 -0
  265. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmNodeListComponent.js.map +1 -0
  266. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmServiceListComponent.js +2 -0
  267. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmServiceListComponent.js.map +1 -0
  268. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanContainerListComponent.js +2 -0
  269. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanContainerListComponent.js.map +1 -0
  270. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanHostListComponent.js +2 -0
  271. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanHostListComponent.js.map +1 -0
  272. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanImageListComponent.js +2 -0
  273. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanImageListComponent.js.map +1 -0
  274. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanNetworkListComponent.js +2 -0
  275. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanNetworkListComponent.js.map +1 -0
  276. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanVolumeListComponent.js +2 -0
  277. package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanVolumeListComponent.js.map +1 -0
  278. package/build/dist/Types/Dashboard/DashboardTemplates.js +168 -0
  279. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  280. package/build/dist/Types/DockerSwarm/DockerSwarmInventoryExtractor.js +359 -0
  281. package/build/dist/Types/DockerSwarm/DockerSwarmInventoryExtractor.js.map +1 -0
  282. package/build/dist/Types/Icon/IconProp.js +1 -0
  283. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  284. package/build/dist/Types/Monitor/DockerSwarmAlertTemplates.js +358 -0
  285. package/build/dist/Types/Monitor/DockerSwarmAlertTemplates.js.map +1 -0
  286. package/build/dist/Types/Monitor/DockerSwarmMetricCatalog.js +103 -0
  287. package/build/dist/Types/Monitor/DockerSwarmMetricCatalog.js.map +1 -0
  288. package/build/dist/Types/Monitor/HostAlertTemplates.js +365 -0
  289. package/build/dist/Types/Monitor/HostAlertTemplates.js.map +1 -0
  290. package/build/dist/Types/Monitor/HostMetricCatalog.js +138 -0
  291. package/build/dist/Types/Monitor/HostMetricCatalog.js.map +1 -0
  292. package/build/dist/Types/Monitor/MonitorStep.js +69 -0
  293. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  294. package/build/dist/Types/Monitor/MonitorStepDockerSwarmMonitor.js +21 -0
  295. package/build/dist/Types/Monitor/MonitorStepDockerSwarmMonitor.js.map +1 -0
  296. package/build/dist/Types/Monitor/MonitorStepHostMonitor.js +20 -0
  297. package/build/dist/Types/Monitor/MonitorStepHostMonitor.js.map +1 -0
  298. package/build/dist/Types/Monitor/MonitorStepPodmanMonitor.js +21 -0
  299. package/build/dist/Types/Monitor/MonitorStepPodmanMonitor.js.map +1 -0
  300. package/build/dist/Types/Monitor/MonitorType.js +39 -0
  301. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  302. package/build/dist/Types/Monitor/PodmanAlertTemplates.js +410 -0
  303. package/build/dist/Types/Monitor/PodmanAlertTemplates.js.map +1 -0
  304. package/build/dist/Types/Monitor/PodmanMetricCatalog.js +192 -0
  305. package/build/dist/Types/Monitor/PodmanMetricCatalog.js.map +1 -0
  306. package/build/dist/Types/Permission.js +420 -4
  307. package/build/dist/Types/Permission.js.map +1 -1
  308. package/build/dist/Types/Podman/PodmanInventoryExtractor.js +293 -0
  309. package/build/dist/Types/Podman/PodmanInventoryExtractor.js.map +1 -0
  310. package/build/dist/Types/Telemetry/EntityType.js +12 -0
  311. package/build/dist/Types/Telemetry/EntityType.js.map +1 -1
  312. package/build/dist/Types/Telemetry/ServiceType.js +2 -0
  313. package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
  314. package/build/dist/UI/Components/Icon/Icon.js +16 -0
  315. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  316. package/build/dist/UI/Components/LogsViewer/LogsViewer.js +30 -2
  317. package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
  318. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +22 -0
  319. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
  320. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +6 -0
  321. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
  322. package/build/dist/UI/Utils/TelemetryService.js +1 -0
  323. package/build/dist/UI/Utils/TelemetryService.js.map +1 -1
  324. package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmNodeListComponent.js +55 -0
  325. package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmNodeListComponent.js.map +1 -0
  326. package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmResourceListShared.js +46 -0
  327. package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmResourceListShared.js.map +1 -0
  328. package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmServiceListComponent.js +55 -0
  329. package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmServiceListComponent.js.map +1 -0
  330. package/build/dist/Utils/Dashboard/Components/DashboardPodmanContainerListComponent.js +77 -0
  331. package/build/dist/Utils/Dashboard/Components/DashboardPodmanContainerListComponent.js.map +1 -0
  332. package/build/dist/Utils/Dashboard/Components/DashboardPodmanHostListComponent.js +71 -0
  333. package/build/dist/Utils/Dashboard/Components/DashboardPodmanHostListComponent.js.map +1 -0
  334. package/build/dist/Utils/Dashboard/Components/DashboardPodmanImageListComponent.js +77 -0
  335. package/build/dist/Utils/Dashboard/Components/DashboardPodmanImageListComponent.js.map +1 -0
  336. package/build/dist/Utils/Dashboard/Components/DashboardPodmanNetworkListComponent.js +68 -0
  337. package/build/dist/Utils/Dashboard/Components/DashboardPodmanNetworkListComponent.js.map +1 -0
  338. package/build/dist/Utils/Dashboard/Components/DashboardPodmanVolumeListComponent.js +68 -0
  339. package/build/dist/Utils/Dashboard/Components/DashboardPodmanVolumeListComponent.js.map +1 -0
  340. package/build/dist/Utils/Dashboard/Components/Index.js +28 -0
  341. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  342. package/build/dist/Utils/Telemetry/EntityKey.js +14 -0
  343. package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -1
  344. package/package.json +1 -1
@@ -0,0 +1,507 @@
1
+ import ObjectID from "../ObjectID";
2
+ import MonitorStep from "./MonitorStep";
3
+ import MonitorCriteria from "./MonitorCriteria";
4
+ import MonitorCriteriaInstance from "./MonitorCriteriaInstance";
5
+ import FilterCondition from "../Filter/FilterCondition";
6
+ import { CheckOn, FilterType, EvaluateOverTimeType } from "./CriteriaFilter";
7
+ import MonitorStepPodmanMonitor from "./MonitorStepPodmanMonitor";
8
+ import RollingTime from "../RollingTime/RollingTime";
9
+ import MetricsAggregationType from "../Metrics/MetricsAggregationType";
10
+
11
+ export type PodmanAlertTemplateCategory = "Container" | "Resource" | "Host";
12
+
13
+ export type PodmanAlertTemplateSeverity = "Critical" | "Warning";
14
+
15
+ export interface PodmanAlertTemplateArgs {
16
+ hostIdentifier: string;
17
+ onlineMonitorStatusId: ObjectID;
18
+ offlineMonitorStatusId: ObjectID;
19
+ defaultIncidentSeverityId: ObjectID;
20
+ defaultAlertSeverityId: ObjectID;
21
+ monitorName: string;
22
+ }
23
+
24
+ export interface PodmanAlertTemplate {
25
+ id: string;
26
+ name: string;
27
+ description: string;
28
+ category: PodmanAlertTemplateCategory;
29
+ severity: PodmanAlertTemplateSeverity;
30
+ getMonitorStep: (args: PodmanAlertTemplateArgs) => MonitorStep;
31
+ }
32
+
33
+ export function buildPodmanMonitorStep(args: {
34
+ podmanMonitor: MonitorStepPodmanMonitor;
35
+ offlineCriteriaInstance: MonitorCriteriaInstance;
36
+ onlineCriteriaInstance: MonitorCriteriaInstance;
37
+ }): MonitorStep {
38
+ const monitorStep: MonitorStep = new MonitorStep();
39
+
40
+ const monitorCriteria: MonitorCriteria = new MonitorCriteria();
41
+
42
+ monitorCriteria.data = {
43
+ monitorCriteriaInstanceArray: [
44
+ args.offlineCriteriaInstance,
45
+ args.onlineCriteriaInstance,
46
+ ],
47
+ };
48
+
49
+ monitorStep.data = {
50
+ id: ObjectID.generate().toString(),
51
+ monitorDestination: undefined,
52
+ doNotFollowRedirects: undefined,
53
+ monitorDestinationPort: undefined,
54
+ monitorCriteria: monitorCriteria,
55
+ requestType: "GET" as any,
56
+ requestHeaders: undefined,
57
+ requestBody: undefined,
58
+ customCode: undefined,
59
+ screenSizeTypes: undefined,
60
+ browserTypes: undefined,
61
+ retryCountOnError: undefined,
62
+ logMonitor: undefined,
63
+ traceMonitor: undefined,
64
+ metricMonitor: undefined,
65
+ exceptionMonitor: undefined,
66
+ snmpMonitor: undefined,
67
+ dnsMonitor: undefined,
68
+ domainMonitor: undefined,
69
+ externalStatusPageMonitor: undefined,
70
+ kubernetesMonitor: undefined,
71
+ profileMonitor: undefined,
72
+ podmanMonitor: args.podmanMonitor,
73
+ };
74
+
75
+ return monitorStep;
76
+ }
77
+
78
+ export function buildPodmanOfflineCriteriaInstance(args: {
79
+ offlineMonitorStatusId: ObjectID;
80
+ incidentSeverityId: ObjectID;
81
+ alertSeverityId: ObjectID;
82
+ monitorName: string;
83
+ metricAlias: string;
84
+ filterType: FilterType;
85
+ value: number;
86
+ incidentTitle?: string;
87
+ incidentDescription?: string;
88
+ criteriaName?: string;
89
+ criteriaDescription?: string;
90
+ }): MonitorCriteriaInstance {
91
+ const instance: MonitorCriteriaInstance = new MonitorCriteriaInstance();
92
+
93
+ const incidentTitle: string =
94
+ args.incidentTitle || `${args.monitorName} - Alert Triggered`;
95
+ const incidentDescription: string =
96
+ args.incidentDescription ||
97
+ `${args.monitorName} has triggered an alert condition. See root cause for detailed Podman container information.`;
98
+
99
+ instance.data = {
100
+ id: ObjectID.generate().toString(),
101
+ monitorStatusId: args.offlineMonitorStatusId,
102
+ filterCondition: FilterCondition.Any,
103
+ filters: [
104
+ {
105
+ checkOn: CheckOn.MetricValue,
106
+ filterType: args.filterType,
107
+ metricMonitorOptions: {
108
+ metricAggregationType: EvaluateOverTimeType.AnyValue,
109
+ metricAlias: args.metricAlias,
110
+ },
111
+ value: args.value,
112
+ },
113
+ ],
114
+ incidents: [
115
+ {
116
+ title: incidentTitle,
117
+ description: incidentDescription,
118
+ incidentSeverityId: args.incidentSeverityId,
119
+ autoResolveIncident: true,
120
+ id: ObjectID.generate().toString(),
121
+ onCallPolicyIds: [],
122
+ },
123
+ ],
124
+ alerts: [
125
+ {
126
+ title: incidentTitle,
127
+ description: incidentDescription,
128
+ alertSeverityId: args.alertSeverityId,
129
+ autoResolveAlert: true,
130
+ id: ObjectID.generate().toString(),
131
+ onCallPolicyIds: [],
132
+ },
133
+ ],
134
+ changeMonitorStatus: true,
135
+ createIncidents: true,
136
+ createAlerts: true,
137
+ name: args.criteriaName || `${args.monitorName} - Unhealthy`,
138
+ description:
139
+ args.criteriaDescription || `Criteria for detecting unhealthy state.`,
140
+ };
141
+
142
+ return instance;
143
+ }
144
+
145
+ export function buildPodmanOnlineCriteriaInstance(args: {
146
+ onlineMonitorStatusId: ObjectID;
147
+ metricAlias: string;
148
+ filterType: FilterType;
149
+ value: number;
150
+ }): MonitorCriteriaInstance {
151
+ const instance: MonitorCriteriaInstance = new MonitorCriteriaInstance();
152
+
153
+ instance.data = {
154
+ id: ObjectID.generate().toString(),
155
+ monitorStatusId: args.onlineMonitorStatusId,
156
+ filterCondition: FilterCondition.Any,
157
+ filters: [
158
+ {
159
+ checkOn: CheckOn.MetricValue,
160
+ filterType: args.filterType,
161
+ metricMonitorOptions: {
162
+ metricAggregationType: EvaluateOverTimeType.AnyValue,
163
+ metricAlias: args.metricAlias,
164
+ },
165
+ value: args.value,
166
+ },
167
+ ],
168
+ incidents: [],
169
+ alerts: [],
170
+ changeMonitorStatus: true,
171
+ createIncidents: false,
172
+ createAlerts: false,
173
+ name: "Healthy",
174
+ description: "Criteria for healthy state.",
175
+ };
176
+
177
+ return instance;
178
+ }
179
+
180
+ export function buildPodmanMonitorConfig(args: {
181
+ hostIdentifier: string;
182
+ metricName: string;
183
+ metricAlias: string;
184
+ rollingTime: RollingTime;
185
+ aggregationType: MetricsAggregationType;
186
+ attributes?: Record<string, string>;
187
+ }): MonitorStepPodmanMonitor {
188
+ return {
189
+ hostIdentifier: args.hostIdentifier,
190
+ containerFilters: {},
191
+ metricViewConfig: {
192
+ queryConfigs: [
193
+ {
194
+ metricAliasData: {
195
+ metricVariable: args.metricAlias,
196
+ title: args.metricAlias,
197
+ description: args.metricAlias,
198
+ legend: args.metricAlias,
199
+ legendUnit: undefined,
200
+ },
201
+ metricQueryData: {
202
+ filterData: {
203
+ metricName: args.metricName,
204
+ attributes: args.attributes || {},
205
+ aggegationType: args.aggregationType,
206
+ aggregateBy: {},
207
+ },
208
+ },
209
+ },
210
+ ],
211
+ formulaConfigs: [],
212
+ },
213
+ rollingTime: args.rollingTime,
214
+ };
215
+ }
216
+
217
+ // --- Template Definitions ---
218
+
219
+ const highCpuTemplate: PodmanAlertTemplate = {
220
+ id: "podman-high-cpu",
221
+ name: "High Container CPU Usage",
222
+ description: "Alert when container CPU usage exceeds 80% sustained.",
223
+ category: "Resource",
224
+ severity: "Warning",
225
+ getMonitorStep: (args: PodmanAlertTemplateArgs): MonitorStep => {
226
+ const metricAlias: string = "container_cpu";
227
+
228
+ return buildPodmanMonitorStep({
229
+ podmanMonitor: buildPodmanMonitorConfig({
230
+ hostIdentifier: args.hostIdentifier,
231
+ metricName: "container.cpu.utilization",
232
+ metricAlias,
233
+ rollingTime: RollingTime.Past5Minutes,
234
+ /*
235
+ * Use Max so a single hot container trips the threshold instead of
236
+ * being diluted by idle containers on the host.
237
+ */
238
+ aggregationType: MetricsAggregationType.Max,
239
+ }),
240
+ offlineCriteriaInstance: buildPodmanOfflineCriteriaInstance({
241
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
242
+ incidentSeverityId: args.defaultIncidentSeverityId,
243
+ alertSeverityId: args.defaultAlertSeverityId,
244
+ monitorName: args.monitorName,
245
+ metricAlias,
246
+ filterType: FilterType.GreaterThan,
247
+ value: 80,
248
+ incidentTitle: `[Podman] High CPU Usage (>80%) - ${args.monitorName}`,
249
+ incidentDescription: `A Podman container's CPU usage has exceeded 80%. Sustained high CPU usage can cause performance degradation and throttling. Check the root cause for the specific container and host details.`,
250
+ criteriaName: "High CPU - Usage > 80%",
251
+ criteriaDescription:
252
+ "Triggers when any container's CPU usage exceeds 80% over the monitoring window.",
253
+ }),
254
+ onlineCriteriaInstance: buildPodmanOnlineCriteriaInstance({
255
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
256
+ metricAlias,
257
+ filterType: FilterType.LessThanOrEqualTo,
258
+ value: 80,
259
+ }),
260
+ });
261
+ },
262
+ };
263
+
264
+ const highMemoryTemplate: PodmanAlertTemplate = {
265
+ id: "podman-high-memory",
266
+ name: "High Container Memory Usage",
267
+ description: "Alert when container memory usage exceeds 85% of its limit.",
268
+ category: "Resource",
269
+ severity: "Warning",
270
+ getMonitorStep: (args: PodmanAlertTemplateArgs): MonitorStep => {
271
+ const metricAlias: string = "container_memory";
272
+
273
+ return buildPodmanMonitorStep({
274
+ podmanMonitor: buildPodmanMonitorConfig({
275
+ hostIdentifier: args.hostIdentifier,
276
+ metricName: "container.memory.percent",
277
+ metricAlias,
278
+ rollingTime: RollingTime.Past5Minutes,
279
+ /*
280
+ * Use Max so a single container breaching its limit trips the
281
+ * threshold instead of being diluted by idle containers.
282
+ */
283
+ aggregationType: MetricsAggregationType.Max,
284
+ }),
285
+ offlineCriteriaInstance: buildPodmanOfflineCriteriaInstance({
286
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
287
+ incidentSeverityId: args.defaultIncidentSeverityId,
288
+ alertSeverityId: args.defaultAlertSeverityId,
289
+ monitorName: args.monitorName,
290
+ metricAlias,
291
+ filterType: FilterType.GreaterThan,
292
+ value: 85,
293
+ incidentTitle: `[Podman] High Memory Usage (>85%) - ${args.monitorName}`,
294
+ incidentDescription: `A Podman container's memory usage has exceeded 85% of its limit. High memory usage can lead to OOM kills and container restarts. Check the root cause for the specific container and host details.`,
295
+ criteriaName: "High Memory - Usage > 85%",
296
+ criteriaDescription:
297
+ "Triggers when any container's memory usage exceeds 85% over the monitoring window.",
298
+ }),
299
+ onlineCriteriaInstance: buildPodmanOnlineCriteriaInstance({
300
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
301
+ metricAlias,
302
+ filterType: FilterType.LessThanOrEqualTo,
303
+ value: 85,
304
+ }),
305
+ });
306
+ },
307
+ };
308
+
309
+ const containerRestartLoopTemplate: PodmanAlertTemplate = {
310
+ id: "podman-restart-loop",
311
+ name: "Container Restart Loop",
312
+ description:
313
+ "Alert when a container has restarted more than 5 times, indicating a crash loop.",
314
+ category: "Container",
315
+ severity: "Critical",
316
+ getMonitorStep: (args: PodmanAlertTemplateArgs): MonitorStep => {
317
+ const metricAlias: string = "container_restarts";
318
+
319
+ return buildPodmanMonitorStep({
320
+ podmanMonitor: buildPodmanMonitorConfig({
321
+ hostIdentifier: args.hostIdentifier,
322
+ metricName: "container.restarts",
323
+ metricAlias,
324
+ rollingTime: RollingTime.Past5Minutes,
325
+ aggregationType: MetricsAggregationType.Max,
326
+ }),
327
+ offlineCriteriaInstance: buildPodmanOfflineCriteriaInstance({
328
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
329
+ incidentSeverityId: args.defaultIncidentSeverityId,
330
+ alertSeverityId: args.defaultAlertSeverityId,
331
+ monitorName: args.monitorName,
332
+ metricAlias,
333
+ filterType: FilterType.GreaterThan,
334
+ value: 5,
335
+ incidentTitle: `[Podman] Container Restart Loop Detected - ${args.monitorName}`,
336
+ incidentDescription: `A Podman container is repeatedly crashing and restarting. The container restart count has exceeded 5. This indicates a crash loop that needs immediate attention. Check the root cause for the specific container, exit code, and logs.`,
337
+ criteriaName: "Restart Loop - Restarts > 5",
338
+ criteriaDescription:
339
+ "Triggers when any container restart count exceeds 5 in the monitoring window.",
340
+ }),
341
+ onlineCriteriaInstance: buildPodmanOnlineCriteriaInstance({
342
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
343
+ metricAlias,
344
+ filterType: FilterType.LessThanOrEqualTo,
345
+ value: 5,
346
+ }),
347
+ });
348
+ },
349
+ };
350
+
351
+ const highCpuThrottlingTemplate: PodmanAlertTemplate = {
352
+ id: "podman-cpu-throttling",
353
+ name: "Container CPU Throttling",
354
+ description:
355
+ "Alert when a container is being CPU-throttled, indicating it needs more CPU resources.",
356
+ category: "Resource",
357
+ severity: "Warning",
358
+ getMonitorStep: (args: PodmanAlertTemplateArgs): MonitorStep => {
359
+ const metricAlias: string = "cpu_throttled";
360
+
361
+ return buildPodmanMonitorStep({
362
+ podmanMonitor: buildPodmanMonitorConfig({
363
+ hostIdentifier: args.hostIdentifier,
364
+ metricName: "container.cpu.throttling_data.throttled_time",
365
+ metricAlias,
366
+ rollingTime: RollingTime.Past5Minutes,
367
+ /*
368
+ * Use Max so a single throttled container trips the threshold,
369
+ * rather than summing throttled time across all containers.
370
+ */
371
+ aggregationType: MetricsAggregationType.Max,
372
+ }),
373
+ offlineCriteriaInstance: buildPodmanOfflineCriteriaInstance({
374
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
375
+ incidentSeverityId: args.defaultIncidentSeverityId,
376
+ alertSeverityId: args.defaultAlertSeverityId,
377
+ monitorName: args.monitorName,
378
+ metricAlias,
379
+ filterType: FilterType.GreaterThan,
380
+ value: 0,
381
+ incidentTitle: `[Podman] CPU Throttling Detected - ${args.monitorName}`,
382
+ incidentDescription: `A Podman container is being CPU-throttled. This means the container is hitting its CPU limit and performance is degraded. Consider increasing the CPU limit or optimizing the application.`,
383
+ criteriaName: "CPU Throttling - Throttled Time > 0",
384
+ criteriaDescription:
385
+ "Triggers when any container reports CPU throttling.",
386
+ }),
387
+ onlineCriteriaInstance: buildPodmanOnlineCriteriaInstance({
388
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
389
+ metricAlias,
390
+ filterType: FilterType.EqualTo,
391
+ value: 0,
392
+ }),
393
+ });
394
+ },
395
+ };
396
+
397
+ const highProcessCountTemplate: PodmanAlertTemplate = {
398
+ id: "podman-high-pids",
399
+ name: "High Container Process Count",
400
+ description:
401
+ "Alert when a container has an unusually high number of processes, which may indicate a fork bomb or resource leak.",
402
+ category: "Container",
403
+ severity: "Warning",
404
+ getMonitorStep: (args: PodmanAlertTemplateArgs): MonitorStep => {
405
+ const metricAlias: string = "pids_count";
406
+
407
+ return buildPodmanMonitorStep({
408
+ podmanMonitor: buildPodmanMonitorConfig({
409
+ hostIdentifier: args.hostIdentifier,
410
+ metricName: "container.pids.count",
411
+ metricAlias,
412
+ rollingTime: RollingTime.Past5Minutes,
413
+ aggregationType: MetricsAggregationType.Max,
414
+ }),
415
+ offlineCriteriaInstance: buildPodmanOfflineCriteriaInstance({
416
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
417
+ incidentSeverityId: args.defaultIncidentSeverityId,
418
+ alertSeverityId: args.defaultAlertSeverityId,
419
+ monitorName: args.monitorName,
420
+ metricAlias,
421
+ filterType: FilterType.GreaterThan,
422
+ value: 500,
423
+ incidentTitle: `[Podman] High Process Count (>500) - ${args.monitorName}`,
424
+ incidentDescription: `A Podman container has an unusually high number of processes (>500). This may indicate a fork bomb, resource leak, or misconfigured application. Check the container for runaway processes.`,
425
+ criteriaName: "High PIDs - Count > 500",
426
+ criteriaDescription:
427
+ "Triggers when container process count exceeds 500.",
428
+ }),
429
+ onlineCriteriaInstance: buildPodmanOnlineCriteriaInstance({
430
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
431
+ metricAlias,
432
+ filterType: FilterType.LessThanOrEqualTo,
433
+ value: 500,
434
+ }),
435
+ });
436
+ },
437
+ };
438
+
439
+ const containerUptimeTemplate: PodmanAlertTemplate = {
440
+ id: "podman-container-down",
441
+ name: "Container Down (Low Uptime)",
442
+ description:
443
+ "Alert when a container's uptime drops to zero, indicating it has stopped or crashed.",
444
+ category: "Container",
445
+ severity: "Critical",
446
+ getMonitorStep: (args: PodmanAlertTemplateArgs): MonitorStep => {
447
+ const metricAlias: string = "container_uptime";
448
+
449
+ return buildPodmanMonitorStep({
450
+ podmanMonitor: buildPodmanMonitorConfig({
451
+ hostIdentifier: args.hostIdentifier,
452
+ metricName: "container.uptime",
453
+ metricAlias,
454
+ rollingTime: RollingTime.Past1Minute,
455
+ aggregationType: MetricsAggregationType.Min,
456
+ }),
457
+ offlineCriteriaInstance: buildPodmanOfflineCriteriaInstance({
458
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
459
+ incidentSeverityId: args.defaultIncidentSeverityId,
460
+ alertSeverityId: args.defaultAlertSeverityId,
461
+ monitorName: args.monitorName,
462
+ metricAlias,
463
+ filterType: FilterType.EqualTo,
464
+ value: 0,
465
+ incidentTitle: `[Podman] Container Down - ${args.monitorName}`,
466
+ incidentDescription: `A Podman container has stopped running. The container uptime is zero, indicating it has crashed, been stopped, or been removed. Check the container status and logs for details.`,
467
+ criteriaName: "Container Down - Uptime = 0",
468
+ criteriaDescription: "Triggers when container uptime drops to zero.",
469
+ }),
470
+ onlineCriteriaInstance: buildPodmanOnlineCriteriaInstance({
471
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
472
+ metricAlias,
473
+ filterType: FilterType.GreaterThan,
474
+ value: 0,
475
+ }),
476
+ });
477
+ },
478
+ };
479
+
480
+ export function getAllPodmanAlertTemplates(): Array<PodmanAlertTemplate> {
481
+ return [
482
+ highCpuTemplate,
483
+ highMemoryTemplate,
484
+ containerRestartLoopTemplate,
485
+ highCpuThrottlingTemplate,
486
+ highProcessCountTemplate,
487
+ containerUptimeTemplate,
488
+ ];
489
+ }
490
+
491
+ export function getPodmanAlertTemplatesByCategory(
492
+ category: PodmanAlertTemplateCategory,
493
+ ): Array<PodmanAlertTemplate> {
494
+ return getAllPodmanAlertTemplates().filter(
495
+ (template: PodmanAlertTemplate) => {
496
+ return template.category === category;
497
+ },
498
+ );
499
+ }
500
+
501
+ export function getPodmanAlertTemplateById(
502
+ id: string,
503
+ ): PodmanAlertTemplate | undefined {
504
+ return getAllPodmanAlertTemplates().find((template: PodmanAlertTemplate) => {
505
+ return template.id === id;
506
+ });
507
+ }