@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
|
@@ -182,6 +182,29 @@ export function buildOnlineCriteriaInstance(args: {
|
|
|
182
182
|
return instance;
|
|
183
183
|
}
|
|
184
184
|
|
|
185
|
+
/**
|
|
186
|
+
* Build a single-query monitor config.
|
|
187
|
+
*
|
|
188
|
+
* `groupByAttributeKey` makes the monitor PER-SERIES: the worker splits
|
|
189
|
+
* the metric by that attribute and every group is evaluated — and paged —
|
|
190
|
+
* on its own, so a cluster of 200 pods raises one incident per unhealthy
|
|
191
|
+
* pod rather than one incident for the whole cluster that then dedupes
|
|
192
|
+
* every later pod away. Omitting it keeps the monitor whole-cluster.
|
|
193
|
+
*
|
|
194
|
+
* Group by an object's own name whenever the metric is genuinely
|
|
195
|
+
* PER-OBJECT (per node, per pod, per deployment, ...). Leave it off for
|
|
196
|
+
* cluster-scalar signals — etcd leadership, API server throttling,
|
|
197
|
+
* scheduler backlog — where there is exactly one value for the cluster
|
|
198
|
+
* and splitting it would invent series that do not exist.
|
|
199
|
+
*
|
|
200
|
+
* The key is the ClickHouse-stored attribute name, which carries the
|
|
201
|
+
* `resource.` prefix for OTel resource attributes (see
|
|
202
|
+
* OtelMetricsIngestService — resource attributes are stamped with
|
|
203
|
+
* `prefixKeysWithString: "resource"`). So node grouping is
|
|
204
|
+
* `resource.k8s.node.name`, not the bare `k8s.node.name`; the bare key
|
|
205
|
+
* matches nothing and collapses the whole fleet into one mislabeled
|
|
206
|
+
* series that still renders and still alerts.
|
|
207
|
+
*/
|
|
185
208
|
export function buildKubernetesMonitorConfig(args: {
|
|
186
209
|
clusterIdentifier: string;
|
|
187
210
|
metricName: string;
|
|
@@ -190,6 +213,7 @@ export function buildKubernetesMonitorConfig(args: {
|
|
|
190
213
|
rollingTime: RollingTime;
|
|
191
214
|
aggregationType: MetricsAggregationType;
|
|
192
215
|
attributes?: Record<string, string>;
|
|
216
|
+
groupByAttributeKey?: string | undefined;
|
|
193
217
|
}): MonitorStepKubernetesMonitor {
|
|
194
218
|
return {
|
|
195
219
|
clusterIdentifier: args.clusterIdentifier,
|
|
@@ -212,6 +236,9 @@ export function buildKubernetesMonitorConfig(args: {
|
|
|
212
236
|
aggegationType: args.aggregationType,
|
|
213
237
|
aggregateBy: {},
|
|
214
238
|
},
|
|
239
|
+
...(args.groupByAttributeKey
|
|
240
|
+
? { groupByAttributeKeys: [args.groupByAttributeKey] }
|
|
241
|
+
: {}),
|
|
215
242
|
},
|
|
216
243
|
},
|
|
217
244
|
],
|
|
@@ -346,6 +373,13 @@ const crashLoopBackOffTemplate: KubernetesAlertTemplate = {
|
|
|
346
373
|
resourceScope: KubernetesResourceScope.Cluster,
|
|
347
374
|
rollingTime: RollingTime.Past5Minutes,
|
|
348
375
|
aggregationType: MetricsAggregationType.Max,
|
|
376
|
+
/*
|
|
377
|
+
* Per pod: restarts are a property of one pod's containers, so a
|
|
378
|
+
* crash-looping pod must page on its own rather than dedupe behind
|
|
379
|
+
* whichever pod in the cluster crashed first. Max over the window
|
|
380
|
+
* therefore becomes "the worst container in THIS pod".
|
|
381
|
+
*/
|
|
382
|
+
groupByAttributeKey: "resource.k8s.pod.name",
|
|
349
383
|
}),
|
|
350
384
|
offlineCriteriaInstance: buildOfflineCriteriaInstance({
|
|
351
385
|
offlineMonitorStatusId: args.offlineMonitorStatusId,
|
|
@@ -390,6 +424,22 @@ const podPendingTemplate: KubernetesAlertTemplate = {
|
|
|
390
424
|
rollingTime: RollingTime.Past5Minutes,
|
|
391
425
|
aggregationType: MetricsAggregationType.Sum,
|
|
392
426
|
attributes: { "resource.k8s.pod.phase": "Pending" },
|
|
427
|
+
/*
|
|
428
|
+
* Deliberately NOT grouped, unlike the other pod-level templates.
|
|
429
|
+
*
|
|
430
|
+
* This is a cluster-wide COUNT of unschedulable pods (Cluster
|
|
431
|
+
* scope, Sum, "Count > 0"), i.e. a statement about the cluster's
|
|
432
|
+
* scheduling capacity rather than about any one pod's health — the
|
|
433
|
+
* same signal as k8s-scheduler-backlog, seen from the pod side.
|
|
434
|
+
*
|
|
435
|
+
* Grouping it by `resource.k8s.pod.name` would fan out per pod
|
|
436
|
+
* name, and pending pod names are ephemeral: a stuck rollout burns
|
|
437
|
+
* a new replicaset-hash-suffixed name per attempt, so every retry
|
|
438
|
+
* would open a fresh incident and resolve it again the moment the
|
|
439
|
+
* name changed. That is an alert storm keyed on an identity that
|
|
440
|
+
* does not persist, which is the opposite of what per-series
|
|
441
|
+
* grouping is for (durable entities: nodes, deployments, jobs).
|
|
442
|
+
*/
|
|
393
443
|
}),
|
|
394
444
|
offlineCriteriaInstance: buildOfflineCriteriaInstance({
|
|
395
445
|
offlineMonitorStatusId: args.offlineMonitorStatusId,
|
|
@@ -433,6 +483,12 @@ const nodeNotReadyTemplate: KubernetesAlertTemplate = {
|
|
|
433
483
|
resourceScope: KubernetesResourceScope.Node,
|
|
434
484
|
rollingTime: RollingTime.Past5Minutes,
|
|
435
485
|
aggregationType: MetricsAggregationType.Min,
|
|
486
|
+
/*
|
|
487
|
+
* Per node: one incident per NotReady node. Ungrouped, the Min
|
|
488
|
+
* across the fleet is 0 as soon as ANY node is down, and the
|
|
489
|
+
* second node to fail dedupes behind the first one's incident.
|
|
490
|
+
*/
|
|
491
|
+
groupByAttributeKey: "resource.k8s.node.name",
|
|
436
492
|
}),
|
|
437
493
|
offlineCriteriaInstance: buildOfflineCriteriaInstance({
|
|
438
494
|
offlineMonitorStatusId: args.offlineMonitorStatusId,
|
|
@@ -584,6 +640,14 @@ const deploymentReplicaMismatchTemplate: KubernetesAlertTemplate = {
|
|
|
584
640
|
resourceScope: KubernetesResourceScope.Workload,
|
|
585
641
|
rollingTime: RollingTime.Past5Minutes,
|
|
586
642
|
aggregationType: MetricsAggregationType.Max,
|
|
643
|
+
/*
|
|
644
|
+
* Per deployment: a stuck rollout is a property of one Deployment
|
|
645
|
+
* object, and the incident copy already names the deployment. The
|
|
646
|
+
* k8s_cluster receiver stamps `k8s.deployment.name` on this metric
|
|
647
|
+
* (the worker reads `resource.k8s.deployment.name` back off these
|
|
648
|
+
* rows to build the affected-resource breakdown).
|
|
649
|
+
*/
|
|
650
|
+
groupByAttributeKey: "resource.k8s.deployment.name",
|
|
587
651
|
}),
|
|
588
652
|
offlineCriteriaInstance: buildOfflineCriteriaInstance({
|
|
589
653
|
offlineMonitorStatusId: args.offlineMonitorStatusId,
|
|
@@ -626,6 +690,13 @@ const jobFailuresTemplate: KubernetesAlertTemplate = {
|
|
|
626
690
|
resourceScope: KubernetesResourceScope.Workload,
|
|
627
691
|
rollingTime: RollingTime.Past5Minutes,
|
|
628
692
|
aggregationType: MetricsAggregationType.Max,
|
|
693
|
+
/*
|
|
694
|
+
* Per Job object — one failing Job must not hide the next one.
|
|
695
|
+
* Jobs are short-lived: when a Job is cleaned up its series stops
|
|
696
|
+
* arriving and the per-series pass auto-resolves that Job's alert
|
|
697
|
+
* by absence, which is the behaviour we want here.
|
|
698
|
+
*/
|
|
699
|
+
groupByAttributeKey: "resource.k8s.job.name",
|
|
629
700
|
}),
|
|
630
701
|
offlineCriteriaInstance: buildOfflineCriteriaInstance({
|
|
631
702
|
offlineMonitorStatusId: args.offlineMonitorStatusId,
|
|
@@ -669,6 +740,11 @@ const etcdNoLeaderTemplate: KubernetesAlertTemplate = {
|
|
|
669
740
|
resourceScope: KubernetesResourceScope.Cluster,
|
|
670
741
|
rollingTime: RollingTime.Past1Minute,
|
|
671
742
|
aggregationType: MetricsAggregationType.Min,
|
|
743
|
+
/*
|
|
744
|
+
* Ungrouped: leadership is a property of the etcd cluster as a
|
|
745
|
+
* whole, not of any one object. "No leader" is one cluster-scalar
|
|
746
|
+
* fact and belongs in one incident.
|
|
747
|
+
*/
|
|
672
748
|
}),
|
|
673
749
|
offlineCriteriaInstance: buildOfflineCriteriaInstance({
|
|
674
750
|
offlineMonitorStatusId: args.offlineMonitorStatusId,
|
|
@@ -712,6 +788,11 @@ const apiServerThrottlingTemplate: KubernetesAlertTemplate = {
|
|
|
712
788
|
resourceScope: KubernetesResourceScope.Cluster,
|
|
713
789
|
rollingTime: RollingTime.Past5Minutes,
|
|
714
790
|
aggregationType: MetricsAggregationType.Sum,
|
|
791
|
+
/*
|
|
792
|
+
* Ungrouped: this is the control plane's aggregate throttling
|
|
793
|
+
* rate. Splitting it would need a per-apiserver-instance identity
|
|
794
|
+
* that this metric does not carry in the shipped agent config.
|
|
795
|
+
*/
|
|
715
796
|
}),
|
|
716
797
|
offlineCriteriaInstance: buildOfflineCriteriaInstance({
|
|
717
798
|
offlineMonitorStatusId: args.offlineMonitorStatusId,
|
|
@@ -755,6 +836,10 @@ const schedulerBacklogTemplate: KubernetesAlertTemplate = {
|
|
|
755
836
|
resourceScope: KubernetesResourceScope.Cluster,
|
|
756
837
|
rollingTime: RollingTime.Past5Minutes,
|
|
757
838
|
aggregationType: MetricsAggregationType.Avg,
|
|
839
|
+
/*
|
|
840
|
+
* Ungrouped: a scheduler queue depth is one number for the
|
|
841
|
+
* cluster. There is no per-object series to split it into.
|
|
842
|
+
*/
|
|
758
843
|
}),
|
|
759
844
|
offlineCriteriaInstance: buildOfflineCriteriaInstance({
|
|
760
845
|
offlineMonitorStatusId: args.offlineMonitorStatusId,
|
|
@@ -797,6 +882,13 @@ const highDiskUsageTemplate: KubernetesAlertTemplate = {
|
|
|
797
882
|
resourceScope: KubernetesResourceScope.Node,
|
|
798
883
|
rollingTime: RollingTime.Past5Minutes,
|
|
799
884
|
aggregationType: MetricsAggregationType.Avg,
|
|
885
|
+
/*
|
|
886
|
+
* Per node: filesystem usage is per node (kubeletstats reports the
|
|
887
|
+
* node's filesystem), and disk fills one node at a time. Ungrouped,
|
|
888
|
+
* the Avg across the fleet dilutes a single full node into the
|
|
889
|
+
* fleet mean and the alert never fires.
|
|
890
|
+
*/
|
|
891
|
+
groupByAttributeKey: "resource.k8s.node.name",
|
|
800
892
|
}),
|
|
801
893
|
offlineCriteriaInstance: buildOfflineCriteriaInstance({
|
|
802
894
|
offlineMonitorStatusId: args.offlineMonitorStatusId,
|
|
@@ -840,6 +932,12 @@ const daemonSetUnavailableTemplate: KubernetesAlertTemplate = {
|
|
|
840
932
|
resourceScope: KubernetesResourceScope.Workload,
|
|
841
933
|
rollingTime: RollingTime.Past5Minutes,
|
|
842
934
|
aggregationType: MetricsAggregationType.Max,
|
|
935
|
+
/*
|
|
936
|
+
* Per DaemonSet object: the incident names the DaemonSet, so each
|
|
937
|
+
* one has to own its own alert instead of dedupeing behind
|
|
938
|
+
* whichever DaemonSet in the cluster misscheduled first.
|
|
939
|
+
*/
|
|
940
|
+
groupByAttributeKey: "resource.k8s.daemonset.name",
|
|
843
941
|
}),
|
|
844
942
|
offlineCriteriaInstance: buildOfflineCriteriaInstance({
|
|
845
943
|
offlineMonitorStatusId: args.offlineMonitorStatusId,
|
|
@@ -79,6 +79,7 @@ import MonitorStepIoTMonitor, {
|
|
|
79
79
|
MonitorStepIoTMonitorUtil,
|
|
80
80
|
} from "./MonitorStepIoTMonitor";
|
|
81
81
|
import MetricsViewConfig from "../Metrics/MetricsViewConfig";
|
|
82
|
+
import MetricQueryConfigData from "../Metrics/MetricQueryConfigData";
|
|
82
83
|
import Zod, { ZodSchema } from "../../Utils/Schema/Zod";
|
|
83
84
|
|
|
84
85
|
/*
|
|
@@ -389,6 +390,54 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
389
390
|
);
|
|
390
391
|
}
|
|
391
392
|
|
|
393
|
+
/**
|
|
394
|
+
* The union of `groupByAttributeKeys` across every metric query config
|
|
395
|
+
* on this step — i.e. the attributes the monitor is grouped by.
|
|
396
|
+
*
|
|
397
|
+
* This is the single source of truth for "is this monitor grouped?".
|
|
398
|
+
* The telemetry worker uses it to decide whether to build a
|
|
399
|
+
* `seriesBreakdown`, and the criteria evaluator uses it to decide
|
|
400
|
+
* whether a criteria is *meant* to fan out one alert/incident per
|
|
401
|
+
* series. Those two answers must never disagree: when they did, a
|
|
402
|
+
* grouped monitor that produced no per-series match silently fell
|
|
403
|
+
* back to a single whole-monitor alert whose dedupe key carries no
|
|
404
|
+
* series, and every host after the first was skipped for as long as
|
|
405
|
+
* that alert stayed open.
|
|
406
|
+
*/
|
|
407
|
+
public static getGroupByAttributeKeys(
|
|
408
|
+
monitorStep: MonitorStep | undefined,
|
|
409
|
+
): Array<string> {
|
|
410
|
+
return MonitorStep.getGroupByAttributeKeysFromQueryConfigs(
|
|
411
|
+
MonitorStep.getMetricsViewConfig(monitorStep)?.queryConfigs || [],
|
|
412
|
+
);
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* The query-config-level half of `getGroupByAttributeKeys`, for the
|
|
417
|
+
* telemetry worker which already holds the configs and never
|
|
418
|
+
* reconstructs the step. Per-series alerting needs a consistent key
|
|
419
|
+
* set across queries so formula series line up — otherwise `a + b`
|
|
420
|
+
* would split differently for `a` and for `b` and the per-series
|
|
421
|
+
* formula evaluation would not align — hence the union rather than
|
|
422
|
+
* per-query keys.
|
|
423
|
+
*/
|
|
424
|
+
public static getGroupByAttributeKeysFromQueryConfigs(
|
|
425
|
+
queryConfigs: Array<MetricQueryConfigData>,
|
|
426
|
+
): Array<string> {
|
|
427
|
+
const keys: Set<string> = new Set<string>();
|
|
428
|
+
|
|
429
|
+
for (const queryConfig of queryConfigs) {
|
|
430
|
+
for (const key of queryConfig?.metricQueryData?.groupByAttributeKeys ||
|
|
431
|
+
[]) {
|
|
432
|
+
if (key) {
|
|
433
|
+
keys.add(key);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
return Array.from(keys);
|
|
439
|
+
}
|
|
440
|
+
|
|
392
441
|
public get id(): ObjectID {
|
|
393
442
|
return new ObjectID(this.data?.id as string);
|
|
394
443
|
}
|
|
@@ -30,6 +30,18 @@ export interface PodmanAlertTemplate {
|
|
|
30
30
|
getMonitorStep: (args: PodmanAlertTemplateArgs) => MonitorStep;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
/*
|
|
34
|
+
* Filter contract: the Podman agent stamps container identity as OTLP
|
|
35
|
+
* RESOURCE attributes, so ClickHouse stores them `resource.`-prefixed:
|
|
36
|
+
* `resource.container.name`, `resource.container.image.name`,
|
|
37
|
+
* `resource.container.runtime` ("podman") and `resource.host.name`. The
|
|
38
|
+
* worker adds the host scope (`resource.host.name` from hostIdentifier)
|
|
39
|
+
* and the runtime filter itself. Every template groups by
|
|
40
|
+
* `resource.container.name` so each container on the host is evaluated
|
|
41
|
+
* independently — one incident per container instead of one incident for
|
|
42
|
+
* the whole host, where the busiest container silences every other one.
|
|
43
|
+
*/
|
|
44
|
+
|
|
33
45
|
export function buildPodmanMonitorStep(args: {
|
|
34
46
|
podmanMonitor: MonitorStepPodmanMonitor;
|
|
35
47
|
offlineCriteriaInstance: MonitorCriteriaInstance;
|
|
@@ -184,6 +196,7 @@ export function buildPodmanMonitorConfig(args: {
|
|
|
184
196
|
rollingTime: RollingTime;
|
|
185
197
|
aggregationType: MetricsAggregationType;
|
|
186
198
|
attributes?: Record<string, string>;
|
|
199
|
+
groupByAttributeKey?: string | undefined;
|
|
187
200
|
}): MonitorStepPodmanMonitor {
|
|
188
201
|
return {
|
|
189
202
|
hostIdentifier: args.hostIdentifier,
|
|
@@ -205,6 +218,9 @@ export function buildPodmanMonitorConfig(args: {
|
|
|
205
218
|
aggegationType: args.aggregationType,
|
|
206
219
|
aggregateBy: {},
|
|
207
220
|
},
|
|
221
|
+
...(args.groupByAttributeKey
|
|
222
|
+
? { groupByAttributeKeys: [args.groupByAttributeKey] }
|
|
223
|
+
: {}),
|
|
208
224
|
},
|
|
209
225
|
},
|
|
210
226
|
],
|
|
@@ -219,7 +235,8 @@ export function buildPodmanMonitorConfig(args: {
|
|
|
219
235
|
const highCpuTemplate: PodmanAlertTemplate = {
|
|
220
236
|
id: "podman-high-cpu",
|
|
221
237
|
name: "High Container CPU Usage",
|
|
222
|
-
description:
|
|
238
|
+
description:
|
|
239
|
+
"Alert when container CPU usage exceeds 80% sustained. One alert per container.",
|
|
223
240
|
category: "Resource",
|
|
224
241
|
severity: "Warning",
|
|
225
242
|
getMonitorStep: (args: PodmanAlertTemplateArgs): MonitorStep => {
|
|
@@ -232,10 +249,12 @@ const highCpuTemplate: PodmanAlertTemplate = {
|
|
|
232
249
|
metricAlias,
|
|
233
250
|
rollingTime: RollingTime.Past5Minutes,
|
|
234
251
|
/*
|
|
235
|
-
*
|
|
236
|
-
*
|
|
252
|
+
* Max WITHIN each container's series: any scrape in the window over
|
|
253
|
+
* the threshold trips that container. Grouping by container name
|
|
254
|
+
* already keeps a hot container from being diluted by idle ones.
|
|
237
255
|
*/
|
|
238
256
|
aggregationType: MetricsAggregationType.Max,
|
|
257
|
+
groupByAttributeKey: "resource.container.name",
|
|
239
258
|
}),
|
|
240
259
|
offlineCriteriaInstance: buildPodmanOfflineCriteriaInstance({
|
|
241
260
|
offlineMonitorStatusId: args.offlineMonitorStatusId,
|
|
@@ -264,7 +283,8 @@ const highCpuTemplate: PodmanAlertTemplate = {
|
|
|
264
283
|
const highMemoryTemplate: PodmanAlertTemplate = {
|
|
265
284
|
id: "podman-high-memory",
|
|
266
285
|
name: "High Container Memory Usage",
|
|
267
|
-
description:
|
|
286
|
+
description:
|
|
287
|
+
"Alert when container memory usage exceeds 85% of its limit. One alert per container.",
|
|
268
288
|
category: "Resource",
|
|
269
289
|
severity: "Warning",
|
|
270
290
|
getMonitorStep: (args: PodmanAlertTemplateArgs): MonitorStep => {
|
|
@@ -277,10 +297,12 @@ const highMemoryTemplate: PodmanAlertTemplate = {
|
|
|
277
297
|
metricAlias,
|
|
278
298
|
rollingTime: RollingTime.Past5Minutes,
|
|
279
299
|
/*
|
|
280
|
-
*
|
|
281
|
-
*
|
|
300
|
+
* Max WITHIN each container's series: any scrape in the window over
|
|
301
|
+
* the limit trips that container. Grouping by container name already
|
|
302
|
+
* keeps a container at its limit from being diluted by idle ones.
|
|
282
303
|
*/
|
|
283
304
|
aggregationType: MetricsAggregationType.Max,
|
|
305
|
+
groupByAttributeKey: "resource.container.name",
|
|
284
306
|
}),
|
|
285
307
|
offlineCriteriaInstance: buildPodmanOfflineCriteriaInstance({
|
|
286
308
|
offlineMonitorStatusId: args.offlineMonitorStatusId,
|
|
@@ -310,7 +332,7 @@ const containerRestartLoopTemplate: PodmanAlertTemplate = {
|
|
|
310
332
|
id: "podman-restart-loop",
|
|
311
333
|
name: "Container Restart Loop",
|
|
312
334
|
description:
|
|
313
|
-
"Alert when a container has restarted more than 5 times, indicating a crash loop.",
|
|
335
|
+
"Alert when a container has restarted more than 5 times, indicating a crash loop. One alert per container.",
|
|
314
336
|
category: "Container",
|
|
315
337
|
severity: "Critical",
|
|
316
338
|
getMonitorStep: (args: PodmanAlertTemplateArgs): MonitorStep => {
|
|
@@ -323,6 +345,7 @@ const containerRestartLoopTemplate: PodmanAlertTemplate = {
|
|
|
323
345
|
metricAlias,
|
|
324
346
|
rollingTime: RollingTime.Past5Minutes,
|
|
325
347
|
aggregationType: MetricsAggregationType.Max,
|
|
348
|
+
groupByAttributeKey: "resource.container.name",
|
|
326
349
|
}),
|
|
327
350
|
offlineCriteriaInstance: buildPodmanOfflineCriteriaInstance({
|
|
328
351
|
offlineMonitorStatusId: args.offlineMonitorStatusId,
|
|
@@ -352,7 +375,7 @@ const highCpuThrottlingTemplate: PodmanAlertTemplate = {
|
|
|
352
375
|
id: "podman-cpu-throttling",
|
|
353
376
|
name: "Container CPU Throttling",
|
|
354
377
|
description:
|
|
355
|
-
"Alert when a container is being CPU-throttled, indicating it needs more CPU resources.",
|
|
378
|
+
"Alert when a container is being CPU-throttled, indicating it needs more CPU resources. One alert per container.",
|
|
356
379
|
category: "Resource",
|
|
357
380
|
severity: "Warning",
|
|
358
381
|
getMonitorStep: (args: PodmanAlertTemplateArgs): MonitorStep => {
|
|
@@ -365,10 +388,12 @@ const highCpuThrottlingTemplate: PodmanAlertTemplate = {
|
|
|
365
388
|
metricAlias,
|
|
366
389
|
rollingTime: RollingTime.Past5Minutes,
|
|
367
390
|
/*
|
|
368
|
-
*
|
|
369
|
-
*
|
|
391
|
+
* Max WITHIN each container's series, so throttled time is never
|
|
392
|
+
* summed across containers — grouping by container name attributes
|
|
393
|
+
* the throttling to the container that actually suffered it.
|
|
370
394
|
*/
|
|
371
395
|
aggregationType: MetricsAggregationType.Max,
|
|
396
|
+
groupByAttributeKey: "resource.container.name",
|
|
372
397
|
}),
|
|
373
398
|
offlineCriteriaInstance: buildPodmanOfflineCriteriaInstance({
|
|
374
399
|
offlineMonitorStatusId: args.offlineMonitorStatusId,
|
|
@@ -398,7 +423,7 @@ const highProcessCountTemplate: PodmanAlertTemplate = {
|
|
|
398
423
|
id: "podman-high-pids",
|
|
399
424
|
name: "High Container Process Count",
|
|
400
425
|
description:
|
|
401
|
-
"Alert when a container has an unusually high number of processes, which may indicate a fork bomb or resource leak.",
|
|
426
|
+
"Alert when a container has an unusually high number of processes, which may indicate a fork bomb or resource leak. One alert per container.",
|
|
402
427
|
category: "Container",
|
|
403
428
|
severity: "Warning",
|
|
404
429
|
getMonitorStep: (args: PodmanAlertTemplateArgs): MonitorStep => {
|
|
@@ -411,6 +436,7 @@ const highProcessCountTemplate: PodmanAlertTemplate = {
|
|
|
411
436
|
metricAlias,
|
|
412
437
|
rollingTime: RollingTime.Past5Minutes,
|
|
413
438
|
aggregationType: MetricsAggregationType.Max,
|
|
439
|
+
groupByAttributeKey: "resource.container.name",
|
|
414
440
|
}),
|
|
415
441
|
offlineCriteriaInstance: buildPodmanOfflineCriteriaInstance({
|
|
416
442
|
offlineMonitorStatusId: args.offlineMonitorStatusId,
|
|
@@ -440,7 +466,7 @@ const containerUptimeTemplate: PodmanAlertTemplate = {
|
|
|
440
466
|
id: "podman-container-down",
|
|
441
467
|
name: "Container Down (Low Uptime)",
|
|
442
468
|
description:
|
|
443
|
-
"Alert when a container's uptime drops to zero, indicating it has stopped or crashed.",
|
|
469
|
+
"Alert when a container's uptime drops to zero, indicating it has stopped or crashed. One alert per container.",
|
|
444
470
|
category: "Container",
|
|
445
471
|
severity: "Critical",
|
|
446
472
|
getMonitorStep: (args: PodmanAlertTemplateArgs): MonitorStep => {
|
|
@@ -453,6 +479,7 @@ const containerUptimeTemplate: PodmanAlertTemplate = {
|
|
|
453
479
|
metricAlias,
|
|
454
480
|
rollingTime: RollingTime.Past1Minute,
|
|
455
481
|
aggregationType: MetricsAggregationType.Min,
|
|
482
|
+
groupByAttributeKey: "resource.container.name",
|
|
456
483
|
}),
|
|
457
484
|
offlineCriteriaInstance: buildPodmanOfflineCriteriaInstance({
|
|
458
485
|
offlineMonitorStatusId: args.offlineMonitorStatusId,
|
|
@@ -10,4 +10,18 @@ export default interface CdpNeighbor {
|
|
|
10
10
|
remoteDeviceId?: string | undefined;
|
|
11
11
|
remotePortId?: string | undefined;
|
|
12
12
|
remotePlatform?: string | undefined;
|
|
13
|
+
/*
|
|
14
|
+
* The address the neighbor advertises for itself (cdpCacheAddress, kept
|
|
15
|
+
* only when cdpCacheAddressType says it is an IP). Optional because the
|
|
16
|
+
* column is frequently empty and older payloads predate it entirely.
|
|
17
|
+
*
|
|
18
|
+
* Two things depend on it. It is a match key: a device we already manage
|
|
19
|
+
* BY ADDRESS — imported from a subnet sweep, so its hostname is an IP and
|
|
20
|
+
* its name is something else entirely — used to be drawn as a stranger
|
|
21
|
+
* because nothing the neighbor advertised looked like its name. And it is
|
|
22
|
+
* the one field that makes an unmanaged peer actionable: monitoring
|
|
23
|
+
* anything needs an address, and without this the map knows a device's
|
|
24
|
+
* make and model but not where it lives.
|
|
25
|
+
*/
|
|
26
|
+
remoteIpAddress?: string | undefined;
|
|
13
27
|
}
|
|
@@ -9,4 +9,15 @@ export default interface LldpNeighbor {
|
|
|
9
9
|
remoteChassisId?: string | undefined;
|
|
10
10
|
remotePortId?: string | undefined;
|
|
11
11
|
remoteSysName?: string | undefined;
|
|
12
|
+
/*
|
|
13
|
+
* The neighbor's management address, joined in from lldpRemManAddrTable
|
|
14
|
+
* (a separate table whose index carries the address). Optional: plenty of
|
|
15
|
+
* agents do not implement it, an IPv6-only entry is skipped, and older
|
|
16
|
+
* payloads predate the column.
|
|
17
|
+
*
|
|
18
|
+
* See CdpNeighbor.remoteIpAddress for why it is worth the extra walk — it
|
|
19
|
+
* matches devices we manage by address, and it is what turns an unmanaged
|
|
20
|
+
* peer on the map into something that can actually be monitored.
|
|
21
|
+
*/
|
|
22
|
+
remoteIpAddress?: string | undefined;
|
|
12
23
|
}
|
|
@@ -108,10 +108,17 @@ export interface NetworkTopologyNode {
|
|
|
108
108
|
// For unmanaged CDP peers this carries the reported platform string.
|
|
109
109
|
deviceModel?: string | undefined;
|
|
110
110
|
/*
|
|
111
|
-
* Endpoint identity
|
|
112
|
-
*
|
|
113
|
-
* "
|
|
114
|
-
*
|
|
111
|
+
* Endpoint identity, all best-effort: MAC from the FDB, IP from the ARP
|
|
112
|
+
* join, classification from OUI/heuristics (e.g. "pos-terminal",
|
|
113
|
+
* "camera", "printer"), VLAN from the FDB entry that learned the MAC.
|
|
114
|
+
* Optional so older payloads stay valid.
|
|
115
|
+
*
|
|
116
|
+
* `ipAddress` is the exception to "endpoint nodes only": an UNMANAGED
|
|
117
|
+
* peer carries it too, from the management address its neighbours
|
|
118
|
+
* advertise for it (CDP cdpCacheAddress / LLDP lldpRemManAddrTable). It
|
|
119
|
+
* is the field that makes such a peer actionable rather than merely
|
|
120
|
+
* visible — nothing can be monitored without an address — so a reader
|
|
121
|
+
* must not assume a node with an ipAddress is an endpoint.
|
|
115
122
|
*/
|
|
116
123
|
macAddress?: string | undefined;
|
|
117
124
|
ipAddress?: string | undefined;
|
|
@@ -93,8 +93,30 @@ export interface AutoImportRuleRunResult {
|
|
|
93
93
|
// Matched hosts whose create threw. Logged server-side, never fatal.
|
|
94
94
|
devicesFailed: number;
|
|
95
95
|
/*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
96
|
+
* Active Network Device monitors a dry run predicts it would create from
|
|
97
|
+
* the rule's selected Monitor Template. Always zero on a real run: real
|
|
98
|
+
* work is counted by monitorsCreated / monitorsFailed instead.
|
|
99
|
+
*/
|
|
100
|
+
monitorsWouldCreate: number;
|
|
101
|
+
// Active Network Device monitors actually created and linked to a template.
|
|
102
|
+
monitorsCreated: number;
|
|
103
|
+
/*
|
|
104
|
+
* Matched devices left alone because a Network Device monitor already
|
|
105
|
+
* watches them. Existing manual monitors count too: automation must never
|
|
106
|
+
* add a duplicate simply because it did not create the first one.
|
|
107
|
+
*/
|
|
108
|
+
monitorsSkippedAlreadyExisting: number;
|
|
109
|
+
/*
|
|
110
|
+
* Matched hosts that can become inventory records but cannot be backed by a
|
|
111
|
+
* Network Device monitor, such as a ping-only discovery result.
|
|
112
|
+
*/
|
|
113
|
+
monitorsSkippedUnsupportedHost: number;
|
|
114
|
+
// Monitor creates that failed after the device was available.
|
|
115
|
+
monitorsFailed: number;
|
|
116
|
+
/*
|
|
117
|
+
* True when the run stopped at the device-create or monitor-create cap
|
|
118
|
+
* with work left over. Running again continues from idempotent inventory
|
|
119
|
+
* and provisioning keys.
|
|
98
120
|
*/
|
|
99
121
|
isTruncated: boolean;
|
|
100
122
|
/*
|
|
@@ -132,7 +154,163 @@ function readCount(json: JSONObject, key: string): number {
|
|
|
132
154
|
return value;
|
|
133
155
|
}
|
|
134
156
|
|
|
157
|
+
function hosts(count: number): string {
|
|
158
|
+
return `${count} ${count === 1 ? "host" : "hosts"}`;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
function activeMonitors(count: number): string {
|
|
162
|
+
return `${count} active Network Device ${
|
|
163
|
+
count === 1 ? "monitor" : "monitors"
|
|
164
|
+
}`;
|
|
165
|
+
}
|
|
166
|
+
|
|
135
167
|
export class RuleRunResultUtil {
|
|
168
|
+
/*
|
|
169
|
+
* The sentences the auto-import report shows. A run that imported nothing is
|
|
170
|
+
* the common case once a rule has been run, and "0 imported" with no reason
|
|
171
|
+
* reads as a broken button — so every bucket the server counted is reported
|
|
172
|
+
* only when it happened.
|
|
173
|
+
*
|
|
174
|
+
* It lives here rather than beside the browser modal so the App test suite,
|
|
175
|
+
* which has no react in its import graph, can exercise the wording without
|
|
176
|
+
* pulling in the component's react dependency.
|
|
177
|
+
*/
|
|
178
|
+
public static describeAutoImportRun(result: AutoImportRuleRunResult): string {
|
|
179
|
+
const lines: Array<string> = [];
|
|
180
|
+
|
|
181
|
+
if (result.isDryRun) {
|
|
182
|
+
/*
|
|
183
|
+
* A dry run creates nothing, so devicesCreated is always zero. What a
|
|
184
|
+
* real run would attempt is matched minus already-registered — the
|
|
185
|
+
* server reports it exactly this way (see the engine's dry-run branch).
|
|
186
|
+
*/
|
|
187
|
+
const wouldImport: number = Math.max(
|
|
188
|
+
result.hostsMatched - result.hostsSkippedAlreadyRegistered,
|
|
189
|
+
0,
|
|
190
|
+
);
|
|
191
|
+
|
|
192
|
+
if (wouldImport > 0) {
|
|
193
|
+
lines.push(
|
|
194
|
+
`This rule would import ${hosts(
|
|
195
|
+
wouldImport,
|
|
196
|
+
)} as network devices. Nothing was written — this was a dry run.`,
|
|
197
|
+
);
|
|
198
|
+
} else {
|
|
199
|
+
lines.push(
|
|
200
|
+
`This rule would import nothing. It matched ${hosts(
|
|
201
|
+
result.hostsMatched,
|
|
202
|
+
)} out of the ${hosts(
|
|
203
|
+
result.hostsEvaluated,
|
|
204
|
+
)} discovered hosts it looked at.`,
|
|
205
|
+
);
|
|
206
|
+
}
|
|
207
|
+
} else if (result.devicesCreated > 0) {
|
|
208
|
+
lines.push(
|
|
209
|
+
`Imported ${hosts(result.devicesCreated)} as network devices.`,
|
|
210
|
+
);
|
|
211
|
+
} else {
|
|
212
|
+
lines.push(
|
|
213
|
+
`No devices were imported. This rule matched ${hosts(
|
|
214
|
+
result.hostsMatched,
|
|
215
|
+
)} out of the ${hosts(
|
|
216
|
+
result.hostsEvaluated,
|
|
217
|
+
)} discovered hosts it looked at.`,
|
|
218
|
+
);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/*
|
|
222
|
+
* Device import and active-monitor provisioning are separate outcomes. A
|
|
223
|
+
* monitor can fail after its inventory record was safely created, and a
|
|
224
|
+
* dry run predicts monitor work without claiming anything was written.
|
|
225
|
+
*/
|
|
226
|
+
if (result.isDryRun && result.monitorsWouldCreate > 0) {
|
|
227
|
+
lines.push(
|
|
228
|
+
`It would also create ${activeMonitors(
|
|
229
|
+
result.monitorsWouldCreate,
|
|
230
|
+
)} from the selected Monitor Template.`,
|
|
231
|
+
);
|
|
232
|
+
} else if (!result.isDryRun && result.monitorsCreated > 0) {
|
|
233
|
+
lines.push(
|
|
234
|
+
`Created ${activeMonitors(
|
|
235
|
+
result.monitorsCreated,
|
|
236
|
+
)} from the selected Monitor Template.`,
|
|
237
|
+
);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
if (result.monitorsSkippedAlreadyExisting > 0) {
|
|
241
|
+
const skippedRequestedMonitors: string = `${
|
|
242
|
+
result.monitorsSkippedAlreadyExisting
|
|
243
|
+
} requested active Network Device ${
|
|
244
|
+
result.monitorsSkippedAlreadyExisting === 1 ? "monitor" : "monitors"
|
|
245
|
+
}`;
|
|
246
|
+
lines.push(
|
|
247
|
+
`${skippedRequestedMonitors} ${
|
|
248
|
+
result.monitorsSkippedAlreadyExisting === 1 ? "was" : "were"
|
|
249
|
+
} skipped because the device already had the requested automatic monitor or a manually configured Network Device monitor.`,
|
|
250
|
+
);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
if (result.monitorsSkippedUnsupportedHost > 0) {
|
|
254
|
+
lines.push(
|
|
255
|
+
`${activeMonitors(
|
|
256
|
+
result.monitorsSkippedUnsupportedHost,
|
|
257
|
+
)} could not be provisioned because the discovery result was not SNMP-capable (for example, a ping-only host).`,
|
|
258
|
+
);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
if (result.monitorsFailed > 0) {
|
|
262
|
+
lines.push(
|
|
263
|
+
`${activeMonitors(
|
|
264
|
+
result.monitorsFailed,
|
|
265
|
+
)} could not be created. Their network devices remain imported; check the server logs for the reason.`,
|
|
266
|
+
);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
if (result.hostsExcluded > 0) {
|
|
270
|
+
lines.push(`An exclusion rule vetoed ${hosts(result.hostsExcluded)}.`);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
if (result.hostsSkippedAlreadyRegistered > 0) {
|
|
274
|
+
lines.push(
|
|
275
|
+
`${hosts(
|
|
276
|
+
result.hostsSkippedAlreadyRegistered,
|
|
277
|
+
)} already had network devices at those addresses, so no duplicate device records were imported.`,
|
|
278
|
+
);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
if (result.devicesFailed > 0) {
|
|
282
|
+
lines.push(
|
|
283
|
+
`${hosts(
|
|
284
|
+
result.devicesFailed,
|
|
285
|
+
)} could not be imported. Check the server logs for the reason.`,
|
|
286
|
+
);
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/*
|
|
290
|
+
* Two different caps, two different truths. The device cap resumes:
|
|
291
|
+
* re-running skips what is already imported and continues. The scan cap
|
|
292
|
+
* does NOT: a re-run re-reads the same newest scans, so promising "run
|
|
293
|
+
* again to continue" there would send the operator in a circle.
|
|
294
|
+
*/
|
|
295
|
+
if (result.isTruncated && !result.isDryRun) {
|
|
296
|
+
lines.push(
|
|
297
|
+
"Stopped at the run cap — run again to continue; already-imported hosts are skipped.",
|
|
298
|
+
);
|
|
299
|
+
} else if (result.isTruncated) {
|
|
300
|
+
lines.push(
|
|
301
|
+
"Stopped counting at the run cap — a real run is bounded by the same device-import and active-monitor creation limits.",
|
|
302
|
+
);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
if (result.hasMoreScans) {
|
|
306
|
+
lines.push(
|
|
307
|
+
"Only the newest 100 completed scans were read — hosts that appear only in older scans were not evaluated by this run.",
|
|
308
|
+
);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
return lines.join(" ");
|
|
312
|
+
}
|
|
313
|
+
|
|
136
314
|
public static parseSiteAssignmentRuleRunResult(
|
|
137
315
|
json: JSONObject | undefined | null,
|
|
138
316
|
): SiteAssignmentRuleRunResult {
|
|
@@ -196,6 +374,17 @@ export class RuleRunResultUtil {
|
|
|
196
374
|
),
|
|
197
375
|
devicesCreated: readCount(source, "devicesCreated"),
|
|
198
376
|
devicesFailed: readCount(source, "devicesFailed"),
|
|
377
|
+
monitorsWouldCreate: readCount(source, "monitorsWouldCreate"),
|
|
378
|
+
monitorsCreated: readCount(source, "monitorsCreated"),
|
|
379
|
+
monitorsSkippedAlreadyExisting: readCount(
|
|
380
|
+
source,
|
|
381
|
+
"monitorsSkippedAlreadyExisting",
|
|
382
|
+
),
|
|
383
|
+
monitorsSkippedUnsupportedHost: readCount(
|
|
384
|
+
source,
|
|
385
|
+
"monitorsSkippedUnsupportedHost",
|
|
386
|
+
),
|
|
387
|
+
monitorsFailed: readCount(source, "monitorsFailed"),
|
|
199
388
|
isTruncated: source["isTruncated"] === true,
|
|
200
389
|
hasMoreScans: source["hasMoreScans"] === true,
|
|
201
390
|
isDryRun: source["isDryRun"] === true,
|