@oneuptime/common 12.0.32 → 12.0.33
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/Span.ts +14 -0
- package/Models/DatabaseModels/EnterpriseLicense.ts +56 -0
- package/Models/DatabaseModels/Index.ts +10 -0
- package/Models/DatabaseModels/Monitor.ts +76 -0
- package/Models/DatabaseModels/NetworkAlertPolicy.ts +690 -0
- package/Models/DatabaseModels/NetworkDevice.ts +176 -1
- package/Models/DatabaseModels/NetworkSite.ts +201 -2
- package/Models/DatabaseModels/NetworkSiteType.ts +102 -3
- package/Models/DatabaseModels/NetworkSnmpCredentialProfile.ts +841 -0
- package/Models/DatabaseModels/TelemetryException.ts +119 -0
- package/Models/DatabaseModels/UserNotificationEmailRollupBatch.ts +334 -0
- package/Models/DatabaseModels/UserNotificationEmailRollupItem.ts +370 -0
- package/Models/DatabaseModels/UserNotificationEmailRollupSetting.ts +282 -0
- package/Server/API/EnterpriseLicenseAPI.ts +391 -64
- package/Server/API/LlmProviderAPI.ts +137 -22
- package/Server/EnvironmentConfig.ts +14 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790700000000-AddNetworkSiteTypeParentHierarchy.ts +55 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddEnterpriseLicenseUsageProvenance.ts +31 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddTelemetryExceptionErrorClass.ts +124 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791000000000-AddUserNotificationEmailRollup.ts +132 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791100000000-AddUserNotificationEmailRollupSetting.ts +79 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791200000000-AddNetworkSnmpCredentialProfilesAndAlertPolicies.ts +191 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +12 -0
- package/Server/Infrastructure/QueueWorker.ts +38 -8
- package/Server/Middleware/BearerTokenAuthorization.ts +12 -0
- package/Server/Middleware/ProjectAuthorization.ts +11 -0
- package/Server/Middleware/SCIMAuthorization.ts +12 -0
- package/Server/Middleware/TelemetryIngest.ts +11 -0
- package/Server/Services/AIBillingService.ts +101 -27
- package/Server/Services/EnterpriseLicenseInstanceService.ts +197 -0
- package/Server/Services/EnterpriseLicenseService.ts +55 -0
- package/Server/Services/Index.ts +10 -0
- package/Server/Services/MonitorService.ts +143 -21
- package/Server/Services/MonitorStatusTimelineService.ts +150 -8
- package/Server/Services/MonitorTemplateService.ts +217 -1
- package/Server/Services/NetworkAlertPolicyEngineService.ts +2159 -0
- package/Server/Services/NetworkAlertPolicyService.ts +944 -0
- package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +9 -10
- package/Server/Services/NetworkDeviceAutoImportRuleService.ts +60 -15
- package/Server/Services/NetworkDeviceService.ts +1032 -73
- package/Server/Services/NetworkSiteService.ts +1502 -129
- package/Server/Services/NetworkSiteTypeService.ts +1216 -0
- package/Server/Services/NetworkSnmpCredentialProfileService.ts +238 -0
- package/Server/Services/NotificationService.ts +118 -28
- package/Server/Services/ProjectService.ts +105 -48
- package/Server/Services/StatusPagePrivateUserService.ts +103 -3
- package/Server/Services/UserNotificationEmailRollupBatchService.ts +78 -0
- package/Server/Services/UserNotificationEmailRollupItemService.ts +79 -0
- package/Server/Services/UserNotificationEmailRollupSettingService.ts +113 -0
- package/Server/Services/UserNotificationSettingService.ts +62 -25
- package/Server/Services/UserService.ts +95 -0
- package/Server/Types/Database/QueryHelper.ts +2 -2
- package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +14 -3
- package/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.ts +10 -0
- package/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.ts +10 -0
- package/Server/Utils/AI/SRE/Insights/InsightTriageRunner.ts +62 -1
- package/Server/Utils/AI/Toolbox/AlertTools.ts +15 -1
- package/Server/Utils/Billing/BillingFailureNoticeThrottle.ts +80 -0
- package/Server/Utils/DataSource/HttpFetch.ts +9 -2
- package/Server/Utils/EmailRollup/EmailRollupConstants.ts +98 -0
- package/Server/Utils/EmailRollup/EmailRollupFlushRunner.ts +872 -0
- package/Server/Utils/EmailRollup/EmailRollupRenderer.ts +781 -0
- package/Server/Utils/EmailRollup/EmailRollupWriter.ts +368 -0
- package/Server/Utils/LLM/LLMService.ts +78 -0
- package/Server/Utils/LogRedaction.ts +8 -0
- package/Server/Utils/Logger.ts +79 -1
- package/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.ts +190 -0
- package/Server/Utils/Monitor/Criteria/EvaluateOverTime.ts +9 -2
- package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +61 -1
- package/Server/Utils/Monitor/MonitorCriteriaDataExtractor.ts +14 -0
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +49 -0
- package/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.ts +255 -4
- package/Server/Utils/Monitor/MonitorMetricUtil.ts +41 -0
- package/Server/Utils/Monitor/MonitorTemplateUtil.ts +43 -0
- package/Server/Utils/Monitor/NetworkDeviceHydrationUtil.ts +499 -19
- package/Server/Utils/Monitor/NetworkDeviceMetricUtil.ts +66 -10
- package/Server/Utils/Monitor/NetworkDeviceWalkUtil.ts +238 -44
- package/Server/Utils/Monitor/NetworkInventoryUtil.ts +146 -39
- package/Server/Utils/NetworkDevice/DeviceHealthAggregation.ts +31 -18
- package/Server/Utils/NetworkSite/NetworkSiteHierarchyLock.ts +213 -0
- package/Server/Utils/OutboundUserAgent.ts +152 -0
- package/Server/Utils/StartServer.ts +51 -19
- package/Server/Utils/Telemetry/CaptureSpan.ts +32 -8
- package/Server/Utils/Telemetry/ErrorClassResolver.ts +120 -0
- package/Server/Utils/Telemetry/SpanUtil.ts +33 -0
- package/Server/Utils/Telemetry.ts +198 -51
- package/Server/Views/Partials/SensitiveUrlToken.ejs +140 -0
- package/Tests/App/Dashboard/AddNeighborToMonitoringModal.test.tsx +134 -33
- package/Tests/App/Dashboard/AskAiSuggestedPrompts.test.ts +279 -0
- package/Tests/App/Dashboard/DashboardEditPermissions.test.tsx +517 -0
- package/Tests/App/Dashboard/DashboardVariablesDiscard.test.tsx +26 -0
- package/Tests/App/Dashboard/DeviceStatusHero.test.tsx +588 -0
- package/Tests/App/Dashboard/DiscoveryScanWizardValidation.test.tsx +18 -9
- package/Tests/App/Dashboard/MonitorCreateFromMonitorBackedDevice.test.tsx +632 -0
- package/Tests/App/Dashboard/MonitorRecommendationCreateProgress.test.tsx +682 -0
- package/Tests/App/Dashboard/MonitorTypePicker.test.tsx +4 -2
- package/Tests/App/Dashboard/NetworkDeviceCreateFormMonitorBinding.test.tsx +676 -0
- package/Tests/App/Dashboard/NetworkDeviceCreateFormPingMonitor.test.tsx +791 -0
- package/Tests/App/Dashboard/NetworkDeviceCreateFormProbeAndSnmp.test.tsx +833 -0
- package/Tests/App/Dashboard/NetworkDeviceCriteriaFilter.test.ts +161 -0
- package/Tests/App/Dashboard/NetworkDeviceSettingsMonitoringSection.test.tsx +458 -0
- package/Tests/App/Dashboard/NetworkSideMenu.test.tsx +41 -5
- package/Tests/App/Dashboard/PingMonitorProvisioning.test.ts +368 -0
- package/Tests/App/Dashboard/RecommendationCard.test.tsx +796 -0
- package/Tests/App/Dashboard/RecommendationToolbar.test.tsx +519 -0
- package/Tests/App/Dashboard/RecommendationsList.test.tsx +661 -0
- package/Tests/App/Dashboard/UseBulkCreatePingMonitors.test.tsx +899 -0
- package/Tests/App/Dashboard/UseBulkSnmpCredentialProfileActions.test.tsx +732 -0
- package/Tests/App/SensitiveUrlTokenBootstrap.test.ts +256 -0
- package/Tests/App/StatusPage/StatusPageIndexPageRobotsMeta.test.ts +11 -1
- package/Tests/App/StatusPage/StatusPageLoginCodeBootstrap.test.ts +9 -4
- package/Tests/Models/NetworkSiteHierarchy.test.ts +41 -4
- package/Tests/Server/API/EnterpriseLicenseReportUserCount.test.ts +951 -7
- package/Tests/Server/API/LlmProviderConnectionTest.test.ts +522 -0
- package/Tests/Server/Infrastructure/Postgres/NetworkSnmpCredentialProfilesAndAlertPoliciesMigration.test.ts +854 -0
- package/Tests/Server/Infrastructure/Postgres/SchemaMigrationsOrdering.test.ts +18 -0
- package/Tests/Server/Infrastructure/Postgres/UserNotificationEmailRollupTableMigration.test.ts +535 -0
- package/Tests/Server/Services/AIChatPrivacyPin.test.ts +560 -0
- package/Tests/Server/Services/BillingRechargeOwnerEmailGuards.test.ts +783 -0
- package/Tests/Server/Services/EnterpriseLicenseInstanceServiceDeletionUsage.test.ts +707 -0
- package/Tests/Server/Services/EnterpriseLicenseServiceUsageAggregationLock.test.ts +329 -0
- package/Tests/Server/Services/MonitorServiceDeleteNetworkDeviceCleanup.test.ts +294 -0
- package/Tests/Server/Services/MonitorStatusBridgeProbePath.test.ts +802 -0
- package/Tests/Server/Services/MonitorStatusTimelineService.test.ts +72 -2
- package/Tests/Server/Services/NetworkAlertPolicyEngineHooks.test.ts +752 -0
- package/Tests/Server/Services/NetworkAlertPolicyEngineService.test.ts +1849 -0
- package/Tests/Server/Services/NetworkAlertPolicyModel.test.ts +1793 -0
- package/Tests/Server/Services/NetworkDeviceAutoImportRuleEngineService.test.ts +47 -4
- package/Tests/Server/Services/NetworkDeviceAutoImportRuleService.test.ts +97 -12
- package/Tests/Server/Services/NetworkDeviceAutoMonitorLifecycle.test.ts +148 -3
- package/Tests/Server/Services/NetworkDeviceMonitorBindingUpdateGuard.test.ts +514 -0
- package/Tests/Server/Services/NetworkDeviceMonitorStatusStamp.test.ts +447 -58
- package/Tests/Server/Services/NetworkDeviceMonitoringMethodTransition.test.ts +739 -0
- package/Tests/Server/Services/NetworkDevicePollingTenancy.test.ts +501 -0
- package/Tests/Server/Services/NetworkDeviceSiteDefaultProbe.test.ts +432 -0
- package/Tests/Server/Services/NetworkSiteMonitoringDefaults.test.ts +498 -0
- package/Tests/Server/Services/NetworkSiteRollupPolicyAndMaintenance.test.ts +337 -55
- package/Tests/Server/Services/NetworkSiteService.test.ts +1868 -131
- package/Tests/Server/Services/NetworkSiteTypeService.test.ts +1109 -0
- package/Tests/Server/Services/NetworkSnmpCredentialProfileModel.test.ts +926 -0
- package/Tests/Server/Services/NetworkSnmpCredentialProfileService.test.ts +796 -0
- package/Tests/Server/Services/ProjectServiceNetworkSiteTypeDefaults.test.ts +214 -0
- package/Tests/Server/Services/StatusPagePrivateUserEmailChangePasswordResetExpiry.test.ts +269 -0
- package/Tests/Server/Services/UserEmailChangePasswordResetExpiry.test.ts +472 -0
- package/Tests/Server/Services/UserNotificationEmailRollupModels.test.ts +569 -0
- package/Tests/Server/Services/UserNotificationEmailRollupSettingModel.test.ts +314 -0
- package/Tests/Server/Services/UserNotificationEmailRollupSettingService.test.ts +409 -0
- package/Tests/Server/Services/UserNotificationSettingRollupRouting.test.ts +856 -0
- package/Tests/Server/Services/UserNotificationSettingWorkspaceChannels.test.ts +102 -1
- package/Tests/Server/Types/Database/Permissions/DashboardAccessPermission.test.ts +321 -0
- package/Tests/Server/Types/Database/QueryHelperOperators.test.ts +17 -0
- package/Tests/Server/Utils/AI/AlertMonitorFilters.test.ts +124 -0
- package/Tests/Server/Utils/AI/Insights/InsightTriageRunner.test.ts +208 -0
- package/Tests/Server/Utils/AI/LLMServiceToolCalling.test.ts +235 -0
- package/Tests/Server/Utils/AI/ObservabilityChatPrompt.test.ts +253 -0
- package/Tests/Server/Utils/Captcha.test.ts +422 -0
- package/Tests/Server/Utils/DataSource/HttpFetch.test.ts +96 -2
- package/Tests/Server/Utils/Database/MigrationFailureLog.test.ts +466 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupFlushRunnerBehaviour.test.ts +1096 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupFlushRunnerClaim.test.ts +466 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupRenderer.test.ts +1428 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupTestHarness.ts +752 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupWriter.test.ts +864 -0
- package/Tests/Server/Utils/LoggerFaultDemotion.test.ts +346 -0
- package/Tests/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.test.ts +633 -0
- package/Tests/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.test.ts +196 -0
- package/Tests/Server/Utils/Monitor/DatabaseMetricWrite.test.ts +367 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaObservationBuilderUnits.test.ts +100 -0
- package/Tests/Server/Utils/Monitor/MonitorStepResourceIdentity.test.ts +5 -0
- package/Tests/Server/Utils/Monitor/NetworkDeviceHydrationUtil.test.ts +512 -31
- package/Tests/Server/Utils/Monitor/NetworkDeviceMetricUtil.test.ts +252 -0
- package/Tests/Server/Utils/Monitor/NetworkDeviceWalkUtil.test.ts +479 -42
- package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +351 -5
- package/Tests/Server/Utils/NetworkDevice/DeviceHealthAggregation.test.ts +136 -12
- package/Tests/Server/Utils/NetworkSite/NetworkSiteHierarchyLock.test.ts +306 -0
- package/Tests/Server/Utils/OutboundUserAgent.test.ts +266 -0
- package/Tests/Server/Utils/SecurityEvent/ThreatIntel/TaxiiClientUserAgent.test.ts +141 -0
- package/Tests/Server/Utils/Telemetry/ErrorClassResolver.test.ts +298 -0
- package/Tests/Server/Utils/Telemetry.test.ts +456 -66
- package/Tests/Types/Monitor/DatabaseMetricCatalog.test.ts +388 -0
- package/Tests/Types/Monitor/MonitorStepDatabaseMonitor.test.ts +243 -0
- package/Tests/Types/Monitor/MonitorStepDefaultTelemetryConfig.test.ts +1 -0
- package/Tests/Types/Monitor/MonitorType.test.ts +1 -0
- package/Tests/Types/Monitor/MonitorTypeKeywords.test.ts +16 -7
- package/Tests/Types/Monitor/NetworkDeviceAlertPack.test.ts +60 -0
- package/Tests/Types/NetworkDevice/NetworkAlertPolicyScope.test.ts +655 -0
- package/Tests/Types/NetworkDevice/NetworkDeviceMonitoringMethod.test.ts +115 -26
- package/Tests/Types/NetworkSite/DefaultNetworkSiteType.test.ts +39 -0
- package/Tests/Types/NotificationSetting/NotificationEmailRollupPolicy.test.ts +299 -0
- package/Tests/Types/Telemetry/ErrorClass.test.ts +483 -0
- package/Tests/UI/Components/BasicRadioButtons.test.tsx +336 -0
- package/Tests/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.test.ts +15 -0
- package/Tests/UI/Components/ProgressBar.test.tsx +38 -2
- package/Tests/UI/Components/SideMenuItem.test.tsx +226 -4
- package/Tests/UI/Components/SideMenuSection.test.tsx +310 -0
- package/Tests/UI/Components/SideOverSubmitState.test.tsx +335 -0
- package/Tests/UI/Utils/PageScrollLock.test.tsx +377 -0
- package/Tests/UI/Utils/PermissionGate.test.ts +78 -0
- package/Tests/UI/Utils/SensitiveUrlToken.test.ts +140 -0
- package/Tests/Utils/EnterpriseLicenseSeats.test.ts +69 -0
- package/Tests/Utils/EnterpriseLicenseSync.test.ts +7 -1
- package/Tests/Utils/EnterpriseLicenseUsage.test.ts +433 -2
- package/Tests/Utils/Monitor/MonitorMetricType.test.ts +280 -1
- package/Tests/Utils/Monitor/MonitorSummarySnapshotUtil.test.ts +1 -0
- package/Tests/Utils/Monitor/NetworkTopologyUtil.test.ts +38 -0
- package/Tests/Utils/NetworkDevice/DeviceHealthStateUtil.test.ts +284 -23
- package/Tests/Utils/NetworkDevice/DeviceReachabilityUtil.test.ts +177 -0
- package/Tests/Utils/NetworkDevice/MonitoringMethodThreadedClassifiers.test.ts +992 -0
- package/Tests/Utils/NetworkDevice/NetworkAlertPolicyBootstrapUtil.test.ts +427 -0
- package/Tests/Utils/NetworkDevice/ReachabilityStampConsistency.test.ts +185 -0
- package/Tests/Utils/NetworkDevice/SnmpCredentialUtil.test.ts +268 -0
- package/Tests/Utils/NetworkDiscovery/AutoImportRuleMatcher.test.ts +55 -5
- package/Tests/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.test.ts +98 -21
- package/Tests/Utils/NetworkDiscovery/DiscoveryImportEligibility.test.ts +98 -20
- package/Tests/Utils/NetworkDiscovery/DiscoveryReverseDnsChain.test.ts +8 -7
- package/Tests/Utils/NetworkDiscovery/PingMonitorBuilderForAddress.test.ts +274 -0
- package/Tests/Utils/NetworkSite/SiteStatusRollupUtil.test.ts +230 -51
- package/Tests/Utils/NetworkSite/TypeHierarchyUtil.test.ts +209 -0
- package/Tests/Utils/Telemetry/CaptureSpanExportGating.test.ts +145 -0
- package/Types/AI/ExceptionAIClassification.ts +10 -24
- package/Types/Email/EmailTemplateType.ts +2 -0
- package/Types/EnterpriseLicense/EnterpriseLicenseInstanceSummary.ts +5 -0
- package/Types/EnterpriseLicense/EnterpriseLicenseUsageSnapshot.ts +13 -0
- package/Types/EnterpriseLicense/EnterpriseLicenseUserCountSource.ts +6 -0
- package/Types/Exception/ApiException.ts +10 -0
- package/Types/Exception/BadDataException.ts +11 -0
- package/Types/Exception/BadRequestException.ts +11 -0
- package/Types/Exception/Exception.ts +65 -0
- package/Types/Exception/ForbiddenException.ts +10 -0
- package/Types/Exception/NotAuthenticatedException.ts +10 -0
- package/Types/Exception/NotAuthorizedException.ts +10 -0
- package/Types/Exception/NotFoundException.ts +11 -0
- package/Types/Exception/PayloadTooLargeException.ts +11 -0
- package/Types/Exception/PaymentRequiredException.ts +10 -0
- package/Types/Exception/ServiceUnavailableException.ts +10 -0
- package/Types/Exception/SsoAuthorizationException.ts +10 -0
- package/Types/Exception/TenantNotFoundException.ts +11 -0
- package/Types/Exception/TimeoutException.ts +10 -0
- package/Types/Exception/TooManyRequestsException.ts +10 -0
- package/Types/Exception/UnableToReachServer.ts +10 -0
- package/Types/Exception/WebsiteRequestException.ts +10 -0
- package/Types/Monitor/CriteriaFilter.ts +60 -2
- package/Types/Monitor/DatabaseMetricCatalog.ts +693 -0
- package/Types/Monitor/DatabaseMonitor/DatabaseMonitorResponse.ts +83 -0
- package/Types/Monitor/MonitorCriteriaInstance.ts +76 -0
- package/Types/Monitor/MonitorMetricType.ts +71 -0
- package/Types/Monitor/MonitorStep.ts +76 -0
- package/Types/Monitor/MonitorStepDatabaseMonitor.ts +171 -0
- package/Types/Monitor/MonitorStepSqlMonitor.ts +2 -20
- package/Types/Monitor/MonitorType.ts +47 -1
- package/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.ts +22 -1
- package/Types/Monitor/SqlConnectionConfig.ts +31 -0
- package/Types/NetworkDevice/NetworkAlertPolicyScope.ts +343 -0
- package/Types/NetworkDevice/NetworkDeviceMonitoringMethod.ts +42 -22
- package/Types/NetworkSite/DefaultNetworkSiteTypeHierarchy.ts +30 -0
- package/Types/NotificationSetting/NotificationEmailRollupCategory.ts +255 -0
- package/Types/NotificationSetting/NotificationEmailRollupPolicy.ts +104 -0
- package/Types/Permission.ts +90 -0
- package/Types/Probe/ProbeMonitorResponse.ts +16 -0
- package/Types/Telemetry/ErrorClass.ts +274 -0
- package/Types/Telemetry/UnitOfWork.ts +59 -0
- package/UI/Components/CommandPalette/CommandPalette.tsx +2 -8
- package/UI/Components/EditionLabel/EditionLabel.tsx +4 -0
- package/UI/Components/Modal/Modal.tsx +2 -8
- package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +44 -0
- package/UI/Components/ProgressBar/ProgressBar.tsx +12 -1
- package/UI/Components/RadioButtons/BasicRadioButtons.tsx +37 -7
- package/UI/Components/SideMenu/SideMenu.tsx +123 -5
- package/UI/Components/SideMenu/SideMenuItem.tsx +76 -84
- package/UI/Components/SideMenu/SideMenuSection.tsx +55 -23
- package/UI/Components/SideOver/SideOver.tsx +21 -20
- package/UI/Utils/PageScrollLock.ts +79 -3
- package/UI/Utils/PermissionGate.ts +61 -0
- package/UI/Utils/SensitiveUrlToken.ts +112 -0
- package/UI/Utils/TestLLMProvider.ts +11 -0
- package/Utils/EnterpriseLicense/EnterpriseLicenseSeats.ts +16 -0
- package/Utils/EnterpriseLicense/EnterpriseLicenseUsage.ts +191 -11
- package/Utils/Monitor/MonitorMetricType.ts +153 -1
- package/Utils/Monitor/NetworkTopologyUtil.ts +23 -3
- package/Utils/NetworkDevice/DeviceHealthStateUtil.ts +65 -14
- package/Utils/NetworkDevice/DeviceReachabilityUtil.ts +43 -14
- package/Utils/NetworkDevice/NetworkAlertPolicyBootstrapUtil.ts +247 -0
- package/Utils/NetworkDevice/SnmpCredentialUtil.ts +68 -0
- package/Utils/NetworkDiscovery/AutoImportRuleMatcher.ts +15 -7
- package/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.ts +52 -17
- package/Utils/NetworkDiscovery/DiscoveryImportEligibility.ts +55 -23
- package/Utils/NetworkDiscovery/PingMonitorBuilder.ts +115 -13
- package/Utils/NetworkSite/SiteStatusRollupUtil.ts +66 -20
- package/Utils/NetworkSite/TypeHierarchyUtil.ts +313 -0
- package/build/dist/Models/AnalyticsModels/Span.js +14 -0
- package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
- package/build/dist/Models/DatabaseModels/EnterpriseLicense.js +59 -0
- package/build/dist/Models/DatabaseModels/EnterpriseLicense.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +10 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Monitor.js +75 -0
- package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkAlertPolicy.js +713 -0
- package/build/dist/Models/DatabaseModels/NetworkAlertPolicy.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkDevice.js +180 -1
- package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkSite.js +200 -2
- package/build/dist/Models/DatabaseModels/NetworkSite.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkSiteType.js +102 -3
- package/build/dist/Models/DatabaseModels/NetworkSiteType.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkSnmpCredentialProfile.js +878 -0
- package/build/dist/Models/DatabaseModels/NetworkSnmpCredentialProfile.js.map +1 -0
- package/build/dist/Models/DatabaseModels/TelemetryException.js +123 -0
- package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupBatch.js +363 -0
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupBatch.js.map +1 -0
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupItem.js +402 -0
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupItem.js.map +1 -0
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupSetting.js +296 -0
- package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupSetting.js.map +1 -0
- package/build/dist/Server/API/EnterpriseLicenseAPI.js +273 -60
- package/build/dist/Server/API/EnterpriseLicenseAPI.js.map +1 -1
- package/build/dist/Server/API/LlmProviderAPI.js +108 -13
- package/build/dist/Server/API/LlmProviderAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +12 -0
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790700000000-AddNetworkSiteTypeParentHierarchy.js +24 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790700000000-AddNetworkSiteTypeParentHierarchy.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddEnterpriseLicenseUsageProvenance.js +16 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddEnterpriseLicenseUsageProvenance.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddTelemetryExceptionErrorClass.js +111 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790900000000-AddTelemetryExceptionErrorClass.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791000000000-AddUserNotificationEmailRollup.js +77 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791000000000-AddUserNotificationEmailRollup.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791100000000-AddUserNotificationEmailRollupSetting.js +50 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791100000000-AddUserNotificationEmailRollupSetting.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791200000000-AddNetworkSnmpCredentialProfilesAndAlertPolicies.js +83 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791200000000-AddNetworkSnmpCredentialProfilesAndAlertPolicies.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Infrastructure/QueueWorker.js +33 -5
- package/build/dist/Server/Infrastructure/QueueWorker.js.map +1 -1
- package/build/dist/Server/Middleware/BearerTokenAuthorization.js +12 -0
- package/build/dist/Server/Middleware/BearerTokenAuthorization.js.map +1 -1
- package/build/dist/Server/Middleware/ProjectAuthorization.js +11 -0
- package/build/dist/Server/Middleware/ProjectAuthorization.js.map +1 -1
- package/build/dist/Server/Middleware/SCIMAuthorization.js +12 -0
- package/build/dist/Server/Middleware/SCIMAuthorization.js.map +1 -1
- package/build/dist/Server/Middleware/TelemetryIngest.js +11 -0
- package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
- package/build/dist/Server/Services/AIBillingService.js +70 -16
- package/build/dist/Server/Services/AIBillingService.js.map +1 -1
- package/build/dist/Server/Services/EnterpriseLicenseInstanceService.js +167 -0
- package/build/dist/Server/Services/EnterpriseLicenseInstanceService.js.map +1 -1
- package/build/dist/Server/Services/EnterpriseLicenseService.js +39 -0
- package/build/dist/Server/Services/EnterpriseLicenseService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +10 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +119 -21
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/MonitorStatusTimelineService.js +127 -8
- package/build/dist/Server/Services/MonitorStatusTimelineService.js.map +1 -1
- package/build/dist/Server/Services/MonitorTemplateService.js +162 -0
- package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
- package/build/dist/Server/Services/NetworkAlertPolicyEngineService.js +1683 -0
- package/build/dist/Server/Services/NetworkAlertPolicyEngineService.js.map +1 -0
- package/build/dist/Server/Services/NetworkAlertPolicyService.js +732 -0
- package/build/dist/Server/Services/NetworkAlertPolicyService.js.map +1 -0
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +10 -9
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js +54 -11
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceService.js +841 -70
- package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
- package/build/dist/Server/Services/NetworkSiteService.js +1145 -107
- package/build/dist/Server/Services/NetworkSiteService.js.map +1 -1
- package/build/dist/Server/Services/NetworkSiteTypeService.js +863 -0
- package/build/dist/Server/Services/NetworkSiteTypeService.js.map +1 -1
- package/build/dist/Server/Services/NetworkSnmpCredentialProfileService.js +217 -0
- package/build/dist/Server/Services/NetworkSnmpCredentialProfileService.js.map +1 -0
- package/build/dist/Server/Services/NotificationService.js +80 -17
- package/build/dist/Server/Services/NotificationService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +66 -30
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/StatusPagePrivateUserService.js +92 -2
- package/build/dist/Server/Services/StatusPagePrivateUserService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationEmailRollupBatchService.js +76 -0
- package/build/dist/Server/Services/UserNotificationEmailRollupBatchService.js.map +1 -0
- package/build/dist/Server/Services/UserNotificationEmailRollupItemService.js +77 -0
- package/build/dist/Server/Services/UserNotificationEmailRollupItemService.js.map +1 -0
- package/build/dist/Server/Services/UserNotificationEmailRollupSettingService.js +111 -0
- package/build/dist/Server/Services/UserNotificationEmailRollupSettingService.js.map +1 -0
- package/build/dist/Server/Services/UserNotificationSettingService.js +46 -20
- package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +90 -0
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +14 -3
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js +10 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js +10 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/InsightTriageRunner.js +54 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/InsightTriageRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/AlertTools.js +18 -4
- package/build/dist/Server/Utils/AI/Toolbox/AlertTools.js.map +1 -1
- package/build/dist/Server/Utils/Billing/BillingFailureNoticeThrottle.js +59 -0
- package/build/dist/Server/Utils/Billing/BillingFailureNoticeThrottle.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/HttpFetch.js +2 -1
- package/build/dist/Server/Utils/DataSource/HttpFetch.js.map +1 -1
- package/build/dist/Server/Utils/EmailRollup/EmailRollupConstants.js +91 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupConstants.js.map +1 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js +691 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js.map +1 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js +497 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js.map +1 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupWriter.js +257 -0
- package/build/dist/Server/Utils/EmailRollup/EmailRollupWriter.js.map +1 -0
- package/build/dist/Server/Utils/LLM/LLMService.js +64 -1
- package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
- package/build/dist/Server/Utils/LogRedaction.js +8 -0
- package/build/dist/Server/Utils/LogRedaction.js.map +1 -1
- package/build/dist/Server/Utils/Logger.js +63 -1
- package/build/dist/Server/Utils/Logger.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.js +141 -0
- package/build/dist/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js +8 -1
- package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +51 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaDataExtractor.js +7 -0
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaDataExtractor.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +37 -0
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js +158 -6
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +33 -0
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +32 -0
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js +330 -21
- package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js +55 -10
- package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js +178 -49
- package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +119 -29
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
- package/build/dist/Server/Utils/NetworkDevice/DeviceHealthAggregation.js +30 -17
- package/build/dist/Server/Utils/NetworkDevice/DeviceHealthAggregation.js.map +1 -1
- package/build/dist/Server/Utils/NetworkSite/NetworkSiteHierarchyLock.js +158 -0
- package/build/dist/Server/Utils/NetworkSite/NetworkSiteHierarchyLock.js.map +1 -0
- package/build/dist/Server/Utils/OutboundUserAgent.js +123 -0
- package/build/dist/Server/Utils/OutboundUserAgent.js.map +1 -0
- package/build/dist/Server/Utils/StartServer.js +38 -14
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/CaptureSpan.js +28 -8
- package/build/dist/Server/Utils/Telemetry/CaptureSpan.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/ErrorClassResolver.js +95 -0
- package/build/dist/Server/Utils/Telemetry/ErrorClassResolver.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/SpanUtil.js +29 -0
- package/build/dist/Server/Utils/Telemetry/SpanUtil.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry.js +162 -46
- package/build/dist/Server/Utils/Telemetry.js.map +1 -1
- package/build/dist/Types/AI/ExceptionAIClassification.js +10 -24
- package/build/dist/Types/AI/ExceptionAIClassification.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/EnterpriseLicense/EnterpriseLicenseUsageSnapshot.js +2 -0
- package/build/dist/Types/EnterpriseLicense/EnterpriseLicenseUsageSnapshot.js.map +1 -0
- package/build/dist/Types/EnterpriseLicense/EnterpriseLicenseUserCountSource.js +7 -0
- package/build/dist/Types/EnterpriseLicense/EnterpriseLicenseUserCountSource.js.map +1 -0
- package/build/dist/Types/Exception/ApiException.js +9 -0
- package/build/dist/Types/Exception/ApiException.js.map +1 -1
- package/build/dist/Types/Exception/BadDataException.js +10 -0
- package/build/dist/Types/Exception/BadDataException.js.map +1 -1
- package/build/dist/Types/Exception/BadRequestException.js +10 -0
- package/build/dist/Types/Exception/BadRequestException.js.map +1 -1
- package/build/dist/Types/Exception/Exception.js +56 -0
- package/build/dist/Types/Exception/Exception.js.map +1 -1
- package/build/dist/Types/Exception/ForbiddenException.js +9 -0
- package/build/dist/Types/Exception/ForbiddenException.js.map +1 -1
- package/build/dist/Types/Exception/NotAuthenticatedException.js +9 -0
- package/build/dist/Types/Exception/NotAuthenticatedException.js.map +1 -1
- package/build/dist/Types/Exception/NotAuthorizedException.js +9 -0
- package/build/dist/Types/Exception/NotAuthorizedException.js.map +1 -1
- package/build/dist/Types/Exception/NotFoundException.js +10 -0
- package/build/dist/Types/Exception/NotFoundException.js.map +1 -1
- package/build/dist/Types/Exception/PayloadTooLargeException.js +10 -0
- package/build/dist/Types/Exception/PayloadTooLargeException.js.map +1 -1
- package/build/dist/Types/Exception/PaymentRequiredException.js +9 -0
- package/build/dist/Types/Exception/PaymentRequiredException.js.map +1 -1
- package/build/dist/Types/Exception/ServiceUnavailableException.js +9 -0
- package/build/dist/Types/Exception/ServiceUnavailableException.js.map +1 -1
- package/build/dist/Types/Exception/SsoAuthorizationException.js +9 -0
- package/build/dist/Types/Exception/SsoAuthorizationException.js.map +1 -1
- package/build/dist/Types/Exception/TenantNotFoundException.js +10 -0
- package/build/dist/Types/Exception/TenantNotFoundException.js.map +1 -1
- package/build/dist/Types/Exception/TimeoutException.js +9 -0
- package/build/dist/Types/Exception/TimeoutException.js.map +1 -1
- package/build/dist/Types/Exception/TooManyRequestsException.js +9 -0
- package/build/dist/Types/Exception/TooManyRequestsException.js.map +1 -1
- package/build/dist/Types/Exception/UnableToReachServer.js +9 -0
- package/build/dist/Types/Exception/UnableToReachServer.js.map +1 -1
- package/build/dist/Types/Exception/WebsiteRequestException.js +9 -0
- package/build/dist/Types/Exception/WebsiteRequestException.js.map +1 -1
- package/build/dist/Types/Monitor/CriteriaFilter.js +45 -2
- package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
- package/build/dist/Types/Monitor/DatabaseMetricCatalog.js +594 -0
- package/build/dist/Types/Monitor/DatabaseMetricCatalog.js.map +1 -0
- package/build/dist/Types/Monitor/DatabaseMonitor/DatabaseMonitorResponse.js +21 -0
- package/build/dist/Types/Monitor/DatabaseMonitor/DatabaseMonitorResponse.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +70 -0
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorMetricType.js +61 -0
- package/build/dist/Types/Monitor/MonitorMetricType.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +54 -0
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepDatabaseMonitor.js +122 -0
- package/build/dist/Types/Monitor/MonitorStepDatabaseMonitor.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorType.js +45 -1
- package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
- package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js +21 -1
- package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js.map +1 -1
- package/build/dist/Types/Monitor/SqlConnectionConfig.js +2 -0
- package/build/dist/Types/Monitor/SqlConnectionConfig.js.map +1 -0
- package/build/dist/Types/NetworkDevice/NetworkAlertPolicyScope.js +172 -0
- package/build/dist/Types/NetworkDevice/NetworkAlertPolicyScope.js.map +1 -0
- package/build/dist/Types/NetworkDevice/NetworkDeviceMonitoringMethod.js +40 -22
- package/build/dist/Types/NetworkDevice/NetworkDeviceMonitoringMethod.js.map +1 -1
- package/build/dist/Types/NetworkSite/DefaultNetworkSiteTypeHierarchy.js +26 -0
- package/build/dist/Types/NetworkSite/DefaultNetworkSiteTypeHierarchy.js.map +1 -0
- package/build/dist/Types/NotificationSetting/NotificationEmailRollupCategory.js +186 -0
- package/build/dist/Types/NotificationSetting/NotificationEmailRollupCategory.js.map +1 -0
- package/build/dist/Types/NotificationSetting/NotificationEmailRollupPolicy.js +87 -0
- package/build/dist/Types/NotificationSetting/NotificationEmailRollupPolicy.js.map +1 -0
- package/build/dist/Types/Permission.js +80 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Telemetry/ErrorClass.js +216 -0
- package/build/dist/Types/Telemetry/ErrorClass.js.map +1 -0
- package/build/dist/Types/Telemetry/UnitOfWork.js +59 -0
- package/build/dist/Types/Telemetry/UnitOfWork.js.map +1 -0
- package/build/dist/UI/Components/CommandPalette/CommandPalette.js +2 -7
- package/build/dist/UI/Components/CommandPalette/CommandPalette.js.map +1 -1
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js +3 -0
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
- package/build/dist/UI/Components/Modal/Modal.js +2 -7
- package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +39 -0
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
- package/build/dist/UI/Components/ProgressBar/ProgressBar.js +12 -1
- package/build/dist/UI/Components/ProgressBar/ProgressBar.js.map +1 -1
- package/build/dist/UI/Components/RadioButtons/BasicRadioButtons.js +6 -6
- package/build/dist/UI/Components/RadioButtons/BasicRadioButtons.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenu.js +67 -5
- package/build/dist/UI/Components/SideMenu/SideMenu.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenuItem.js +49 -53
- package/build/dist/UI/Components/SideMenu/SideMenuItem.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenuSection.js +25 -7
- package/build/dist/UI/Components/SideMenu/SideMenuSection.js.map +1 -1
- package/build/dist/UI/Components/SideOver/SideOver.js +5 -20
- package/build/dist/UI/Components/SideOver/SideOver.js.map +1 -1
- package/build/dist/UI/Utils/PageScrollLock.js +31 -3
- package/build/dist/UI/Utils/PageScrollLock.js.map +1 -1
- package/build/dist/UI/Utils/PermissionGate.js +42 -1
- package/build/dist/UI/Utils/PermissionGate.js.map +1 -1
- package/build/dist/UI/Utils/SensitiveUrlToken.js +97 -0
- package/build/dist/UI/Utils/SensitiveUrlToken.js.map +1 -0
- package/build/dist/UI/Utils/TestLLMProvider.js +4 -5
- package/build/dist/UI/Utils/TestLLMProvider.js.map +1 -1
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js +15 -0
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js.map +1 -1
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js +111 -9
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js.map +1 -1
- package/build/dist/Utils/Monitor/MonitorMetricType.js +109 -1
- package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +8 -3
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDevice/DeviceHealthStateUtil.js +27 -7
- package/build/dist/Utils/NetworkDevice/DeviceHealthStateUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDevice/DeviceReachabilityUtil.js +7 -5
- package/build/dist/Utils/NetworkDevice/DeviceReachabilityUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDevice/NetworkAlertPolicyBootstrapUtil.js +180 -0
- package/build/dist/Utils/NetworkDevice/NetworkAlertPolicyBootstrapUtil.js.map +1 -0
- package/build/dist/Utils/NetworkDevice/SnmpCredentialUtil.js +12 -0
- package/build/dist/Utils/NetworkDevice/SnmpCredentialUtil.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/AutoImportRuleMatcher.js +15 -5
- package/build/dist/Utils/NetworkDiscovery/AutoImportRuleMatcher.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js +44 -15
- package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/DiscoveryImportEligibility.js +52 -23
- package/build/dist/Utils/NetworkDiscovery/DiscoveryImportEligibility.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/PingMonitorBuilder.js +85 -13
- package/build/dist/Utils/NetworkDiscovery/PingMonitorBuilder.js.map +1 -1
- package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js +30 -15
- package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js.map +1 -1
- package/build/dist/Utils/NetworkSite/TypeHierarchyUtil.js +191 -0
- package/build/dist/Utils/NetworkSite/TypeHierarchyUtil.js.map +1 -0
- package/package.json +2 -2
|
@@ -13,6 +13,7 @@ import MetricType from "../../../Models/DatabaseModels/MetricType";
|
|
|
13
13
|
import Dictionary from "../../../Types/Dictionary";
|
|
14
14
|
import { JSONObject } from "../../../Types/JSON";
|
|
15
15
|
import MonitorMetricType from "../../../Types/Monitor/MonitorMetricType";
|
|
16
|
+
import PingMonitorResponse from "../../../Types/Monitor/PingMonitor/PingMonitorResponse";
|
|
16
17
|
import SnmpInterface from "../../../Types/Monitor/SnmpMonitor/SnmpInterface";
|
|
17
18
|
import SnmpMonitorResponse, {
|
|
18
19
|
SnmpOidResponse,
|
|
@@ -22,14 +23,28 @@ import OneUptimeDate from "../../../Types/Date";
|
|
|
22
23
|
import CaptureSpan from "../Telemetry/CaptureSpan";
|
|
23
24
|
|
|
24
25
|
/*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
26
|
+
* Ping round-trip time of a network device, in ms.
|
|
27
|
+
*
|
|
28
|
+
* Ping monitors write their RTT into MonitorMetricType.ResponseTime, but on
|
|
29
|
+
* a network device that series is the SNMP walk's time (and is absent on a
|
|
30
|
+
* ping-only poll), so the RTT needs a series of its own. It sits in the
|
|
31
|
+
* `oneuptime.monitor.ping.*` namespace beside PacketLossPercent and Jitter,
|
|
32
|
+
* which ARE reused from the Ping monitor. MonitorMetricType has no member
|
|
33
|
+
* for it yet; this constant should graduate into that enum (and the device
|
|
34
|
+
* metric catalog) rather than be duplicated.
|
|
35
|
+
*/
|
|
36
|
+
export const NETWORK_DEVICE_PING_ROUND_TRIP_TIME_METRIC_NAME: string =
|
|
37
|
+
"oneuptime.monitor.ping.round.trip.time";
|
|
38
|
+
|
|
39
|
+
/*
|
|
40
|
+
* Emits device-scoped metrics from each device poll — reachability, ping
|
|
41
|
+
* RTT / packet loss, SNMP walk time, per-interface
|
|
42
|
+
* status/bandwidth/utilization/errors, and polled health-OID values.
|
|
43
|
+
* Series are keyed to the NetworkDevice (primaryEntityId = deviceId,
|
|
44
|
+
* attributes.networkDeviceId), NOT to a monitor, so the device pages can
|
|
45
|
+
* chart health for every registered device — including devices no monitor
|
|
46
|
+
* watches. Mirrors the SNMP sections of MonitorMetricUtil, which continue
|
|
47
|
+
* to emit monitor-scoped series for monitors that alert on the device.
|
|
33
48
|
*/
|
|
34
49
|
export default class NetworkDeviceMetricUtil {
|
|
35
50
|
/*
|
|
@@ -103,9 +118,14 @@ export default class NetworkDeviceMetricUtil {
|
|
|
103
118
|
networkDeviceId: ObjectID;
|
|
104
119
|
deviceName: string | undefined;
|
|
105
120
|
probeId: ObjectID | undefined;
|
|
121
|
+
// The SNMP walk when one ran; undefined on a ping-only poll.
|
|
106
122
|
snmpResponse: SnmpMonitorResponse | undefined;
|
|
123
|
+
// The walk's time only - undefined on a ping-only poll, never the RTT.
|
|
107
124
|
responseTimeInMs: number | undefined;
|
|
125
|
+
// Device reachability: answered ping OR the walk succeeded.
|
|
108
126
|
isOnline: boolean | undefined;
|
|
127
|
+
// RTT / packet loss from the probe's ping, when it ran one.
|
|
128
|
+
pingResponse?: PingMonitorResponse | undefined;
|
|
109
129
|
}): Promise<void> {
|
|
110
130
|
const metricRows: Array<JSONObject> = [];
|
|
111
131
|
const metricNameServiceNameMap: Dictionary<MetricType> = {};
|
|
@@ -177,16 +197,52 @@ export default class NetworkDeviceMetricUtil {
|
|
|
177
197
|
pushMetric({
|
|
178
198
|
metricName: MonitorMetricType.IsOnline,
|
|
179
199
|
value: data.isOnline ? 1 : 0,
|
|
180
|
-
description:
|
|
200
|
+
description:
|
|
201
|
+
"Reachability of this network device by ping or SNMP (1 up, 0 down)",
|
|
181
202
|
unit: "",
|
|
182
203
|
});
|
|
183
204
|
}
|
|
184
205
|
|
|
206
|
+
/*
|
|
207
|
+
* Walk time only. A ping-only poll has no walk and writes no point
|
|
208
|
+
* here; its latency is the RTT series below. Mixing the two into one
|
|
209
|
+
* series would chart a 1 ms ICMP echo and a 400 ms 48-port walk as the
|
|
210
|
+
* same thing.
|
|
211
|
+
*/
|
|
185
212
|
if (data.responseTimeInMs !== undefined) {
|
|
186
213
|
pushMetric({
|
|
187
214
|
metricName: MonitorMetricType.ResponseTime,
|
|
188
215
|
value: data.responseTimeInMs,
|
|
189
|
-
description:
|
|
216
|
+
description:
|
|
217
|
+
"SNMP walk time of this network device (absent when the poll ran no walk)",
|
|
218
|
+
unit: "ms",
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/*
|
|
223
|
+
* The probe's ping, when it ran one. Packet loss and jitter reuse the
|
|
224
|
+
* Ping monitor's series so the same charts and criteria vocabulary
|
|
225
|
+
* apply; the RTT gets its own (see the constant's comment). pushMetric
|
|
226
|
+
* skips undefined values, so an older probe that reports no ping
|
|
227
|
+
* writes nothing here.
|
|
228
|
+
*/
|
|
229
|
+
if (data.pingResponse) {
|
|
230
|
+
pushMetric({
|
|
231
|
+
metricName: NETWORK_DEVICE_PING_ROUND_TRIP_TIME_METRIC_NAME,
|
|
232
|
+
value: data.pingResponse.avgRoundTripTimeInMs,
|
|
233
|
+
description: "Ping round-trip time to this network device",
|
|
234
|
+
unit: "ms",
|
|
235
|
+
});
|
|
236
|
+
pushMetric({
|
|
237
|
+
metricName: MonitorMetricType.PacketLossPercent,
|
|
238
|
+
value: data.pingResponse.packetLossPercent,
|
|
239
|
+
description: "Ping packet loss to this network device",
|
|
240
|
+
unit: "%",
|
|
241
|
+
});
|
|
242
|
+
pushMetric({
|
|
243
|
+
metricName: MonitorMetricType.Jitter,
|
|
244
|
+
value: data.pingResponse.jitterInMs,
|
|
245
|
+
description: "Ping jitter to this network device",
|
|
190
246
|
unit: "ms",
|
|
191
247
|
});
|
|
192
248
|
}
|
|
@@ -2,13 +2,18 @@ import Monitor from "../../../Models/DatabaseModels/Monitor";
|
|
|
2
2
|
import NetworkDevice from "../../../Models/DatabaseModels/NetworkDevice";
|
|
3
3
|
import MonitorService from "../../Services/MonitorService";
|
|
4
4
|
import NetworkDeviceService from "../../Services/NetworkDeviceService";
|
|
5
|
+
import Query from "../../Types/Database/Query";
|
|
6
|
+
import QueryHelper from "../../Types/Database/QueryHelper";
|
|
5
7
|
import MonitorResourceUtil from "./MonitorResource";
|
|
8
|
+
import { NetworkDevicePollMode } from "./NetworkDeviceHydrationUtil";
|
|
6
9
|
import NetworkDeviceMetricUtil from "./NetworkDeviceMetricUtil";
|
|
7
10
|
import NetworkInventoryUtil from "./NetworkInventoryUtil";
|
|
8
11
|
import SnmpInterfaceRateUtil from "./SnmpInterfaceRateUtil";
|
|
12
|
+
import SortOrder from "../../../Types/BaseDatabase/SortOrder";
|
|
9
13
|
import LIMIT_MAX from "../../../Types/Database/LimitMax";
|
|
10
14
|
import MonitorStep from "../../../Types/Monitor/MonitorStep";
|
|
11
15
|
import MonitorType from "../../../Types/Monitor/MonitorType";
|
|
16
|
+
import PingMonitorResponse from "../../../Types/Monitor/PingMonitor/PingMonitorResponse";
|
|
12
17
|
import SnmpMonitorResponse from "../../../Types/Monitor/SnmpMonitor/SnmpMonitorResponse";
|
|
13
18
|
import ProbeMonitorResponse from "../../../Types/Probe/ProbeMonitorResponse";
|
|
14
19
|
import { JSONObject } from "../../../Types/JSON";
|
|
@@ -16,18 +21,37 @@ import ObjectID from "../../../Types/ObjectID";
|
|
|
16
21
|
import OneUptimeDate from "../../../Types/Date";
|
|
17
22
|
import logger from "../Logger";
|
|
18
23
|
|
|
24
|
+
/*
|
|
25
|
+
* What the probe's ping of a device found, as the probe reports it
|
|
26
|
+
* (PingMonitor.checkReachability): a verdict, the average RTT, the loss,
|
|
27
|
+
* and why it failed when it did. Packet counts are optional because the
|
|
28
|
+
* reachability ping is a short fixed burst whose counts the probe need not
|
|
29
|
+
* report; the loss percentage is the number that matters.
|
|
30
|
+
*/
|
|
31
|
+
export interface NetworkDevicePingResult {
|
|
32
|
+
isOnline: boolean;
|
|
33
|
+
avgRttMs?: number | undefined;
|
|
34
|
+
packetLossPercent?: number | undefined;
|
|
35
|
+
packetsSent?: number | undefined;
|
|
36
|
+
packetsReceived?: number | undefined;
|
|
37
|
+
failureCause?: string | undefined;
|
|
38
|
+
}
|
|
39
|
+
|
|
19
40
|
/*
|
|
20
41
|
* Server half of device-owned polling.
|
|
21
42
|
*
|
|
22
|
-
* The device's assigned probe
|
|
23
|
-
* the device's own schedule
|
|
43
|
+
* The device's assigned probe polls every polling-enabled NetworkDevice on
|
|
44
|
+
* the device's own schedule - pinging it always, and walking it over SNMP
|
|
45
|
+
* as well when it has usable credentials - and reports each poll here. This
|
|
46
|
+
* util then:
|
|
24
47
|
*
|
|
25
48
|
* 1. computes interface rates against the device's previous walk
|
|
26
|
-
* (NetworkDevice.lastWalkLog),
|
|
27
|
-
* 2. syncs the device/interface/endpoint inventory and
|
|
49
|
+
* (NetworkDevice.lastWalkLog) when interfaces were walked,
|
|
50
|
+
* 2. syncs the device/interface/endpoint inventory, reachability and
|
|
51
|
+
* lastSeenAt,
|
|
28
52
|
* 3. emits device-scoped metrics (so health charts work with zero
|
|
29
53
|
* monitors), and
|
|
30
|
-
* 4. fans the
|
|
54
|
+
* 4. fans the poll out to every Network Device monitor referencing the
|
|
31
55
|
* device — each gets an event-driven ProbeMonitorResponse evaluated
|
|
32
56
|
* through the ordinary criteria pipeline (incidents, alerts, status).
|
|
33
57
|
*
|
|
@@ -35,10 +59,36 @@ import logger from "../Logger";
|
|
|
35
59
|
* every monitor leaves the device fully inventoried and charted.
|
|
36
60
|
*/
|
|
37
61
|
export default class NetworkDeviceWalkUtil {
|
|
62
|
+
/*
|
|
63
|
+
* One page of the monitor fan-out lookup. The indexed query rarely needs
|
|
64
|
+
* a second page (a device has a handful of monitors); the legacy JSON
|
|
65
|
+
* scan can, on a project with more than this many hand-made Network
|
|
66
|
+
* Device monitors.
|
|
67
|
+
*/
|
|
68
|
+
private static readonly FAN_OUT_PAGE_SIZE: number = LIMIT_MAX;
|
|
69
|
+
|
|
38
70
|
public static async processWalkResult(data: {
|
|
39
71
|
probeId: ObjectID;
|
|
40
72
|
networkDeviceId: ObjectID;
|
|
41
|
-
|
|
73
|
+
/*
|
|
74
|
+
* Device reachability: answered ping OR the walk succeeded. A caller
|
|
75
|
+
* that predates ping-first polling passes only a walk; its verdict is
|
|
76
|
+
* then the device's verdict.
|
|
77
|
+
*/
|
|
78
|
+
isOnline?: boolean | undefined;
|
|
79
|
+
/*
|
|
80
|
+
* How the probe polled - "ping" (no credentials, ping only) or "snmp"
|
|
81
|
+
* (ping and a walk in parallel). Absent from a pre-ping-first caller,
|
|
82
|
+
* and read as "snmp" then: such a probe only ever walked.
|
|
83
|
+
*/
|
|
84
|
+
pollMode?: NetworkDevicePollMode | undefined;
|
|
85
|
+
// The probe's ping, when it ran one (older probes send none).
|
|
86
|
+
pingResponse?: NetworkDevicePingResult | undefined;
|
|
87
|
+
/*
|
|
88
|
+
* The SNMP walk, when one ran - success or failure. Undefined on a
|
|
89
|
+
* ping-only poll, and never synthesized from the ping.
|
|
90
|
+
*/
|
|
91
|
+
snmpResponse?: SnmpMonitorResponse | undefined;
|
|
42
92
|
monitoredAt: Date;
|
|
43
93
|
}): Promise<void> {
|
|
44
94
|
/*
|
|
@@ -66,28 +116,45 @@ export default class NetworkDeviceWalkUtil {
|
|
|
66
116
|
|
|
67
117
|
if (!device || !device.id || !device.projectId) {
|
|
68
118
|
logger.warn(
|
|
69
|
-
`Device
|
|
119
|
+
`Device poll ignored: device ${data.networkDeviceId.toString()} is not assigned to probe ${data.probeId.toString()}.`,
|
|
70
120
|
);
|
|
71
121
|
return;
|
|
72
122
|
}
|
|
73
123
|
|
|
74
|
-
const
|
|
124
|
+
const pollMode: NetworkDevicePollMode = data.pollMode ?? "snmp";
|
|
125
|
+
|
|
126
|
+
/*
|
|
127
|
+
* The device verdict. A ping-first probe states it (ping OR walk); an
|
|
128
|
+
* older probe only walked, so its walk verdict IS the device verdict -
|
|
129
|
+
* and, matching the inventory's convention, a walk that reports no
|
|
130
|
+
* verdict at all counts as answered.
|
|
131
|
+
*/
|
|
132
|
+
const isOnline: boolean =
|
|
133
|
+
data.isOnline ??
|
|
134
|
+
(data.snmpResponse ? data.snmpResponse.isOnline !== false : false);
|
|
135
|
+
|
|
136
|
+
const pingResponse: PingMonitorResponse | undefined =
|
|
137
|
+
NetworkDeviceWalkUtil.toPingMonitorResponse(data.pingResponse);
|
|
75
138
|
|
|
76
139
|
/*
|
|
77
140
|
* Interface rates are counter deltas against the previous walk. Compute
|
|
78
141
|
* them on the FULL interface set, before inventory pruning, so muted
|
|
79
|
-
* ports still get fresh rates in the inventory table.
|
|
142
|
+
* ports still get fresh rates in the inventory table. Nothing to do on
|
|
143
|
+
* a poll that ran no walk.
|
|
80
144
|
*/
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
145
|
+
if (data.snmpResponse) {
|
|
146
|
+
SnmpInterfaceRateUtil.attachInterfaceRates({
|
|
147
|
+
snmpResponse: data.snmpResponse,
|
|
148
|
+
previousWalkLog: device.lastWalkLog as JSONObject | undefined,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
85
151
|
|
|
86
152
|
/*
|
|
87
153
|
* Persist this walk as the next delta baseline — but only when it
|
|
88
154
|
* actually walked interfaces. Keeping the last GOOD counters across
|
|
89
|
-
* failed polls
|
|
90
|
-
* instead of losing
|
|
155
|
+
* failed polls (and across ping-only polls, which walk nothing) means
|
|
156
|
+
* rates resume with a correct (longer-window) delta instead of losing
|
|
157
|
+
* a cycle.
|
|
91
158
|
*
|
|
92
159
|
* Hook-free single-statement write, deliberately. A 48-interface walk
|
|
93
160
|
* log is ~28 KB of jsonb, stored out of line: the full updateOneById
|
|
@@ -126,6 +193,7 @@ export default class NetworkDeviceWalkUtil {
|
|
|
126
193
|
* counter at all.
|
|
127
194
|
*/
|
|
128
195
|
if (
|
|
196
|
+
data.snmpResponse &&
|
|
129
197
|
data.snmpResponse.interfaces &&
|
|
130
198
|
data.snmpResponse.interfaces.length > 0
|
|
131
199
|
) {
|
|
@@ -177,6 +245,7 @@ export default class NetworkDeviceWalkUtil {
|
|
|
177
245
|
deviceId: device.id,
|
|
178
246
|
snmpResponse: data.snmpResponse,
|
|
179
247
|
isOnline: isOnline,
|
|
248
|
+
pollMode: pollMode,
|
|
180
249
|
});
|
|
181
250
|
|
|
182
251
|
try {
|
|
@@ -186,8 +255,10 @@ export default class NetworkDeviceWalkUtil {
|
|
|
186
255
|
deviceName: device.name,
|
|
187
256
|
probeId: data.probeId,
|
|
188
257
|
snmpResponse: data.snmpResponse,
|
|
189
|
-
|
|
258
|
+
// Walk time only: a ping-only poll writes no response-time point.
|
|
259
|
+
responseTimeInMs: data.snmpResponse?.responseTimeInMs,
|
|
190
260
|
isOnline: isOnline,
|
|
261
|
+
pingResponse: pingResponse,
|
|
191
262
|
});
|
|
192
263
|
} catch (err) {
|
|
193
264
|
// Metrics must never fail the walk pipeline.
|
|
@@ -197,6 +268,19 @@ export default class NetworkDeviceWalkUtil {
|
|
|
197
268
|
logger.error(err);
|
|
198
269
|
}
|
|
199
270
|
|
|
271
|
+
/*
|
|
272
|
+
* Why the poll failed, for the incident/alert narrative. The walk's own
|
|
273
|
+
* cause is passed through whenever a walk ran (it is the more specific
|
|
274
|
+
* of the two, and the "SNMP walk failing" alert reads it); the ping's
|
|
275
|
+
* cause is only worth stating when the device is actually unreachable
|
|
276
|
+
* - on an ICMP-filtered device whose walk succeeds, "ping timed out" is
|
|
277
|
+
* not a failure of anything.
|
|
278
|
+
*/
|
|
279
|
+
const failureCause: string =
|
|
280
|
+
data.snmpResponse?.failureCause ||
|
|
281
|
+
(!isOnline ? data.pingResponse?.failureCause : undefined) ||
|
|
282
|
+
"";
|
|
283
|
+
|
|
200
284
|
// --- Fan out to the monitors alerting on this device ---
|
|
201
285
|
const monitors: Array<Monitor> =
|
|
202
286
|
await NetworkDeviceWalkUtil.findMonitorsWatchingDevices({
|
|
@@ -229,16 +313,23 @@ export default class NetworkDeviceWalkUtil {
|
|
|
229
313
|
continue;
|
|
230
314
|
}
|
|
231
315
|
|
|
316
|
+
/*
|
|
317
|
+
* `isOnline` is the device verdict; `snmpResponse` is the real walk
|
|
318
|
+
* or undefined - NEVER a synthesized failure, so walk-dependent
|
|
319
|
+
* criteria see "not evaluated" rather than "breaching" on a
|
|
320
|
+
* ping-only device. `responseTimeInMs` is the walk's time only.
|
|
321
|
+
*/
|
|
232
322
|
const walkResponse: ProbeMonitorResponse = {
|
|
233
323
|
projectId: monitor.projectId,
|
|
234
324
|
monitorId: monitor.id,
|
|
235
325
|
monitorStepId: monitorStep.id,
|
|
236
326
|
probeId: data.probeId,
|
|
237
327
|
snmpResponse: data.snmpResponse,
|
|
328
|
+
pingResponse: pingResponse,
|
|
238
329
|
isOnline: isOnline,
|
|
239
|
-
responseTimeInMs: data.snmpResponse
|
|
240
|
-
isTimeout: data.snmpResponse
|
|
241
|
-
failureCause:
|
|
330
|
+
responseTimeInMs: data.snmpResponse?.responseTimeInMs,
|
|
331
|
+
isTimeout: data.snmpResponse?.isTimeout,
|
|
332
|
+
failureCause: failureCause,
|
|
242
333
|
monitoredAt: data.monitoredAt,
|
|
243
334
|
ingestedAt: OneUptimeDate.getCurrentDate(),
|
|
244
335
|
};
|
|
@@ -247,7 +338,7 @@ export default class NetworkDeviceWalkUtil {
|
|
|
247
338
|
await MonitorResourceUtil.monitorResource(walkResponse);
|
|
248
339
|
} catch (err) {
|
|
249
340
|
logger.error(
|
|
250
|
-
`Error evaluating device
|
|
341
|
+
`Error evaluating device poll for monitor ${monitor.id.toString()}:`,
|
|
251
342
|
);
|
|
252
343
|
logger.error(err);
|
|
253
344
|
}
|
|
@@ -255,16 +346,67 @@ export default class NetworkDeviceWalkUtil {
|
|
|
255
346
|
}
|
|
256
347
|
|
|
257
348
|
logger.debug(
|
|
258
|
-
`Device
|
|
349
|
+
`Device poll for ${device.id.toString()} (${pollMode}) processed: evaluated ${monitors.length} watching monitor(s).`,
|
|
259
350
|
);
|
|
260
351
|
}
|
|
261
352
|
|
|
262
353
|
/*
|
|
263
|
-
*
|
|
264
|
-
*
|
|
265
|
-
*
|
|
266
|
-
*
|
|
267
|
-
|
|
354
|
+
* The probe's ping result in the shape the criteria pipeline already
|
|
355
|
+
* speaks (ProbeMonitorResponse.pingResponse, as Ping monitors report it),
|
|
356
|
+
* so packet-loss criteria, metrics and evidence read it without a special
|
|
357
|
+
* case. Undefined when the probe ran no ping (older probes).
|
|
358
|
+
*/
|
|
359
|
+
public static toPingMonitorResponse(
|
|
360
|
+
ping: NetworkDevicePingResult | undefined,
|
|
361
|
+
): PingMonitorResponse | undefined {
|
|
362
|
+
if (!ping) {
|
|
363
|
+
return undefined;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
/*
|
|
367
|
+
* Loss is the one number every reader wants; when the probe did not
|
|
368
|
+
* measure it, the verdict implies it - an answered ping lost nothing
|
|
369
|
+
* that matters, a silent one lost everything.
|
|
370
|
+
*/
|
|
371
|
+
const packetLossPercent: number =
|
|
372
|
+
typeof ping.packetLossPercent === "number" &&
|
|
373
|
+
isFinite(ping.packetLossPercent)
|
|
374
|
+
? ping.packetLossPercent
|
|
375
|
+
: ping.isOnline
|
|
376
|
+
? 0
|
|
377
|
+
: 100;
|
|
378
|
+
|
|
379
|
+
return {
|
|
380
|
+
packetsSent: ping.packetsSent ?? 0,
|
|
381
|
+
packetsReceived: ping.packetsReceived ?? 0,
|
|
382
|
+
packetLossPercent: packetLossPercent,
|
|
383
|
+
avgRoundTripTimeInMs:
|
|
384
|
+
typeof ping.avgRttMs === "number" && isFinite(ping.avgRttMs)
|
|
385
|
+
? ping.avgRttMs
|
|
386
|
+
: undefined,
|
|
387
|
+
};
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
/*
|
|
391
|
+
* Every enabled Network Device monitor in the project watching one of
|
|
392
|
+
* the given devices. Shared by the walk fan-out above and the SNMP trap
|
|
393
|
+
* fan-out.
|
|
394
|
+
*
|
|
395
|
+
* Two sources, unioned and deduped by id:
|
|
396
|
+
*
|
|
397
|
+
* 1. Indexed: monitors whose `autoProvisionedNetworkDeviceId` is one of
|
|
398
|
+
* the devices - every monitor a template, an auto-import rule or an
|
|
399
|
+
* alert policy provisioned. Served by the partial index on that
|
|
400
|
+
* column, so it costs one index probe per device however many
|
|
401
|
+
* monitors the project has.
|
|
402
|
+
* 2. Legacy: hand-made monitors, which carry the device link only in
|
|
403
|
+
* their step JSON. Restricted to rows with NO
|
|
404
|
+
* autoProvisionedNetworkDeviceId (the indexed query already covered
|
|
405
|
+
* the rest), paged, and filtered server-side on the step JSON.
|
|
406
|
+
*
|
|
407
|
+
* The legacy scan is what this lookup used to be in full - one fetch of
|
|
408
|
+
* every Network Device monitor in the project per walk - and it shrinks
|
|
409
|
+
* as monitors move onto the column.
|
|
268
410
|
*/
|
|
269
411
|
public static async findMonitorsWatchingDevices(data: {
|
|
270
412
|
projectId: ObjectID;
|
|
@@ -276,27 +418,20 @@ export default class NetworkDeviceWalkUtil {
|
|
|
276
418
|
|
|
277
419
|
const deviceIdSet: Set<string> = new Set(data.deviceIds);
|
|
278
420
|
|
|
279
|
-
const
|
|
280
|
-
|
|
421
|
+
const indexedMonitors: Array<Monitor> =
|
|
422
|
+
await NetworkDeviceWalkUtil.findNetworkDeviceMonitorsPaged({
|
|
281
423
|
projectId: data.projectId,
|
|
282
424
|
monitorType: MonitorType.NetworkDevice,
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
_id: true,
|
|
286
|
-
projectId: true,
|
|
287
|
-
monitorSteps: true,
|
|
288
|
-
disableActiveMonitoring: true,
|
|
289
|
-
disableActiveMonitoringBecauseOfManualIncident: true,
|
|
290
|
-
disableActiveMonitoringBecauseOfScheduledMaintenanceEvent: true,
|
|
291
|
-
},
|
|
292
|
-
limit: LIMIT_MAX,
|
|
293
|
-
skip: 0,
|
|
294
|
-
props: {
|
|
295
|
-
isRoot: true,
|
|
296
|
-
},
|
|
297
|
-
});
|
|
425
|
+
autoProvisionedNetworkDeviceId: QueryHelper.any(data.deviceIds),
|
|
426
|
+
});
|
|
298
427
|
|
|
299
|
-
|
|
428
|
+
const legacyMonitors: Array<Monitor> = (
|
|
429
|
+
await NetworkDeviceWalkUtil.findNetworkDeviceMonitorsPaged({
|
|
430
|
+
projectId: data.projectId,
|
|
431
|
+
monitorType: MonitorType.NetworkDevice,
|
|
432
|
+
autoProvisionedNetworkDeviceId: QueryHelper.isNull(),
|
|
433
|
+
})
|
|
434
|
+
).filter((monitor: Monitor) => {
|
|
300
435
|
return (monitor.monitorSteps?.data?.monitorStepsInstanceArray || []).some(
|
|
301
436
|
(monitorStep: MonitorStep) => {
|
|
302
437
|
const referencedDeviceId: string | undefined =
|
|
@@ -307,5 +442,64 @@ export default class NetworkDeviceWalkUtil {
|
|
|
307
442
|
},
|
|
308
443
|
);
|
|
309
444
|
});
|
|
445
|
+
|
|
446
|
+
const seenMonitorIds: Set<string> = new Set();
|
|
447
|
+
const monitors: Array<Monitor> = [];
|
|
448
|
+
|
|
449
|
+
for (const monitor of [...indexedMonitors, ...legacyMonitors]) {
|
|
450
|
+
const monitorId: string | undefined = monitor.id?.toString();
|
|
451
|
+
|
|
452
|
+
if (!monitorId || seenMonitorIds.has(monitorId)) {
|
|
453
|
+
continue;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
seenMonitorIds.add(monitorId);
|
|
457
|
+
monitors.push(monitor);
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
return monitors;
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
/*
|
|
464
|
+
* Every monitor matching the query, in id order so the pages stay
|
|
465
|
+
* stable while monitors are created or deleted underneath the scan.
|
|
466
|
+
*/
|
|
467
|
+
private static async findNetworkDeviceMonitorsPaged(
|
|
468
|
+
query: Query<Monitor>,
|
|
469
|
+
): Promise<Array<Monitor>> {
|
|
470
|
+
const monitors: Array<Monitor> = [];
|
|
471
|
+
let skip: number = 0;
|
|
472
|
+
|
|
473
|
+
for (;;) {
|
|
474
|
+
const page: Array<Monitor> = await MonitorService.findBy({
|
|
475
|
+
query: query,
|
|
476
|
+
select: {
|
|
477
|
+
_id: true,
|
|
478
|
+
projectId: true,
|
|
479
|
+
monitorSteps: true,
|
|
480
|
+
disableActiveMonitoring: true,
|
|
481
|
+
disableActiveMonitoringBecauseOfManualIncident: true,
|
|
482
|
+
disableActiveMonitoringBecauseOfScheduledMaintenanceEvent: true,
|
|
483
|
+
},
|
|
484
|
+
sort: {
|
|
485
|
+
_id: SortOrder.Ascending,
|
|
486
|
+
},
|
|
487
|
+
limit: NetworkDeviceWalkUtil.FAN_OUT_PAGE_SIZE,
|
|
488
|
+
skip: skip,
|
|
489
|
+
props: {
|
|
490
|
+
isRoot: true,
|
|
491
|
+
},
|
|
492
|
+
});
|
|
493
|
+
|
|
494
|
+
monitors.push(...page);
|
|
495
|
+
|
|
496
|
+
if (page.length < NetworkDeviceWalkUtil.FAN_OUT_PAGE_SIZE) {
|
|
497
|
+
break;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
skip += page.length;
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
return monitors;
|
|
310
504
|
}
|
|
311
505
|
}
|