@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.
- package/Models/DatabaseModels/Alert.ts +166 -0
- package/Models/DatabaseModels/AlertLabelRule.ts +38 -0
- package/Models/DatabaseModels/AlertOwnerRule.ts +38 -0
- package/Models/DatabaseModels/DockerSwarmCluster.ts +989 -0
- package/Models/DatabaseModels/DockerSwarmClusterLabelRule.ts +514 -0
- package/Models/DatabaseModels/DockerSwarmClusterOwnerRule.ts +596 -0
- package/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.ts +487 -0
- package/Models/DatabaseModels/DockerSwarmClusterOwnerUser.ts +486 -0
- package/Models/DatabaseModels/DockerSwarmResource.ts +750 -0
- package/Models/DatabaseModels/Incident.ts +166 -0
- package/Models/DatabaseModels/IncidentLabelRule.ts +38 -0
- package/Models/DatabaseModels/IncidentOwnerRule.ts +38 -0
- package/Models/DatabaseModels/IncidentTemplate.ts +56 -0
- package/Models/DatabaseModels/Index.ts +24 -0
- package/Models/DatabaseModels/PodmanHost.ts +859 -0
- package/Models/DatabaseModels/PodmanHostLabelRule.ts +514 -0
- package/Models/DatabaseModels/PodmanHostOwnerRule.ts +596 -0
- package/Models/DatabaseModels/PodmanHostOwnerTeam.ts +487 -0
- package/Models/DatabaseModels/PodmanHostOwnerUser.ts +486 -0
- package/Models/DatabaseModels/PodmanResource.ts +498 -0
- package/Models/DatabaseModels/ScheduledMaintenance.ts +110 -0
- package/Models/DatabaseModels/ScheduledMaintenanceLabelRule.ts +38 -0
- package/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.ts +38 -0
- package/Models/DatabaseModels/ScheduledMaintenanceTemplate.ts +56 -0
- package/Models/DatabaseModels/TelemetryException.ts +2 -0
- package/Server/API/DashboardAPI.ts +89 -0
- package/Server/API/DockerSwarmResourceAPI.ts +137 -0
- package/Server/API/TelemetryAPI.ts +8 -1
- package/Server/Infrastructure/Postgres/SchemaMigrations/1781587937032-MigrationName.ts +3199 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
- package/Server/Services/AlertLabelRuleEngineService.ts +29 -0
- package/Server/Services/AlertOwnerRuleEngineService.ts +67 -0
- package/Server/Services/DockerSwarmClusterLabelRuleEngineService.ts +214 -0
- package/Server/Services/DockerSwarmClusterLabelRuleService.ts +14 -0
- package/Server/Services/DockerSwarmClusterOwnerRuleEngineService.ts +232 -0
- package/Server/Services/DockerSwarmClusterOwnerRuleService.ts +14 -0
- package/Server/Services/DockerSwarmClusterOwnerTeamService.ts +10 -0
- package/Server/Services/DockerSwarmClusterOwnerUserService.ts +10 -0
- package/Server/Services/DockerSwarmClusterService.ts +404 -0
- package/Server/Services/DockerSwarmResourceService.ts +381 -0
- package/Server/Services/ExceptionAggregationService.ts +1 -0
- package/Server/Services/IncidentLabelRuleEngineService.ts +27 -0
- package/Server/Services/IncidentOwnerRuleEngineService.ts +67 -0
- package/Server/Services/IncidentService.ts +11 -0
- package/Server/Services/Index.ts +14 -0
- package/Server/Services/LogAggregationService.ts +1 -0
- package/Server/Services/MetricAggregationService.ts +1 -0
- package/Server/Services/OpenTelemetryIngestService.ts +37 -0
- package/Server/Services/PodmanHostLabelRuleEngineService.ts +198 -0
- package/Server/Services/PodmanHostLabelRuleService.ts +14 -0
- package/Server/Services/PodmanHostOwnerRuleEngineService.ts +216 -0
- package/Server/Services/PodmanHostOwnerRuleService.ts +14 -0
- package/Server/Services/PodmanHostOwnerTeamService.ts +10 -0
- package/Server/Services/PodmanHostOwnerUserService.ts +10 -0
- package/Server/Services/PodmanHostService.ts +368 -0
- package/Server/Services/PodmanResourceService.ts +310 -0
- package/Server/Services/ScheduledMaintenanceLabelRuleEngineService.ts +29 -0
- package/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.ts +67 -0
- package/Server/Services/TelemetryUsageBillingService.ts +18 -0
- package/Server/Services/TraceAggregationService.ts +1 -0
- package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +13 -0
- package/Server/Utils/Monitor/MonitorAlert.ts +10 -0
- package/Server/Utils/Monitor/MonitorClusterContext.ts +35 -6
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +306 -0
- package/Server/Utils/Monitor/MonitorIncident.ts +45 -0
- package/Server/Utils/Monitor/MonitorMaintenanceSuppression.ts +17 -0
- package/Server/Utils/Monitor/MonitorTemplateUtil.ts +3 -0
- package/Server/Utils/Monitor/SeriesResourceLabels.ts +26 -0
- package/Server/Utils/Telemetry/ResourceFacetResolver.ts +49 -0
- package/Server/Utils/Telemetry/Telemetry.ts +10 -0
- package/Server/Utils/Telemetry/TelemetryEntity.ts +22 -0
- package/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.ts +1 -0
- package/Tests/Types/DockerSwarm/DockerSwarmInventoryExtractor.test.ts +667 -0
- package/Tests/Types/Monitor/DockerSwarmAlertTemplates.test.ts +528 -0
- package/Types/Dashboard/DashboardComponentType.ts +7 -0
- package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +2 -0
- package/Types/Dashboard/DashboardComponents/DashboardDockerSwarmNodeListComponent.ts +17 -0
- package/Types/Dashboard/DashboardComponents/DashboardDockerSwarmServiceListComponent.ts +17 -0
- package/Types/Dashboard/DashboardComponents/DashboardPodmanContainerListComponent.ts +16 -0
- package/Types/Dashboard/DashboardComponents/DashboardPodmanHostListComponent.ts +15 -0
- package/Types/Dashboard/DashboardComponents/DashboardPodmanImageListComponent.ts +16 -0
- package/Types/Dashboard/DashboardComponents/DashboardPodmanNetworkListComponent.ts +15 -0
- package/Types/Dashboard/DashboardComponents/DashboardPodmanVolumeListComponent.ts +15 -0
- package/Types/Dashboard/DashboardTemplates.ts +194 -0
- package/Types/DockerSwarm/DockerSwarmInventoryExtractor.ts +452 -0
- package/Types/Icon/IconProp.ts +1 -0
- package/Types/Monitor/DockerSwarmAlertTemplates.ts +461 -0
- package/Types/Monitor/DockerSwarmMetricCatalog.ts +139 -0
- package/Types/Monitor/HostAlertTemplates.ts +455 -0
- package/Types/Monitor/HostMetricCatalog.ts +177 -0
- package/Types/Monitor/MetricMonitor/MetricMonitorResponse.ts +21 -0
- package/Types/Monitor/MonitorStep.ts +99 -0
- package/Types/Monitor/MonitorStepDockerSwarmMonitor.ts +74 -0
- package/Types/Monitor/MonitorStepHostMonitor.ts +30 -0
- package/Types/Monitor/MonitorStepPodmanMonitor.ts +38 -0
- package/Types/Monitor/MonitorType.ts +42 -0
- package/Types/Monitor/PodmanAlertTemplates.ts +507 -0
- package/Types/Monitor/PodmanMetricCatalog.ts +226 -0
- package/Types/Permission.ts +465 -4
- package/Types/Podman/PodmanInventoryExtractor.ts +343 -0
- package/Types/Telemetry/EntityType.ts +12 -0
- package/Types/Telemetry/ServiceType.ts +2 -0
- package/UI/Components/Icon/Icon.tsx +57 -0
- package/UI/Components/LogsViewer/LogsViewer.tsx +44 -1
- package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +28 -0
- package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +6 -0
- package/UI/Utils/TelemetryService.ts +1 -0
- package/Utils/Dashboard/Components/DashboardDockerSwarmNodeListComponent.ts +70 -0
- package/Utils/Dashboard/Components/DashboardDockerSwarmResourceListShared.ts +61 -0
- package/Utils/Dashboard/Components/DashboardDockerSwarmServiceListComponent.ts +71 -0
- package/Utils/Dashboard/Components/DashboardPodmanContainerListComponent.ts +100 -0
- package/Utils/Dashboard/Components/DashboardPodmanHostListComponent.ts +88 -0
- package/Utils/Dashboard/Components/DashboardPodmanImageListComponent.ts +97 -0
- package/Utils/Dashboard/Components/DashboardPodmanNetworkListComponent.ts +87 -0
- package/Utils/Dashboard/Components/DashboardPodmanVolumeListComponent.ts +87 -0
- package/Utils/Dashboard/Components/Index.ts +51 -0
- package/Utils/Telemetry/EntityKey.ts +18 -0
- package/build/dist/Models/DatabaseModels/Alert.js +162 -0
- package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertLabelRule.js +39 -0
- package/build/dist/Models/DatabaseModels/AlertLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertOwnerRule.js +39 -0
- package/build/dist/Models/DatabaseModels/AlertOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerSwarmCluster.js +1018 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmCluster.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterLabelRule.js +522 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerRule.js +603 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.js +503 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerUser.js +502 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmResource.js +787 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmResource.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Incident.js +162 -0
- package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentLabelRule.js +39 -0
- package/build/dist/Models/DatabaseModels/IncidentLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentOwnerRule.js +39 -0
- package/build/dist/Models/DatabaseModels/IncidentOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentTemplate.js +54 -0
- package/build/dist/Models/DatabaseModels/IncidentTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +24 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/PodmanHost.js +885 -0
- package/build/dist/Models/DatabaseModels/PodmanHost.js.map +1 -0
- package/build/dist/Models/DatabaseModels/PodmanHostLabelRule.js +522 -0
- package/build/dist/Models/DatabaseModels/PodmanHostLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerRule.js +603 -0
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerTeam.js +503 -0
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerUser.js +502 -0
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/PodmanResource.js +526 -0
- package/build/dist/Models/DatabaseModels/PodmanResource.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +108 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceLabelRule.js +39 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.js +39 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js +54 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryException.js +2 -0
- package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
- package/build/dist/Server/API/DashboardAPI.js +89 -0
- package/build/dist/Server/API/DashboardAPI.js.map +1 -1
- package/build/dist/Server/API/DockerSwarmResourceAPI.js +100 -0
- package/build/dist/Server/API/DockerSwarmResourceAPI.js.map +1 -0
- package/build/dist/Server/API/TelemetryAPI.js +8 -1
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781587937032-MigrationName.js +1100 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781587937032-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/AlertLabelRuleEngineService.js +30 -4
- package/build/dist/Server/Services/AlertLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertOwnerRuleEngineService.js +62 -5
- package/build/dist/Server/Services/AlertOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js +168 -0
- package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/DockerSwarmClusterLabelRuleService.js +13 -0
- package/build/dist/Server/Services/DockerSwarmClusterLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js +188 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleService.js +13 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerUserService.js +9 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/DockerSwarmClusterService.js +353 -0
- package/build/dist/Server/Services/DockerSwarmClusterService.js.map +1 -0
- package/build/dist/Server/Services/DockerSwarmResourceService.js +258 -0
- package/build/dist/Server/Services/DockerSwarmResourceService.js.map +1 -0
- package/build/dist/Server/Services/ExceptionAggregationService.js +1 -0
- package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
- package/build/dist/Server/Services/IncidentLabelRuleEngineService.js +28 -4
- package/build/dist/Server/Services/IncidentLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js +62 -5
- package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +8 -0
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +14 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/LogAggregationService.js +1 -0
- package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MetricAggregationService.js +1 -0
- package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +43 -13
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js +166 -0
- package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/PodmanHostLabelRuleService.js +13 -0
- package/build/dist/Server/Services/PodmanHostLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js +186 -0
- package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/PodmanHostOwnerRuleService.js +13 -0
- package/build/dist/Server/Services/PodmanHostOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/PodmanHostOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/PodmanHostOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/PodmanHostOwnerUserService.js +9 -0
- package/build/dist/Server/Services/PodmanHostOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/PodmanHostService.js +319 -0
- package/build/dist/Server/Services/PodmanHostService.js.map +1 -0
- package/build/dist/Server/Services/PodmanResourceService.js +196 -0
- package/build/dist/Server/Services/PodmanResourceService.js.map +1 -0
- package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js +30 -4
- package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js +62 -5
- package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryUsageBillingService.js +13 -0
- package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
- package/build/dist/Server/Services/TraceAggregationService.js +1 -0
- package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +13 -0
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +8 -0
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js +35 -7
- package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +194 -0
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +35 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js +9 -0
- package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +3 -0
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +16 -0
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js +30 -0
- package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/Telemetry.js +6 -0
- package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +18 -0
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponentType.js +7 -0
- package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmNodeListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmNodeListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmServiceListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerSwarmServiceListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanContainerListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanContainerListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanHostListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanHostListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanImageListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanImageListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanNetworkListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanNetworkListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanVolumeListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardPodmanVolumeListComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardTemplates.js +168 -0
- package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
- package/build/dist/Types/DockerSwarm/DockerSwarmInventoryExtractor.js +359 -0
- package/build/dist/Types/DockerSwarm/DockerSwarmInventoryExtractor.js.map +1 -0
- package/build/dist/Types/Icon/IconProp.js +1 -0
- package/build/dist/Types/Icon/IconProp.js.map +1 -1
- package/build/dist/Types/Monitor/DockerSwarmAlertTemplates.js +358 -0
- package/build/dist/Types/Monitor/DockerSwarmAlertTemplates.js.map +1 -0
- package/build/dist/Types/Monitor/DockerSwarmMetricCatalog.js +103 -0
- package/build/dist/Types/Monitor/DockerSwarmMetricCatalog.js.map +1 -0
- package/build/dist/Types/Monitor/HostAlertTemplates.js +365 -0
- package/build/dist/Types/Monitor/HostAlertTemplates.js.map +1 -0
- package/build/dist/Types/Monitor/HostMetricCatalog.js +138 -0
- package/build/dist/Types/Monitor/HostMetricCatalog.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorStep.js +69 -0
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepDockerSwarmMonitor.js +21 -0
- package/build/dist/Types/Monitor/MonitorStepDockerSwarmMonitor.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorStepHostMonitor.js +20 -0
- package/build/dist/Types/Monitor/MonitorStepHostMonitor.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorStepPodmanMonitor.js +21 -0
- package/build/dist/Types/Monitor/MonitorStepPodmanMonitor.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorType.js +39 -0
- package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
- package/build/dist/Types/Monitor/PodmanAlertTemplates.js +410 -0
- package/build/dist/Types/Monitor/PodmanAlertTemplates.js.map +1 -0
- package/build/dist/Types/Monitor/PodmanMetricCatalog.js +192 -0
- package/build/dist/Types/Monitor/PodmanMetricCatalog.js.map +1 -0
- package/build/dist/Types/Permission.js +420 -4
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Podman/PodmanInventoryExtractor.js +293 -0
- package/build/dist/Types/Podman/PodmanInventoryExtractor.js.map +1 -0
- package/build/dist/Types/Telemetry/EntityType.js +12 -0
- package/build/dist/Types/Telemetry/EntityType.js.map +1 -1
- package/build/dist/Types/Telemetry/ServiceType.js +2 -0
- package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
- package/build/dist/UI/Components/Icon/Icon.js +16 -0
- package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js +30 -2
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +22 -0
- package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +6 -0
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
- package/build/dist/UI/Utils/TelemetryService.js +1 -0
- package/build/dist/UI/Utils/TelemetryService.js.map +1 -1
- package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmNodeListComponent.js +55 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmNodeListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmResourceListShared.js +46 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmResourceListShared.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmServiceListComponent.js +55 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDockerSwarmServiceListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanContainerListComponent.js +77 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanContainerListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanHostListComponent.js +71 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanHostListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanImageListComponent.js +77 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanImageListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanNetworkListComponent.js +68 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanNetworkListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanVolumeListComponent.js +68 -0
- package/build/dist/Utils/Dashboard/Components/DashboardPodmanVolumeListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/Index.js +28 -0
- package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
- package/build/dist/Utils/Telemetry/EntityKey.js +14 -0
- package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -1
- package/package.json +1 -1
|
@@ -58,6 +58,8 @@ import MetricMonitorResponse, {
|
|
|
58
58
|
ProxmoxResourceBreakdown,
|
|
59
59
|
CephAffectedResource,
|
|
60
60
|
CephResourceBreakdown,
|
|
61
|
+
DockerSwarmAffectedResource,
|
|
62
|
+
DockerSwarmResourceBreakdown,
|
|
61
63
|
} from "../../../Types/Monitor/MetricMonitor/MetricMonitorResponse";
|
|
62
64
|
import MetricSeriesResult from "../../../Types/Monitor/MetricMonitor/MetricSeriesResult";
|
|
63
65
|
import MetricCriteriaContext, {
|
|
@@ -66,8 +68,11 @@ import MetricCriteriaContext, {
|
|
|
66
68
|
MetricComponentValue,
|
|
67
69
|
} from "../../../Types/Monitor/MetricMonitor/MetricCriteriaContext";
|
|
68
70
|
import MonitorStepDockerMonitor from "../../../Types/Monitor/MonitorStepDockerMonitor";
|
|
71
|
+
import MonitorStepHostMonitor from "../../../Types/Monitor/MonitorStepHostMonitor";
|
|
72
|
+
import MonitorStepPodmanMonitor from "../../../Types/Monitor/MonitorStepPodmanMonitor";
|
|
69
73
|
import MonitorStepProxmoxMonitor from "../../../Types/Monitor/MonitorStepProxmoxMonitor";
|
|
70
74
|
import MonitorStepCephMonitor from "../../../Types/Monitor/MonitorStepCephMonitor";
|
|
75
|
+
import MonitorStepDockerSwarmMonitor from "../../../Types/Monitor/MonitorStepDockerSwarmMonitor";
|
|
71
76
|
|
|
72
77
|
export default class MonitorCriteriaEvaluator {
|
|
73
78
|
public static async processMonitorStep(input: {
|
|
@@ -237,6 +242,9 @@ ${contextBlock}
|
|
|
237
242
|
input.monitor.monitorType !== MonitorType.Metrics &&
|
|
238
243
|
input.monitor.monitorType !== MonitorType.Kubernetes &&
|
|
239
244
|
input.monitor.monitorType !== MonitorType.Docker &&
|
|
245
|
+
input.monitor.monitorType !== MonitorType.Host &&
|
|
246
|
+
input.monitor.monitorType !== MonitorType.Podman &&
|
|
247
|
+
input.monitor.monitorType !== MonitorType.DockerSwarm &&
|
|
240
248
|
input.monitor.monitorType !== MonitorType.Proxmox &&
|
|
241
249
|
input.monitor.monitorType !== MonitorType.Ceph
|
|
242
250
|
) {
|
|
@@ -685,6 +693,9 @@ ${contextBlock}
|
|
|
685
693
|
input.monitor.monitorType === MonitorType.Metrics ||
|
|
686
694
|
input.monitor.monitorType === MonitorType.Kubernetes ||
|
|
687
695
|
input.monitor.monitorType === MonitorType.Docker ||
|
|
696
|
+
input.monitor.monitorType === MonitorType.Host ||
|
|
697
|
+
input.monitor.monitorType === MonitorType.Podman ||
|
|
698
|
+
input.monitor.monitorType === MonitorType.DockerSwarm ||
|
|
688
699
|
input.monitor.monitorType === MonitorType.Proxmox ||
|
|
689
700
|
input.monitor.monitorType === MonitorType.Ceph
|
|
690
701
|
) {
|
|
@@ -819,11 +830,26 @@ ${contextBlock}
|
|
|
819
830
|
return MonitorCriteriaEvaluator.buildDockerRootCauseContext(input);
|
|
820
831
|
}
|
|
821
832
|
|
|
833
|
+
// Handle Host monitors with resource context
|
|
834
|
+
if (input.monitor.monitorType === MonitorType.Host) {
|
|
835
|
+
return MonitorCriteriaEvaluator.buildHostRootCauseContext(input);
|
|
836
|
+
}
|
|
837
|
+
|
|
838
|
+
// Handle Podman monitors with resource context
|
|
839
|
+
if (input.monitor.monitorType === MonitorType.Podman) {
|
|
840
|
+
return MonitorCriteriaEvaluator.buildPodmanRootCauseContext(input);
|
|
841
|
+
}
|
|
842
|
+
|
|
822
843
|
// Handle Proxmox monitors with resource context
|
|
823
844
|
if (input.monitor.monitorType === MonitorType.Proxmox) {
|
|
824
845
|
return MonitorCriteriaEvaluator.buildProxmoxRootCauseContext(input);
|
|
825
846
|
}
|
|
826
847
|
|
|
848
|
+
// Handle Docker Swarm monitors with resource context
|
|
849
|
+
if (input.monitor.monitorType === MonitorType.DockerSwarm) {
|
|
850
|
+
return MonitorCriteriaEvaluator.buildDockerSwarmRootCauseContext(input);
|
|
851
|
+
}
|
|
852
|
+
|
|
827
853
|
// Handle Ceph monitors with resource context
|
|
828
854
|
if (input.monitor.monitorType === MonitorType.Ceph) {
|
|
829
855
|
return MonitorCriteriaEvaluator.buildCephRootCauseContext(input);
|
|
@@ -1593,6 +1619,124 @@ ${contextBlock}
|
|
|
1593
1619
|
return sections.length > 0 ? sections.join("\n") : null;
|
|
1594
1620
|
}
|
|
1595
1621
|
|
|
1622
|
+
private static buildHostRootCauseContext(input: {
|
|
1623
|
+
dataToProcess: DataToProcess;
|
|
1624
|
+
monitorStep: MonitorStep;
|
|
1625
|
+
monitor: Monitor;
|
|
1626
|
+
}): string | null {
|
|
1627
|
+
const metricResponse: MetricMonitorResponse =
|
|
1628
|
+
input.dataToProcess as MetricMonitorResponse;
|
|
1629
|
+
|
|
1630
|
+
const sections: Array<string> = [];
|
|
1631
|
+
|
|
1632
|
+
// Host context
|
|
1633
|
+
const hostMonitor: MonitorStepHostMonitor | undefined =
|
|
1634
|
+
input.monitorStep.data?.hostMonitor;
|
|
1635
|
+
|
|
1636
|
+
if (hostMonitor) {
|
|
1637
|
+
const hostDetails: Array<string> = [];
|
|
1638
|
+
hostDetails.push(`- Host: ${hostMonitor.hostIdentifier || "Unknown"}`);
|
|
1639
|
+
|
|
1640
|
+
// Add metric name from the query config
|
|
1641
|
+
if (
|
|
1642
|
+
hostMonitor.metricViewConfig?.queryConfigs?.length > 0 &&
|
|
1643
|
+
hostMonitor.metricViewConfig.queryConfigs[0]
|
|
1644
|
+
) {
|
|
1645
|
+
const metricName: string = hostMonitor.metricViewConfig.queryConfigs[0]
|
|
1646
|
+
.metricQueryData?.filterData?.metricName as string;
|
|
1647
|
+
if (metricName) {
|
|
1648
|
+
hostDetails.push(`- Metric: \`${metricName}\``);
|
|
1649
|
+
}
|
|
1650
|
+
}
|
|
1651
|
+
|
|
1652
|
+
sections.push(`**Host Details**\n${hostDetails.join("\n")}`);
|
|
1653
|
+
}
|
|
1654
|
+
|
|
1655
|
+
// Metric results summary
|
|
1656
|
+
if (metricResponse.metricResult && metricResponse.metricResult.length > 0) {
|
|
1657
|
+
const resultDetails: Array<string> = [];
|
|
1658
|
+
|
|
1659
|
+
for (const result of metricResponse.metricResult) {
|
|
1660
|
+
if (result.data && result.data.length > 0) {
|
|
1661
|
+
resultDetails.push(
|
|
1662
|
+
`- ${result.data.length} metric data point(s) returned`,
|
|
1663
|
+
);
|
|
1664
|
+
}
|
|
1665
|
+
}
|
|
1666
|
+
|
|
1667
|
+
if (resultDetails.length > 0) {
|
|
1668
|
+
sections.push(`\n\n**Metric Summary**\n${resultDetails.join("\n")}`);
|
|
1669
|
+
}
|
|
1670
|
+
}
|
|
1671
|
+
|
|
1672
|
+
return sections.length > 0 ? sections.join("\n") : null;
|
|
1673
|
+
}
|
|
1674
|
+
|
|
1675
|
+
private static buildPodmanRootCauseContext(input: {
|
|
1676
|
+
dataToProcess: DataToProcess;
|
|
1677
|
+
monitorStep: MonitorStep;
|
|
1678
|
+
monitor: Monitor;
|
|
1679
|
+
}): string | null {
|
|
1680
|
+
const metricResponse: MetricMonitorResponse =
|
|
1681
|
+
input.dataToProcess as MetricMonitorResponse;
|
|
1682
|
+
|
|
1683
|
+
const sections: Array<string> = [];
|
|
1684
|
+
|
|
1685
|
+
// Podman host context
|
|
1686
|
+
const podmanMonitor: MonitorStepPodmanMonitor | undefined =
|
|
1687
|
+
input.monitorStep.data?.podmanMonitor;
|
|
1688
|
+
|
|
1689
|
+
if (podmanMonitor) {
|
|
1690
|
+
const hostDetails: Array<string> = [];
|
|
1691
|
+
hostDetails.push(`- Host: ${podmanMonitor.hostIdentifier || "Unknown"}`);
|
|
1692
|
+
|
|
1693
|
+
if (podmanMonitor.containerFilters?.containerName) {
|
|
1694
|
+
hostDetails.push(
|
|
1695
|
+
`- Container Name Filter: ${podmanMonitor.containerFilters.containerName}`,
|
|
1696
|
+
);
|
|
1697
|
+
}
|
|
1698
|
+
|
|
1699
|
+
if (podmanMonitor.containerFilters?.containerImage) {
|
|
1700
|
+
hostDetails.push(
|
|
1701
|
+
`- Container Image Filter: ${podmanMonitor.containerFilters.containerImage}`,
|
|
1702
|
+
);
|
|
1703
|
+
}
|
|
1704
|
+
|
|
1705
|
+
// Add metric name from the query config
|
|
1706
|
+
if (
|
|
1707
|
+
podmanMonitor.metricViewConfig?.queryConfigs?.length > 0 &&
|
|
1708
|
+
podmanMonitor.metricViewConfig.queryConfigs[0]
|
|
1709
|
+
) {
|
|
1710
|
+
const metricName: string = podmanMonitor.metricViewConfig
|
|
1711
|
+
.queryConfigs[0].metricQueryData?.filterData?.metricName as string;
|
|
1712
|
+
if (metricName) {
|
|
1713
|
+
hostDetails.push(`- Metric: \`${metricName}\``);
|
|
1714
|
+
}
|
|
1715
|
+
}
|
|
1716
|
+
|
|
1717
|
+
sections.push(`**Podman Host Details**\n${hostDetails.join("\n")}`);
|
|
1718
|
+
}
|
|
1719
|
+
|
|
1720
|
+
// Metric results summary
|
|
1721
|
+
if (metricResponse.metricResult && metricResponse.metricResult.length > 0) {
|
|
1722
|
+
const resultDetails: Array<string> = [];
|
|
1723
|
+
|
|
1724
|
+
for (const result of metricResponse.metricResult) {
|
|
1725
|
+
if (result.data && result.data.length > 0) {
|
|
1726
|
+
resultDetails.push(
|
|
1727
|
+
`- ${result.data.length} metric data point(s) returned`,
|
|
1728
|
+
);
|
|
1729
|
+
}
|
|
1730
|
+
}
|
|
1731
|
+
|
|
1732
|
+
if (resultDetails.length > 0) {
|
|
1733
|
+
sections.push(`\n\n**Metric Summary**\n${resultDetails.join("\n")}`);
|
|
1734
|
+
}
|
|
1735
|
+
}
|
|
1736
|
+
|
|
1737
|
+
return sections.length > 0 ? sections.join("\n") : null;
|
|
1738
|
+
}
|
|
1739
|
+
|
|
1596
1740
|
private static buildProxmoxRootCauseContext(input: {
|
|
1597
1741
|
dataToProcess: DataToProcess;
|
|
1598
1742
|
monitorStep: MonitorStep;
|
|
@@ -1758,6 +1902,168 @@ ${contextBlock}
|
|
|
1758
1902
|
return sections.length > 0 ? sections.join("\n") : null;
|
|
1759
1903
|
}
|
|
1760
1904
|
|
|
1905
|
+
private static buildDockerSwarmRootCauseContext(input: {
|
|
1906
|
+
dataToProcess: DataToProcess;
|
|
1907
|
+
monitorStep: MonitorStep;
|
|
1908
|
+
monitor: Monitor;
|
|
1909
|
+
}): string | null {
|
|
1910
|
+
const metricResponse: MetricMonitorResponse =
|
|
1911
|
+
input.dataToProcess as MetricMonitorResponse;
|
|
1912
|
+
|
|
1913
|
+
const breakdown: DockerSwarmResourceBreakdown | undefined =
|
|
1914
|
+
metricResponse.dockerSwarmResourceBreakdown;
|
|
1915
|
+
|
|
1916
|
+
const sections: Array<string> = [];
|
|
1917
|
+
|
|
1918
|
+
// Docker Swarm cluster context
|
|
1919
|
+
const dockerSwarmMonitor: MonitorStepDockerSwarmMonitor | undefined =
|
|
1920
|
+
input.monitorStep.data?.dockerSwarmMonitor;
|
|
1921
|
+
|
|
1922
|
+
if (dockerSwarmMonitor || breakdown) {
|
|
1923
|
+
const clusterDetails: Array<string> = [];
|
|
1924
|
+
clusterDetails.push(
|
|
1925
|
+
`- Cluster: ${breakdown?.clusterName || dockerSwarmMonitor?.clusterIdentifier || "Unknown"}`,
|
|
1926
|
+
);
|
|
1927
|
+
|
|
1928
|
+
if (breakdown) {
|
|
1929
|
+
clusterDetails.push(
|
|
1930
|
+
`- Metric: ${breakdown.metricFriendlyName} (\`${breakdown.metricName}\`)`,
|
|
1931
|
+
);
|
|
1932
|
+
} else if (
|
|
1933
|
+
dockerSwarmMonitor &&
|
|
1934
|
+
dockerSwarmMonitor.metricViewConfig?.queryConfigs?.length > 0 &&
|
|
1935
|
+
dockerSwarmMonitor.metricViewConfig.queryConfigs[0]
|
|
1936
|
+
) {
|
|
1937
|
+
const metricName: string = dockerSwarmMonitor.metricViewConfig
|
|
1938
|
+
.queryConfigs[0].metricQueryData?.filterData?.metricName as string;
|
|
1939
|
+
if (metricName) {
|
|
1940
|
+
clusterDetails.push(`- Metric: \`${metricName}\``);
|
|
1941
|
+
}
|
|
1942
|
+
}
|
|
1943
|
+
|
|
1944
|
+
if (dockerSwarmMonitor?.resourceFilters?.serviceName) {
|
|
1945
|
+
clusterDetails.push(
|
|
1946
|
+
`- Service Filter: ${dockerSwarmMonitor.resourceFilters.serviceName}`,
|
|
1947
|
+
);
|
|
1948
|
+
}
|
|
1949
|
+
|
|
1950
|
+
if (dockerSwarmMonitor?.resourceFilters?.nodeName) {
|
|
1951
|
+
clusterDetails.push(
|
|
1952
|
+
`- Node Filter: ${dockerSwarmMonitor.resourceFilters.nodeName}`,
|
|
1953
|
+
);
|
|
1954
|
+
}
|
|
1955
|
+
|
|
1956
|
+
if (dockerSwarmMonitor?.resourceFilters?.containerName) {
|
|
1957
|
+
clusterDetails.push(
|
|
1958
|
+
`- Container Name Filter: ${dockerSwarmMonitor.resourceFilters.containerName}`,
|
|
1959
|
+
);
|
|
1960
|
+
}
|
|
1961
|
+
|
|
1962
|
+
if (dockerSwarmMonitor?.resourceFilters?.containerImage) {
|
|
1963
|
+
clusterDetails.push(
|
|
1964
|
+
`- Container Image Filter: ${dockerSwarmMonitor.resourceFilters.containerImage}`,
|
|
1965
|
+
);
|
|
1966
|
+
}
|
|
1967
|
+
|
|
1968
|
+
sections.push(
|
|
1969
|
+
`**Docker Swarm Cluster Details**\n${clusterDetails.join("\n")}`,
|
|
1970
|
+
);
|
|
1971
|
+
}
|
|
1972
|
+
|
|
1973
|
+
// Affected resources (Task / Service / Node / Value)
|
|
1974
|
+
let renderedBreakdownTable: boolean = false;
|
|
1975
|
+
|
|
1976
|
+
if (breakdown && breakdown.affectedResources.length > 0) {
|
|
1977
|
+
/*
|
|
1978
|
+
* K8s/Proxmox-parity render: drop zero-value rows, worst (highest)
|
|
1979
|
+
* first, top 10. For the task-down template the breaching rows ARE
|
|
1980
|
+
* the zero-uptime ones — those still drive alerting through the
|
|
1981
|
+
* per-series criteria evaluation; this table is supplementary
|
|
1982
|
+
* context only.
|
|
1983
|
+
*/
|
|
1984
|
+
const sortedResources: Array<DockerSwarmAffectedResource> = [
|
|
1985
|
+
...breakdown.affectedResources,
|
|
1986
|
+
]
|
|
1987
|
+
.filter((r: DockerSwarmAffectedResource) => {
|
|
1988
|
+
return r.metricValue > 0;
|
|
1989
|
+
})
|
|
1990
|
+
.sort(
|
|
1991
|
+
(a: DockerSwarmAffectedResource, b: DockerSwarmAffectedResource) => {
|
|
1992
|
+
return b.metricValue - a.metricValue;
|
|
1993
|
+
},
|
|
1994
|
+
);
|
|
1995
|
+
|
|
1996
|
+
/*
|
|
1997
|
+
* Skip the table when no row carries any identity label
|
|
1998
|
+
* (cluster-wide series) — it would add nothing.
|
|
1999
|
+
*/
|
|
2000
|
+
const hasIdentity: boolean = sortedResources.some(
|
|
2001
|
+
(r: DockerSwarmAffectedResource) => {
|
|
2002
|
+
return r.containerName || r.serviceName || r.nodeName;
|
|
2003
|
+
},
|
|
2004
|
+
);
|
|
2005
|
+
|
|
2006
|
+
if (sortedResources.length > 0 && hasIdentity) {
|
|
2007
|
+
const resourcesToShow: Array<DockerSwarmAffectedResource> =
|
|
2008
|
+
sortedResources.slice(0, 10);
|
|
2009
|
+
|
|
2010
|
+
const resourceLines: Array<string> = [];
|
|
2011
|
+
resourceLines.push(`| Task / Container | Service | Node | Value |`);
|
|
2012
|
+
resourceLines.push(`| --- | --- | --- | --- |`);
|
|
2013
|
+
|
|
2014
|
+
for (const resource of resourcesToShow) {
|
|
2015
|
+
const taskCell: string = resource.containerName
|
|
2016
|
+
? `\`${resource.containerName}\``
|
|
2017
|
+
: "-";
|
|
2018
|
+
const serviceCell: string = resource.serviceName
|
|
2019
|
+
? `\`${resource.serviceName}\``
|
|
2020
|
+
: "-";
|
|
2021
|
+
const nodeCell: string = resource.nodeName
|
|
2022
|
+
? `\`${resource.nodeName}\``
|
|
2023
|
+
: "-";
|
|
2024
|
+
|
|
2025
|
+
resourceLines.push(
|
|
2026
|
+
`| ${taskCell} | ${serviceCell} | ${nodeCell} | **${resource.metricValue}** |`,
|
|
2027
|
+
);
|
|
2028
|
+
}
|
|
2029
|
+
|
|
2030
|
+
if (sortedResources.length > 10) {
|
|
2031
|
+
resourceLines.push(
|
|
2032
|
+
`\n*... and ${sortedResources.length - 10} more affected tasks*`,
|
|
2033
|
+
);
|
|
2034
|
+
}
|
|
2035
|
+
|
|
2036
|
+
sections.push(
|
|
2037
|
+
`\n\n**Affected Tasks** (${sortedResources.length} total)\n\n${resourceLines.join("\n")}`,
|
|
2038
|
+
);
|
|
2039
|
+
renderedBreakdownTable = true;
|
|
2040
|
+
}
|
|
2041
|
+
}
|
|
2042
|
+
|
|
2043
|
+
// Metric results summary (fallback context when no table rendered)
|
|
2044
|
+
if (
|
|
2045
|
+
!renderedBreakdownTable &&
|
|
2046
|
+
metricResponse.metricResult &&
|
|
2047
|
+
metricResponse.metricResult.length > 0
|
|
2048
|
+
) {
|
|
2049
|
+
const resultDetails: Array<string> = [];
|
|
2050
|
+
|
|
2051
|
+
for (const result of metricResponse.metricResult) {
|
|
2052
|
+
if (result.data && result.data.length > 0) {
|
|
2053
|
+
resultDetails.push(
|
|
2054
|
+
`- ${result.data.length} metric data point(s) returned`,
|
|
2055
|
+
);
|
|
2056
|
+
}
|
|
2057
|
+
}
|
|
2058
|
+
|
|
2059
|
+
if (resultDetails.length > 0) {
|
|
2060
|
+
sections.push(`\n\n**Metric Summary**\n${resultDetails.join("\n")}`);
|
|
2061
|
+
}
|
|
2062
|
+
}
|
|
2063
|
+
|
|
2064
|
+
return sections.length > 0 ? sections.join("\n") : null;
|
|
2065
|
+
}
|
|
2066
|
+
|
|
1761
2067
|
private static buildCephRootCauseContext(input: {
|
|
1762
2068
|
dataToProcess: DataToProcess;
|
|
1763
2069
|
monitorStep: MonitorStep;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import CephCluster from "../../../Models/DatabaseModels/CephCluster";
|
|
2
|
+
import DockerSwarmCluster from "../../../Models/DatabaseModels/DockerSwarmCluster";
|
|
2
3
|
import DockerHost from "../../../Models/DatabaseModels/DockerHost";
|
|
3
4
|
import Host from "../../../Models/DatabaseModels/Host";
|
|
4
5
|
import Incident from "../../../Models/DatabaseModels/Incident";
|
|
@@ -9,6 +10,7 @@ import KubernetesCluster from "../../../Models/DatabaseModels/KubernetesCluster"
|
|
|
9
10
|
import Label from "../../../Models/DatabaseModels/Label";
|
|
10
11
|
import Monitor from "../../../Models/DatabaseModels/Monitor";
|
|
11
12
|
import OnCallDutyPolicy from "../../../Models/DatabaseModels/OnCallDutyPolicy";
|
|
13
|
+
import PodmanHost from "../../../Models/DatabaseModels/PodmanHost";
|
|
12
14
|
import ProxmoxCluster from "../../../Models/DatabaseModels/ProxmoxCluster";
|
|
13
15
|
import Service from "../../../Models/DatabaseModels/Service";
|
|
14
16
|
import Includes from "../../../Types/BaseDatabase/Includes";
|
|
@@ -27,6 +29,7 @@ import DockerHostService from "../../Services/DockerHostService";
|
|
|
27
29
|
import HostService from "../../Services/HostService";
|
|
28
30
|
import IncidentService from "../../Services/IncidentService";
|
|
29
31
|
import KubernetesClusterService from "../../Services/KubernetesClusterService";
|
|
32
|
+
import PodmanHostService from "../../Services/PodmanHostService";
|
|
30
33
|
import ProxmoxClusterService from "../../Services/ProxmoxClusterService";
|
|
31
34
|
import ServiceService from "../../Services/ServiceService";
|
|
32
35
|
import IncidentSeverityService from "../../Services/IncidentSeverityService";
|
|
@@ -577,6 +580,7 @@ export default class MonitorIncident {
|
|
|
577
580
|
const [
|
|
578
581
|
resolvedHosts,
|
|
579
582
|
resolvedDockerHosts,
|
|
583
|
+
resolvedPodmanHosts,
|
|
580
584
|
resolvedClusters,
|
|
581
585
|
resolvedServices,
|
|
582
586
|
resolvedProxmoxClusters,
|
|
@@ -596,6 +600,13 @@ export default class MonitorIncident {
|
|
|
596
600
|
projectId: input.projectId,
|
|
597
601
|
findBy: DockerHostService.findBy.bind(DockerHostService),
|
|
598
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
|
+
}),
|
|
599
610
|
this.resolveResourceIds({
|
|
600
611
|
ids: refs.kubernetesClusterIds,
|
|
601
612
|
names: refs.kubernetesClusterNames,
|
|
@@ -642,6 +653,15 @@ export default class MonitorIncident {
|
|
|
642
653
|
},
|
|
643
654
|
);
|
|
644
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
|
+
}
|
|
645
665
|
if (resolvedClusters.length > 0) {
|
|
646
666
|
input.incident.kubernetesClusters = resolvedClusters.map(
|
|
647
667
|
(id: string): KubernetesCluster => {
|
|
@@ -735,6 +755,31 @@ export default class MonitorIncident {
|
|
|
735
755
|
|
|
736
756
|
input.incident.cephClusters = merged;
|
|
737
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
|
+
}
|
|
738
783
|
}
|
|
739
784
|
|
|
740
785
|
/*
|
|
@@ -23,6 +23,7 @@ export interface ResourceKeySet {
|
|
|
23
23
|
export interface MaintainedResourceKeys {
|
|
24
24
|
hosts: ResourceKeySet;
|
|
25
25
|
dockerHosts: ResourceKeySet;
|
|
26
|
+
podmanHosts: ResourceKeySet;
|
|
26
27
|
kubernetesClusters: ResourceKeySet;
|
|
27
28
|
/*
|
|
28
29
|
* Proxmox/Ceph clusters have no `oneuptime.*.id` label stamp, so only
|
|
@@ -112,6 +113,11 @@ export default class MonitorMaintenanceSuppression {
|
|
|
112
113
|
refs.dockerHostNames,
|
|
113
114
|
input.maintained.dockerHosts.names,
|
|
114
115
|
) ||
|
|
116
|
+
this.intersects(refs.podmanHostIds, input.maintained.podmanHosts.ids) ||
|
|
117
|
+
this.intersects(
|
|
118
|
+
refs.podmanHostNames,
|
|
119
|
+
input.maintained.podmanHosts.names,
|
|
120
|
+
) ||
|
|
115
121
|
this.intersects(
|
|
116
122
|
refs.kubernetesClusterIds,
|
|
117
123
|
input.maintained.kubernetesClusters.ids,
|
|
@@ -156,6 +162,8 @@ export default class MonitorMaintenanceSuppression {
|
|
|
156
162
|
maintained.hosts.names.size > 0 ||
|
|
157
163
|
maintained.dockerHosts.ids.size > 0 ||
|
|
158
164
|
maintained.dockerHosts.names.size > 0 ||
|
|
165
|
+
maintained.podmanHosts.ids.size > 0 ||
|
|
166
|
+
maintained.podmanHosts.names.size > 0 ||
|
|
159
167
|
maintained.kubernetesClusters.ids.size > 0 ||
|
|
160
168
|
maintained.kubernetesClusters.names.size > 0 ||
|
|
161
169
|
maintained.proxmoxClusters.ids.size > 0 ||
|
|
@@ -181,6 +189,7 @@ export default class MonitorMaintenanceSuppression {
|
|
|
181
189
|
const maintained: MaintainedResourceKeys = {
|
|
182
190
|
hosts: { ids: new Set<string>(), names: new Set<string>() },
|
|
183
191
|
dockerHosts: { ids: new Set<string>(), names: new Set<string>() },
|
|
192
|
+
podmanHosts: { ids: new Set<string>(), names: new Set<string>() },
|
|
184
193
|
kubernetesClusters: { ids: new Set<string>(), names: new Set<string>() },
|
|
185
194
|
proxmoxClusters: { ids: new Set<string>(), names: new Set<string>() },
|
|
186
195
|
cephClusters: { ids: new Set<string>(), names: new Set<string>() },
|
|
@@ -199,6 +208,7 @@ export default class MonitorMaintenanceSuppression {
|
|
|
199
208
|
_id: true,
|
|
200
209
|
hosts: { _id: true, hostIdentifier: true },
|
|
201
210
|
dockerHosts: { _id: true, hostIdentifier: true },
|
|
211
|
+
podmanHosts: { _id: true, hostIdentifier: true },
|
|
202
212
|
kubernetesClusters: { _id: true, clusterIdentifier: true },
|
|
203
213
|
proxmoxClusters: { _id: true, name: true },
|
|
204
214
|
cephClusters: { _id: true, name: true },
|
|
@@ -222,6 +232,13 @@ export default class MonitorMaintenanceSuppression {
|
|
|
222
232
|
dockerHost.hostIdentifier,
|
|
223
233
|
);
|
|
224
234
|
}
|
|
235
|
+
for (const podmanHost of event.podmanHosts || []) {
|
|
236
|
+
this.addKey(
|
|
237
|
+
maintained.podmanHosts,
|
|
238
|
+
podmanHost._id,
|
|
239
|
+
podmanHost.hostIdentifier,
|
|
240
|
+
);
|
|
241
|
+
}
|
|
225
242
|
for (const cluster of event.kubernetesClusters || []) {
|
|
226
243
|
this.addKey(
|
|
227
244
|
maintained.kubernetesClusters,
|
|
@@ -361,6 +361,9 @@ export default class MonitorTemplateUtil {
|
|
|
361
361
|
data.monitorType === MonitorType.Metrics ||
|
|
362
362
|
data.monitorType === MonitorType.Kubernetes ||
|
|
363
363
|
data.monitorType === MonitorType.Docker ||
|
|
364
|
+
data.monitorType === MonitorType.Host ||
|
|
365
|
+
data.monitorType === MonitorType.Podman ||
|
|
366
|
+
data.monitorType === MonitorType.DockerSwarm ||
|
|
364
367
|
data.monitorType === MonitorType.Proxmox ||
|
|
365
368
|
data.monitorType === MonitorType.Ceph
|
|
366
369
|
) {
|
|
@@ -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",
|
|
@@ -112,6 +128,8 @@ export interface SeriesResourceRefs {
|
|
|
112
128
|
hostNames: Array<string>;
|
|
113
129
|
dockerHostIds: Array<string>;
|
|
114
130
|
dockerHostNames: Array<string>;
|
|
131
|
+
podmanHostIds: Array<string>;
|
|
132
|
+
podmanHostNames: Array<string>;
|
|
115
133
|
kubernetesClusterIds: Array<string>;
|
|
116
134
|
kubernetesClusterNames: Array<string>;
|
|
117
135
|
proxmoxClusterNames: Array<string>;
|
|
@@ -166,6 +184,14 @@ export default class SeriesResourceLabels {
|
|
|
166
184
|
seriesLabels,
|
|
167
185
|
DockerHostNameLabelKeys,
|
|
168
186
|
),
|
|
187
|
+
podmanHostIds: this.collectLabelValues(
|
|
188
|
+
seriesLabels,
|
|
189
|
+
PodmanHostIdLabelKeys,
|
|
190
|
+
),
|
|
191
|
+
podmanHostNames: this.collectLabelValues(
|
|
192
|
+
seriesLabels,
|
|
193
|
+
PodmanHostNameLabelKeys,
|
|
194
|
+
),
|
|
169
195
|
kubernetesClusterIds: this.collectLabelValues(
|
|
170
196
|
seriesLabels,
|
|
171
197
|
KubernetesClusterIdLabelKeys,
|
|
@@ -5,6 +5,7 @@ import MultiSearch from "../../../Types/BaseDatabase/MultiSearch";
|
|
|
5
5
|
import ServiceModel from "../../../Models/DatabaseModels/Service";
|
|
6
6
|
import HostModel from "../../../Models/DatabaseModels/Host";
|
|
7
7
|
import DockerHostModel from "../../../Models/DatabaseModels/DockerHost";
|
|
8
|
+
import PodmanHostModel from "../../../Models/DatabaseModels/PodmanHost";
|
|
8
9
|
import KubernetesClusterModel from "../../../Models/DatabaseModels/KubernetesCluster";
|
|
9
10
|
import ServerlessFunctionModel from "../../../Models/DatabaseModels/ServerlessFunction";
|
|
10
11
|
import CloudResourceModel from "../../../Models/DatabaseModels/CloudResource";
|
|
@@ -12,6 +13,7 @@ import RumApplicationModel from "../../../Models/DatabaseModels/RumApplication";
|
|
|
12
13
|
import ServiceService from "../../Services/ServiceService";
|
|
13
14
|
import HostService from "../../Services/HostService";
|
|
14
15
|
import DockerHostService from "../../Services/DockerHostService";
|
|
16
|
+
import PodmanHostService from "../../Services/PodmanHostService";
|
|
15
17
|
import KubernetesClusterService from "../../Services/KubernetesClusterService";
|
|
16
18
|
import ServerlessFunctionService from "../../Services/ServerlessFunctionService";
|
|
17
19
|
import CloudResourceService from "../../Services/CloudResourceService";
|
|
@@ -34,6 +36,7 @@ export const RESOURCE_FACET_KEYS: ReadonlySet<string> = new Set([
|
|
|
34
36
|
"serviceId",
|
|
35
37
|
"hostId",
|
|
36
38
|
"dockerHostId",
|
|
39
|
+
"podmanHostId",
|
|
37
40
|
"kubernetesClusterId",
|
|
38
41
|
"serverlessFunctionId",
|
|
39
42
|
"cloudResourceId",
|
|
@@ -118,6 +121,13 @@ export default class ResourceFacetResolver {
|
|
|
118
121
|
searchText,
|
|
119
122
|
limit,
|
|
120
123
|
);
|
|
124
|
+
case "podmanHostId":
|
|
125
|
+
return ResourceFacetResolver.queryPodmanHosts(
|
|
126
|
+
projectId,
|
|
127
|
+
spec.counts,
|
|
128
|
+
searchText,
|
|
129
|
+
limit,
|
|
130
|
+
);
|
|
121
131
|
case "kubernetesClusterId":
|
|
122
132
|
return ResourceFacetResolver.queryKubernetesClusters(
|
|
123
133
|
projectId,
|
|
@@ -260,6 +270,45 @@ export default class ResourceFacetResolver {
|
|
|
260
270
|
);
|
|
261
271
|
}
|
|
262
272
|
|
|
273
|
+
private static async queryPodmanHosts(
|
|
274
|
+
projectId: ObjectID,
|
|
275
|
+
counts: Map<string, number>,
|
|
276
|
+
searchText: string | undefined,
|
|
277
|
+
limit: number,
|
|
278
|
+
): Promise<Array<ResolvedFacetValue>> {
|
|
279
|
+
const query: Record<string, unknown> = { projectId };
|
|
280
|
+
if (searchText) {
|
|
281
|
+
query["name"] = new MultiSearch({
|
|
282
|
+
fields: ["name", "hostIdentifier"],
|
|
283
|
+
value: searchText,
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
const podmanHosts: Array<PodmanHostModel> = await PodmanHostService.findBy({
|
|
288
|
+
query: query as any,
|
|
289
|
+
select: {
|
|
290
|
+
_id: true,
|
|
291
|
+
name: true,
|
|
292
|
+
hostIdentifier: true,
|
|
293
|
+
},
|
|
294
|
+
limit: new PositiveNumber(limit),
|
|
295
|
+
skip: new PositiveNumber(0),
|
|
296
|
+
props: { isRoot: true },
|
|
297
|
+
});
|
|
298
|
+
|
|
299
|
+
return ResourceFacetResolver.mergeCounts(
|
|
300
|
+
podmanHosts.map(
|
|
301
|
+
(p: PodmanHostModel): { id: string; displayName: string } => {
|
|
302
|
+
return {
|
|
303
|
+
id: p._id ? p._id.toString() : "",
|
|
304
|
+
displayName: p.name || p.hostIdentifier || "Unknown",
|
|
305
|
+
};
|
|
306
|
+
},
|
|
307
|
+
),
|
|
308
|
+
counts,
|
|
309
|
+
);
|
|
310
|
+
}
|
|
311
|
+
|
|
263
312
|
private static async queryKubernetesClusters(
|
|
264
313
|
projectId: ObjectID,
|
|
265
314
|
counts: Map<string, number>,
|
|
@@ -163,6 +163,16 @@ export default class TelemetryUtil {
|
|
|
163
163
|
};
|
|
164
164
|
}
|
|
165
165
|
|
|
166
|
+
public static getAttributesForPodmanHostIdAndHostName(data: {
|
|
167
|
+
podmanHostId: ObjectID;
|
|
168
|
+
hostName: string;
|
|
169
|
+
}): Dictionary<AttributeType> {
|
|
170
|
+
return {
|
|
171
|
+
"oneuptime.podman.host.id": data.podmanHostId.toString(),
|
|
172
|
+
"oneuptime.podman.host.name": data.hostName,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
|
|
166
176
|
public static getAttributesForKubernetesClusterIdAndName(data: {
|
|
167
177
|
kubernetesClusterId: ObjectID;
|
|
168
178
|
clusterName: string;
|