@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
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import MonitorService from "../../Services/MonitorService";
|
|
2
2
|
import NetworkDeviceService from "../../Services/NetworkDeviceService";
|
|
3
|
+
import QueryHelper from "../../Types/Database/QueryHelper";
|
|
3
4
|
import MonitorResourceUtil from "./MonitorResource";
|
|
4
5
|
import NetworkDeviceMetricUtil from "./NetworkDeviceMetricUtil";
|
|
5
6
|
import NetworkInventoryUtil from "./NetworkInventoryUtil";
|
|
6
7
|
import SnmpInterfaceRateUtil from "./SnmpInterfaceRateUtil";
|
|
8
|
+
import SortOrder from "../../../Types/BaseDatabase/SortOrder";
|
|
7
9
|
import LIMIT_MAX from "../../../Types/Database/LimitMax";
|
|
8
10
|
import MonitorType from "../../../Types/Monitor/MonitorType";
|
|
9
11
|
import OneUptimeDate from "../../../Types/Date";
|
|
@@ -11,24 +13,27 @@ import logger from "../Logger";
|
|
|
11
13
|
/*
|
|
12
14
|
* Server half of device-owned polling.
|
|
13
15
|
*
|
|
14
|
-
* The device's assigned probe
|
|
15
|
-
* the device's own schedule
|
|
16
|
+
* The device's assigned probe polls every polling-enabled NetworkDevice on
|
|
17
|
+
* the device's own schedule - pinging it always, and walking it over SNMP
|
|
18
|
+
* as well when it has usable credentials - and reports each poll here. This
|
|
19
|
+
* util then:
|
|
16
20
|
*
|
|
17
21
|
* 1. computes interface rates against the device's previous walk
|
|
18
|
-
* (NetworkDevice.lastWalkLog),
|
|
19
|
-
* 2. syncs the device/interface/endpoint inventory and
|
|
22
|
+
* (NetworkDevice.lastWalkLog) when interfaces were walked,
|
|
23
|
+
* 2. syncs the device/interface/endpoint inventory, reachability and
|
|
24
|
+
* lastSeenAt,
|
|
20
25
|
* 3. emits device-scoped metrics (so health charts work with zero
|
|
21
26
|
* monitors), and
|
|
22
|
-
* 4. fans the
|
|
27
|
+
* 4. fans the poll out to every Network Device monitor referencing the
|
|
23
28
|
* device — each gets an event-driven ProbeMonitorResponse evaluated
|
|
24
29
|
* through the ordinary criteria pipeline (incidents, alerts, status).
|
|
25
30
|
*
|
|
26
31
|
* Monitors are pure alerting config here: they never poll, and deleting
|
|
27
32
|
* every monitor leaves the device fully inventoried and charted.
|
|
28
33
|
*/
|
|
29
|
-
|
|
34
|
+
class NetworkDeviceWalkUtil {
|
|
30
35
|
static async processWalkResult(data) {
|
|
31
|
-
var _a, _b, _c, _d;
|
|
36
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
32
37
|
/*
|
|
33
38
|
* Scope the lookup to the reporting probe (the auth middleware only
|
|
34
39
|
* proves the caller is SOME valid probe) — without this any probe that
|
|
@@ -52,24 +57,36 @@ export default class NetworkDeviceWalkUtil {
|
|
|
52
57
|
},
|
|
53
58
|
});
|
|
54
59
|
if (!device || !device.id || !device.projectId) {
|
|
55
|
-
logger.warn(`Device
|
|
60
|
+
logger.warn(`Device poll ignored: device ${data.networkDeviceId.toString()} is not assigned to probe ${data.probeId.toString()}.`);
|
|
56
61
|
return;
|
|
57
62
|
}
|
|
58
|
-
const
|
|
63
|
+
const pollMode = (_a = data.pollMode) !== null && _a !== void 0 ? _a : "snmp";
|
|
64
|
+
/*
|
|
65
|
+
* The device verdict. A ping-first probe states it (ping OR walk); an
|
|
66
|
+
* older probe only walked, so its walk verdict IS the device verdict -
|
|
67
|
+
* and, matching the inventory's convention, a walk that reports no
|
|
68
|
+
* verdict at all counts as answered.
|
|
69
|
+
*/
|
|
70
|
+
const isOnline = (_b = data.isOnline) !== null && _b !== void 0 ? _b : (data.snmpResponse ? data.snmpResponse.isOnline !== false : false);
|
|
71
|
+
const pingResponse = NetworkDeviceWalkUtil.toPingMonitorResponse(data.pingResponse);
|
|
59
72
|
/*
|
|
60
73
|
* Interface rates are counter deltas against the previous walk. Compute
|
|
61
74
|
* them on the FULL interface set, before inventory pruning, so muted
|
|
62
|
-
* ports still get fresh rates in the inventory table.
|
|
75
|
+
* ports still get fresh rates in the inventory table. Nothing to do on
|
|
76
|
+
* a poll that ran no walk.
|
|
63
77
|
*/
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
78
|
+
if (data.snmpResponse) {
|
|
79
|
+
SnmpInterfaceRateUtil.attachInterfaceRates({
|
|
80
|
+
snmpResponse: data.snmpResponse,
|
|
81
|
+
previousWalkLog: device.lastWalkLog,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
68
84
|
/*
|
|
69
85
|
* Persist this walk as the next delta baseline — but only when it
|
|
70
86
|
* actually walked interfaces. Keeping the last GOOD counters across
|
|
71
|
-
* failed polls
|
|
72
|
-
* instead of losing
|
|
87
|
+
* failed polls (and across ping-only polls, which walk nothing) means
|
|
88
|
+
* rates resume with a correct (longer-window) delta instead of losing
|
|
89
|
+
* a cycle.
|
|
73
90
|
*
|
|
74
91
|
* Hook-free single-statement write, deliberately. A 48-interface walk
|
|
75
92
|
* log is ~28 KB of jsonb, stored out of line: the full updateOneById
|
|
@@ -107,7 +124,8 @@ export default class NetworkDeviceWalkUtil {
|
|
|
107
124
|
* every five minutes and would otherwise be the only thing moving the
|
|
108
125
|
* counter at all.
|
|
109
126
|
*/
|
|
110
|
-
if (data.snmpResponse
|
|
127
|
+
if (data.snmpResponse &&
|
|
128
|
+
data.snmpResponse.interfaces &&
|
|
111
129
|
data.snmpResponse.interfaces.length > 0) {
|
|
112
130
|
await NetworkDeviceService.updateColumnsByIdWithoutHooks({
|
|
113
131
|
id: device.id,
|
|
@@ -154,6 +172,7 @@ export default class NetworkDeviceWalkUtil {
|
|
|
154
172
|
deviceId: device.id,
|
|
155
173
|
snmpResponse: data.snmpResponse,
|
|
156
174
|
isOnline: isOnline,
|
|
175
|
+
pollMode: pollMode,
|
|
157
176
|
});
|
|
158
177
|
try {
|
|
159
178
|
await NetworkDeviceMetricUtil.saveWalkMetrics({
|
|
@@ -162,8 +181,10 @@ export default class NetworkDeviceWalkUtil {
|
|
|
162
181
|
deviceName: device.name,
|
|
163
182
|
probeId: data.probeId,
|
|
164
183
|
snmpResponse: data.snmpResponse,
|
|
165
|
-
|
|
184
|
+
// Walk time only: a ping-only poll writes no response-time point.
|
|
185
|
+
responseTimeInMs: (_c = data.snmpResponse) === null || _c === void 0 ? void 0 : _c.responseTimeInMs,
|
|
166
186
|
isOnline: isOnline,
|
|
187
|
+
pingResponse: pingResponse,
|
|
167
188
|
});
|
|
168
189
|
}
|
|
169
190
|
catch (err) {
|
|
@@ -171,6 +192,17 @@ export default class NetworkDeviceWalkUtil {
|
|
|
171
192
|
logger.error(`Failed to save device metrics for ${device.id.toString()}:`);
|
|
172
193
|
logger.error(err);
|
|
173
194
|
}
|
|
195
|
+
/*
|
|
196
|
+
* Why the poll failed, for the incident/alert narrative. The walk's own
|
|
197
|
+
* cause is passed through whenever a walk ran (it is the more specific
|
|
198
|
+
* of the two, and the "SNMP walk failing" alert reads it); the ping's
|
|
199
|
+
* cause is only worth stating when the device is actually unreachable
|
|
200
|
+
* - on an ICMP-filtered device whose walk succeeds, "ping timed out" is
|
|
201
|
+
* not a failure of anything.
|
|
202
|
+
*/
|
|
203
|
+
const failureCause = ((_d = data.snmpResponse) === null || _d === void 0 ? void 0 : _d.failureCause) ||
|
|
204
|
+
(!isOnline ? (_e = data.pingResponse) === null || _e === void 0 ? void 0 : _e.failureCause : undefined) ||
|
|
205
|
+
"";
|
|
174
206
|
// --- Fan out to the monitors alerting on this device ---
|
|
175
207
|
const monitors = await NetworkDeviceWalkUtil.findMonitorsWatchingDevices({
|
|
176
208
|
projectId: device.projectId,
|
|
@@ -185,22 +217,29 @@ export default class NetworkDeviceWalkUtil {
|
|
|
185
217
|
if (!monitor.id || !monitor.projectId) {
|
|
186
218
|
continue;
|
|
187
219
|
}
|
|
188
|
-
for (const monitorStep of ((
|
|
189
|
-
const referencedDeviceId = (
|
|
220
|
+
for (const monitorStep of ((_g = (_f = monitor.monitorSteps) === null || _f === void 0 ? void 0 : _f.data) === null || _g === void 0 ? void 0 : _g.monitorStepsInstanceArray) || []) {
|
|
221
|
+
const referencedDeviceId = (_j = (_h = monitorStep.data) === null || _h === void 0 ? void 0 : _h.networkDeviceMonitor) === null || _j === void 0 ? void 0 : _j.networkDeviceId;
|
|
190
222
|
if (!referencedDeviceId ||
|
|
191
223
|
referencedDeviceId !== device.id.toString()) {
|
|
192
224
|
continue;
|
|
193
225
|
}
|
|
226
|
+
/*
|
|
227
|
+
* `isOnline` is the device verdict; `snmpResponse` is the real walk
|
|
228
|
+
* or undefined - NEVER a synthesized failure, so walk-dependent
|
|
229
|
+
* criteria see "not evaluated" rather than "breaching" on a
|
|
230
|
+
* ping-only device. `responseTimeInMs` is the walk's time only.
|
|
231
|
+
*/
|
|
194
232
|
const walkResponse = {
|
|
195
233
|
projectId: monitor.projectId,
|
|
196
234
|
monitorId: monitor.id,
|
|
197
235
|
monitorStepId: monitorStep.id,
|
|
198
236
|
probeId: data.probeId,
|
|
199
237
|
snmpResponse: data.snmpResponse,
|
|
238
|
+
pingResponse: pingResponse,
|
|
200
239
|
isOnline: isOnline,
|
|
201
|
-
responseTimeInMs: data.snmpResponse.responseTimeInMs,
|
|
202
|
-
isTimeout: data.snmpResponse.isTimeout,
|
|
203
|
-
failureCause:
|
|
240
|
+
responseTimeInMs: (_k = data.snmpResponse) === null || _k === void 0 ? void 0 : _k.responseTimeInMs,
|
|
241
|
+
isTimeout: (_l = data.snmpResponse) === null || _l === void 0 ? void 0 : _l.isTimeout,
|
|
242
|
+
failureCause: failureCause,
|
|
204
243
|
monitoredAt: data.monitoredAt,
|
|
205
244
|
ingestedAt: OneUptimeDate.getCurrentDate(),
|
|
206
245
|
};
|
|
@@ -208,45 +247,81 @@ export default class NetworkDeviceWalkUtil {
|
|
|
208
247
|
await MonitorResourceUtil.monitorResource(walkResponse);
|
|
209
248
|
}
|
|
210
249
|
catch (err) {
|
|
211
|
-
logger.error(`Error evaluating device
|
|
250
|
+
logger.error(`Error evaluating device poll for monitor ${monitor.id.toString()}:`);
|
|
212
251
|
logger.error(err);
|
|
213
252
|
}
|
|
214
253
|
}
|
|
215
254
|
}
|
|
216
|
-
logger.debug(`Device
|
|
255
|
+
logger.debug(`Device poll for ${device.id.toString()} (${pollMode}) processed: evaluated ${monitors.length} watching monitor(s).`);
|
|
256
|
+
}
|
|
257
|
+
/*
|
|
258
|
+
* The probe's ping result in the shape the criteria pipeline already
|
|
259
|
+
* speaks (ProbeMonitorResponse.pingResponse, as Ping monitors report it),
|
|
260
|
+
* so packet-loss criteria, metrics and evidence read it without a special
|
|
261
|
+
* case. Undefined when the probe ran no ping (older probes).
|
|
262
|
+
*/
|
|
263
|
+
static toPingMonitorResponse(ping) {
|
|
264
|
+
var _a, _b;
|
|
265
|
+
if (!ping) {
|
|
266
|
+
return undefined;
|
|
267
|
+
}
|
|
268
|
+
/*
|
|
269
|
+
* Loss is the one number every reader wants; when the probe did not
|
|
270
|
+
* measure it, the verdict implies it - an answered ping lost nothing
|
|
271
|
+
* that matters, a silent one lost everything.
|
|
272
|
+
*/
|
|
273
|
+
const packetLossPercent = typeof ping.packetLossPercent === "number" &&
|
|
274
|
+
isFinite(ping.packetLossPercent)
|
|
275
|
+
? ping.packetLossPercent
|
|
276
|
+
: ping.isOnline
|
|
277
|
+
? 0
|
|
278
|
+
: 100;
|
|
279
|
+
return {
|
|
280
|
+
packetsSent: (_a = ping.packetsSent) !== null && _a !== void 0 ? _a : 0,
|
|
281
|
+
packetsReceived: (_b = ping.packetsReceived) !== null && _b !== void 0 ? _b : 0,
|
|
282
|
+
packetLossPercent: packetLossPercent,
|
|
283
|
+
avgRoundTripTimeInMs: typeof ping.avgRttMs === "number" && isFinite(ping.avgRttMs)
|
|
284
|
+
? ping.avgRttMs
|
|
285
|
+
: undefined,
|
|
286
|
+
};
|
|
217
287
|
}
|
|
218
288
|
/*
|
|
219
|
-
* Every enabled Network Device monitor in the project
|
|
220
|
-
*
|
|
221
|
-
*
|
|
222
|
-
*
|
|
223
|
-
*
|
|
289
|
+
* Every enabled Network Device monitor in the project watching one of
|
|
290
|
+
* the given devices. Shared by the walk fan-out above and the SNMP trap
|
|
291
|
+
* fan-out.
|
|
292
|
+
*
|
|
293
|
+
* Two sources, unioned and deduped by id:
|
|
294
|
+
*
|
|
295
|
+
* 1. Indexed: monitors whose `autoProvisionedNetworkDeviceId` is one of
|
|
296
|
+
* the devices - every monitor a template, an auto-import rule or an
|
|
297
|
+
* alert policy provisioned. Served by the partial index on that
|
|
298
|
+
* column, so it costs one index probe per device however many
|
|
299
|
+
* monitors the project has.
|
|
300
|
+
* 2. Legacy: hand-made monitors, which carry the device link only in
|
|
301
|
+
* their step JSON. Restricted to rows with NO
|
|
302
|
+
* autoProvisionedNetworkDeviceId (the indexed query already covered
|
|
303
|
+
* the rest), paged, and filtered server-side on the step JSON.
|
|
304
|
+
*
|
|
305
|
+
* The legacy scan is what this lookup used to be in full - one fetch of
|
|
306
|
+
* every Network Device monitor in the project per walk - and it shrinks
|
|
307
|
+
* as monitors move onto the column.
|
|
224
308
|
*/
|
|
225
309
|
static async findMonitorsWatchingDevices(data) {
|
|
310
|
+
var _a;
|
|
226
311
|
if (data.deviceIds.length === 0) {
|
|
227
312
|
return [];
|
|
228
313
|
}
|
|
229
314
|
const deviceIdSet = new Set(data.deviceIds);
|
|
230
|
-
const
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
},
|
|
235
|
-
select: {
|
|
236
|
-
_id: true,
|
|
237
|
-
projectId: true,
|
|
238
|
-
monitorSteps: true,
|
|
239
|
-
disableActiveMonitoring: true,
|
|
240
|
-
disableActiveMonitoringBecauseOfManualIncident: true,
|
|
241
|
-
disableActiveMonitoringBecauseOfScheduledMaintenanceEvent: true,
|
|
242
|
-
},
|
|
243
|
-
limit: LIMIT_MAX,
|
|
244
|
-
skip: 0,
|
|
245
|
-
props: {
|
|
246
|
-
isRoot: true,
|
|
247
|
-
},
|
|
315
|
+
const indexedMonitors = await NetworkDeviceWalkUtil.findNetworkDeviceMonitorsPaged({
|
|
316
|
+
projectId: data.projectId,
|
|
317
|
+
monitorType: MonitorType.NetworkDevice,
|
|
318
|
+
autoProvisionedNetworkDeviceId: QueryHelper.any(data.deviceIds),
|
|
248
319
|
});
|
|
249
|
-
|
|
320
|
+
const legacyMonitors = (await NetworkDeviceWalkUtil.findNetworkDeviceMonitorsPaged({
|
|
321
|
+
projectId: data.projectId,
|
|
322
|
+
monitorType: MonitorType.NetworkDevice,
|
|
323
|
+
autoProvisionedNetworkDeviceId: QueryHelper.isNull(),
|
|
324
|
+
})).filter((monitor) => {
|
|
250
325
|
var _a, _b;
|
|
251
326
|
return (((_b = (_a = monitor.monitorSteps) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.monitorStepsInstanceArray) || []).some((monitorStep) => {
|
|
252
327
|
var _a, _b;
|
|
@@ -254,6 +329,60 @@ export default class NetworkDeviceWalkUtil {
|
|
|
254
329
|
return Boolean(referencedDeviceId && deviceIdSet.has(referencedDeviceId));
|
|
255
330
|
});
|
|
256
331
|
});
|
|
332
|
+
const seenMonitorIds = new Set();
|
|
333
|
+
const monitors = [];
|
|
334
|
+
for (const monitor of [...indexedMonitors, ...legacyMonitors]) {
|
|
335
|
+
const monitorId = (_a = monitor.id) === null || _a === void 0 ? void 0 : _a.toString();
|
|
336
|
+
if (!monitorId || seenMonitorIds.has(monitorId)) {
|
|
337
|
+
continue;
|
|
338
|
+
}
|
|
339
|
+
seenMonitorIds.add(monitorId);
|
|
340
|
+
monitors.push(monitor);
|
|
341
|
+
}
|
|
342
|
+
return monitors;
|
|
343
|
+
}
|
|
344
|
+
/*
|
|
345
|
+
* Every monitor matching the query, in id order so the pages stay
|
|
346
|
+
* stable while monitors are created or deleted underneath the scan.
|
|
347
|
+
*/
|
|
348
|
+
static async findNetworkDeviceMonitorsPaged(query) {
|
|
349
|
+
const monitors = [];
|
|
350
|
+
let skip = 0;
|
|
351
|
+
for (;;) {
|
|
352
|
+
const page = await MonitorService.findBy({
|
|
353
|
+
query: query,
|
|
354
|
+
select: {
|
|
355
|
+
_id: true,
|
|
356
|
+
projectId: true,
|
|
357
|
+
monitorSteps: true,
|
|
358
|
+
disableActiveMonitoring: true,
|
|
359
|
+
disableActiveMonitoringBecauseOfManualIncident: true,
|
|
360
|
+
disableActiveMonitoringBecauseOfScheduledMaintenanceEvent: true,
|
|
361
|
+
},
|
|
362
|
+
sort: {
|
|
363
|
+
_id: SortOrder.Ascending,
|
|
364
|
+
},
|
|
365
|
+
limit: NetworkDeviceWalkUtil.FAN_OUT_PAGE_SIZE,
|
|
366
|
+
skip: skip,
|
|
367
|
+
props: {
|
|
368
|
+
isRoot: true,
|
|
369
|
+
},
|
|
370
|
+
});
|
|
371
|
+
monitors.push(...page);
|
|
372
|
+
if (page.length < NetworkDeviceWalkUtil.FAN_OUT_PAGE_SIZE) {
|
|
373
|
+
break;
|
|
374
|
+
}
|
|
375
|
+
skip += page.length;
|
|
376
|
+
}
|
|
377
|
+
return monitors;
|
|
257
378
|
}
|
|
258
379
|
}
|
|
380
|
+
/*
|
|
381
|
+
* One page of the monitor fan-out lookup. The indexed query rarely needs
|
|
382
|
+
* a second page (a device has a handful of monitors); the legacy JSON
|
|
383
|
+
* scan can, on a project with more than this many hand-made Network
|
|
384
|
+
* Device monitors.
|
|
385
|
+
*/
|
|
386
|
+
NetworkDeviceWalkUtil.FAN_OUT_PAGE_SIZE = LIMIT_MAX;
|
|
387
|
+
export default NetworkDeviceWalkUtil;
|
|
259
388
|
//# sourceMappingURL=NetworkDeviceWalkUtil.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkDeviceWalkUtil.js","sourceRoot":"","sources":["../../../../../Server/Utils/Monitor/NetworkDeviceWalkUtil.ts"],"names":[],"mappings":"AAEA,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,oBAAoB,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"NetworkDeviceWalkUtil.js","sourceRoot":"","sources":["../../../../../Server/Utils/Monitor/NetworkDeviceWalkUtil.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,21 +4,23 @@ import NetworkInterfaceService from "../../Services/NetworkInterfaceService";
|
|
|
4
4
|
import EndpointAttachmentUtil from "../../../Utils/Monitor/EndpointAttachmentUtil";
|
|
5
5
|
import SnmpVendorTemplateUtil from "../../../Types/Monitor/SnmpMonitor/SnmpVendorTemplate";
|
|
6
6
|
import OneUptimeDate from "../../../Types/Date";
|
|
7
|
+
import { NetworkDeviceMonitoringMethodUtil } from "../../../Types/NetworkDevice/NetworkDeviceMonitoringMethod";
|
|
7
8
|
import logger from "../Logger";
|
|
8
9
|
/*
|
|
9
10
|
* Keeps the NetworkDevice / NetworkInterface inventory in sync with each
|
|
10
|
-
* device
|
|
11
|
+
* device poll, then prunes the in-flight response down to MONITORED
|
|
11
12
|
* interfaces so criteria and metrics only consider ports the user cares
|
|
12
13
|
* about. Inventory rows always reflect every walked interface; the
|
|
13
14
|
* isMonitored flag is user-owned and never overwritten here.
|
|
14
15
|
*
|
|
15
16
|
* Called from the device polling pipeline (NetworkDeviceWalkUtil): the
|
|
16
|
-
* device's assigned probe
|
|
17
|
-
*
|
|
17
|
+
* device's assigned probe pings it on the device's own schedule - and walks
|
|
18
|
+
* it over SNMP as well when it has credentials - so this runs for every
|
|
19
|
+
* registered device, credentials or not, and no Monitor is required.
|
|
18
20
|
*/
|
|
19
21
|
export default class NetworkInventoryUtil {
|
|
20
22
|
static async updateFromWalk(data) {
|
|
21
|
-
var _a
|
|
23
|
+
var _a;
|
|
22
24
|
const deviceId = data.deviceId;
|
|
23
25
|
/*
|
|
24
26
|
* Confirm the device belongs to the given project before writing
|
|
@@ -38,6 +40,8 @@ export default class NetworkInventoryUtil {
|
|
|
38
40
|
autoApplyVendorHealthTemplate: true,
|
|
39
41
|
snmpOids: true,
|
|
40
42
|
oidTemplateId: true,
|
|
43
|
+
// For the monitor-backed guard on the poll columns below.
|
|
44
|
+
monitoringMethod: true,
|
|
41
45
|
},
|
|
42
46
|
props: {
|
|
43
47
|
isRoot: true,
|
|
@@ -46,18 +50,57 @@ export default class NetworkInventoryUtil {
|
|
|
46
50
|
if (!ownedDevice) {
|
|
47
51
|
return;
|
|
48
52
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
/*
|
|
54
|
+
* A monitor-backed device (monitoringMethod "Monitor") is never meant to
|
|
55
|
+
* be walked: nothing polls it and its bound Monitor's status owns
|
|
56
|
+
* isReachable. But claimDevicesForPolling only excludes such rows at
|
|
57
|
+
* CLAIM time, so a device claimed as SNMP and switched to Monitor before
|
|
58
|
+
* its walk result arrived still lands here. Writing the poll verdict
|
|
59
|
+
* then would overwrite the monitor's reachability with the last thing a
|
|
60
|
+
* probe found before it stopped asking, and the two would fight on the
|
|
61
|
+
* device list until the next status change. The poll and interface-count
|
|
62
|
+
* columns are therefore withheld for such a row; everything else the
|
|
63
|
+
* walk learned (system group, vendor, neighbors, interfaces, endpoints)
|
|
64
|
+
* is still recorded, because it is inventory rather than health.
|
|
65
|
+
*/
|
|
66
|
+
const isMonitorBacked = NetworkDeviceMonitoringMethodUtil.isMonitorBacked(ownedDevice.monitoringMethod);
|
|
67
|
+
if (isMonitorBacked) {
|
|
68
|
+
logger.warn(`Network device ${deviceId.toString()} is monitor-backed (monitoringMethod "Monitor") but a poll result arrived for it - most likely it was switched off probe polling while a poll was in flight. Its bound monitor owns reachability, so lastPolledAt, isReachable, lastSeenAt, isSnmpReachable, lastSnmpSeenAt and the interface counts from this poll are not written.`);
|
|
69
|
+
}
|
|
70
|
+
const pollMode = (_a = data.pollMode) !== null && _a !== void 0 ? _a : "snmp";
|
|
71
|
+
/*
|
|
72
|
+
* Did a walk run, and did it succeed? Two separate questions, because a
|
|
73
|
+
* ping-only poll runs no walk at all and must not read as a failed one:
|
|
74
|
+
* the walk columns below go NULL for it, not false.
|
|
75
|
+
*
|
|
76
|
+
* A walk where the probe could not open the SNMP session reports
|
|
77
|
+
* isOnline === false; treat anything else (success, or a walk that
|
|
78
|
+
* reports no verdict at all) as succeeded - the same convention
|
|
79
|
+
* isDeviceReachable uses further down.
|
|
80
|
+
*/
|
|
81
|
+
const walkRan = data.snmpResponse !== undefined;
|
|
82
|
+
const walkSucceeded = data.snmpResponse !== undefined && data.snmpResponse.isOnline !== false;
|
|
83
|
+
/*
|
|
84
|
+
* Inventory comes ONLY from a successful walk. A failed walk carries no
|
|
85
|
+
* system group, no neighbours and no interfaces, and reading whatever a
|
|
86
|
+
* malformed failure did carry would let it clear the LLDP snapshot or
|
|
87
|
+
* rewrite sysName off a session that never really opened.
|
|
88
|
+
*/
|
|
89
|
+
const walk = walkSucceeded
|
|
90
|
+
? data.snmpResponse
|
|
91
|
+
: undefined;
|
|
92
|
+
const walkedInterfaces = (walk === null || walk === void 0 ? void 0 : walk.interfaces) || [];
|
|
93
|
+
const systemInfo = walk === null || walk === void 0 ? void 0 : walk.systemInfo;
|
|
94
|
+
const entityInfo = walk === null || walk === void 0 ? void 0 : walk.entityInfo;
|
|
95
|
+
const lldpNeighbors = walk === null || walk === void 0 ? void 0 : walk.lldpNeighbors;
|
|
96
|
+
const cdpNeighbors = walk === null || walk === void 0 ? void 0 : walk.cdpNeighbors;
|
|
97
|
+
const arpEntries = walk === null || walk === void 0 ? void 0 : walk.arpEntries;
|
|
98
|
+
const fdbEntries = walk === null || walk === void 0 ? void 0 : walk.fdbEntries;
|
|
56
99
|
const now = OneUptimeDate.getCurrentDate();
|
|
57
100
|
/*
|
|
58
|
-
* A poll where the probe could not reach the device
|
|
59
|
-
* isOnline === false; treat anything else (reachable,
|
|
60
|
-
* reports no reachability at all) as answered.
|
|
101
|
+
* A poll where the probe could not reach the device (no ping answer AND
|
|
102
|
+
* no walk) reports isOnline === false; treat anything else (reachable,
|
|
103
|
+
* or a poll that reports no reachability at all) as answered.
|
|
61
104
|
*/
|
|
62
105
|
const isDeviceReachable = data.isOnline !== false;
|
|
63
106
|
try {
|
|
@@ -79,11 +122,36 @@ export default class NetworkInventoryUtil {
|
|
|
79
122
|
* lastSeenAt - when the device last ANSWERED. Only moves on a
|
|
80
123
|
* successful walk, so it stays honest as "last
|
|
81
124
|
* contact" and never paints a dead device green.
|
|
125
|
+
*
|
|
126
|
+
* Under ping-first polling the three answer for the DEVICE - "did it
|
|
127
|
+
* answer ping or SNMP" - which is what the status pill shows. The
|
|
128
|
+
* walk gets its own pair:
|
|
129
|
+
*
|
|
130
|
+
* isSnmpReachable - the verdict of the last WALK: true/false when
|
|
131
|
+
* one ran, NULL when none did (a ping-only poll)
|
|
132
|
+
* or the device was never polled. NULL is the
|
|
133
|
+
* whole point: a credential-less device is not
|
|
134
|
+
* "SNMP down", it is "not walked".
|
|
135
|
+
* lastSnmpSeenAt - when the walk last SUCCEEDED. Only moves on a
|
|
136
|
+
* good walk, like lastSeenAt for the device.
|
|
137
|
+
*
|
|
138
|
+
* An old probe (no pollMode) only ever walked, and the processor
|
|
139
|
+
* stamps its walk verdict as the device verdict, so both columns
|
|
140
|
+
* carry the same value for it - never NULL for a credentialed device.
|
|
141
|
+
*
|
|
142
|
+
* None of the five is written for a monitor-backed device - see the
|
|
143
|
+
* guard above the try.
|
|
82
144
|
*/
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
145
|
+
if (!isMonitorBacked) {
|
|
146
|
+
deviceUpdate["lastPolledAt"] = now;
|
|
147
|
+
deviceUpdate["isReachable"] = isDeviceReachable;
|
|
148
|
+
if (isDeviceReachable) {
|
|
149
|
+
deviceUpdate["lastSeenAt"] = now;
|
|
150
|
+
}
|
|
151
|
+
deviceUpdate["isSnmpReachable"] = walkRan ? walkSucceeded : null;
|
|
152
|
+
if (walkSucceeded) {
|
|
153
|
+
deviceUpdate["lastSnmpSeenAt"] = now;
|
|
154
|
+
}
|
|
87
155
|
}
|
|
88
156
|
if (systemInfo === null || systemInfo === void 0 ? void 0 : systemInfo.sysDescr) {
|
|
89
157
|
deviceUpdate["sysDescr"] = systemInfo.sysDescr.substring(0, 500);
|
|
@@ -167,19 +235,41 @@ export default class NetworkInventoryUtil {
|
|
|
167
235
|
if (cdpNeighbors !== undefined) {
|
|
168
236
|
deviceUpdate["cdpNeighbors"] = cdpNeighbors.slice(0, 256);
|
|
169
237
|
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
238
|
+
/*
|
|
239
|
+
* The cached interface counts are health columns too (the device list
|
|
240
|
+
* and the site overview read interfacesDown), so a monitor-backed
|
|
241
|
+
* device keeps them out for the same reason as the poll columns.
|
|
242
|
+
*
|
|
243
|
+
* On a ping-only poll they go NULL rather than staying put: a device
|
|
244
|
+
* whose credentials were removed would otherwise keep showing the
|
|
245
|
+
* interface counts of its last walk indefinitely, and the list would
|
|
246
|
+
* read "3 interfaces down" on a device nothing is walking any more.
|
|
247
|
+
* A failed walk in snmp mode, by contrast, leaves them alone - the
|
|
248
|
+
* last good counts are the best estimate until the next good walk,
|
|
249
|
+
* exactly as the lastWalkLog baseline is kept across failed polls.
|
|
250
|
+
*/
|
|
251
|
+
if (!isMonitorBacked) {
|
|
252
|
+
if (pollMode === "ping") {
|
|
253
|
+
deviceUpdate["interfacesTotal"] = null;
|
|
254
|
+
deviceUpdate["interfacesUp"] = null;
|
|
255
|
+
deviceUpdate["interfacesDown"] = null;
|
|
256
|
+
}
|
|
257
|
+
else if (walkedInterfaces.length > 0) {
|
|
258
|
+
deviceUpdate["interfacesTotal"] = walkedInterfaces.length;
|
|
259
|
+
deviceUpdate["interfacesUp"] = walkedInterfaces.filter((walked) => {
|
|
260
|
+
return walked.isAdministrativelyUp && walked.isOperationallyUp;
|
|
261
|
+
}).length;
|
|
262
|
+
deviceUpdate["interfacesDown"] = walkedInterfaces.filter((walked) => {
|
|
263
|
+
return walked.isAdministrativelyUp && !walked.isOperationallyUp;
|
|
264
|
+
}).length;
|
|
265
|
+
}
|
|
178
266
|
}
|
|
179
267
|
/*
|
|
180
|
-
* Always non-empty
|
|
181
|
-
* record that we tried, or the staleness
|
|
182
|
-
* failing device from an unpolled one.
|
|
268
|
+
* Always non-empty for a probe-polled device: even a poll that
|
|
269
|
+
* reached nothing has to record that we tried, or the staleness
|
|
270
|
+
* backstop cannot tell a failing device from an unpolled one. Only
|
|
271
|
+
* the monitor-backed case above can leave it empty, and then there
|
|
272
|
+
* is genuinely nothing to write.
|
|
183
273
|
*/
|
|
184
274
|
if (Object.keys(deviceUpdate).length > 0) {
|
|
185
275
|
await NetworkDeviceService.updateOneById({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkInventoryUtil.js","sourceRoot":"","sources":["../../../../../Server/Utils/Monitor/NetworkInventoryUtil.ts"],"names":[],"mappings":"AACA,OAAO,oBAAoB,MAAM,qCAAqC,CAAC;AACvE,OAAO,sBAAsB,MAAM,uCAAuC,CAAC;AAC3E,OAAO,uBAEN,MAAM,wCAAwC,CAAC;AAOhD,OAAO,sBAEN,MAAM,+CAA+C,CAAC;AAGvD,OAAO,sBAEN,MAAM,uDAAuD,CAAC;AAE/D,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,MAAM,MAAM,WAAW,CAAC;AAE/B
|
|
1
|
+
{"version":3,"file":"NetworkInventoryUtil.js","sourceRoot":"","sources":["../../../../../Server/Utils/Monitor/NetworkInventoryUtil.ts"],"names":[],"mappings":"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"}
|