@oneuptime/common 12.0.25 → 12.0.26
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/AnalyticsModels/Index.ts +2 -0
- package/Models/AnalyticsModels/ThreatIntelIndicator.ts +413 -0
- package/Models/DatabaseModels/AlertSeverity.ts +4 -1
- package/Models/DatabaseModels/CephClusterFeed.ts +625 -0
- package/Models/DatabaseModels/CloudResourceFeed.ts +625 -0
- package/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.ts +13 -0
- package/Models/DatabaseModels/DetectionRule.ts +9 -3
- package/Models/DatabaseModels/DockerHostFeed.ts +625 -0
- package/Models/DatabaseModels/DockerSwarmClusterFeed.ts +628 -0
- package/Models/DatabaseModels/GoogleSecOpsConnection.ts +9 -3
- package/Models/DatabaseModels/HostFeed.ts +625 -0
- package/Models/DatabaseModels/IncidentSeverity.ts +4 -1
- package/Models/DatabaseModels/Index.ts +22 -0
- package/Models/DatabaseModels/KubernetesClusterFeed.ts +628 -0
- package/Models/DatabaseModels/Monitor.ts +87 -0
- package/Models/DatabaseModels/NetworkDevice.ts +96 -5
- package/Models/DatabaseModels/NetworkDeviceAutoImportRule.ts +92 -6
- package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +301 -31
- package/Models/DatabaseModels/NetworkSite.ts +120 -0
- package/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.ts +1 -0
- package/Models/DatabaseModels/PodmanHostFeed.ts +625 -0
- package/Models/DatabaseModels/ProxmoxClusterFeed.ts +626 -0
- package/Models/DatabaseModels/ScheduledMaintenance.ts +67 -0
- package/Models/DatabaseModels/ServiceFeed.ts +625 -0
- package/Models/DatabaseModels/TelemetrySourceMap.ts +474 -0
- package/Models/DatabaseModels/ThreatIntelFeed.ts +758 -0
- package/Models/DatabaseModels/UserOnCallLog.ts +1 -0
- package/Models/DatabaseModels/UserTotpAuth.ts +1 -0
- package/Models/DatabaseModels/UserWebAuthn.ts +1 -0
- package/Server/API/AlertAPI.ts +23 -1
- package/Server/API/BaseAPI.ts +14 -3
- package/Server/API/IncidentAPI.ts +41 -1
- package/Server/API/IncidentEpisodeAPI.ts +23 -1
- package/Server/API/MicrosoftTeamsAPI.ts +31 -2
- package/Server/API/ScheduledMaintenanceAPI.ts +23 -1
- package/Server/API/SlackAPI.ts +48 -0
- package/Server/API/TelemetryAPI.ts +167 -42
- package/Server/API/UserOnCallLogTimelineAPI.ts +75 -61
- package/Server/API/UserTotpAuthAPI.ts +67 -1
- package/Server/API/UserWebAuthnAPI.ts +44 -1
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787923136162-MigrationName.ts +57 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1789600000000-AddAutoProvisionedNetworkDeviceMonitors.ts +49 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1789700000000-AddNetworkScaleIndexes.ts +129 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1789800000000-WidenSecurityEventLastErrorColumns.ts +54 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1789900000000-AddNetworkSiteRollupPolicyAndMaintenance.ts +64 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790000000000-AddTelemetrySourceMap.ts +64 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790000000001-AddSnmpConfigsToNetworkDeviceDiscoveryScan.ts +72 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790003445000-AddSnmpEnabledToNetworkDeviceDiscoveryScan.ts +31 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790100000000-AddResourceActivityFeeds.ts +489 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +18 -0
- package/Server/Middleware/IdentityRateLimit.ts +53 -3
- package/Server/Services/AIService.ts +181 -41
- package/Server/Services/CephClusterFeedService.ts +99 -0
- package/Server/Services/CephClusterLabelRuleEngineService.ts +29 -0
- package/Server/Services/CephClusterOwnerRuleEngineService.ts +23 -0
- package/Server/Services/CephClusterOwnerTeamService.ts +129 -0
- package/Server/Services/CephClusterOwnerUserService.ts +123 -0
- package/Server/Services/CephClusterService.ts +223 -2
- package/Server/Services/CloudResourceFeedService.ts +99 -0
- package/Server/Services/CloudResourceLabelRuleEngineService.ts +30 -0
- package/Server/Services/CloudResourceOwnerRuleEngineService.ts +33 -0
- package/Server/Services/CloudResourceOwnerTeamService.ts +129 -0
- package/Server/Services/CloudResourceOwnerUserService.ts +123 -0
- package/Server/Services/CloudResourceService.ts +227 -2
- package/Server/Services/DatabaseService.ts +265 -0
- package/Server/Services/DockerHostFeedService.ts +99 -0
- package/Server/Services/DockerHostLabelRuleEngineService.ts +29 -0
- package/Server/Services/DockerHostOwnerRuleEngineService.ts +23 -0
- package/Server/Services/DockerHostOwnerTeamService.ts +129 -0
- package/Server/Services/DockerHostOwnerUserService.ts +123 -0
- package/Server/Services/DockerHostService.ts +227 -2
- package/Server/Services/DockerSwarmClusterFeedService.ts +102 -0
- package/Server/Services/DockerSwarmClusterLabelRuleEngineService.ts +30 -0
- package/Server/Services/DockerSwarmClusterOwnerRuleEngineService.ts +24 -0
- package/Server/Services/DockerSwarmClusterOwnerTeamService.ts +133 -0
- package/Server/Services/DockerSwarmClusterOwnerUserService.ts +127 -0
- package/Server/Services/DockerSwarmClusterService.ts +229 -2
- package/Server/Services/EnterpriseLicenseService.ts +15 -7
- package/Server/Services/ExceptionAggregationService.ts +12 -2
- package/Server/Services/HostFeedService.ts +99 -0
- package/Server/Services/HostLabelRuleEngineService.ts +29 -0
- package/Server/Services/HostOwnerRuleEngineService.ts +23 -0
- package/Server/Services/HostOwnerTeamService.ts +129 -0
- package/Server/Services/HostOwnerUserService.ts +123 -0
- package/Server/Services/HostService.ts +215 -2
- package/Server/Services/IncidentService.ts +11 -0
- package/Server/Services/Index.ts +24 -0
- package/Server/Services/KubernetesClusterFeedService.ts +99 -0
- package/Server/Services/KubernetesClusterLabelRuleEngineService.ts +30 -0
- package/Server/Services/KubernetesClusterOwnerRuleEngineService.ts +24 -0
- package/Server/Services/KubernetesClusterOwnerTeamService.ts +133 -0
- package/Server/Services/KubernetesClusterOwnerUserService.ts +127 -0
- package/Server/Services/KubernetesClusterService.ts +231 -2
- package/Server/Services/LogAggregationService.ts +23 -280
- package/Server/Services/MetricAggregationService.ts +98 -1
- package/Server/Services/MonitorService.ts +177 -13
- package/Server/Services/MonitorTemplateService.ts +111 -0
- package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +777 -86
- package/Server/Services/NetworkDeviceAutoImportRuleService.ts +199 -16
- package/Server/Services/NetworkDeviceDiscoveryScanService.ts +1055 -14
- package/Server/Services/NetworkDeviceService.ts +750 -4
- package/Server/Services/NetworkInterfaceService.ts +415 -0
- package/Server/Services/NetworkSiteService.ts +485 -52
- package/Server/Services/PodmanHostFeedService.ts +99 -0
- package/Server/Services/PodmanHostLabelRuleEngineService.ts +29 -0
- package/Server/Services/PodmanHostOwnerRuleEngineService.ts +23 -0
- package/Server/Services/PodmanHostOwnerTeamService.ts +129 -0
- package/Server/Services/PodmanHostOwnerUserService.ts +123 -0
- package/Server/Services/PodmanHostService.ts +227 -2
- package/Server/Services/ProjectService.ts +16 -10
- package/Server/Services/ProxmoxClusterFeedService.ts +99 -0
- package/Server/Services/ProxmoxClusterLabelRuleEngineService.ts +30 -0
- package/Server/Services/ProxmoxClusterOwnerRuleEngineService.ts +24 -0
- package/Server/Services/ProxmoxClusterOwnerTeamService.ts +131 -0
- package/Server/Services/ProxmoxClusterOwnerUserService.ts +124 -0
- package/Server/Services/ProxmoxClusterService.ts +225 -2
- package/Server/Services/ScheduledMaintenanceStateTimelineService.ts +61 -0
- package/Server/Services/ServiceFeedService.ts +99 -0
- package/Server/Services/ServiceLabelRuleEngineService.ts +29 -0
- package/Server/Services/ServiceOwnerRuleEngineService.ts +26 -0
- package/Server/Services/ServiceOwnerTeamService.ts +129 -0
- package/Server/Services/ServiceOwnerUserService.ts +123 -0
- package/Server/Services/ServiceService.ts +227 -3
- package/Server/Services/StatusPageSubscriberService.ts +7 -0
- package/Server/Services/TelemetryAttributeService.ts +13 -3
- package/Server/Services/TelemetrySourceMapService.ts +307 -0
- package/Server/Services/ThreatIntelFeedService.ts +222 -0
- package/Server/Services/ThreatIntelIndicatorService.ts +428 -0
- package/Server/Services/TraceAggregationService.ts +101 -11
- package/Server/Services/UserService.ts +13 -6
- package/Server/Services/UserTwoFactorBackupCodeService.ts +127 -0
- package/Server/Services/UserWebhookService.ts +11 -2
- package/Server/Static/Brand/README.md +38 -0
- package/Server/Static/Brand/favicons/apple-touch-icon.png +0 -0
- package/Server/Static/Brand/favicons/favicon-16x16.png +0 -0
- package/Server/Static/Brand/favicons/favicon-32x32.png +0 -0
- package/Server/Static/Brand/favicons/favicon.ico +0 -0
- package/Server/Static/Brand/favicons/safari-pinned-tab.svg +31 -0
- package/Server/Static/Brand/hou-wb.svg +1 -0
- package/Server/Static/Brand/oneuptime-logo.svg +1 -0
- package/Server/Static/Brand/ou-wb.svg +1 -0
- package/Server/Static/Vendor/README.md +4 -0
- package/Server/Types/AnalyticsDatabase/ModelPermission.ts +13 -3
- package/Server/Types/Database/AggregateBy.ts +83 -0
- package/Server/Types/Database/AggregateResultUtil.ts +126 -0
- package/Server/Types/Database/JSONColumnQuery.ts +18 -0
- package/Server/Types/Database/QueryHelper.ts +40 -0
- package/Server/Types/Database/QueryUtil.ts +26 -0
- package/Server/Types/Workflow/Components/API/Utils.ts +10 -1
- package/Server/Types/Workflow/Components/JavaScript.ts +8 -0
- package/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.ts +9 -0
- package/Server/Utils/AI/SRE/InvestigationGrader.ts +18 -0
- package/Server/Utils/AnalyticsDatabase/AttributeFilterStatement.ts +422 -0
- package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +176 -0
- package/Server/Utils/DataSource/HttpFetch.ts +18 -0
- package/Server/Utils/Database/RelationIdUtil.ts +42 -0
- package/Server/Utils/Marketing/MarketingEventUtil.ts +38 -9
- package/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.ts +34 -3
- package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +9 -1
- package/Server/Utils/Monitor/Criteria/SyntheticMonitor.ts +28 -10
- package/Server/Utils/Monitor/MonitorAlert.ts +541 -332
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +330 -64
- package/Server/Utils/Monitor/MonitorIncident.ts +640 -434
- package/Server/Utils/Monitor/MonitorResource.ts +226 -49
- package/Server/Utils/Monitor/NetworkDeviceWalkUtil.ts +46 -3
- package/Server/Utils/Monitor/NetworkInventoryUtil.ts +23 -102
- package/Server/Utils/Monitor/PerEntityCriteriaFanOut.ts +329 -0
- package/Server/Utils/NetworkDevice/DeviceHealthAggregation.ts +427 -0
- package/Server/Utils/NetworkSite/NetworkSiteMaintenanceSuppression.ts +310 -0
- package/Server/Utils/OnCallNotificationContext.ts +686 -0
- package/Server/Utils/PrivateNetworkWebhookConfig.ts +549 -0
- package/Server/Utils/ResourceFeed/ResourceFeedUtil.ts +139 -0
- package/Server/Utils/Response.ts +11 -1
- package/Server/Utils/SSRFProtection.ts +230 -60
- package/Server/Utils/SecurityEvent/ConnectorErrorMessage.ts +106 -0
- package/Server/Utils/SecurityEvent/DetectionRuleEvaluator.ts +84 -284
- package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.ts +47 -20
- package/Server/Utils/SecurityEvent/SecurityEventAlerting.ts +318 -0
- package/Server/Utils/SecurityEvent/ThreatIntel/TaxiiClient.ts +199 -0
- package/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelEnricher.ts +252 -0
- package/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelFeedPoller.ts +739 -0
- package/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelMatcher.ts +533 -0
- package/Server/Utils/StartServer.ts +83 -56
- package/Server/Utils/StatusPageSubscriberWebhook.ts +3 -0
- package/Server/Utils/Telemetry/SourceMapResolver.ts +480 -0
- package/Server/Utils/TwoFactorBackupCodeNotification.ts +106 -0
- package/Server/Utils/VM/VMAPI.ts +3 -0
- package/Server/Utils/VM/VMRunner.ts +27 -1
- package/Server/Utils/VendorAssets.ts +42 -0
- package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +136 -6
- package/Server/Views/AcknowledgeUserOnCallNotification.ejs +11 -9
- package/Server/Views/Partials/Head.ejs +9 -9
- package/Server/Views/Partials/OnCallNotificationDetails.ejs +48 -0
- package/Server/Views/ViewMessage.ejs +11 -9
- package/Tests/App/Accounts/LoginTwoFactorRecovery.test.tsx +972 -0
- package/Tests/App/Dashboard/AddNeighborToMonitoringModal.test.tsx +401 -0
- package/Tests/App/Dashboard/DiscoveryScanEditForm.test.tsx +707 -0
- package/Tests/App/Dashboard/DiscoveryScanWizardValidation.test.tsx +1908 -18
- package/Tests/App/Dashboard/ResourceFeed.test.tsx +230 -0
- package/Tests/App/Dashboard/ResourceFeedPageWiring.test.ts +216 -0
- package/Tests/App/Dashboard/TopologyAddToMonitoring.test.tsx +192 -0
- package/Tests/App/Dashboard/WorkspaceNotificationRuleConditions.test.tsx +439 -0
- package/Tests/Models/DatabaseModels/DateColumnDeserialization.test.ts +182 -0
- package/Tests/Models/DatabaseModels/RelationColumnModelTypeCoverage.test.ts +82 -0
- package/Tests/Models/DatabaseModels/ResourceFeedModels.test.ts +398 -0
- package/Tests/Models/DiscoveryScanNameColumn.test.ts +151 -16
- package/Tests/Models/DiscoveryScanSnmpEnabledColumn.test.ts +593 -0
- package/Tests/Models/NetworkDeviceCreateContract.test.ts +102 -0
- package/Tests/Server/API/AIGenerationProjectAIToggle.test.ts +607 -0
- package/Tests/Server/API/AIGenerationRequestBudget.test.ts +355 -0
- package/Tests/Server/API/AIKillSwitchBackstop.test.ts +602 -0
- package/Tests/Server/API/BaseAPIUpdateDateColumns.test.ts +154 -0
- package/Tests/Server/API/MicrosoftTeamsBotTestEndpoint.test.ts +335 -0
- package/Tests/Server/API/UserOnCallLogTimelineAcknowledgePage.test.ts +611 -0
- package/Tests/Server/API/UserTotpAuthAPI.test.ts +498 -4
- package/Tests/Server/API/UserWebAuthnBackupCodeMinting.test.ts +682 -0
- package/Tests/Server/Infrastructure/ExampleDockerfiles.test.ts +595 -0
- package/Tests/Server/Services/AIServiceDailyBudget.test.ts +9 -0
- package/Tests/Server/Services/AIServiceProjectAccess.test.ts +6 -0
- package/Tests/Server/Services/AutoImportScanCredentialSelect.test.ts +18 -0
- package/Tests/Server/Services/DatabaseServiceAggregateBy.test.ts +590 -0
- package/Tests/Server/Services/DatabaseServiceUpdateWriteRouting.test.ts +12 -0
- package/Tests/Server/Services/DiscoveryScanClaimHookFreeSafety.test.ts +162 -26
- package/Tests/Server/Services/EnterpriseLicenseServiceCreate.test.ts +292 -0
- package/Tests/Server/Services/FeedRetentionConsistency.test.ts +119 -12
- package/Tests/Server/Services/LogAggregationAttributeOperators.test.ts +109 -0
- package/Tests/Server/Services/MetricAggregationAttributeOperators.test.ts +170 -0
- package/Tests/Server/Services/MonitorTemplateServiceNetworkDeviceSync.test.ts +383 -0
- package/Tests/Server/Services/NetworkDeviceAutoImportRuleEngineService.test.ts +997 -3
- package/Tests/Server/Services/NetworkDeviceAutoImportRuleService.test.ts +830 -0
- package/Tests/Server/Services/NetworkDeviceAutoMonitorLifecycle.test.ts +528 -0
- package/Tests/Server/Services/NetworkDeviceDiscoveryScanService.test.ts +3141 -1
- package/Tests/Server/Services/NetworkDeviceRegisteredHostnames.test.ts +1023 -0
- package/Tests/Server/Services/NetworkDeviceSiteAssignmentRuleSkip.test.ts +728 -0
- package/Tests/Server/Services/NetworkInterfaceServiceUpsert.test.ts +795 -0
- package/Tests/Server/Services/NetworkSiteRollupPolicyAndMaintenance.test.ts +903 -0
- package/Tests/Server/Services/NetworkSiteService.test.ts +165 -24
- package/Tests/Server/Services/ProjectServiceChangePlan.test.ts +5 -3
- package/Tests/Server/Services/ProjectServiceCreateSubscriptionStarted.test.ts +5 -2
- package/Tests/Server/Services/ResourceCreationFeedWrites.test.ts +304 -0
- package/Tests/Server/Services/ResourceFeedServices.test.ts +269 -0
- package/Tests/Server/Services/ResourceOwnerFeedWrites.test.ts +245 -0
- package/Tests/Server/Services/SecurityEventLastErrorColumnWidth.test.ts +792 -0
- package/Tests/Server/Services/TelemetrySourceMapService.test.ts +483 -0
- package/Tests/Server/Services/ThreatIntelFeedService.test.ts +351 -0
- package/Tests/Server/Services/ThreatIntelIndicatorService.test.ts +366 -0
- package/Tests/Server/Services/TraceAggregationAttributeOperators.test.ts +507 -0
- package/Tests/Server/Services/UserTwoFactorBackupCodeGenerateIfNone.test.ts +705 -0
- package/Tests/Server/Services/WorkspaceNotificationRuleOnCallDutyPolicy.test.ts +306 -0
- package/Tests/Server/Types/Database/AggregateResultUtil.test.ts +386 -0
- package/Tests/Server/Types/Database/Permissions/SelectRejectionMessageContract.test.ts +424 -0
- package/Tests/Server/Types/Database/QueryHelperWildcard.test.ts +142 -0
- package/Tests/Server/Types/Workflow/Components/ApiComponentPrivateNetwork.test.ts +163 -0
- package/Tests/Server/Types/Workflow/Components/JavaScriptPrivateNetwork.test.ts +124 -0
- package/Tests/Server/Utils/AI/CodeFixAgentCompletion.test.ts +5 -0
- package/Tests/Server/Utils/AI/InvestigationGrader.test.ts +39 -1
- package/Tests/Server/Utils/AnalyticsDatabase/AttributeFilterStatement.test.ts +338 -0
- package/Tests/Server/Utils/AnalyticsDatabase/StatementGeneratorWildcard.test.ts +383 -0
- package/Tests/Server/Utils/Marketing/EmittedMarketingEvent.ts +23 -0
- package/Tests/Server/Utils/Marketing/MarketingEventUtil.test.ts +51 -0
- package/Tests/Server/Utils/Monitor/Criteria/SyntheticMonitorCriteria.test.ts +259 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorPerSeriesFanout.test.ts +557 -0
- package/Tests/Server/Utils/Monitor/MonitorDependencySuppressionCreatorSkip.test.ts +12 -2
- package/Tests/Server/Utils/Monitor/NetworkDeviceWalkLogWritePath.test.ts +404 -0
- package/Tests/Server/Utils/Monitor/NetworkDeviceWalkUtil.test.ts +8 -2
- package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +125 -98
- package/Tests/Server/Utils/Monitor/PerEntityCriteriaFanOut.test.ts +444 -0
- package/Tests/Server/Utils/Monitor/PerSeriesSecondEntityAlerting.test.ts +1112 -0
- package/Tests/Server/Utils/NetworkDevice/DeviceHealthAggregation.test.ts +717 -0
- package/Tests/Server/Utils/NetworkDevice/RulePatternValidator.test.ts +78 -0
- package/Tests/Server/Utils/NetworkSite/NetworkSiteMaintenanceSuppression.test.ts +363 -0
- package/Tests/Server/Utils/OfflineAssetHygiene.test.ts +35 -0
- package/Tests/Server/Utils/OnCallNotificationContext.test.ts +908 -0
- package/Tests/Server/Utils/PrivateNetworkWebhookConfig.test.ts +423 -0
- package/Tests/Server/Utils/ResourceFeed/ResourceFeedUtil.test.ts +191 -0
- package/Tests/Server/Utils/SSRFProtectionPrivateNetwork.test.ts +597 -0
- package/Tests/Server/Utils/SecurityEvent/ConnectorErrorMessage.test.ts +819 -0
- package/Tests/Server/Utils/SecurityEvent/DetectionRuleEvaluator.test.ts +381 -0
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPoller.test.ts +417 -0
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPollerFailureTaxonomy.test.ts +819 -0
- package/Tests/Server/Utils/SecurityEvent/SecurityEventAlerting.test.ts +246 -0
- package/Tests/Server/Utils/SecurityEvent/ThreatIntel/TaxiiClient.test.ts +282 -0
- package/Tests/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelEnricher.test.ts +312 -0
- package/Tests/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelFeedPoller.test.ts +854 -0
- package/Tests/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelMatcher.test.ts +437 -0
- package/Tests/Server/Utils/StartServerErrorStatus.test.ts +225 -0
- package/Tests/Server/Utils/StatusPage/MonitorRulePatternValidator.test.ts +62 -0
- package/Tests/Server/Utils/StatusPageSubscriberWebhookPrivateNetwork.test.ts +119 -0
- package/Tests/Server/Utils/Telemetry/SourceMapResolver.test.ts +542 -0
- package/Tests/Server/Utils/TwoFactorBackupCodeNotification.test.ts +272 -0
- package/Tests/Server/Utils/VM/VMRunnerPrivateNetworkWiring.test.ts +111 -0
- package/Tests/Server/Utils/VendorAssets.test.ts +117 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsChannelSend.test.ts +101 -4
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsInstallStateDiagnostics.test.ts +922 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsRosterDiagnosticMessages.test.ts +642 -0
- package/Tests/Server/Views/OnCallAcknowledgePage.test.ts +430 -0
- package/Tests/Types/API/URLQueryString.test.ts +472 -0
- package/Tests/Types/BaseDatabase/Wildcard.test.ts +163 -0
- package/Tests/Types/BaseDatabase/WildcardPattern.test.ts +149 -0
- package/Tests/Types/Database/DateColumnValue.test.ts +265 -0
- package/Tests/Types/DateToIsoStringOrNull.test.ts +67 -0
- package/Tests/Types/Log/LogQueryToFilter.test.ts +218 -43
- package/Tests/Types/Monitor/KubernetesTemplateGroupByKeys.test.ts +225 -0
- package/Tests/Types/Monitor/TemplateGroupByKeys.test.ts +296 -0
- package/Tests/Types/NetworkAutomation/RuleRunResult.test.ts +102 -0
- package/Tests/Types/NetworkAutomation/RuleRunResultDescribe.test.ts +145 -0
- package/Tests/Types/NetworkSite/SiteHealthRollupPolicy.test.ts +58 -0
- package/Tests/Types/SerializableObjectDictionaryImportCycle.test.ts +15 -0
- package/Tests/Types/Telemetry/TelemetrySearchQuery.test.ts +620 -0
- package/Tests/Types/WhatsApp/WhatsAppTemplates.test.ts +110 -0
- package/Tests/Types/Workspace/NotificationRuleConditionUtil.test.ts +76 -6
- package/Tests/Types/Workspace/NotificationRules/NotificationRuleCondition.test.ts +16 -4
- package/Tests/Types/Workspace/NotificationRules/OnCallDutyPolicyConditions.test.ts +669 -0
- package/Tests/UI/Components/DictionaryFilterOperatorWildcard.test.ts +175 -0
- package/Tests/UI/Components/IconOpticalSize.test.tsx +377 -0
- package/Tests/UI/MicrosoftTeams/MicrosoftTeamsChatsCardInstallGuidance.test.tsx +332 -0
- package/Tests/UI/MicrosoftTeams/MicrosoftTeamsInstallGuidanceContent.test.tsx +643 -0
- package/Tests/Utils/Monitor/InterfaceInventoryUtil.test.ts +824 -0
- package/Tests/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.test.ts +626 -0
- package/Tests/Utils/Monitor/NetworkTopologyUtil.test.ts +718 -0
- package/Tests/Utils/NetworkDevice/DeviceHealthStateUtil.test.ts +59 -0
- package/Tests/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.test.ts +287 -2
- package/Tests/Utils/NetworkDiscovery/DiscoveryImportEligibility.test.ts +73 -0
- package/Tests/Utils/NetworkDiscovery/PingMonitorBuilder.test.ts +317 -0
- package/Tests/Utils/NetworkDiscovery/RescanIntervalUtil.test.ts +262 -0
- package/Tests/Utils/NetworkDiscovery/ScanModeUtil.test.ts +474 -0
- package/Tests/Utils/NetworkDiscovery/SnmpScanConfigUtil.test.ts +2442 -0
- package/Tests/Utils/NetworkSite/SiteMaintenanceUtil.test.ts +188 -0
- package/Tests/Utils/NetworkSite/SiteStatusRollupUtil.test.ts +522 -0
- package/Tests/Utils/NetworkSite/SiteUptimeUtil.test.ts +694 -0
- package/Tests/Utils/SecurityEvent/ThreatIntel/StixPatternParser.test.ts +281 -0
- package/Tests/Utils/Telemetry/CrossSignalScope.test.ts +87 -67
- package/Types/API/URL.ts +45 -10
- package/Types/AnalyticsDatabase/AnalyticsTableName.ts +8 -0
- package/Types/BaseDatabase/NotWildcard.ts +86 -0
- package/Types/BaseDatabase/Wildcard.ts +89 -0
- package/Types/BaseDatabase/WildcardPattern.ts +176 -0
- package/Types/Database/DateColumnValue.ts +184 -0
- package/Types/Database/TableColumn.ts +40 -5
- package/Types/Date.ts +37 -0
- package/Types/Email/EmailTemplateType.ts +1 -0
- package/Types/JSON.ts +8 -0
- package/Types/Log/LogQueryToFilter.ts +167 -129
- package/Types/Monitor/DockerAlertTemplates.ts +43 -12
- package/Types/Monitor/HostAlertTemplates.ts +31 -3
- package/Types/Monitor/KubernetesAlertTemplates.ts +98 -0
- package/Types/Monitor/MonitorStep.ts +49 -0
- package/Types/Monitor/PodmanAlertTemplates.ts +39 -12
- package/Types/Monitor/SnmpMonitor/CdpNeighbor.ts +14 -0
- package/Types/Monitor/SnmpMonitor/LldpNeighbor.ts +11 -0
- package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +11 -4
- package/Types/NetworkAutomation/RuleRunResult.ts +191 -2
- package/Types/NetworkSite/SiteHealthRollupPolicy.ts +96 -0
- package/Types/Permission.ts +411 -0
- package/Types/Probe/ProbeApiIngestResponse.ts +42 -0
- package/Types/SecurityEvent/ThreatIntelConstants.ts +118 -0
- package/Types/SerializableObjectDictionary.ts +8 -0
- package/Types/Telemetry/SourceMap.ts +56 -0
- package/Types/Telemetry/TelemetrySearchQuery.ts +949 -0
- package/Types/Workspace/NotificationRules/NotificationRuleCondition.ts +12 -1
- package/UI/Components/Dictionary/DictionaryFilterOperator.ts +83 -0
- package/UI/Components/Icon/Icon.tsx +28 -1
- package/UI/Components/LogsViewer/components/LogSearchBar.tsx +26 -4
- package/UI/Components/LogsViewer/components/LogSearchHelp.tsx +34 -16
- package/UI/Components/TelemetryViewer/components/TelemetrySearchBar.tsx +15 -2
- package/Utils/Metrics/MetricExplorerUrl.ts +77 -15
- package/Utils/Monitor/InterfaceInventoryUtil.ts +251 -0
- package/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.ts +333 -0
- package/Utils/Monitor/NetworkTopologyUtil.ts +249 -28
- package/Utils/NetworkDevice/DeviceHealthStateUtil.ts +14 -6
- package/Utils/NetworkDiscovery/AutoImportRuleMatcher.ts +2 -0
- package/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.ts +49 -18
- package/Utils/NetworkDiscovery/PingMonitorBuilder.ts +215 -0
- package/Utils/NetworkDiscovery/RescanIntervalUtil.ts +148 -0
- package/Utils/NetworkDiscovery/ScanModeUtil.ts +105 -0
- package/Utils/NetworkDiscovery/SnmpScanConfigUtil.ts +827 -0
- package/Utils/NetworkSite/SiteMaintenanceUtil.ts +110 -0
- package/Utils/NetworkSite/SiteStatusRollupUtil.ts +350 -19
- package/Utils/NetworkSite/SiteUptimeUtil.ts +422 -21
- package/Utils/SecurityEvent/ThreatIntel/StixPatternParser.ts +383 -0
- package/Utils/Telemetry/CrossSignalScope.ts +37 -39
- package/build/dist/Models/AnalyticsModels/Index.js +2 -0
- package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/ThreatIntelIndicator.js +325 -0
- package/build/dist/Models/AnalyticsModels/ThreatIntelIndicator.js.map +1 -0
- package/build/dist/Models/DatabaseModels/AlertSeverity.js +4 -1
- package/build/dist/Models/DatabaseModels/AlertSeverity.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CephClusterFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/CephClusterFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/CloudResourceFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/CloudResourceFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js +11 -0
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DetectionRule.js +9 -3
- package/build/dist/Models/DatabaseModels/DetectionRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerHostFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/DockerHostFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js +9 -3
- package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js.map +1 -1
- package/build/dist/Models/DatabaseModels/HostFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/HostFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/IncidentSeverity.js +4 -1
- package/build/dist/Models/DatabaseModels/IncidentSeverity.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +22 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/KubernetesClusterFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/KubernetesClusterFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Monitor.js +81 -0
- package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDevice.js +103 -7
- package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js +91 -6
- package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +276 -31
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkSite.js +124 -1
- package/build/dist/Models/DatabaseModels/NetworkSite.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js +1 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/PodmanHostFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/PodmanHostFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ProxmoxClusterFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/ProxmoxClusterFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +66 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServiceFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/ServiceFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/TelemetrySourceMap.js +496 -0
- package/build/dist/Models/DatabaseModels/TelemetrySourceMap.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ThreatIntelFeed.js +800 -0
- package/build/dist/Models/DatabaseModels/ThreatIntelFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/UserOnCallLog.js +1 -0
- package/build/dist/Models/DatabaseModels/UserOnCallLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserTotpAuth.js +1 -0
- package/build/dist/Models/DatabaseModels/UserTotpAuth.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserWebAuthn.js +1 -0
- package/build/dist/Models/DatabaseModels/UserWebAuthn.js.map +1 -1
- package/build/dist/Server/API/AlertAPI.js +18 -1
- package/build/dist/Server/API/AlertAPI.js.map +1 -1
- package/build/dist/Server/API/BaseAPI.js +8 -1
- package/build/dist/Server/API/BaseAPI.js.map +1 -1
- package/build/dist/Server/API/IncidentAPI.js +35 -1
- package/build/dist/Server/API/IncidentAPI.js.map +1 -1
- package/build/dist/Server/API/IncidentEpisodeAPI.js +18 -1
- package/build/dist/Server/API/IncidentEpisodeAPI.js.map +1 -1
- package/build/dist/Server/API/MicrosoftTeamsAPI.js +30 -2
- package/build/dist/Server/API/MicrosoftTeamsAPI.js.map +1 -1
- package/build/dist/Server/API/ScheduledMaintenanceAPI.js +18 -1
- package/build/dist/Server/API/ScheduledMaintenanceAPI.js.map +1 -1
- package/build/dist/Server/API/SlackAPI.js +45 -0
- package/build/dist/Server/API/SlackAPI.js.map +1 -1
- package/build/dist/Server/API/TelemetryAPI.js +100 -35
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/API/UserOnCallLogTimelineAPI.js +64 -59
- package/build/dist/Server/API/UserOnCallLogTimelineAPI.js.map +1 -1
- package/build/dist/Server/API/UserTotpAuthAPI.js +65 -1
- package/build/dist/Server/API/UserTotpAuthAPI.js.map +1 -1
- package/build/dist/Server/API/UserWebAuthnAPI.js +42 -1
- package/build/dist/Server/API/UserWebAuthnAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787923136162-MigrationName.js +26 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787923136162-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789600000000-AddAutoProvisionedNetworkDeviceMonitors.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789600000000-AddAutoProvisionedNetworkDeviceMonitors.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789700000000-AddNetworkScaleIndexes.js +88 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789700000000-AddNetworkScaleIndexes.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789800000000-WidenSecurityEventLastErrorColumns.js +39 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789800000000-WidenSecurityEventLastErrorColumns.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789900000000-AddNetworkSiteRollupPolicyAndMaintenance.js +34 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789900000000-AddNetworkSiteRollupPolicyAndMaintenance.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790000000000-AddTelemetrySourceMap.js +32 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790000000000-AddTelemetrySourceMap.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790000000001-AddSnmpConfigsToNetworkDeviceDiscoveryScan.js +61 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790000000001-AddSnmpConfigsToNetworkDeviceDiscoveryScan.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790003445000-AddSnmpEnabledToNetworkDeviceDiscoveryScan.js +23 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790003445000-AddSnmpEnabledToNetworkDeviceDiscoveryScan.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790100000000-AddResourceActivityFeeds.js +179 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790100000000-AddResourceActivityFeeds.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/IdentityRateLimit.js +40 -3
- package/build/dist/Server/Middleware/IdentityRateLimit.js.map +1 -1
- package/build/dist/Server/Services/AIService.js +177 -30
- package/build/dist/Server/Services/AIService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterFeedService.js +89 -0
- package/build/dist/Server/Services/CephClusterFeedService.js.map +1 -0
- package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js +21 -0
- package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/CephClusterOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterOwnerUserService.js +113 -0
- package/build/dist/Server/Services/CephClusterOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterService.js +175 -1
- package/build/dist/Server/Services/CephClusterService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceFeedService.js +89 -0
- package/build/dist/Server/Services/CloudResourceFeedService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js +28 -3
- package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/CloudResourceOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceOwnerUserService.js +113 -0
- package/build/dist/Server/Services/CloudResourceOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceService.js +177 -1
- package/build/dist/Server/Services/CloudResourceService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +201 -0
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostFeedService.js +89 -0
- package/build/dist/Server/Services/DockerHostFeedService.js.map +1 -0
- package/build/dist/Server/Services/DockerHostLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/DockerHostLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js +21 -0
- package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/DockerHostOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostOwnerUserService.js +113 -0
- package/build/dist/Server/Services/DockerHostOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostService.js +177 -1
- package/build/dist/Server/Services/DockerHostService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterFeedService.js +90 -0
- package/build/dist/Server/Services/DockerSwarmClusterFeedService.js.map +1 -0
- package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js +21 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterOwnerUserService.js +113 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterService.js +175 -1
- package/build/dist/Server/Services/DockerSwarmClusterService.js.map +1 -1
- package/build/dist/Server/Services/EnterpriseLicenseService.js +40 -30
- package/build/dist/Server/Services/EnterpriseLicenseService.js.map +1 -1
- package/build/dist/Server/Services/ExceptionAggregationService.js +8 -2
- package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
- package/build/dist/Server/Services/HostFeedService.js +89 -0
- package/build/dist/Server/Services/HostFeedService.js.map +1 -0
- package/build/dist/Server/Services/HostLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/HostLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/HostOwnerRuleEngineService.js +21 -0
- package/build/dist/Server/Services/HostOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/HostOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/HostOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/HostOwnerUserService.js +113 -0
- package/build/dist/Server/Services/HostOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/HostService.js +175 -1
- package/build/dist/Server/Services/HostService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +10 -0
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +24 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterFeedService.js +89 -0
- package/build/dist/Server/Services/KubernetesClusterFeedService.js.map +1 -0
- package/build/dist/Server/Services/KubernetesClusterLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/KubernetesClusterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js +21 -0
- package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/KubernetesClusterOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterOwnerUserService.js +113 -0
- package/build/dist/Server/Services/KubernetesClusterOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterService.js +177 -1
- package/build/dist/Server/Services/KubernetesClusterService.js.map +1 -1
- package/build/dist/Server/Services/LogAggregationService.js +19 -196
- package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MetricAggregationService.js +59 -0
- package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +115 -13
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/MonitorTemplateService.js +86 -0
- package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +561 -67
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js +130 -16
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js +850 -8
- package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceService.js +594 -5
- package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
- package/build/dist/Server/Services/NetworkInterfaceService.js +306 -0
- package/build/dist/Server/Services/NetworkInterfaceService.js.map +1 -1
- package/build/dist/Server/Services/NetworkSiteService.js +408 -47
- package/build/dist/Server/Services/NetworkSiteService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostFeedService.js +89 -0
- package/build/dist/Server/Services/PodmanHostFeedService.js.map +1 -0
- package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js +21 -0
- package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/PodmanHostOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostOwnerUserService.js +113 -0
- package/build/dist/Server/Services/PodmanHostOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostService.js +177 -1
- package/build/dist/Server/Services/PodmanHostService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +40 -30
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterFeedService.js +89 -0
- package/build/dist/Server/Services/ProxmoxClusterFeedService.js.map +1 -0
- package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js +21 -0
- package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/ProxmoxClusterOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterOwnerUserService.js +113 -0
- package/build/dist/Server/Services/ProxmoxClusterOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterService.js +175 -1
- package/build/dist/Server/Services/ProxmoxClusterService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js +56 -0
- package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/ServiceFeedService.js +89 -0
- package/build/dist/Server/Services/ServiceFeedService.js.map +1 -0
- package/build/dist/Server/Services/ServiceLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/ServiceLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js +24 -0
- package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ServiceOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/ServiceOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/ServiceOwnerUserService.js +113 -0
- package/build/dist/Server/Services/ServiceOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/ServiceService.js +173 -2
- package/build/dist/Server/Services/ServiceService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageSubscriberService.js +7 -0
- package/build/dist/Server/Services/StatusPageSubscriberService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryAttributeService.js +9 -3
- package/build/dist/Server/Services/TelemetryAttributeService.js.map +1 -1
- package/build/dist/Server/Services/TelemetrySourceMapService.js +265 -0
- package/build/dist/Server/Services/TelemetrySourceMapService.js.map +1 -0
- package/build/dist/Server/Services/ThreatIntelFeedService.js +157 -0
- package/build/dist/Server/Services/ThreatIntelFeedService.js.map +1 -0
- package/build/dist/Server/Services/ThreatIntelIndicatorService.js +276 -0
- package/build/dist/Server/Services/ThreatIntelIndicatorService.js.map +1 -0
- package/build/dist/Server/Services/TraceAggregationService.js +62 -6
- package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +22 -13
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Services/UserTwoFactorBackupCodeService.js +120 -0
- package/build/dist/Server/Services/UserTwoFactorBackupCodeService.js.map +1 -1
- package/build/dist/Server/Services/UserWebhookService.js +11 -2
- package/build/dist/Server/Services/UserWebhookService.js.map +1 -1
- package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js +12 -1
- package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js.map +1 -1
- package/build/dist/Server/Types/Database/AggregateBy.js +2 -0
- package/build/dist/Server/Types/Database/AggregateBy.js.map +1 -0
- package/build/dist/Server/Types/Database/AggregateResultUtil.js +90 -0
- package/build/dist/Server/Types/Database/AggregateResultUtil.js.map +1 -0
- package/build/dist/Server/Types/Database/JSONColumnQuery.js +14 -0
- package/build/dist/Server/Types/Database/JSONColumnQuery.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js +42 -0
- package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryUtil.js +18 -0
- package/build/dist/Server/Types/Database/QueryUtil.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Utils.js +10 -1
- package/build/dist/Server/Types/Workflow/Components/API/Utils.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/JavaScript.js +8 -0
- package/build/dist/Server/Types/Workflow/Components/JavaScript.js.map +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js +8 -0
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js +15 -0
- package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/AttributeFilterStatement.js +266 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/AttributeFilterStatement.js.map +1 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +134 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
- package/build/dist/Server/Utils/DataSource/HttpFetch.js +8 -0
- package/build/dist/Server/Utils/DataSource/HttpFetch.js.map +1 -1
- package/build/dist/Server/Utils/Database/RelationIdUtil.js +31 -0
- package/build/dist/Server/Utils/Database/RelationIdUtil.js.map +1 -1
- package/build/dist/Server/Utils/Marketing/MarketingEventUtil.js +26 -8
- package/build/dist/Server/Utils/Marketing/MarketingEventUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js +42 -17
- package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +9 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SyntheticMonitor.js +15 -2
- package/build/dist/Server/Utils/Monitor/Criteria/SyntheticMonitor.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +386 -271
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +278 -64
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +469 -350
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +183 -44
- package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js +46 -3
- package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +18 -91
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/PerEntityCriteriaFanOut.js +194 -0
- package/build/dist/Server/Utils/Monitor/PerEntityCriteriaFanOut.js.map +1 -0
- package/build/dist/Server/Utils/NetworkDevice/DeviceHealthAggregation.js +332 -0
- package/build/dist/Server/Utils/NetworkDevice/DeviceHealthAggregation.js.map +1 -0
- package/build/dist/Server/Utils/NetworkSite/NetworkSiteMaintenanceSuppression.js +279 -0
- package/build/dist/Server/Utils/NetworkSite/NetworkSiteMaintenanceSuppression.js.map +1 -0
- package/build/dist/Server/Utils/OnCallNotificationContext.js +415 -0
- package/build/dist/Server/Utils/OnCallNotificationContext.js.map +1 -0
- package/build/dist/Server/Utils/PrivateNetworkWebhookConfig.js +424 -0
- package/build/dist/Server/Utils/PrivateNetworkWebhookConfig.js.map +1 -0
- package/build/dist/Server/Utils/ResourceFeed/ResourceFeedUtil.js +108 -0
- package/build/dist/Server/Utils/ResourceFeed/ResourceFeedUtil.js.map +1 -0
- package/build/dist/Server/Utils/Response.js +12 -1
- package/build/dist/Server/Utils/Response.js.map +1 -1
- package/build/dist/Server/Utils/SSRFProtection.js +160 -58
- package/build/dist/Server/Utils/SSRFProtection.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/ConnectorErrorMessage.js +89 -0
- package/build/dist/Server/Utils/SecurityEvent/ConnectorErrorMessage.js.map +1 -0
- package/build/dist/Server/Utils/SecurityEvent/DetectionRuleEvaluator.js +75 -234
- package/build/dist/Server/Utils/SecurityEvent/DetectionRuleEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js +41 -16
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/SecurityEventAlerting.js +217 -0
- package/build/dist/Server/Utils/SecurityEvent/SecurityEventAlerting.js.map +1 -0
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/TaxiiClient.js +103 -0
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/TaxiiClient.js.map +1 -0
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelEnricher.js +168 -0
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelEnricher.js.map +1 -0
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelFeedPoller.js +527 -0
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelFeedPoller.js.map +1 -0
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelMatcher.js +376 -0
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelMatcher.js.map +1 -0
- package/build/dist/Server/Utils/StartServer.js +70 -44
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/StatusPageSubscriberWebhook.js +3 -0
- package/build/dist/Server/Utils/StatusPageSubscriberWebhook.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/SourceMapResolver.js +327 -0
- package/build/dist/Server/Utils/Telemetry/SourceMapResolver.js.map +1 -0
- package/build/dist/Server/Utils/TwoFactorBackupCodeNotification.js +84 -0
- package/build/dist/Server/Utils/TwoFactorBackupCodeNotification.js.map +1 -0
- package/build/dist/Server/Utils/VM/VMAPI.js.map +1 -1
- package/build/dist/Server/Utils/VM/VMRunner.js +10 -1
- package/build/dist/Server/Utils/VM/VMRunner.js.map +1 -1
- package/build/dist/Server/Utils/VendorAssets.js +29 -0
- package/build/dist/Server/Utils/VendorAssets.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +121 -6
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
- package/build/dist/Types/API/URL.js +40 -10
- package/build/dist/Types/API/URL.js.map +1 -1
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +8 -0
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -1
- package/build/dist/Types/BaseDatabase/NotWildcard.js +72 -0
- package/build/dist/Types/BaseDatabase/NotWildcard.js.map +1 -0
- package/build/dist/Types/BaseDatabase/Wildcard.js +75 -0
- package/build/dist/Types/BaseDatabase/Wildcard.js.map +1 -0
- package/build/dist/Types/BaseDatabase/WildcardPattern.js +137 -0
- package/build/dist/Types/BaseDatabase/WildcardPattern.js.map +1 -0
- package/build/dist/Types/Database/DateColumnValue.js +125 -0
- package/build/dist/Types/Database/DateColumnValue.js.map +1 -0
- package/build/dist/Types/Database/TableColumn.js +18 -2
- package/build/dist/Types/Database/TableColumn.js.map +1 -1
- package/build/dist/Types/Date.js +31 -0
- package/build/dist/Types/Date.js.map +1 -1
- package/build/dist/Types/Email/EmailTemplateType.js +1 -0
- package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
- package/build/dist/Types/JSON.js +2 -0
- package/build/dist/Types/JSON.js.map +1 -1
- package/build/dist/Types/Log/LogQueryToFilter.js +111 -108
- package/build/dist/Types/Log/LogQueryToFilter.js.map +1 -1
- package/build/dist/Types/Monitor/DockerAlertTemplates.js +40 -16
- package/build/dist/Types/Monitor/DockerAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/HostAlertTemplates.js +29 -7
- package/build/dist/Types/Monitor/HostAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/KubernetesAlertTemplates.js +98 -4
- package/build/dist/Types/Monitor/KubernetesAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +40 -0
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/PodmanAlertTemplates.js +36 -16
- package/build/dist/Types/Monitor/PodmanAlertTemplates.js.map +1 -1
- package/build/dist/Types/NetworkAutomation/RuleRunResult.js +90 -0
- package/build/dist/Types/NetworkAutomation/RuleRunResult.js.map +1 -1
- package/build/dist/Types/NetworkSite/SiteHealthRollupPolicy.js +84 -0
- package/build/dist/Types/NetworkSite/SiteHealthRollupPolicy.js.map +1 -0
- package/build/dist/Types/Permission.js +354 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/SecurityEvent/ThreatIntelConstants.js +100 -0
- package/build/dist/Types/SecurityEvent/ThreatIntelConstants.js.map +1 -0
- package/build/dist/Types/SerializableObjectDictionary.js +8 -0
- package/build/dist/Types/SerializableObjectDictionary.js.map +1 -1
- package/build/dist/Types/Telemetry/SourceMap.js +9 -0
- package/build/dist/Types/Telemetry/SourceMap.js.map +1 -0
- package/build/dist/Types/Telemetry/TelemetrySearchQuery.js +661 -0
- package/build/dist/Types/Telemetry/TelemetrySearchQuery.js.map +1 -0
- package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js +12 -1
- package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js.map +1 -1
- package/build/dist/UI/Components/Dictionary/DictionaryFilterOperator.js +67 -0
- package/build/dist/UI/Components/Dictionary/DictionaryFilterOperator.js.map +1 -1
- package/build/dist/UI/Components/Icon/Icon.js +28 -1
- package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js +25 -4
- package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogSearchHelp.js +36 -16
- package/build/dist/UI/Components/LogsViewer/components/LogSearchHelp.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js +14 -2
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js.map +1 -1
- package/build/dist/Utils/Metrics/MetricExplorerUrl.js +54 -9
- package/build/dist/Utils/Metrics/MetricExplorerUrl.js.map +1 -1
- package/build/dist/Utils/Monitor/InterfaceInventoryUtil.js +128 -0
- package/build/dist/Utils/Monitor/InterfaceInventoryUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js +190 -0
- package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +206 -28
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDevice/DeviceHealthStateUtil.js +14 -7
- package/build/dist/Utils/NetworkDevice/DeviceHealthStateUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/AutoImportRuleMatcher.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js +34 -18
- package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/PingMonitorBuilder.js +163 -0
- package/build/dist/Utils/NetworkDiscovery/PingMonitorBuilder.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/RescanIntervalUtil.js +99 -0
- package/build/dist/Utils/NetworkDiscovery/RescanIntervalUtil.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/ScanModeUtil.js +85 -0
- package/build/dist/Utils/NetworkDiscovery/ScanModeUtil.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/SnmpScanConfigUtil.js +560 -0
- package/build/dist/Utils/NetworkDiscovery/SnmpScanConfigUtil.js.map +1 -0
- package/build/dist/Utils/NetworkSite/SiteMaintenanceUtil.js +56 -0
- package/build/dist/Utils/NetworkSite/SiteMaintenanceUtil.js.map +1 -0
- package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js +185 -10
- package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js.map +1 -1
- package/build/dist/Utils/NetworkSite/SiteUptimeUtil.js +248 -21
- package/build/dist/Utils/NetworkSite/SiteUptimeUtil.js.map +1 -1
- package/build/dist/Utils/SecurityEvent/ThreatIntel/StixPatternParser.js +255 -0
- package/build/dist/Utils/SecurityEvent/ThreatIntel/StixPatternParser.js.map +1 -0
- package/build/dist/Utils/Telemetry/CrossSignalScope.js +27 -30
- package/build/dist/Utils/Telemetry/CrossSignalScope.js.map +1 -1
- package/package.json +2 -1
- package/Tests/Types/Log/LogQueryParser.test.ts +0 -186
- package/Types/Log/LogQueryParser.ts +0 -252
- package/build/dist/Types/Log/LogQueryParser.js +0 -200
- package/build/dist/Types/Log/LogQueryParser.js.map +0 -1
|
@@ -49,6 +49,20 @@ export default class MonitorAlert {
|
|
|
49
49
|
dataToProcess: DataToProcess;
|
|
50
50
|
evaluationSummary?: MonitorEvaluationSummary | undefined;
|
|
51
51
|
breachingSeriesFingerprints?: Set<string> | undefined;
|
|
52
|
+
/**
|
|
53
|
+
* The breaching fingerprints of EACH criteria evaluated on this
|
|
54
|
+
* tick, keyed by criteria id — a criteria that ran and matched
|
|
55
|
+
* nothing maps to an empty set.
|
|
56
|
+
*
|
|
57
|
+
* Without this, "is this series still breaching?" was answered from
|
|
58
|
+
* the winning criteria's set alone, so a host held critical by
|
|
59
|
+
* criteria A silently auto-resolved another host's still-valid alert
|
|
60
|
+
* from criteria B. A criteria absent from this dictionary was not
|
|
61
|
+
* evaluated at all, and its open alerts are left untouched.
|
|
62
|
+
*/
|
|
63
|
+
breachingSeriesFingerprintsByCriteriaId?:
|
|
64
|
+
| Dictionary<Set<string>>
|
|
65
|
+
| undefined;
|
|
52
66
|
/**
|
|
53
67
|
* Event-driven (incoming-request / webhook) mode. When true, an open
|
|
54
68
|
* alert carrying a seriesFingerprint is never auto-resolved here —
|
|
@@ -86,6 +100,8 @@ export default class MonitorAlert {
|
|
|
86
100
|
|
|
87
101
|
// check if should close the alert.
|
|
88
102
|
|
|
103
|
+
const resolvedAlertIds: Set<string> = new Set<string>();
|
|
104
|
+
|
|
89
105
|
for (const openAlert of openAlerts) {
|
|
90
106
|
const shouldClose: boolean = this.shouldCloseAlert({
|
|
91
107
|
openAlert,
|
|
@@ -93,10 +109,14 @@ export default class MonitorAlert {
|
|
|
93
109
|
input.autoResolveCriteriaInstanceIdAlertIdsDictionary,
|
|
94
110
|
criteriaInstance: input.criteriaInstance,
|
|
95
111
|
breachingSeriesFingerprints: input.breachingSeriesFingerprints,
|
|
112
|
+
breachingSeriesFingerprintsByCriteriaId:
|
|
113
|
+
input.breachingSeriesFingerprintsByCriteriaId,
|
|
96
114
|
disableSeriesAbsenceResolution: input.disableSeriesAbsenceResolution,
|
|
97
115
|
});
|
|
98
116
|
|
|
99
117
|
if (shouldClose) {
|
|
118
|
+
resolvedAlertIds.add(openAlert.id!.toString());
|
|
119
|
+
|
|
100
120
|
// then resolve alert.
|
|
101
121
|
await this.resolveOpenAlert({
|
|
102
122
|
openAlert: openAlert,
|
|
@@ -118,7 +138,20 @@ export default class MonitorAlert {
|
|
|
118
138
|
}
|
|
119
139
|
}
|
|
120
140
|
|
|
121
|
-
|
|
141
|
+
/*
|
|
142
|
+
* Return the alerts that are still open AFTER this pass. The create
|
|
143
|
+
* path dedupes against this list, and an alert this pass just
|
|
144
|
+
* resolved must not count as "already active" — that combination
|
|
145
|
+
* resolved a stale whole-monitor alert and then refused to create
|
|
146
|
+
* the per-series alerts meant to replace it.
|
|
147
|
+
*/
|
|
148
|
+
if (resolvedAlertIds.size === 0) {
|
|
149
|
+
return openAlerts;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return openAlerts.filter((openAlert: Alert) => {
|
|
153
|
+
return !resolvedAlertIds.has(openAlert.id!.toString());
|
|
154
|
+
});
|
|
122
155
|
}
|
|
123
156
|
|
|
124
157
|
/**
|
|
@@ -229,6 +262,26 @@ export default class MonitorAlert {
|
|
|
229
262
|
telemetryQuery?: TelemetryQuery | undefined;
|
|
230
263
|
};
|
|
231
264
|
matchesPerSeries?: Array<PerSeriesCriteriaMatch> | undefined;
|
|
265
|
+
/**
|
|
266
|
+
* The still-open alerts, when the caller has already run the
|
|
267
|
+
* resolve pass itself.
|
|
268
|
+
*
|
|
269
|
+
* A single evaluation can fan out across several matching criteria
|
|
270
|
+
* (host A critical while host B is only warning). The resolve pass
|
|
271
|
+
* has to run exactly once, with every criteria's breaching set in
|
|
272
|
+
* hand — running it once per criteria would let each criteria
|
|
273
|
+
* absence-resolve the others' alerts. So MonitorResource runs it up
|
|
274
|
+
* front and hands the survivors here.
|
|
275
|
+
*/
|
|
276
|
+
openAlerts?: Array<Alert> | undefined;
|
|
277
|
+
/**
|
|
278
|
+
* Per-criteria breaching fingerprints, forwarded to the resolve pass
|
|
279
|
+
* when this method runs it itself. See
|
|
280
|
+
* checkOpenAlertsAndCloseIfResolved.
|
|
281
|
+
*/
|
|
282
|
+
breachingSeriesFingerprintsByCriteriaId?:
|
|
283
|
+
| Dictionary<Set<string>>
|
|
284
|
+
| undefined;
|
|
232
285
|
/**
|
|
233
286
|
* Series fingerprints whose underlying resource is inside an
|
|
234
287
|
* ongoing scheduled maintenance window. Alerts for these series are
|
|
@@ -276,22 +329,45 @@ export default class MonitorAlert {
|
|
|
276
329
|
|
|
277
330
|
// check active alerts and if there are open alerts, do not cretae anothr alert.
|
|
278
331
|
const openAlerts: Array<Alert> =
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
332
|
+
input.openAlerts !== undefined
|
|
333
|
+
? input.openAlerts
|
|
334
|
+
: await this.checkOpenAlertsAndCloseIfResolved({
|
|
335
|
+
monitorId: input.monitor.id!,
|
|
336
|
+
autoResolveCriteriaInstanceIdAlertIdsDictionary:
|
|
337
|
+
input.autoResolveCriteriaInstanceIdAlertIdsDictionary,
|
|
338
|
+
rootCause: input.rootCause,
|
|
339
|
+
criteriaInstance: input.criteriaInstance,
|
|
340
|
+
dataToProcess: input.dataToProcess,
|
|
341
|
+
evaluationSummary: input.evaluationSummary,
|
|
342
|
+
breachingSeriesFingerprints,
|
|
343
|
+
breachingSeriesFingerprintsByCriteriaId:
|
|
344
|
+
input.breachingSeriesFingerprintsByCriteriaId,
|
|
345
|
+
disableSeriesAbsenceResolution:
|
|
346
|
+
input.disableSeriesAbsenceResolution,
|
|
347
|
+
});
|
|
290
348
|
|
|
291
349
|
if (!input.criteriaInstance.data?.createAlerts) {
|
|
292
350
|
return;
|
|
293
351
|
}
|
|
294
352
|
|
|
353
|
+
/*
|
|
354
|
+
* Checked once, up front. It used to be tested deep inside the
|
|
355
|
+
* template x series loops with a `return`, which on a grouped
|
|
356
|
+
* monitor abandoned every series after the first.
|
|
357
|
+
*/
|
|
358
|
+
if (DisableAutomaticAlertCreation) {
|
|
359
|
+
input.evaluationSummary?.events.push({
|
|
360
|
+
type: "alert-skipped",
|
|
361
|
+
title: "Alert creation skipped",
|
|
362
|
+
message:
|
|
363
|
+
"Automatic alert creation is disabled by environment configuration.",
|
|
364
|
+
relatedCriteriaId: input.criteriaInstance.data?.id,
|
|
365
|
+
at: OneUptimeDate.getCurrentDate(),
|
|
366
|
+
});
|
|
367
|
+
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
|
|
295
371
|
/*
|
|
296
372
|
* Alert-dependency suppression: a parent monitor is in a suppressing
|
|
297
373
|
* status (offline by default), so skip creating any alert for this
|
|
@@ -359,332 +435,376 @@ export default class MonitorAlert {
|
|
|
359
435
|
|
|
360
436
|
for (const criteriaAlert of input.criteriaInstance.data?.alerts || []) {
|
|
361
437
|
for (const seriesMatch of seriesToProcess) {
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
seriesMatch?.
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
* Per-series scheduled-maintenance suppression: skip creating an
|
|
369
|
-
* alert for a series whose resource is inside an ongoing
|
|
370
|
-
* maintenance window. Other series on the same monitor are
|
|
371
|
-
* unaffected. Only *new* creation is suppressed — existing open
|
|
372
|
-
* alerts follow the normal resolve path.
|
|
373
|
-
*/
|
|
374
|
-
if (
|
|
375
|
-
seriesFingerprint &&
|
|
376
|
-
input.suppressedSeriesFingerprints?.has(seriesFingerprint)
|
|
377
|
-
) {
|
|
378
|
-
logger.debug(
|
|
379
|
-
`${input.monitor.id?.toString()} - Skipping alert for series ${seriesFingerprint}: its resource is under an active scheduled maintenance window.`,
|
|
380
|
-
alertLogAttributes,
|
|
381
|
-
);
|
|
382
|
-
|
|
383
|
-
input.evaluationSummary?.events.push({
|
|
384
|
-
type: "alert-skipped",
|
|
385
|
-
title: "Alert suppressed by scheduled maintenance",
|
|
386
|
-
message:
|
|
387
|
-
"Skipped creating an alert because the resource for this series is under an active scheduled maintenance window.",
|
|
388
|
-
relatedCriteriaId: input.criteriaInstance.data?.id,
|
|
389
|
-
at: OneUptimeDate.getCurrentDate(),
|
|
390
|
-
});
|
|
391
|
-
continue;
|
|
392
|
-
}
|
|
438
|
+
try {
|
|
439
|
+
const seriesFingerprint: string | undefined =
|
|
440
|
+
seriesMatch?.fingerprint;
|
|
441
|
+
const seriesLabels: JSONObject | undefined = seriesMatch?.labels;
|
|
442
|
+
const seriesRootCause: string =
|
|
443
|
+
seriesMatch?.rootCause || input.rootCause;
|
|
393
444
|
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
445
|
+
/*
|
|
446
|
+
* Per-series scheduled-maintenance suppression: skip creating an
|
|
447
|
+
* alert for a series whose resource is inside an ongoing
|
|
448
|
+
* maintenance window. Other series on the same monitor are
|
|
449
|
+
* unaffected. Only *new* creation is suppressed — existing open
|
|
450
|
+
* alerts follow the normal resolve path.
|
|
451
|
+
*/
|
|
452
|
+
if (
|
|
453
|
+
seriesFingerprint &&
|
|
454
|
+
input.suppressedSeriesFingerprints?.has(seriesFingerprint)
|
|
455
|
+
) {
|
|
456
|
+
logger.debug(
|
|
457
|
+
`${input.monitor.id?.toString()} - Skipping alert for series ${seriesFingerprint}: its resource is under an active scheduled maintenance window.`,
|
|
458
|
+
alertLogAttributes,
|
|
408
459
|
);
|
|
409
|
-
},
|
|
410
|
-
);
|
|
411
460
|
|
|
412
|
-
|
|
461
|
+
input.evaluationSummary?.events.push({
|
|
462
|
+
type: "alert-skipped",
|
|
463
|
+
title: "Alert suppressed by scheduled maintenance",
|
|
464
|
+
message:
|
|
465
|
+
"Skipped creating an alert because the resource for this series is under an active scheduled maintenance window.",
|
|
466
|
+
relatedCriteriaId: input.criteriaInstance.data?.id,
|
|
467
|
+
at: OneUptimeDate.getCurrentDate(),
|
|
468
|
+
});
|
|
469
|
+
continue;
|
|
470
|
+
}
|
|
413
471
|
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
472
|
+
/*
|
|
473
|
+
* Mirror the create path: `createdCriteriaId` is only set when the
|
|
474
|
+
* criteria has an `id`. Guard the `.toString()` with `?.` (a criteria
|
|
475
|
+
* with a missing id otherwise threw "Cannot read properties of
|
|
476
|
+
* undefined (reading 'toString')" and failed the queue job every
|
|
477
|
+
* cycle) and normalise both sides to `undefined` on missing so dedupe
|
|
478
|
+
* stays correct instead of creating a duplicate alert each cycle.
|
|
479
|
+
*/
|
|
480
|
+
const alreadyOpenAlert: Alert | undefined = openAlerts.find(
|
|
481
|
+
(alert: Alert) => {
|
|
482
|
+
return (
|
|
483
|
+
(alert.createdCriteriaId || undefined) ===
|
|
484
|
+
(input.criteriaInstance.data?.id?.toString() || undefined) &&
|
|
485
|
+
(alert.seriesFingerprint || undefined) === seriesFingerprint
|
|
486
|
+
);
|
|
487
|
+
},
|
|
488
|
+
);
|
|
418
489
|
|
|
419
|
-
|
|
420
|
-
`${input.monitor.id?.toString()} - Has open alert ${hasAlreadyOpenAlert}`,
|
|
421
|
-
alertLogAttributes,
|
|
422
|
-
);
|
|
490
|
+
const hasAlreadyOpenAlert: boolean = Boolean(alreadyOpenAlert);
|
|
423
491
|
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
492
|
+
logger.debug(
|
|
493
|
+
`${input.monitor.id?.toString()} - Open Alert ${alreadyOpenAlert?.id?.toString()}`,
|
|
494
|
+
alertLogAttributes,
|
|
495
|
+
);
|
|
427
496
|
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
"Skipped creating a new alert because an active alert exists for this criteria.",
|
|
433
|
-
relatedCriteriaId: input.criteriaInstance.data?.id,
|
|
434
|
-
relatedAlertId: alreadyOpenAlert?.id?.toString(),
|
|
435
|
-
relatedAlertNumber: alreadyOpenAlert?.alertNumber,
|
|
436
|
-
relatedAlertNumberWithPrefix:
|
|
437
|
-
alreadyOpenAlert?.alertNumberWithPrefix,
|
|
438
|
-
at: OneUptimeDate.getCurrentDate(),
|
|
439
|
-
});
|
|
440
|
-
continue;
|
|
441
|
-
}
|
|
497
|
+
logger.debug(
|
|
498
|
+
`${input.monitor.id?.toString()} - Has open alert ${hasAlreadyOpenAlert}`,
|
|
499
|
+
alertLogAttributes,
|
|
500
|
+
);
|
|
442
501
|
|
|
443
|
-
|
|
502
|
+
if (hasAlreadyOpenAlert) {
|
|
503
|
+
const renderedAlertTitle: string =
|
|
504
|
+
alreadyOpenAlert?.title || criteriaAlert.title;
|
|
505
|
+
|
|
506
|
+
input.evaluationSummary?.events.push({
|
|
507
|
+
type: "alert-skipped",
|
|
508
|
+
title: `Alert already active: ${renderedAlertTitle}`,
|
|
509
|
+
message:
|
|
510
|
+
"Skipped creating a new alert because an active alert exists for this criteria.",
|
|
511
|
+
relatedCriteriaId: input.criteriaInstance.data?.id,
|
|
512
|
+
relatedAlertId: alreadyOpenAlert?.id?.toString(),
|
|
513
|
+
relatedAlertNumber: alreadyOpenAlert?.alertNumber,
|
|
514
|
+
relatedAlertNumberWithPrefix:
|
|
515
|
+
alreadyOpenAlert?.alertNumberWithPrefix,
|
|
516
|
+
at: OneUptimeDate.getCurrentDate(),
|
|
517
|
+
});
|
|
518
|
+
continue;
|
|
519
|
+
}
|
|
444
520
|
|
|
445
|
-
|
|
446
|
-
`${input.monitor.id?.toString()} - Create alert.`,
|
|
447
|
-
alertLogAttributes,
|
|
448
|
-
);
|
|
521
|
+
// create alert here.
|
|
449
522
|
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
dataToProcess: input.dataToProcess,
|
|
455
|
-
monitor: input.monitor,
|
|
456
|
-
seriesLabels,
|
|
457
|
-
});
|
|
523
|
+
logger.debug(
|
|
524
|
+
`${input.monitor.id?.toString()} - Create alert.`,
|
|
525
|
+
alertLogAttributes,
|
|
526
|
+
);
|
|
458
527
|
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
528
|
+
const alert: Alert = new Alert();
|
|
529
|
+
const storageMap: JSONObject =
|
|
530
|
+
MonitorTemplateUtil.buildTemplateStorageMap({
|
|
531
|
+
monitorType: input.monitor.monitorType!,
|
|
532
|
+
dataToProcess: input.dataToProcess,
|
|
533
|
+
monitor: input.monitor,
|
|
534
|
+
seriesLabels,
|
|
535
|
+
});
|
|
467
536
|
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
*/
|
|
476
|
-
const isCriteriaSeverityUsable: boolean =
|
|
477
|
-
await ProjectScopedReferenceValidator.isUsableInProject({
|
|
478
|
-
projectId: input.monitor.projectId!,
|
|
479
|
-
id: criteriaAlert.alertSeverityId,
|
|
480
|
-
service: AlertSeverityService,
|
|
537
|
+
alert.title = MonitorTemplateUtil.processTemplateString({
|
|
538
|
+
value: criteriaAlert.title,
|
|
539
|
+
storageMap,
|
|
540
|
+
});
|
|
541
|
+
alert.description = MonitorTemplateUtil.processTemplateString({
|
|
542
|
+
value: criteriaAlert.description,
|
|
543
|
+
storageMap,
|
|
481
544
|
});
|
|
482
545
|
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
546
|
+
/*
|
|
547
|
+
* A criteria severity belonging to *another* project is rejected by
|
|
548
|
+
* AlertService on create. Throwing here would fail the whole
|
|
549
|
+
* probe/telemetry ingest job for this monitor, so treat it as
|
|
550
|
+
* "missing" and fall back to this project's own default — which is
|
|
551
|
+
* also what stops the bad id spreading onto new alerts. See the same
|
|
552
|
+
* fallback in MonitorIncident.
|
|
553
|
+
*/
|
|
554
|
+
const isCriteriaSeverityUsable: boolean =
|
|
555
|
+
await ProjectScopedReferenceValidator.isUsableInProject({
|
|
556
|
+
projectId: input.monitor.projectId!,
|
|
557
|
+
id: criteriaAlert.alertSeverityId,
|
|
558
|
+
service: AlertSeverityService,
|
|
559
|
+
});
|
|
493
560
|
|
|
494
|
-
|
|
495
|
-
|
|
561
|
+
if (
|
|
562
|
+
criteriaAlert.alertSeverityId?.toString() &&
|
|
563
|
+
!isCriteriaSeverityUsable
|
|
564
|
+
) {
|
|
565
|
+
logger.error(
|
|
566
|
+
`${input.monitor.id?.toString()} - Criteria "${
|
|
567
|
+
input.criteriaInstance.data?.name
|
|
568
|
+
}" references alert severity ${criteriaAlert.alertSeverityId.toString()}, which does not belong to project ${input.monitor.projectId?.toString()}. Falling back to this project's default severity.`,
|
|
569
|
+
);
|
|
570
|
+
}
|
|
496
571
|
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
572
|
+
if (!isCriteriaSeverityUsable) {
|
|
573
|
+
// pick the critical criteria.
|
|
574
|
+
|
|
575
|
+
const severity: AlertSeverity | null =
|
|
576
|
+
await AlertSeverityService.findOneBy({
|
|
577
|
+
query: {
|
|
578
|
+
projectId: input.monitor.projectId!,
|
|
579
|
+
},
|
|
580
|
+
sort: {
|
|
581
|
+
order: SortOrder.Ascending,
|
|
582
|
+
},
|
|
583
|
+
props: {
|
|
584
|
+
isRoot: true,
|
|
585
|
+
},
|
|
586
|
+
select: {
|
|
587
|
+
_id: true,
|
|
588
|
+
},
|
|
589
|
+
});
|
|
590
|
+
|
|
591
|
+
if (!severity?.id?.toString()) {
|
|
592
|
+
/*
|
|
593
|
+
* The project has no alert severity configured. Throwing here
|
|
594
|
+
* would fail the entire probe/telemetry ingest job — which
|
|
595
|
+
* then retries forever over a misconfiguration the worker
|
|
596
|
+
* cannot fix, and takes every other series on this monitor
|
|
597
|
+
* down with it. Skip this alert and log instead, exactly as
|
|
598
|
+
* the incident path does.
|
|
599
|
+
*/
|
|
600
|
+
logger.error(
|
|
601
|
+
`${input.monitor.id?.toString()} - Cannot create alert: project ${input.monitor.projectId?.toString()} has no alert severity configured. Skipping alert creation for criteria "${
|
|
602
|
+
input.criteriaInstance.data?.name
|
|
603
|
+
}".`,
|
|
604
|
+
);
|
|
605
|
+
|
|
606
|
+
input.evaluationSummary?.events.push({
|
|
607
|
+
type: "alert-skipped",
|
|
608
|
+
title: "Alert creation skipped",
|
|
609
|
+
message:
|
|
610
|
+
"Skipped creating an alert because the project has no alert severity configured.",
|
|
611
|
+
relatedCriteriaId: input.criteriaInstance.data?.id,
|
|
612
|
+
at: OneUptimeDate.getCurrentDate(),
|
|
613
|
+
});
|
|
614
|
+
continue;
|
|
615
|
+
}
|
|
512
616
|
|
|
513
|
-
if (!severity) {
|
|
514
|
-
throw new BadDataException("Project does not have alert severity");
|
|
515
|
-
} else {
|
|
516
617
|
alert.alertSeverityId = severity.id!;
|
|
618
|
+
} else {
|
|
619
|
+
alert.alertSeverityId = criteriaAlert.alertSeverityId!;
|
|
517
620
|
}
|
|
518
|
-
} else {
|
|
519
|
-
alert.alertSeverityId = criteriaAlert.alertSeverityId!;
|
|
520
|
-
}
|
|
521
621
|
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
622
|
+
alert.monitor = input.monitor;
|
|
623
|
+
alert.projectId = input.monitor.projectId!;
|
|
624
|
+
alert.rootCause = seriesRootCause;
|
|
625
|
+
alert.createdStateLog = JSON.parse(
|
|
626
|
+
JSON.stringify(input.dataToProcess, null, 2),
|
|
627
|
+
);
|
|
528
628
|
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
629
|
+
/*
|
|
630
|
+
* Same capture on every alert this evaluation opens - they all
|
|
631
|
+
* came from the one check.
|
|
632
|
+
*/
|
|
633
|
+
const serializedMonitorSummary: JSONObject | null =
|
|
634
|
+
MonitorSummarySnapshotUtil.serialize(input.monitorSummary);
|
|
535
635
|
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
636
|
+
if (serializedMonitorSummary) {
|
|
637
|
+
alert.monitorSummary = serializedMonitorSummary;
|
|
638
|
+
}
|
|
539
639
|
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
640
|
+
if (input.criteriaInstance.data?.id) {
|
|
641
|
+
alert.createdCriteriaId = input.criteriaInstance.data.id.toString();
|
|
642
|
+
}
|
|
543
643
|
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
644
|
+
if (seriesFingerprint) {
|
|
645
|
+
alert.seriesFingerprint = seriesFingerprint;
|
|
646
|
+
}
|
|
647
|
+
if (seriesLabels && Object.keys(seriesLabels).length > 0) {
|
|
648
|
+
alert.seriesLabels = seriesLabels;
|
|
649
|
+
|
|
650
|
+
/*
|
|
651
|
+
* Attach every resource this series identifies — host, docker
|
|
652
|
+
* host, podman host, k8s cluster, service, and the Proxmox /
|
|
653
|
+
* Ceph / Swarm / IoT clusters — resolved from the shared label
|
|
654
|
+
* key map. Same call the incident path makes, so the two can't
|
|
655
|
+
* drift apart again.
|
|
656
|
+
*/
|
|
657
|
+
await SeriesResourceLinker.linkSeriesResourcesToModel({
|
|
658
|
+
model: alert,
|
|
659
|
+
seriesLabels,
|
|
660
|
+
projectId: input.monitor.projectId!,
|
|
661
|
+
monitorType: input.monitor.monitorType,
|
|
662
|
+
});
|
|
663
|
+
}
|
|
549
664
|
|
|
550
665
|
/*
|
|
551
|
-
*
|
|
552
|
-
*
|
|
553
|
-
*
|
|
554
|
-
*
|
|
555
|
-
*
|
|
666
|
+
* Deterministic resource link from the monitor's step config
|
|
667
|
+
* (resolved once above). For most monitor types this — not the
|
|
668
|
+
* label path above — is what makes the per-resource Activity
|
|
669
|
+
* tabs and badge counts see monitor-created alerts, because
|
|
670
|
+
* their criteria are ungrouped and emit no series labels at
|
|
671
|
+
* all. Runs for both grouped and ungrouped alerts, and merges
|
|
672
|
+
* with whatever the labels resolved.
|
|
556
673
|
*/
|
|
557
|
-
|
|
674
|
+
SeriesResourceLinker.attachResolvedResources({
|
|
558
675
|
model: alert,
|
|
559
|
-
|
|
560
|
-
projectId: input.monitor.projectId!,
|
|
561
|
-
monitorType: input.monitor.monitorType,
|
|
676
|
+
resolved: resourceContext,
|
|
562
677
|
});
|
|
563
|
-
}
|
|
564
678
|
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
679
|
+
alert.onCallDutyPolicies =
|
|
680
|
+
criteriaAlert.onCallPolicyIds?.map((id: ObjectID) => {
|
|
681
|
+
const onCallPolicy: OnCallDutyPolicy = new OnCallDutyPolicy();
|
|
682
|
+
onCallPolicy._id = id.toString();
|
|
683
|
+
return onCallPolicy;
|
|
684
|
+
}) || [];
|
|
685
|
+
|
|
686
|
+
// Set labels from criteria
|
|
687
|
+
alert.labels =
|
|
688
|
+
criteriaAlert.labelIds?.map((id: ObjectID) => {
|
|
689
|
+
const label: Label = new Label();
|
|
690
|
+
label._id = id.toString();
|
|
691
|
+
return label;
|
|
692
|
+
}) || [];
|
|
693
|
+
|
|
694
|
+
alert.isCreatedAutomatically = true;
|
|
695
|
+
|
|
696
|
+
if (criteriaAlert.isPrivate === true) {
|
|
697
|
+
alert.isPrivate = true;
|
|
698
|
+
}
|
|
578
699
|
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
onCallPolicy._id = id.toString();
|
|
583
|
-
return onCallPolicy;
|
|
584
|
-
}) || [];
|
|
585
|
-
|
|
586
|
-
// Set labels from criteria
|
|
587
|
-
alert.labels =
|
|
588
|
-
criteriaAlert.labelIds?.map((id: ObjectID) => {
|
|
589
|
-
const label: Label = new Label();
|
|
590
|
-
label._id = id.toString();
|
|
591
|
-
return label;
|
|
592
|
-
}) || [];
|
|
593
|
-
|
|
594
|
-
alert.isCreatedAutomatically = true;
|
|
595
|
-
|
|
596
|
-
if (criteriaAlert.isPrivate === true) {
|
|
597
|
-
alert.isPrivate = true;
|
|
598
|
-
}
|
|
700
|
+
if (input.props.telemetryQuery) {
|
|
701
|
+
alert.telemetryQuery = input.props.telemetryQuery;
|
|
702
|
+
}
|
|
599
703
|
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
704
|
+
if (
|
|
705
|
+
input.dataToProcess &&
|
|
706
|
+
(input.dataToProcess as ProbeMonitorResponse).probeId
|
|
707
|
+
) {
|
|
708
|
+
alert.createdByProbeId = (
|
|
709
|
+
input.dataToProcess as ProbeMonitorResponse
|
|
710
|
+
).probeId;
|
|
711
|
+
}
|
|
603
712
|
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
).probeId;
|
|
611
|
-
}
|
|
713
|
+
if (criteriaAlert.remediationNotes) {
|
|
714
|
+
alert.remediationNotes = MonitorTemplateUtil.processTemplateString({
|
|
715
|
+
value: criteriaAlert.remediationNotes,
|
|
716
|
+
storageMap,
|
|
717
|
+
});
|
|
718
|
+
}
|
|
612
719
|
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
720
|
+
const createdAlert: Alert = await AlertService.create({
|
|
721
|
+
data: alert,
|
|
722
|
+
props: {
|
|
723
|
+
isRoot: true,
|
|
724
|
+
},
|
|
617
725
|
});
|
|
618
|
-
}
|
|
619
726
|
|
|
620
|
-
|
|
727
|
+
/*
|
|
728
|
+
* Add owner teams and users after alert creation. Owners configured
|
|
729
|
+
* on the criteria template are merged (deduped) with the owners of
|
|
730
|
+
* the network device this monitor watches, so device ownership flows
|
|
731
|
+
* into the alerts its monitor raises.
|
|
732
|
+
*/
|
|
733
|
+
if (networkDeviceOwners === null) {
|
|
734
|
+
networkDeviceOwners =
|
|
735
|
+
await NetworkDeviceOwnerUserService.getDeviceOwnersForMonitor({
|
|
736
|
+
monitor: input.monitor,
|
|
737
|
+
monitorStepId: (
|
|
738
|
+
input.dataToProcess as ProbeMonitorResponse
|
|
739
|
+
).monitorStepId?.toString(),
|
|
740
|
+
});
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
const ownerUserIds: Array<ObjectID> = this.mergeOwnerIds(
|
|
744
|
+
criteriaAlert.ownerUserIds || [],
|
|
745
|
+
networkDeviceOwners.ownerUserIds,
|
|
746
|
+
);
|
|
747
|
+
|
|
748
|
+
const ownerTeamIds: Array<ObjectID> = this.mergeOwnerIds(
|
|
749
|
+
criteriaAlert.ownerTeamIds || [],
|
|
750
|
+
networkDeviceOwners.ownerTeamIds,
|
|
751
|
+
);
|
|
752
|
+
|
|
753
|
+
if (ownerTeamIds.length || ownerUserIds.length) {
|
|
754
|
+
await AlertService.addOwners(
|
|
755
|
+
input.monitor.projectId!,
|
|
756
|
+
createdAlert.id!,
|
|
757
|
+
ownerUserIds,
|
|
758
|
+
ownerTeamIds,
|
|
759
|
+
true, // notify owners
|
|
760
|
+
{
|
|
761
|
+
isRoot: true,
|
|
762
|
+
},
|
|
763
|
+
);
|
|
764
|
+
}
|
|
765
|
+
|
|
621
766
|
input.evaluationSummary?.events.push({
|
|
622
|
-
type: "alert-
|
|
623
|
-
title:
|
|
624
|
-
message:
|
|
625
|
-
"Automatic alert creation is disabled by environment configuration.",
|
|
767
|
+
type: "alert-created",
|
|
768
|
+
title: `Alert created: ${createdAlert.title || criteriaAlert.title}`,
|
|
769
|
+
message: `Alert triggered from criteria "${input.criteriaInstance.data?.name || "Unnamed criteria"}".`,
|
|
626
770
|
relatedCriteriaId: input.criteriaInstance.data?.id,
|
|
771
|
+
relatedAlertId: createdAlert.id?.toString(),
|
|
772
|
+
relatedAlertNumber: createdAlert.alertNumber,
|
|
773
|
+
relatedAlertNumberWithPrefix: createdAlert.alertNumberWithPrefix,
|
|
627
774
|
at: OneUptimeDate.getCurrentDate(),
|
|
628
775
|
});
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
networkDeviceOwners =
|
|
647
|
-
await NetworkDeviceOwnerUserService.getDeviceOwnersForMonitor({
|
|
648
|
-
monitor: input.monitor,
|
|
649
|
-
monitorStepId: (
|
|
650
|
-
input.dataToProcess as ProbeMonitorResponse
|
|
651
|
-
).monitorStepId?.toString(),
|
|
652
|
-
});
|
|
653
|
-
}
|
|
654
|
-
|
|
655
|
-
const ownerUserIds: Array<ObjectID> = this.mergeOwnerIds(
|
|
656
|
-
criteriaAlert.ownerUserIds || [],
|
|
657
|
-
networkDeviceOwners.ownerUserIds,
|
|
658
|
-
);
|
|
776
|
+
} catch (err) {
|
|
777
|
+
/*
|
|
778
|
+
* One series must not take the rest of the fleet down with it.
|
|
779
|
+
* Everything below this loop happens per host/container/key and
|
|
780
|
+
* touches the database; an error thrown from here used to
|
|
781
|
+
* propagate out of MonitorResource (which has no catch, only a
|
|
782
|
+
* `finally` that releases the lock) and abandon every series
|
|
783
|
+
* after the failing one, plus the monitor log for the tick.
|
|
784
|
+
*/
|
|
785
|
+
logger.error(
|
|
786
|
+
`${input.monitor.id?.toString()} - Failed to create alert${
|
|
787
|
+
seriesMatch?.fingerprint
|
|
788
|
+
? ` for series ${seriesMatch.fingerprint}`
|
|
789
|
+
: ""
|
|
790
|
+
}.`,
|
|
791
|
+
);
|
|
792
|
+
logger.error(err);
|
|
659
793
|
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
794
|
+
input.evaluationSummary?.events.push({
|
|
795
|
+
type: "alert-skipped",
|
|
796
|
+
title: "Alert creation failed",
|
|
797
|
+
message: `Could not create an alert${
|
|
798
|
+
seriesMatch?.fingerprint
|
|
799
|
+
? ` for series ${seriesMatch.fingerprint}`
|
|
800
|
+
: ""
|
|
801
|
+
}: ${err instanceof Error ? err.message : String(err)}`,
|
|
802
|
+
relatedCriteriaId: input.criteriaInstance.data?.id,
|
|
803
|
+
at: OneUptimeDate.getCurrentDate(),
|
|
804
|
+
});
|
|
664
805
|
|
|
665
|
-
|
|
666
|
-
await AlertService.addOwners(
|
|
667
|
-
input.monitor.projectId!,
|
|
668
|
-
createdAlert.id!,
|
|
669
|
-
ownerUserIds,
|
|
670
|
-
ownerTeamIds,
|
|
671
|
-
true, // notify owners
|
|
672
|
-
{
|
|
673
|
-
isRoot: true,
|
|
674
|
-
},
|
|
675
|
-
);
|
|
806
|
+
continue;
|
|
676
807
|
}
|
|
677
|
-
|
|
678
|
-
input.evaluationSummary?.events.push({
|
|
679
|
-
type: "alert-created",
|
|
680
|
-
title: `Alert created: ${createdAlert.title || criteriaAlert.title}`,
|
|
681
|
-
message: `Alert triggered from criteria "${input.criteriaInstance.data?.name || "Unnamed criteria"}".`,
|
|
682
|
-
relatedCriteriaId: input.criteriaInstance.data?.id,
|
|
683
|
-
relatedAlertId: createdAlert.id?.toString(),
|
|
684
|
-
relatedAlertNumber: createdAlert.alertNumber,
|
|
685
|
-
relatedAlertNumberWithPrefix: createdAlert.alertNumberWithPrefix,
|
|
686
|
-
at: OneUptimeDate.getCurrentDate(),
|
|
687
|
-
});
|
|
688
808
|
}
|
|
689
809
|
}
|
|
690
810
|
}
|
|
@@ -778,11 +898,92 @@ export default class MonitorAlert {
|
|
|
778
898
|
}
|
|
779
899
|
}
|
|
780
900
|
|
|
901
|
+
/**
|
|
902
|
+
* Is `openAlert`'s series still breaching the criteria that raised it?
|
|
903
|
+
*
|
|
904
|
+
* Prefers the per-criteria dictionary, which answers the question for
|
|
905
|
+
* the criteria that actually owns this alert. The single-set fallback
|
|
906
|
+
* only knows the winning criteria's breaches, so it has to approximate
|
|
907
|
+
* with `createAlerts` — a criteria that creates no alerts is a
|
|
908
|
+
* recovery criteria whose "matches" are healthy series, and counting
|
|
909
|
+
* those as breaches would pin an offline alert open forever.
|
|
910
|
+
*/
|
|
911
|
+
private static isSeriesStillBreaching(input: {
|
|
912
|
+
openAlert: Alert;
|
|
913
|
+
criteriaInstance: MonitorCriteriaInstance | null;
|
|
914
|
+
openSeriesFingerprint: string;
|
|
915
|
+
breachingSeriesFingerprints: Set<string>;
|
|
916
|
+
breachingSeriesFingerprintsByCriteriaId?:
|
|
917
|
+
| Dictionary<Set<string>>
|
|
918
|
+
| undefined;
|
|
919
|
+
}): boolean {
|
|
920
|
+
const owningCriteriaId: string | undefined =
|
|
921
|
+
input.openAlert.createdCriteriaId?.toString() || undefined;
|
|
922
|
+
|
|
923
|
+
if (input.breachingSeriesFingerprintsByCriteriaId && owningCriteriaId) {
|
|
924
|
+
return Boolean(
|
|
925
|
+
input.breachingSeriesFingerprintsByCriteriaId[owningCriteriaId]?.has(
|
|
926
|
+
input.openSeriesFingerprint,
|
|
927
|
+
),
|
|
928
|
+
);
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
const matchedCriteriaCreatesAlerts: boolean =
|
|
932
|
+
input.criteriaInstance?.data?.createAlerts === true;
|
|
933
|
+
|
|
934
|
+
return (
|
|
935
|
+
matchedCriteriaCreatesAlerts &&
|
|
936
|
+
input.breachingSeriesFingerprints.has(input.openSeriesFingerprint)
|
|
937
|
+
);
|
|
938
|
+
}
|
|
939
|
+
|
|
940
|
+
private static wasCriteriaEvaluated(input: {
|
|
941
|
+
openAlert: Alert;
|
|
942
|
+
breachingSeriesFingerprintsByCriteriaId: Dictionary<Set<string>>;
|
|
943
|
+
}): boolean {
|
|
944
|
+
const owningCriteriaId: string | undefined =
|
|
945
|
+
input.openAlert.createdCriteriaId?.toString() || undefined;
|
|
946
|
+
|
|
947
|
+
if (!owningCriteriaId) {
|
|
948
|
+
return true;
|
|
949
|
+
}
|
|
950
|
+
|
|
951
|
+
return (
|
|
952
|
+
input.breachingSeriesFingerprintsByCriteriaId[owningCriteriaId] !==
|
|
953
|
+
undefined
|
|
954
|
+
);
|
|
955
|
+
}
|
|
956
|
+
|
|
957
|
+
/**
|
|
958
|
+
* Alert auto-resolve lists templates by criteria; the presence of any
|
|
959
|
+
* template for a criteria means "this criteria's alerts are configured
|
|
960
|
+
* to auto-resolve".
|
|
961
|
+
*/
|
|
962
|
+
private static isAutoResolveConfiguredForAlert(input: {
|
|
963
|
+
openAlert: Alert;
|
|
964
|
+
autoResolveCriteriaInstanceIdAlertIdsDictionary: Dictionary<Array<string>>;
|
|
965
|
+
}): boolean {
|
|
966
|
+
const createdCriteriaId: string | undefined =
|
|
967
|
+
input.openAlert.createdCriteriaId?.toString() || undefined;
|
|
968
|
+
|
|
969
|
+
if (!createdCriteriaId) {
|
|
970
|
+
return false;
|
|
971
|
+
}
|
|
972
|
+
|
|
973
|
+
const autoResolveTemplates: Array<string> | undefined =
|
|
974
|
+
input.autoResolveCriteriaInstanceIdAlertIdsDictionary[createdCriteriaId];
|
|
975
|
+
|
|
976
|
+
return Boolean(autoResolveTemplates && autoResolveTemplates.length > 0);
|
|
977
|
+
}
|
|
978
|
+
|
|
781
979
|
private static shouldCloseAlert(input: {
|
|
782
980
|
openAlert: Alert;
|
|
783
981
|
autoResolveCriteriaInstanceIdAlertIdsDictionary: Dictionary<Array<string>>;
|
|
784
982
|
criteriaInstance: MonitorCriteriaInstance | null; // null if no criteia met.
|
|
785
983
|
breachingSeriesFingerprints?: Set<string> | undefined;
|
|
984
|
+
breachingSeriesFingerprintsByCriteriaId?:
|
|
985
|
+
| Dictionary<Set<string>>
|
|
986
|
+
| undefined;
|
|
786
987
|
disableSeriesAbsenceResolution?: boolean | undefined;
|
|
787
988
|
}): boolean {
|
|
788
989
|
const openSeriesFingerprint: string | undefined =
|
|
@@ -800,55 +1001,63 @@ export default class MonitorAlert {
|
|
|
800
1001
|
return false;
|
|
801
1002
|
}
|
|
802
1003
|
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
* this alert has a fingerprint, resolve whenever the fingerprint is
|
|
806
|
-
* no longer in the set, independent of whether other series on the
|
|
807
|
-
* same monitor are still breaching.
|
|
808
|
-
*/
|
|
809
|
-
if (
|
|
810
|
-
input.breachingSeriesFingerprints !== undefined &&
|
|
811
|
-
openSeriesFingerprint
|
|
812
|
-
) {
|
|
1004
|
+
// Per-series mode: this evaluation knows which series are breaching.
|
|
1005
|
+
if (input.breachingSeriesFingerprints !== undefined) {
|
|
813
1006
|
/*
|
|
814
|
-
*
|
|
815
|
-
*
|
|
816
|
-
* and
|
|
817
|
-
*
|
|
818
|
-
*
|
|
819
|
-
*
|
|
820
|
-
* no breaches, letting the per-series alert auto-resolve).
|
|
1007
|
+
* A whole-monitor alert (no fingerprint) on a monitor that now
|
|
1008
|
+
* alerts per series. It was raised before the monitor was grouped,
|
|
1009
|
+
* and nothing can ever dedupe against it again — every alert from
|
|
1010
|
+
* here on carries a fingerprint. Left alone it stays open forever
|
|
1011
|
+
* while its replacements come and go. Resolve it, on the same
|
|
1012
|
+
* auto-resolve terms as any other alert from its criteria.
|
|
821
1013
|
*/
|
|
822
|
-
|
|
823
|
-
input.
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
matchedCriteriaCreatesAlerts &&
|
|
827
|
-
input.breachingSeriesFingerprints.has(openSeriesFingerprint);
|
|
1014
|
+
if (!openSeriesFingerprint) {
|
|
1015
|
+
if (input.disableSeriesAbsenceResolution) {
|
|
1016
|
+
return false;
|
|
1017
|
+
}
|
|
828
1018
|
|
|
829
|
-
|
|
830
|
-
|
|
1019
|
+
return MonitorAlert.isAutoResolveConfiguredForAlert({
|
|
1020
|
+
openAlert: input.openAlert,
|
|
1021
|
+
autoResolveCriteriaInstanceIdAlertIdsDictionary:
|
|
1022
|
+
input.autoResolveCriteriaInstanceIdAlertIdsDictionary,
|
|
1023
|
+
});
|
|
831
1024
|
}
|
|
832
1025
|
|
|
833
|
-
if (
|
|
1026
|
+
if (
|
|
1027
|
+
MonitorAlert.isSeriesStillBreaching({
|
|
1028
|
+
openAlert: input.openAlert,
|
|
1029
|
+
criteriaInstance: input.criteriaInstance,
|
|
1030
|
+
openSeriesFingerprint,
|
|
1031
|
+
breachingSeriesFingerprints: input.breachingSeriesFingerprints,
|
|
1032
|
+
breachingSeriesFingerprintsByCriteriaId:
|
|
1033
|
+
input.breachingSeriesFingerprintsByCriteriaId,
|
|
1034
|
+
})
|
|
1035
|
+
) {
|
|
834
1036
|
return false;
|
|
835
1037
|
}
|
|
836
1038
|
|
|
837
|
-
const autoResolveTemplates: Array<string> | undefined =
|
|
838
|
-
input.autoResolveCriteriaInstanceIdAlertIdsDictionary[
|
|
839
|
-
input.openAlert.createdCriteriaId.toString()
|
|
840
|
-
];
|
|
841
|
-
|
|
842
1039
|
/*
|
|
843
|
-
*
|
|
844
|
-
*
|
|
845
|
-
*
|
|
1040
|
+
* The criteria that raised this alert was not evaluated on this
|
|
1041
|
+
* tick at all (disabled, deleted, or the monitor stops at its
|
|
1042
|
+
* first match). Absence of a breaching set for it is not evidence
|
|
1043
|
+
* of recovery, so leave the alert alone.
|
|
846
1044
|
*/
|
|
847
|
-
if (
|
|
848
|
-
|
|
1045
|
+
if (
|
|
1046
|
+
input.breachingSeriesFingerprintsByCriteriaId &&
|
|
1047
|
+
!MonitorAlert.wasCriteriaEvaluated({
|
|
1048
|
+
openAlert: input.openAlert,
|
|
1049
|
+
breachingSeriesFingerprintsByCriteriaId:
|
|
1050
|
+
input.breachingSeriesFingerprintsByCriteriaId,
|
|
1051
|
+
})
|
|
1052
|
+
) {
|
|
1053
|
+
return false;
|
|
849
1054
|
}
|
|
850
1055
|
|
|
851
|
-
return
|
|
1056
|
+
return MonitorAlert.isAutoResolveConfiguredForAlert({
|
|
1057
|
+
openAlert: input.openAlert,
|
|
1058
|
+
autoResolveCriteriaInstanceIdAlertIdsDictionary:
|
|
1059
|
+
input.autoResolveCriteriaInstanceIdAlertIdsDictionary,
|
|
1060
|
+
});
|
|
852
1061
|
}
|
|
853
1062
|
|
|
854
1063
|
if (
|