@oneuptime/common 14.0.2 → 14.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Models/DatabaseModels/Alert.ts +55 -0
- package/Models/DatabaseModels/AlertFeed.ts +2 -0
- package/Models/DatabaseModels/DatabaseServer.ts +1650 -0
- package/Models/DatabaseModels/DatabaseServerEndpoint.ts +540 -0
- package/Models/DatabaseModels/DatabaseServerFeed.ts +625 -0
- package/Models/DatabaseModels/DatabaseServerLabelRule.ts +514 -0
- package/Models/DatabaseModels/DatabaseServerOwnerRule.ts +596 -0
- package/Models/DatabaseModels/DatabaseServerOwnerTeam.ts +491 -0
- package/Models/DatabaseModels/DatabaseServerOwnerUser.ts +490 -0
- package/Models/DatabaseModels/Incident.ts +55 -0
- package/Models/DatabaseModels/IncidentAlert.ts +540 -0
- package/Models/DatabaseModels/IncidentFeed.ts +2 -0
- package/Models/DatabaseModels/Index.ts +18 -0
- package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +26 -0
- package/Models/DatabaseModels/Project.ts +60 -0
- package/Models/DatabaseModels/RumApplication.ts +52 -1
- package/Models/DatabaseModels/ScheduledMaintenance.ts +55 -0
- package/Models/DatabaseModels/TelemetryException.ts +2 -0
- package/Models/DatabaseModels/UserProjectSsoConsent.ts +146 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1794800000000-AddSessionReplaySameOriginTracePropagation.ts +28 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1794900000000-AddIncidentAlert.ts +89 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1795000000000-AddDatabaseServerTables.ts +673 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1795100000000-AddUserProjectSsoConsent.ts +51 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +8 -0
- package/Server/Middleware/MultipartFormData.ts +1 -1
- package/Server/Middleware/TelemetryIngest.ts +15 -8
- package/Server/Services/AlertReminderRuleService.ts +100 -24
- package/Server/Services/DatabaseServerEndpointService.ts +895 -0
- package/Server/Services/DatabaseServerFeedService.ts +128 -0
- package/Server/Services/DatabaseServerLabelRuleEngineService.ts +340 -0
- package/Server/Services/DatabaseServerLabelRuleService.ts +14 -0
- package/Server/Services/DatabaseServerOwnerRuleEngineService.ts +425 -0
- package/Server/Services/DatabaseServerOwnerRuleService.ts +14 -0
- package/Server/Services/DatabaseServerOwnerTeamService.ts +180 -0
- package/Server/Services/DatabaseServerOwnerUserService.ts +173 -0
- package/Server/Services/DatabaseServerService.ts +4546 -0
- package/Server/Services/DatabaseService.ts +14 -8
- package/Server/Services/DockerResourceService.ts +43 -2
- package/Server/Services/IncidentAlertService.ts +1811 -0
- package/Server/Services/IncidentReminderRuleService.ts +103 -23
- package/Server/Services/IncidentService.ts +210 -10
- package/Server/Services/IncidentStateTimelineService.ts +24 -0
- package/Server/Services/Index.ts +18 -0
- package/Server/Services/InventoryItemService.ts +113 -5
- package/Server/Services/IoTDeviceService.ts +145 -37
- package/Server/Services/OpenTelemetryIngestService.ts +19 -0
- package/Server/Services/PodmanResourceService.ts +43 -2
- package/Server/Services/ScheduledMaintenanceReminderRuleService.ts +107 -23
- package/Server/Services/ServiceService.ts +1 -1
- package/Server/Services/TelemetryUsageBillingService.ts +29 -2
- package/Server/Services/UserProjectSsoConsentService.ts +74 -0
- package/Server/Services/UserService.ts +14 -1
- package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +18 -0
- package/Server/Types/Database/QueryHelper.ts +30 -1
- package/Server/Utils/AI/Toolbox/ResourceTools.ts +69 -1
- package/Server/Utils/Database/AffectedResourceRelations.ts +6 -0
- package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +188 -6
- package/Server/Utils/Monitor/MonitorAlert.ts +28 -1
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +2262 -755
- package/Server/Utils/Monitor/MonitorIncident.ts +28 -1
- package/Server/Utils/Monitor/MonitorMaintenanceSuppression.ts +268 -6
- package/Server/Utils/Monitor/MonitorResource.ts +47 -11
- package/Server/Utils/Monitor/MonitorResourceContext.ts +1 -0
- package/Server/Utils/Monitor/MonitorStepResourceIdentity.ts +239 -21
- package/Server/Utils/Monitor/PerSeriesResolutionRootCause.ts +43 -0
- package/Server/Utils/Monitor/SeriesResourceLabels.ts +291 -0
- package/Server/Utils/Monitor/SeriesResourceLinker.ts +111 -12
- package/Server/Utils/Rules/RuleRun/RuleRunRegistry.ts +25 -0
- package/Server/Utils/SessionReplay/SessionReplayGateCache.ts +24 -2
- package/Server/Utils/StartServer.ts +26 -6
- package/Server/Utils/TeamMember/ProjectLeaveResourceCleanup.ts +2 -0
- package/Server/Utils/Telemetry/DatabaseEndpointDiscovery.ts +688 -0
- package/Server/Utils/Telemetry/EntityRegistry.ts +5 -1
- package/Server/Utils/Telemetry/LogExceptionExtractor.ts +18 -1
- package/Server/Utils/Telemetry/ResourceEntityFilter.ts +175 -12
- package/Server/Utils/Telemetry/ResourceFacetResolver.ts +12 -0
- package/Server/Utils/Telemetry/ServiceDependencyDiscovery.ts +606 -36
- package/Server/Utils/Telemetry/Telemetry.ts +16 -0
- package/Server/Utils/Telemetry/TelemetryEntity.ts +22 -22
- package/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.ts +16 -10
- package/Tests/App/Accounts/SignedInRedirect.test.tsx +241 -0
- package/Tests/App/AdminDashboard/AdminHeaderSmallScreens.test.tsx +221 -4
- package/Tests/App/Dashboard/AIInsightsResourcePageContext.test.ts +42 -0
- package/Tests/App/Dashboard/AffectedResourcesDisplay.test.tsx +100 -0
- package/Tests/App/Dashboard/AffectedResourcesPicker.test.tsx +86 -0
- package/Tests/App/Dashboard/AffectedResourcesPickerHiddenTypes.test.tsx +2 -0
- package/Tests/App/Dashboard/AffectedResourcesSummaryStep.test.tsx +19 -0
- package/Tests/App/Dashboard/BreadcrumbCoverage.test.tsx +14 -0
- package/Tests/App/Dashboard/BulkIncidentLinkActions.test.tsx +869 -0
- package/Tests/App/Dashboard/CephMetricTooltips.test.tsx +1777 -0
- package/Tests/App/Dashboard/CloudFleetSummary.test.ts +8 -0
- package/Tests/App/Dashboard/CloudMetricTooltips.test.tsx +887 -0
- package/Tests/App/Dashboard/ContainerHostMetricTooltips.test.tsx +1309 -0
- package/Tests/App/Dashboard/CorrelateFilterBuilder.test.tsx +26 -1
- package/Tests/App/Dashboard/DashboardAppSsoError.test.tsx +501 -0
- package/Tests/App/Dashboard/DashboardHeaderRequests.test.tsx +64 -1
- package/Tests/App/Dashboard/DashboardHeaderSmallScreens.test.tsx +178 -18
- package/Tests/App/Dashboard/DashboardMasterPageSsoRedirect.test.tsx +444 -0
- package/Tests/App/Dashboard/DashboardNavBarForeignHiddenRule.test.tsx +573 -0
- package/Tests/App/Dashboard/DatabaseChartAxes.test.tsx +431 -0
- package/Tests/App/Dashboard/DatabaseContainerDetailBadge.test.tsx +249 -0
- package/Tests/App/Dashboard/DatabaseDashboardE2EFixes.test.ts +681 -0
- package/Tests/App/Dashboard/DatabaseDocumentationMarkdown.test.ts +1801 -0
- package/Tests/App/Dashboard/DatabaseFleetSummaryRefresh.test.tsx +280 -0
- package/Tests/App/Dashboard/DatabaseFormHelpers.test.tsx +321 -0
- package/Tests/App/Dashboard/DatabaseMetricMonitorLink.test.tsx +795 -0
- package/Tests/App/Dashboard/DatabaseOverviewHeader.test.tsx +580 -0
- package/Tests/App/Dashboard/DatabaseRecommendationsEngineMetrics.test.ts +270 -0
- package/Tests/App/Dashboard/DatabaseServerComponents.test.tsx +1486 -0
- package/Tests/App/Dashboard/DatabaseServerEngineMetricsFilter.test.ts +223 -0
- package/Tests/App/Dashboard/DatabaseServerPresentation.test.ts +435 -0
- package/Tests/App/Dashboard/DatabaseServerSummary.test.ts +186 -0
- package/Tests/App/Dashboard/DatabaseServerTelemetryQueries.test.ts +1553 -0
- package/Tests/App/Dashboard/DatabaseTableTruncation.test.tsx +326 -0
- package/Tests/App/Dashboard/DatabaseTelemetryScope.test.ts +512 -0
- package/Tests/App/Dashboard/DatabaseTelemetryTabs.test.tsx +774 -0
- package/Tests/App/Dashboard/DatabaseViewLayout.test.tsx +233 -0
- package/Tests/App/Dashboard/DatabaseWorkloadBadge.test.tsx +972 -0
- package/Tests/App/Dashboard/DiscoveryReviewInventoryRefresh.test.tsx +5 -0
- package/Tests/App/Dashboard/DiscoveryReviewUnnamedHostHint.test.tsx +1061 -0
- package/Tests/App/Dashboard/DiscoveryScanLivePage.test.tsx +39 -0
- package/Tests/App/Dashboard/DockerSwarmClustersListTooltips.test.tsx +414 -0
- package/Tests/App/Dashboard/DockerSwarmMetricTooltips.test.ts +796 -0
- package/Tests/App/Dashboard/DockerSwarmOverviewTooltips.test.tsx +747 -0
- package/Tests/App/Dashboard/EventOverlayScope.test.ts +147 -0
- package/Tests/App/Dashboard/EventOverlayScopeHook.test.tsx +1 -0
- package/Tests/App/Dashboard/ExceptionMonitorEnvironmentFilter.test.tsx +38 -18
- package/Tests/App/Dashboard/HostDetailViewTooltips.test.tsx +725 -0
- package/Tests/App/Dashboard/HostListColumnTooltips.test.tsx +472 -0
- package/Tests/App/Dashboard/HostMetricTooltips.test.ts +709 -0
- package/Tests/App/Dashboard/HostOverviewTooltips.test.tsx +698 -0
- package/Tests/App/Dashboard/HostTooltipHarness.ts +124 -0
- package/Tests/App/Dashboard/HostsListTooltips.test.tsx +395 -0
- package/Tests/App/Dashboard/IncidentAlertLinkDialog.test.tsx +691 -0
- package/Tests/App/Dashboard/IncidentAlertLinkHelpers.test.ts +458 -0
- package/Tests/App/Dashboard/IncidentAlertLinkPages.test.tsx +828 -0
- package/Tests/App/Dashboard/IncidentAlertLinkSideMenus.test.tsx +231 -0
- package/Tests/App/Dashboard/IncidentCreateFromAlerts.test.tsx +689 -0
- package/Tests/App/Dashboard/IoTMetricTooltips.test.tsx +1123 -0
- package/Tests/App/Dashboard/KubernetesClusterMetricTooltips.test.ts +837 -0
- package/Tests/App/Dashboard/KubernetesClusterOverviewTooltips.test.tsx +699 -0
- package/Tests/App/Dashboard/KubernetesContainersTabTooltips.test.tsx +320 -0
- package/Tests/App/Dashboard/KubernetesCostTooltips.test.tsx +502 -0
- package/Tests/App/Dashboard/KubernetesInsightsTooltips.test.tsx +222 -0
- package/Tests/App/Dashboard/KubernetesResourceMetricTooltips.test.ts +561 -0
- package/Tests/App/Dashboard/KubernetesResourcePagesTooltips.test.tsx +1168 -0
- package/Tests/App/Dashboard/LinkIncidentAlertModal.test.tsx +154 -0
- package/Tests/App/Dashboard/LogsResourceFacetChips.test.tsx +1 -0
- package/Tests/App/Dashboard/MetricDescriptionRules.ts +170 -0
- package/Tests/App/Dashboard/MetricDescriptionsCatalog.test.ts +206 -0
- package/Tests/App/Dashboard/MetricDescriptionsConsistency.test.ts +275 -0
- package/Tests/App/Dashboard/MetricsViewerDrillDown.test.tsx +310 -0
- package/Tests/App/Dashboard/MetricsViewerEntityScopedRows.test.tsx +495 -0
- package/Tests/App/Dashboard/MonitorCreateFromMonitorBackedDevice.test.tsx +132 -1
- package/Tests/App/Dashboard/NavigationSearchKeywords.test.tsx +5 -0
- package/Tests/App/Dashboard/NetworkDeviceTooltips.test.tsx +852 -0
- package/Tests/App/Dashboard/NetworkDiagnosticsTooltips.test.tsx +556 -0
- package/Tests/App/Dashboard/NetworkMetricTooltips.test.ts +1348 -0
- package/Tests/App/Dashboard/NetworkSiteTooltips.test.tsx +679 -0
- package/Tests/App/Dashboard/ProductOrientation.test.tsx +4 -3
- package/Tests/App/Dashboard/ProxmoxMetricTooltips.test.ts +592 -0
- package/Tests/App/Dashboard/ProxmoxOverviewTooltips.test.tsx +1002 -0
- package/Tests/App/Dashboard/ProxmoxResourcePageTooltips.test.tsx +923 -0
- package/Tests/App/Dashboard/RecommendationsLoadedContext.test.tsx +349 -0
- package/Tests/App/Dashboard/ResourceArchiveSettings.test.tsx +62 -0
- package/Tests/App/Dashboard/ResourceFeedPageWiring.test.ts +8 -1
- package/Tests/App/Dashboard/ResourceFeedPagesFilterSort.test.tsx +14 -0
- package/Tests/App/Dashboard/ResourceOverviewTileTooltips.test.tsx +1066 -0
- package/Tests/App/Dashboard/RumOverviewPage.test.tsx +1195 -0
- package/Tests/App/Dashboard/ScheduledMaintenanceOverviewPage.test.tsx +2 -0
- package/Tests/App/Dashboard/ServerlessMetricTooltips.test.tsx +474 -0
- package/Tests/App/Dashboard/ServiceMapDatabaseLink.test.tsx +1085 -0
- package/Tests/App/Dashboard/ServiceMetricTooltips.test.tsx +772 -0
- package/Tests/App/Dashboard/SessionReplayAuditTable.test.tsx +56 -1
- package/Tests/App/Dashboard/TelemetryMetricsSignals.test.ts +1207 -0
- package/Tests/App/Dashboard/TelemetryResourceRetentionSettings.test.tsx +10 -0
- package/Tests/App/Dashboard/TelemetryResourceTabTooltips.test.tsx +437 -0
- package/Tests/App/Dashboard/TracesResourceFacets.test.tsx +2 -1
- package/Tests/App/Dashboard/VMwareMetricTooltips.test.ts +801 -0
- package/Tests/App/Dashboard/VMwareOverviewTooltips.test.tsx +601 -0
- package/Tests/App/Dashboard/VMwareResourcePagesTooltips.test.tsx +646 -0
- package/Tests/App/Dashboard/VMwareTooltipHarness.ts +145 -0
- package/Tests/App/StatusPage/StatusPageHeaderForeignHiddenRule.test.tsx +284 -0
- package/Tests/ClassStrings.ts +178 -0
- package/Tests/Fixtures/MobilePasskeyUser.json +1 -2
- package/Tests/ForeignHiddenRuleGuard.ts +2152 -0
- package/Tests/Models/DatabaseModels/DatabaseServerModels.test.ts +2250 -0
- package/Tests/Models/DatabaseModels/IncidentAlertModel.test.ts +554 -0
- package/Tests/Models/DatabaseModels/ResourceFeedModels.test.ts +24 -5
- package/Tests/Models/DatabaseModels/SessionReplayModels.test.ts +117 -0
- package/Tests/Models/DatabaseModels/StaticRuleCriteriaInheritance.test.ts +4 -2
- package/Tests/RenderedMarkup.ts +518 -0
- package/Tests/ResponsiveVisibility.test.ts +490 -4
- package/Tests/ResponsiveVisibility.ts +505 -52
- package/Tests/Server/Infrastructure/Postgres/AddConfigurableRuleCriteriaMigration.test.ts +3 -0
- package/Tests/Server/Infrastructure/Postgres/AddDatabaseServerTablesMigration.test.ts +541 -0
- package/Tests/Server/Infrastructure/Postgres/AddIncidentAlertMigration.test.ts +341 -0
- package/Tests/Server/Infrastructure/Postgres/AddSessionReplaySameOriginTracePropagationMigration.test.ts +247 -0
- package/Tests/Server/Infrastructure/Postgres/AddUserProjectSsoConsentMigration.test.ts +234 -0
- package/Tests/Server/Services/ContainerSnapshotUpsertPostgres.test.ts +319 -0
- package/Tests/Server/Services/CrossProjectRelationWriteGuard.test.ts +13 -0
- package/Tests/Server/Services/DatabaseServerEndpointService.test.ts +2033 -0
- package/Tests/Server/Services/DatabaseServerFeedAndOwnerServices.test.ts +529 -0
- package/Tests/Server/Services/DatabaseServerLifecycle.test.ts +3302 -0
- package/Tests/Server/Services/DatabaseServerRegistries.test.ts +603 -0
- package/Tests/Server/Services/DatabaseServerRuleEngines.test.ts +754 -0
- package/Tests/Server/Services/DatabaseServerService.test.ts +3558 -0
- package/Tests/Server/Services/DatabaseServerSqlPostgres.test.ts +2045 -0
- package/Tests/Server/Services/DatabaseServiceUpdateColumnsIfUnlockedPostgres.test.ts +362 -0
- package/Tests/Server/Services/DatabaseServiceUpdateColumnsIfUnlockedReply.test.ts +210 -0
- package/Tests/Server/Services/HookFreeWriteLengthClamp.test.ts +18 -0
- package/Tests/Server/Services/IncidentAlertPostgres.test.ts +903 -0
- package/Tests/Server/Services/IncidentAlertRegistration.test.ts +96 -0
- package/Tests/Server/Services/IncidentAlertService.test.ts +2225 -0
- package/Tests/Server/Services/IncidentAlertSloLinkSurvivesEdit.test.ts +2 -0
- package/Tests/Server/Services/IncidentAlertStateCascade.test.ts +970 -0
- package/Tests/Server/Services/IncidentCreateFromAlerts.test.ts +1284 -0
- package/Tests/Server/Services/IncomingCallPolicyEscalationRuleTarget.test.ts +225 -0
- package/Tests/Server/Services/InventoryItemDisplayName.test.ts +280 -2
- package/Tests/Server/Services/InventoryUpsertSchemaParity.test.ts +8 -2
- package/Tests/Server/Services/IoTDeviceLatestMetricsPostgres.test.ts +689 -0
- package/Tests/Server/Services/IoTDeviceService.test.ts +379 -0
- package/Tests/Server/Services/LatestMetricsValuesShape.test.ts +360 -0
- package/Tests/Server/Services/LlmModelPriceService.test.ts +402 -0
- package/Tests/Server/Services/OpenTelemetryResourceRetentionMemo.test.ts +7 -1
- package/Tests/Server/Services/OwnerRowUniqueness.test.ts +61 -9
- package/Tests/Server/Services/ReminderRuleLookupPostgres.test.ts +2250 -0
- package/Tests/Server/Services/ReminderRuleRefreshOpenSubjectsPaging.test.ts +653 -0
- package/Tests/Server/Services/ResourceUpdateLastSeenLivenessFallback.test.ts +68 -20
- package/Tests/Server/Services/StaticRuleCriteriaRuntimeCoverage.test.ts +3 -3
- package/Tests/Server/Services/TelemetryResourceFacetCounting.test.ts +9 -0
- package/Tests/Server/Services/UserProjectSsoConsentPostgres.test.ts +153 -0
- package/Tests/Server/Services/UserProjectSsoConsentService.test.ts +192 -0
- package/Tests/Server/Services/UserServiceFirstMasterAdminElection.test.ts +71 -0
- package/Tests/Server/Services/UserSignupIdTakeoverPostgres.test.ts +238 -0
- package/Tests/Server/Services/WorkspaceNotificationSummaryHelpers.test.ts +592 -0
- package/Tests/Server/Types/Billing/PayAsYouGoMeteredAuthorization.test.ts +3 -0
- package/Tests/Server/Types/Database/EventOverlayScopePostgres.test.ts +1 -0
- package/Tests/Server/Types/Database/FeedEventTypeFilterQuery.test.ts +11 -0
- package/Tests/Server/Types/Database/Permissions/InfrastructureOwnershipScope.test.ts +8 -0
- package/Tests/Server/Types/Database/QueryHelperBooleanForCriteriaBackedRule.test.ts +1094 -0
- package/Tests/Server/Utils/AI/ResourceTools.test.ts +134 -0
- package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.ts +41 -0
- package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteriaAnomalyUnits.test.ts +279 -9
- package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteriaDisplayContext.test.ts +933 -0
- package/Tests/Server/Utils/Monitor/DatabaseMaintenanceSuppression.test.ts +582 -0
- package/Tests/Server/Utils/Monitor/DatabaseServerMonitorLinking.test.ts +753 -0
- package/Tests/Server/Utils/Monitor/MonitorActionTimestamps.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/MonitorAlertCriteriaReferences.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/MonitorAlertResourceLinking.test.ts +119 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluator.test.ts +60 -25
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorAffectedResourceEdgeCases.test.ts +1719 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorKubernetesAffectedResources.test.ts +1447 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorKubernetesRatioEmail.test.ts +352 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorPlatformMetricUnits.test.ts +717 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorPlatformRawScan.test.ts +2125 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorPlatformSeriesAffectedResources.test.ts +1288 -0
- package/Tests/Server/Utils/Monitor/MonitorDependencySuppressionCreatorSkip.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/MonitorIncidentCriteriaReferences.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/MonitorIncidentMemberRoleMembership.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/MonitorIncidentResourceLinking.test.ts +88 -0
- package/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.ts +205 -0
- package/Tests/Server/Utils/Monitor/MonitorResourceContext.test.ts +62 -0
- package/Tests/Server/Utils/Monitor/MonitorResourceDatabaseMaintenance.test.ts +803 -0
- package/Tests/Server/Utils/Monitor/MonitorStepResourceIdentity.test.ts +133 -3
- package/Tests/Server/Utils/Monitor/MonitorSummaryPersistence.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/PerSeriesRecoveryResolution.test.ts +472 -1
- package/Tests/Server/Utils/Monitor/PerSeriesSecondEntityAlerting.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/SeriesResourceLinker.test.ts +236 -2
- package/Tests/Server/Utils/SeriesResourceLabels.test.ts +70 -0
- package/Tests/Server/Utils/SessionReplay/SessionReplayGateCachePolicy.test.ts +103 -0
- package/Tests/Server/Utils/StartServerProtobufContentType.test.ts +54 -0
- package/Tests/Server/Utils/Telemetry/DatabaseEndpointDiscovery.test.ts +1895 -0
- package/Tests/Server/Utils/Telemetry/EntityRegistry.test.ts +7 -0
- package/Tests/Server/Utils/Telemetry/LogExceptionExtractorSeverityGate.test.ts +90 -0
- package/Tests/Server/Utils/Telemetry/ResourceEntityFilter.test.ts +570 -0
- package/Tests/Server/Utils/Telemetry/ResourceFacetResolver.test.ts +97 -2
- package/Tests/Server/Utils/Telemetry/ServiceDependencyDiscovery.test.ts +1337 -0
- package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +295 -0
- package/Tests/Types/AI/AIResourceContext.test.ts +30 -0
- package/Tests/Types/DatabaseServer/DatabaseContainerClassifier.test.ts +3644 -0
- package/Tests/Types/DatabaseServer/DatabaseContainerCommand.test.ts +340 -0
- package/Tests/Types/DatabaseServer/DatabaseContainerCommandCorpus.ts +826 -0
- package/Tests/Types/DatabaseServer/DatabaseContainerCommandPostgres.test.ts +150 -0
- package/Tests/Types/DatabaseServer/DatabaseEndpoint.test.ts +2657 -0
- package/Tests/Types/DatabaseServer/DatabaseServerDiscoverySource.test.ts +64 -0
- package/Tests/Types/DatabaseServer/DatabaseServerEntityKeys.test.ts +952 -0
- package/Tests/Types/DatabaseServer/DatabaseServerMetricCatalog.test.ts +1161 -0
- package/Tests/Types/DatabaseServer/DatabaseSystem.test.ts +1514 -0
- package/Tests/Types/DatabaseServer/DatabaseTelemetryResolver.test.ts +1558 -0
- package/Tests/Types/Monitor/CephAlertTemplates.test.ts +255 -6
- package/Tests/Types/Monitor/DatabaseAlertTemplates.test.ts +2254 -0
- package/Tests/Types/Monitor/KubernetesAlertTemplates.test.ts +298 -0
- package/Tests/Types/Monitor/KubernetesMetricCatalog.test.ts +271 -0
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCatalog.test.ts +253 -9
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCoverage.test.ts +13 -5
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +4 -2
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationUtil.test.ts +111 -2
- package/Tests/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.test.ts +61 -0
- package/Tests/Types/Monitor/SeriesContext/SeriesLabelDisplay.test.ts +114 -0
- package/Tests/Types/Monitor/Utils/KubernetesAgentEmittedMetrics.ts +181 -0
- package/Tests/Types/NetworkDevice/DiscoveredHostNamingStatus.test.ts +401 -0
- package/Tests/Types/Rum/WebVitals.test.ts +173 -0
- package/Tests/Types/Telemetry/ResourceEntityFacet.test.ts +4 -1
- package/Tests/Types/Telemetry/ResourceFacetCatalog.test.ts +24 -2
- package/Tests/UI/Components/Card.test.tsx +93 -2
- package/Tests/UI/Components/FeedOptions.test.ts +6 -0
- package/Tests/UI/Components/FeedOptionsButton.test.tsx +8 -1
- package/Tests/UI/Components/FieldLabelInfoCardTooltip.test.tsx +413 -0
- package/Tests/UI/Components/ForeignHiddenRuleResilience.test.tsx +1147 -0
- package/Tests/UI/Components/HeaderRightRail.test.tsx +41 -1
- package/Tests/UI/Components/InfoTooltip.test.tsx +242 -0
- package/Tests/UI/Components/LogsEntityNames.test.ts +16 -1
- package/Tests/UI/Components/LogsFacetSidebarHiddenFacets.test.tsx +7 -3
- package/Tests/UI/Components/ModelTable/BaseModelTableBulkDelete.test.tsx +207 -3
- package/Tests/UI/Components/ModelTable/BaseModelTableBulkDeleteVerb.test.tsx +367 -0
- package/Tests/UI/Components/ModelTable/BaseModelTableCreateButtonTitle.test.tsx +275 -0
- package/Tests/UI/Components/ResourceFacetConfigs.test.ts +2 -1
- package/Tests/UI/Components/RuleCriteria/RuleCriteriaModelTable.test.tsx +3 -3
- package/Tests/UI/Components/SrOnlyForeignRule.test.tsx +994 -0
- package/Tests/UI/Components/StatusPage/ResourceListSelection.test.tsx +34 -1
- package/Tests/UI/Components/TableHeaderTooltip.test.tsx +662 -0
- package/Tests/UI/Components/TelemetryFacetSidebarHiddenFacets.test.tsx +4 -1
- package/Tests/UI/ForeignHiddenRuleGuard.test.ts +1951 -0
- package/Tests/UI/Rum/PrivacySummaryCard.test.tsx +166 -9
- package/Tests/UI/Rum/RecordingHealthTooltips.test.tsx +447 -0
- package/Tests/UI/Rum/ReplayCorrelationPanel.test.tsx +164 -0
- package/Tests/UI/Rum/ReplayFrameCapture.test.ts +6750 -0
- package/Tests/UI/Rum/ReplayPlayerChrome.test.tsx +19 -1
- package/Tests/UI/Rum/ReplayRail.test.tsx +723 -12
- package/Tests/UI/Rum/ReplayRailDetail.test.tsx +86 -0
- package/Tests/UI/Rum/ReplayScreenshot.test.ts +2124 -0
- package/Tests/UI/Rum/ReplayScreenshotActions.test.tsx +3288 -0
- package/Tests/UI/Rum/ReplayStage.test.tsx +62 -0
- package/Tests/UI/Rum/ReplayStageOverlays.test.tsx +983 -2
- package/Tests/UI/Rum/ReplayTabSwitcher.test.tsx +19 -1
- package/Tests/UI/Rum/SessionReplaySettingsPolicyLoading.test.tsx +149 -0
- package/Tests/UI/Rum/SessionReplaySetupGuide.test.tsx +107 -6
- package/Tests/UI/Rum/SessionReplayUsersTableTooltips.test.tsx +330 -0
- package/Tests/UI/Rum/UserFlowTooltips.test.tsx +886 -0
- package/Tests/UI/TailwindPlayCdnForeignHiddenRule.test.ts +1005 -0
- package/Tests/UI/ThemeGroupHoverReveal.test.ts +847 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +80 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +23 -0
- package/Tests/UI/Utils/ModelAPISsoRedirect.test.ts +127 -0
- package/Tests/UI/Utils/Navigation.test.ts +102 -0
- package/Tests/UI/Utils/PermissionGate.test.ts +76 -0
- package/Tests/UI/Utils/Telemetry/TelemetryEntityNames.test.ts +23 -0
- package/Tests/Utils/Incident/IncidentFromAlerts.test.ts +696 -0
- package/Tests/Utils/LabelRuleImportExport.test.ts +5 -0
- package/Tests/Utils/MetricUnitUtil.test.ts +227 -2
- package/Tests/Utils/Monitor/MetricValueFormatter.test.ts +288 -2
- package/Tests/Utils/Monitor/PlatformResourceIdentityAndUnits.test.ts +1559 -0
- package/Tests/Utils/NetworkDiscovery/DiscoveredHostNamingDiagnosis.test.ts +2546 -0
- package/Tests/Utils/NetworkDiscovery/DiscoveredHostUtil.test.ts +315 -0
- package/Tests/Utils/NetworkDiscovery/DiscoveryReverseDnsChain.test.ts +336 -1
- package/Tests/Utils/NetworkDiscovery/NetbiosNameUtil.test.ts +244 -0
- package/Tests/Utils/Rum/SessionTraceState.test.ts +239 -0
- package/Tests/Utils/ValueFormatter.test.ts +50 -0
- package/Tests/tsconfig.json +16 -0
- package/Types/AI/AIResourceContext.ts +7 -0
- package/Types/Dashboard/DashboardTemplates.ts +2 -1
- package/Types/DatabaseServer/DatabaseConnectionSpan.ts +77 -0
- package/Types/DatabaseServer/DatabaseContainerClassifier.ts +2068 -0
- package/Types/DatabaseServer/DatabaseContainerCommand.ts +801 -0
- package/Types/DatabaseServer/DatabaseEndpoint.ts +1943 -0
- package/Types/DatabaseServer/DatabaseServerDiscoverySource.ts +68 -0
- package/Types/DatabaseServer/DatabaseServerMetricCatalog.ts +966 -0
- package/Types/DatabaseServer/DatabaseSystem.ts +2124 -0
- package/Types/DatabaseServer/DatabaseTelemetryResolver.ts +555 -0
- package/Types/Email/EmailTemplateType.ts +1 -0
- package/Types/Incident/IncidentAlertLink.ts +38 -0
- package/Types/Monitor/CephAlertTemplates.ts +18 -0
- package/Types/Monitor/DatabaseAlertTemplates.ts +2020 -0
- package/Types/Monitor/KubernetesAlertTemplates.ts +64 -24
- package/Types/Monitor/KubernetesMetricCatalog.ts +118 -19
- package/Types/Monitor/MetricMonitor/MetricCriteriaContext.ts +14 -0
- package/Types/Monitor/MetricMonitor/MetricMonitorResponse.ts +93 -10
- package/Types/Monitor/Recommendation/MonitorRecommendationCatalog.ts +109 -8
- package/Types/Monitor/Recommendation/MonitorRecommendationTypes.ts +36 -7
- package/Types/Monitor/Recommendation/MonitorRecommendationUtil.ts +43 -2
- package/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.ts +41 -6
- package/Types/Monitor/SeriesContext/SeriesLabelDisplay.ts +26 -0
- package/Types/NetworkDevice/DiscoveredHostNamingStatus.ts +147 -0
- package/Types/Permission.ts +315 -0
- package/Types/Probe/ProbeApiIngestResponse.ts +8 -0
- package/Types/Rules/RuleCriteriaFieldRegistry.ts +10 -0
- package/Types/Rules/RuleRun.ts +12 -0
- package/Types/Rum/SessionReplay.ts +25 -6
- package/Types/Rum/WebVitals.ts +52 -0
- package/Types/Telemetry/EntityType.ts +23 -0
- package/Types/Telemetry/ResourceFacetCatalog.ts +14 -0
- package/Types/Telemetry/ServiceType.ts +8 -0
- package/UI/Components/Banner/Banner.tsx +1 -1
- package/UI/Components/Card/Card.tsx +1 -1
- package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +2 -2
- package/UI/Components/Charts/Line/LineChart.tsx +7 -0
- package/UI/Components/CommandPalette/CommandPalette.tsx +1 -1
- package/UI/Components/Date/StartAndEndDate.tsx +5 -5
- package/UI/Components/Detail/FieldLabel.tsx +8 -0
- package/UI/Components/Diagram/HorizontalStepChain.tsx +1 -1
- package/UI/Components/Feed/FeedOptionsButton.tsx +1 -1
- package/UI/Components/Forms/BasicForm.tsx +1 -1
- package/UI/Components/Header/Header.tsx +1 -1
- package/UI/Components/Header/HeaderIconDropdownButton.tsx +1 -1
- package/UI/Components/HeaderAlert/HeaderAlert.tsx +1 -1
- package/UI/Components/InfoCard/InfoCard.tsx +47 -1
- package/UI/Components/LogsViewer/components/FacetValueRow.tsx +1 -1
- package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +1 -1
- package/UI/Components/Modal/ModalFooter.tsx +1 -1
- package/UI/Components/ModelDetail/CardModelDetail.tsx +2 -2
- package/UI/Components/ModelTable/BaseModelTable.tsx +99 -21
- package/UI/Components/ModelTable/Column.ts +5 -0
- package/UI/Components/Navbar/NavBar.tsx +9 -2
- package/UI/Components/Navbar/NavBarMenuModal.tsx +2 -2
- package/UI/Components/Page/Page.tsx +1 -1
- package/UI/Components/Pagination/Pagination.tsx +3 -3
- package/UI/Components/ProgressButtons/ProgressButtonItem.tsx +1 -1
- package/UI/Components/SideMenu/SideMenu.tsx +4 -1
- package/UI/Components/StatusPage/ResourceGroupNavigator.tsx +4 -2
- package/UI/Components/StatusPage/ResourceList.tsx +6 -6
- package/UI/Components/Table/TableHeader.tsx +47 -2
- package/UI/Components/Table/Types/Column.ts +7 -0
- package/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.tsx +1 -1
- package/UI/Components/TelemetryViewer/components/TelemetryFacetValueRow.tsx +1 -1
- package/UI/Components/Tooltip/InfoTooltip.tsx +78 -0
- package/UI/Components/Workflow/ColumnEditor/ModelQueryBuilder.tsx +1 -1
- package/UI/Components/Workflow/ComponentsModal.tsx +2 -2
- package/UI/Components/Workflow/StepTraceViewer.tsx +1 -1
- package/UI/Styles/Theme.css +8 -1
- package/UI/Utils/Navigation.ts +89 -42
- package/UI/Utils/PermissionGate.ts +11 -2
- package/UI/Utils/Telemetry/TelemetryEntityNames.ts +7 -0
- package/UI/Utils/TelemetryService.ts +4 -3
- package/Utils/Incident/IncidentFromAlerts.ts +516 -0
- package/Utils/LabelRuleImportExport.ts +2 -0
- package/Utils/MetricUnitUtil.ts +103 -11
- package/Utils/Monitor/MetricValueFormatter.ts +66 -13
- package/Utils/Monitor/PlatformMetricUnitUtil.ts +215 -0
- package/Utils/Monitor/PlatformResourceIdentity.ts +514 -0
- package/Utils/NetworkDiscovery/DiscoveredHostNamingDiagnosis.ts +425 -0
- package/Utils/NetworkDiscovery/DiscoveredHostUtil.ts +32 -0
- package/Utils/NetworkDiscovery/NetbiosNameUtil.ts +73 -0
- package/Utils/Rum/SessionTraceState.ts +212 -0
- package/Utils/Telemetry/DatabaseServerEntityKeys.ts +275 -0
- package/Utils/Telemetry/EntityKey.ts +176 -0
- package/Utils/ValueFormatter.ts +16 -0
- package/build/dist/Models/DatabaseModels/Alert.js +54 -0
- package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertFeed.js +2 -0
- package/build/dist/Models/DatabaseModels/AlertFeed.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DatabaseServer.js +1683 -0
- package/build/dist/Models/DatabaseModels/DatabaseServer.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerEndpoint.js +559 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerEndpoint.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerLabelRule.js +522 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerOwnerRule.js +603 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerOwnerTeam.js +506 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerOwnerUser.js +505 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Incident.js +54 -0
- package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentAlert.js +553 -0
- package/build/dist/Models/DatabaseModels/IncidentAlert.js.map +1 -0
- package/build/dist/Models/DatabaseModels/IncidentFeed.js +2 -0
- package/build/dist/Models/DatabaseModels/IncidentFeed.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +18 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Project.js +62 -0
- package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RumApplication.js +53 -1
- package/build/dist/Models/DatabaseModels/RumApplication.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +54 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryException.js +2 -0
- package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserProjectSsoConsent.js +162 -0
- package/build/dist/Models/DatabaseModels/UserProjectSsoConsent.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1794800000000-AddSessionReplaySameOriginTracePropagation.js +20 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1794800000000-AddSessionReplaySameOriginTracePropagation.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1794900000000-AddIncidentAlert.js +42 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1794900000000-AddIncidentAlert.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795000000000-AddDatabaseServerTables.js +240 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795000000000-AddDatabaseServerTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795100000000-AddUserProjectSsoConsent.js +26 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795100000000-AddUserProjectSsoConsent.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +8 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/MultipartFormData.js +1 -1
- package/build/dist/Server/Middleware/TelemetryIngest.js +15 -8
- package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
- package/build/dist/Server/Services/AlertReminderRuleService.js +72 -23
- package/build/dist/Server/Services/AlertReminderRuleService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseServerEndpointService.js +694 -0
- package/build/dist/Server/Services/DatabaseServerEndpointService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseServerFeedService.js +110 -0
- package/build/dist/Server/Services/DatabaseServerFeedService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseServerLabelRuleEngineService.js +272 -0
- package/build/dist/Server/Services/DatabaseServerLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseServerLabelRuleService.js +13 -0
- package/build/dist/Server/Services/DatabaseServerLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseServerOwnerRuleEngineService.js +340 -0
- package/build/dist/Server/Services/DatabaseServerOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseServerOwnerRuleService.js +13 -0
- package/build/dist/Server/Services/DatabaseServerOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseServerOwnerTeamService.js +160 -0
- package/build/dist/Server/Services/DatabaseServerOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseServerOwnerUserService.js +153 -0
- package/build/dist/Server/Services/DatabaseServerOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseServerService.js +3272 -0
- package/build/dist/Server/Services/DatabaseServerService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseService.js +8 -4
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/DockerResourceService.js +30 -3
- package/build/dist/Server/Services/DockerResourceService.js.map +1 -1
- package/build/dist/Server/Services/IncidentAlertService.js +1370 -0
- package/build/dist/Server/Services/IncidentAlertService.js.map +1 -0
- package/build/dist/Server/Services/IncidentReminderRuleService.js +73 -23
- package/build/dist/Server/Services/IncidentReminderRuleService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +164 -12
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/IncidentStateTimelineService.js +21 -0
- package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +18 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/InventoryItemService.js +88 -5
- package/build/dist/Server/Services/InventoryItemService.js.map +1 -1
- package/build/dist/Server/Services/IoTDeviceService.js +111 -24
- package/build/dist/Server/Services/IoTDeviceService.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +24 -9
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/PodmanResourceService.js +30 -3
- package/build/dist/Server/Services/PodmanResourceService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js +75 -23
- package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js.map +1 -1
- package/build/dist/Server/Services/ServiceService.js +1 -1
- package/build/dist/Server/Services/ServiceService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryUsageBillingService.js +23 -2
- package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
- package/build/dist/Server/Services/UserProjectSsoConsentService.js +79 -0
- package/build/dist/Server/Services/UserProjectSsoConsentService.js.map +1 -0
- package/build/dist/Server/Services/UserService.js +13 -1
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +18 -0
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js +26 -1
- package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/ResourceTools.js +46 -0
- package/build/dist/Server/Utils/AI/Toolbox/ResourceTools.js.map +1 -1
- package/build/dist/Server/Utils/Database/AffectedResourceRelations.js +6 -0
- package/build/dist/Server/Utils/Database/AffectedResourceRelations.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +134 -13
- package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +22 -6
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +1489 -524
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +22 -6
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js +196 -6
- package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +36 -9
- package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js +175 -17
- package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/PerSeriesResolutionRootCause.js +29 -0
- package/build/dist/Server/Utils/Monitor/PerSeriesResolutionRootCause.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +211 -0
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js +82 -10
- package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js.map +1 -1
- package/build/dist/Server/Utils/Rules/RuleRun/RuleRunRegistry.js +25 -0
- package/build/dist/Server/Utils/Rules/RuleRun/RuleRunRegistry.js.map +1 -1
- package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCache.js +8 -0
- package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCache.js.map +1 -1
- package/build/dist/Server/Utils/StartServer.js +20 -4
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/TeamMember/ProjectLeaveResourceCleanup.js +2 -0
- package/build/dist/Server/Utils/TeamMember/ProjectLeaveResourceCleanup.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/DatabaseEndpointDiscovery.js +442 -0
- package/build/dist/Server/Utils/Telemetry/DatabaseEndpointDiscovery.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +5 -1
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/LogExceptionExtractor.js +15 -1
- package/build/dist/Server/Utils/Telemetry/LogExceptionExtractor.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/ResourceEntityFilter.js +121 -5
- package/build/dist/Server/Utils/Telemetry/ResourceEntityFilter.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js +12 -0
- package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/ServiceDependencyDiscovery.js +438 -36
- package/build/dist/Server/Utils/Telemetry/ServiceDependencyDiscovery.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/Telemetry.js +12 -0
- package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +17 -18
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.js +16 -10
- package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.js.map +1 -1
- package/build/dist/Types/AI/AIResourceContext.js +7 -0
- package/build/dist/Types/AI/AIResourceContext.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardTemplates.js +2 -1
- package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
- package/build/dist/Types/DatabaseServer/DatabaseConnectionSpan.js +71 -0
- package/build/dist/Types/DatabaseServer/DatabaseConnectionSpan.js.map +1 -0
- package/build/dist/Types/DatabaseServer/DatabaseContainerClassifier.js +1462 -0
- package/build/dist/Types/DatabaseServer/DatabaseContainerClassifier.js.map +1 -0
- package/build/dist/Types/DatabaseServer/DatabaseContainerCommand.js +691 -0
- package/build/dist/Types/DatabaseServer/DatabaseContainerCommand.js.map +1 -0
- package/build/dist/Types/DatabaseServer/DatabaseEndpoint.js +1407 -0
- package/build/dist/Types/DatabaseServer/DatabaseEndpoint.js.map +1 -0
- package/build/dist/Types/DatabaseServer/DatabaseServerDiscoverySource.js +60 -0
- package/build/dist/Types/DatabaseServer/DatabaseServerDiscoverySource.js.map +1 -0
- package/build/dist/Types/DatabaseServer/DatabaseServerMetricCatalog.js +804 -0
- package/build/dist/Types/DatabaseServer/DatabaseServerMetricCatalog.js.map +1 -0
- package/build/dist/Types/DatabaseServer/DatabaseSystem.js +1860 -0
- package/build/dist/Types/DatabaseServer/DatabaseSystem.js.map +1 -0
- package/build/dist/Types/DatabaseServer/DatabaseTelemetryResolver.js +406 -0
- package/build/dist/Types/DatabaseServer/DatabaseTelemetryResolver.js.map +1 -0
- package/build/dist/Types/Email/EmailTemplateType.js +1 -0
- package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
- package/build/dist/Types/Incident/IncidentAlertLink.js +34 -0
- package/build/dist/Types/Incident/IncidentAlertLink.js.map +1 -0
- package/build/dist/Types/Monitor/CephAlertTemplates.js +18 -0
- package/build/dist/Types/Monitor/CephAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/DatabaseAlertTemplates.js +1518 -0
- package/build/dist/Types/Monitor/DatabaseAlertTemplates.js.map +1 -0
- package/build/dist/Types/Monitor/KubernetesAlertTemplates.js +57 -24
- package/build/dist/Types/Monitor/KubernetesAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/KubernetesMetricCatalog.js +104 -18
- package/build/dist/Types/Monitor/KubernetesMetricCatalog.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js +80 -3
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js +10 -3
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js +29 -0
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.js +21 -6
- package/build/dist/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.js.map +1 -1
- package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js +25 -0
- package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js.map +1 -1
- package/build/dist/Types/NetworkDevice/DiscoveredHostNamingStatus.js +136 -0
- package/build/dist/Types/NetworkDevice/DiscoveredHostNamingStatus.js.map +1 -0
- package/build/dist/Types/Permission.js +276 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Rules/RuleCriteriaFieldRegistry.js +10 -0
- package/build/dist/Types/Rules/RuleCriteriaFieldRegistry.js.map +1 -1
- package/build/dist/Types/Rules/RuleRun.js +4 -0
- package/build/dist/Types/Rules/RuleRun.js.map +1 -1
- package/build/dist/Types/Rum/WebVitals.js +25 -0
- package/build/dist/Types/Rum/WebVitals.js.map +1 -1
- package/build/dist/Types/Telemetry/EntityType.js +23 -0
- package/build/dist/Types/Telemetry/EntityType.js.map +1 -1
- package/build/dist/Types/Telemetry/ResourceFacetCatalog.js +14 -0
- package/build/dist/Types/Telemetry/ResourceFacetCatalog.js.map +1 -1
- package/build/dist/Types/Telemetry/ServiceType.js +8 -0
- package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
- package/build/dist/UI/Components/Banner/Banner.js +1 -1
- package/build/dist/UI/Components/Banner/Banner.js.map +1 -1
- package/build/dist/UI/Components/Card/Card.js +1 -1
- package/build/dist/UI/Components/Card/Card.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +2 -2
- package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
- package/build/dist/UI/Components/Charts/Line/LineChart.js +1 -1
- package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
- package/build/dist/UI/Components/CommandPalette/CommandPalette.js +1 -1
- package/build/dist/UI/Components/CommandPalette/CommandPalette.js.map +1 -1
- package/build/dist/UI/Components/Date/StartAndEndDate.js +5 -5
- package/build/dist/UI/Components/Date/StartAndEndDate.js.map +1 -1
- package/build/dist/UI/Components/Detail/FieldLabel.js +2 -0
- package/build/dist/UI/Components/Detail/FieldLabel.js.map +1 -1
- package/build/dist/UI/Components/Diagram/HorizontalStepChain.js +1 -1
- package/build/dist/UI/Components/Diagram/HorizontalStepChain.js.map +1 -1
- package/build/dist/UI/Components/Feed/FeedOptionsButton.js +1 -1
- package/build/dist/UI/Components/Feed/FeedOptionsButton.js.map +1 -1
- package/build/dist/UI/Components/Forms/BasicForm.js +1 -1
- package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
- package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js +1 -1
- package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js.map +1 -1
- package/build/dist/UI/Components/HeaderAlert/HeaderAlert.js +1 -1
- package/build/dist/UI/Components/HeaderAlert/HeaderAlert.js.map +1 -1
- package/build/dist/UI/Components/InfoCard/InfoCard.js +22 -1
- package/build/dist/UI/Components/InfoCard/InfoCard.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/FacetValueRow.js +1 -1
- package/build/dist/UI/Components/LogsViewer/components/FacetValueRow.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
- package/build/dist/UI/Components/Modal/ModalFooter.js +1 -1
- package/build/dist/UI/Components/Modal/ModalFooter.js.map +1 -1
- package/build/dist/UI/Components/ModelDetail/CardModelDetail.js +2 -2
- package/build/dist/UI/Components/ModelDetail/CardModelDetail.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +70 -18
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBar.js +9 -2
- package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +2 -2
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
- package/build/dist/UI/Components/Page/Page.js +1 -1
- package/build/dist/UI/Components/Page/Page.js.map +1 -1
- package/build/dist/UI/Components/Pagination/Pagination.js +3 -3
- package/build/dist/UI/Components/Pagination/Pagination.js.map +1 -1
- package/build/dist/UI/Components/ProgressButtons/ProgressButtonItem.js +1 -1
- package/build/dist/UI/Components/ProgressButtons/ProgressButtonItem.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenu.js +4 -1
- package/build/dist/UI/Components/SideMenu/SideMenu.js.map +1 -1
- package/build/dist/UI/Components/StatusPage/ResourceGroupNavigator.js +3 -1
- package/build/dist/UI/Components/StatusPage/ResourceGroupNavigator.js.map +1 -1
- package/build/dist/UI/Components/StatusPage/ResourceList.js +6 -6
- package/build/dist/UI/Components/StatusPage/ResourceList.js.map +1 -1
- package/build/dist/UI/Components/Table/TableHeader.js +18 -2
- package/build/dist/UI/Components/Table/TableHeader.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetValueRow.js +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetValueRow.js.map +1 -1
- package/build/dist/UI/Components/Tooltip/InfoTooltip.js +28 -0
- package/build/dist/UI/Components/Tooltip/InfoTooltip.js.map +1 -0
- package/build/dist/UI/Components/Workflow/ColumnEditor/ModelQueryBuilder.js +1 -1
- package/build/dist/UI/Components/Workflow/ColumnEditor/ModelQueryBuilder.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ComponentsModal.js +2 -2
- package/build/dist/UI/Components/Workflow/ComponentsModal.js.map +1 -1
- package/build/dist/UI/Components/Workflow/StepTraceViewer.js +1 -1
- package/build/dist/UI/Components/Workflow/StepTraceViewer.js.map +1 -1
- package/build/dist/UI/Utils/Navigation.js +66 -33
- package/build/dist/UI/Utils/Navigation.js.map +1 -1
- package/build/dist/UI/Utils/PermissionGate.js +4 -2
- package/build/dist/UI/Utils/PermissionGate.js.map +1 -1
- package/build/dist/UI/Utils/Telemetry/TelemetryEntityNames.js +7 -0
- package/build/dist/UI/Utils/Telemetry/TelemetryEntityNames.js.map +1 -1
- package/build/dist/UI/Utils/TelemetryService.js +3 -2
- package/build/dist/UI/Utils/TelemetryService.js.map +1 -1
- package/build/dist/Utils/Incident/IncidentFromAlerts.js +306 -0
- package/build/dist/Utils/Incident/IncidentFromAlerts.js.map +1 -0
- package/build/dist/Utils/LabelRuleImportExport.js +2 -0
- package/build/dist/Utils/LabelRuleImportExport.js.map +1 -1
- package/build/dist/Utils/MetricUnitUtil.js +77 -13
- package/build/dist/Utils/MetricUnitUtil.js.map +1 -1
- package/build/dist/Utils/Monitor/MetricValueFormatter.js +58 -13
- package/build/dist/Utils/Monitor/MetricValueFormatter.js.map +1 -1
- package/build/dist/Utils/Monitor/PlatformMetricUnitUtil.js +161 -0
- package/build/dist/Utils/Monitor/PlatformMetricUnitUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/PlatformResourceIdentity.js +323 -0
- package/build/dist/Utils/Monitor/PlatformResourceIdentity.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/DiscoveredHostNamingDiagnosis.js +270 -0
- package/build/dist/Utils/NetworkDiscovery/DiscoveredHostNamingDiagnosis.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/DiscoveredHostUtil.js +23 -0
- package/build/dist/Utils/NetworkDiscovery/DiscoveredHostUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/NetbiosNameUtil.js +61 -0
- package/build/dist/Utils/NetworkDiscovery/NetbiosNameUtil.js.map +1 -1
- package/build/dist/Utils/Rum/SessionTraceState.js +154 -0
- package/build/dist/Utils/Rum/SessionTraceState.js.map +1 -0
- package/build/dist/Utils/Telemetry/DatabaseServerEntityKeys.js +178 -0
- package/build/dist/Utils/Telemetry/DatabaseServerEntityKeys.js.map +1 -0
- package/build/dist/Utils/Telemetry/EntityKey.js +133 -0
- package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -1
- package/build/dist/Utils/ValueFormatter.js +15 -0
- package/build/dist/Utils/ValueFormatter.js.map +1 -1
- package/package.json +1 -1
- package/tsconfig.tests.json +7 -5
|
@@ -15,6 +15,11 @@ import {
|
|
|
15
15
|
CephAlertTemplate,
|
|
16
16
|
getAllCephAlertTemplates,
|
|
17
17
|
} from "../CephAlertTemplates";
|
|
18
|
+
import {
|
|
19
|
+
DatabaseAlertTemplate,
|
|
20
|
+
getAllDatabaseAlertTemplates,
|
|
21
|
+
getDatabaseAlertTemplates,
|
|
22
|
+
} from "../DatabaseAlertTemplates";
|
|
18
23
|
import {
|
|
19
24
|
DockerAlertTemplate,
|
|
20
25
|
getAllDockerAlertTemplates,
|
|
@@ -82,15 +87,16 @@ export interface MonitorRecommendationResourceTypeDefinition {
|
|
|
82
87
|
| "hostIdentifier"
|
|
83
88
|
| "fleetIdentifier"
|
|
84
89
|
| "rumApplicationId"
|
|
85
|
-
| "serviceId"
|
|
90
|
+
| "serviceId"
|
|
91
|
+
| "databaseServerId";
|
|
86
92
|
icon: IconProp;
|
|
87
93
|
/*
|
|
88
94
|
* What to recommend for ONE resource of this type.
|
|
89
95
|
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
* zero-argument function satisfies this type, so those
|
|
93
|
-
* exactly as they were. Services are the
|
|
96
|
+
* Most resource types ignore the argument entirely — every Kubernetes
|
|
97
|
+
* cluster is offered the same eighteen recommendations, and a
|
|
98
|
+
* zero-argument function satisfies this type, so those are declared
|
|
99
|
+
* exactly as they were. Services and databases are the exceptions: see
|
|
94
100
|
* `MonitorRecommendationContext`.
|
|
95
101
|
*
|
|
96
102
|
* Passing no context means "nothing is known about this resource", and the
|
|
@@ -419,6 +425,69 @@ function getAllServiceRecommendations(): Array<MonitorRecommendation> {
|
|
|
419
425
|
});
|
|
420
426
|
}
|
|
421
427
|
|
|
428
|
+
/*
|
|
429
|
+
* The database adapter — two functions for the same reason as Service's.
|
|
430
|
+
*
|
|
431
|
+
* `getDatabaseRecommendations` answers "what should THIS database be
|
|
432
|
+
* offered", which depends on its engine and on whether its engine metrics
|
|
433
|
+
* have ever arrived; `getAllDatabaseRecommendations` answers "what can a
|
|
434
|
+
* database ever be offered".
|
|
435
|
+
*/
|
|
436
|
+
function normalizeDatabaseTemplate(
|
|
437
|
+
template: DatabaseAlertTemplate,
|
|
438
|
+
): MonitorRecommendation {
|
|
439
|
+
return normalize({
|
|
440
|
+
resourceType: MonitorRecommendationResourceType.DatabaseServer,
|
|
441
|
+
monitorType: template.monitorType,
|
|
442
|
+
template: template,
|
|
443
|
+
getMonitorStep: (args: MonitorRecommendationArgs) => {
|
|
444
|
+
return template.getMonitorStep({
|
|
445
|
+
databaseServerId: args.resourceIdentifier,
|
|
446
|
+
onlineMonitorStatusId: args.onlineMonitorStatusId,
|
|
447
|
+
offlineMonitorStatusId: args.offlineMonitorStatusId,
|
|
448
|
+
defaultIncidentSeverityId: args.defaultIncidentSeverityId,
|
|
449
|
+
defaultAlertSeverityId: args.defaultAlertSeverityId,
|
|
450
|
+
monitorName: args.monitorName,
|
|
451
|
+
});
|
|
452
|
+
},
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
/*
|
|
457
|
+
* No engine -> nothing, and engine metrics known NOT to have arrived ->
|
|
458
|
+
* nothing. Both are the honest answer rather than a gap: every database
|
|
459
|
+
* template reads one engine receiver's metrics, so without the engine there
|
|
460
|
+
* is no template that applies, and without the metrics every template would
|
|
461
|
+
* be a monitor over data nobody sends (and "Engine Metrics Stopped" would
|
|
462
|
+
* fire the moment it was created). The page explains both states — see
|
|
463
|
+
* RecommendationResourceRegistry's `describeContext` for databases.
|
|
464
|
+
*/
|
|
465
|
+
function getDatabaseRecommendations(
|
|
466
|
+
context?: MonitorRecommendationContext | undefined,
|
|
467
|
+
): Array<MonitorRecommendation> {
|
|
468
|
+
if (!context?.databaseEngine) {
|
|
469
|
+
return [];
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
if (context.databaseEngineMetricsReported === false) {
|
|
473
|
+
return [];
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
return getDatabaseAlertTemplates(context.databaseEngine).map(
|
|
477
|
+
(template: DatabaseAlertTemplate) => {
|
|
478
|
+
return normalizeDatabaseTemplate(template);
|
|
479
|
+
},
|
|
480
|
+
);
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
function getAllDatabaseRecommendations(): Array<MonitorRecommendation> {
|
|
484
|
+
return getAllDatabaseAlertTemplates().map(
|
|
485
|
+
(template: DatabaseAlertTemplate) => {
|
|
486
|
+
return normalizeDatabaseTemplate(template);
|
|
487
|
+
},
|
|
488
|
+
);
|
|
489
|
+
}
|
|
490
|
+
|
|
422
491
|
const RESOURCE_TYPE_DEFINITIONS: Array<MonitorRecommendationResourceTypeDefinition> =
|
|
423
492
|
[
|
|
424
493
|
{
|
|
@@ -518,6 +587,15 @@ const RESOURCE_TYPE_DEFINITIONS: Array<MonitorRecommendationResourceTypeDefiniti
|
|
|
518
587
|
getRecommendations: getServiceRecommendations,
|
|
519
588
|
getAllPossibleRecommendations: getAllServiceRecommendations,
|
|
520
589
|
},
|
|
590
|
+
{
|
|
591
|
+
resourceType: MonitorRecommendationResourceType.DatabaseServer,
|
|
592
|
+
monitorTypes: [MonitorType.Metrics],
|
|
593
|
+
resourceLabel: "Database",
|
|
594
|
+
identifierFieldName: "databaseServerId",
|
|
595
|
+
icon: IconProp.Database,
|
|
596
|
+
getRecommendations: getDatabaseRecommendations,
|
|
597
|
+
getAllPossibleRecommendations: getAllDatabaseRecommendations,
|
|
598
|
+
},
|
|
521
599
|
];
|
|
522
600
|
|
|
523
601
|
export default class MonitorRecommendationCatalog {
|
|
@@ -568,13 +646,36 @@ export default class MonitorRecommendationCatalog {
|
|
|
568
646
|
public static getAllRecommendations(): Array<MonitorRecommendation> {
|
|
569
647
|
return RESOURCE_TYPE_DEFINITIONS.flatMap(
|
|
570
648
|
(definition: MonitorRecommendationResourceTypeDefinition) => {
|
|
571
|
-
return definition.
|
|
572
|
-
? definition.getAllPossibleRecommendations()
|
|
573
|
-
: definition.getRecommendations();
|
|
649
|
+
return this.getAllPossibleRecommendations(definition.resourceType);
|
|
574
650
|
},
|
|
575
651
|
);
|
|
576
652
|
}
|
|
577
653
|
|
|
654
|
+
/*
|
|
655
|
+
* Every recommendation ONE resource type can ever produce, across every
|
|
656
|
+
* context — `getAllRecommendations` narrowed to a single type.
|
|
657
|
+
*
|
|
658
|
+
* This, not `getRecommendations(resourceType)`, is what a per-type
|
|
659
|
+
* invariant has to run over: with no context a database is offered nothing
|
|
660
|
+
* at all (there is no engine-agnostic database template) and a service only
|
|
661
|
+
* its language-agnostic subset, so a check written against the context-free
|
|
662
|
+
* set would silently skip every engine- and runtime-specific template.
|
|
663
|
+
*/
|
|
664
|
+
public static getAllPossibleRecommendations(
|
|
665
|
+
resourceType: MonitorRecommendationResourceType,
|
|
666
|
+
): Array<MonitorRecommendation> {
|
|
667
|
+
const definition: MonitorRecommendationResourceTypeDefinition | undefined =
|
|
668
|
+
this.getResourceTypeDefinition(resourceType);
|
|
669
|
+
|
|
670
|
+
if (!definition) {
|
|
671
|
+
return [];
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
return definition.getAllPossibleRecommendations
|
|
675
|
+
? definition.getAllPossibleRecommendations()
|
|
676
|
+
: definition.getRecommendations();
|
|
677
|
+
}
|
|
678
|
+
|
|
578
679
|
public static getRecommendationById(
|
|
579
680
|
recommendationId: string,
|
|
580
681
|
): MonitorRecommendation | undefined {
|
|
@@ -33,27 +33,37 @@ export enum MonitorRecommendationResourceType {
|
|
|
33
33
|
RumApplication = "RumApplication",
|
|
34
34
|
/*
|
|
35
35
|
* An APM telemetry service — a backend process reporting OTel traces,
|
|
36
|
-
* metrics and exceptions under a `service.name`.
|
|
37
|
-
*
|
|
38
|
-
* `MonitorRecommendationContext`.
|
|
36
|
+
* metrics and exceptions under a `service.name`. Its recommendation set is
|
|
37
|
+
* not a constant: see `MonitorRecommendationContext`.
|
|
39
38
|
*/
|
|
40
39
|
Service = "Service",
|
|
40
|
+
/*
|
|
41
|
+
* A database server (the DatabaseServer model). Its recommendation set
|
|
42
|
+
* depends on its engine and on whether engine metrics have ever arrived —
|
|
43
|
+
* see `MonitorRecommendationContext`. Distinct from `MonitorType.Database`,
|
|
44
|
+
* the probe-based Database Health monitor: these recommendations create
|
|
45
|
+
* ordinary Metrics monitors over the engine's collector-receiver metrics.
|
|
46
|
+
*/
|
|
47
|
+
DatabaseServer = "DatabaseServer",
|
|
41
48
|
}
|
|
42
49
|
|
|
43
50
|
/*
|
|
44
51
|
* What is known about ONE resource, for resource types whose recommendation
|
|
45
52
|
* set depends on it.
|
|
46
53
|
*
|
|
47
|
-
*
|
|
54
|
+
* Most resource types answer "what should I monitor here?" from the
|
|
48
55
|
* resource type alone — every Kubernetes cluster gets the same eighteen
|
|
49
56
|
* recommendations. Services do not: the runtime signals worth alerting on for
|
|
50
57
|
* a Java service (heap pressure, GC pause time, thread exhaustion) do not
|
|
51
58
|
* exist on a Go service, and recommending them there produces monitors that
|
|
52
|
-
* silently never fire, which is worse than recommending nothing.
|
|
59
|
+
* silently never fire, which is worse than recommending nothing. Databases
|
|
60
|
+
* are the same by engine: PostgreSQL's receiver and Redis's share no metric
|
|
61
|
+
* name.
|
|
53
62
|
*
|
|
54
63
|
* Optional everywhere, and every field inside it is optional too, so a caller
|
|
55
|
-
* that knows nothing still gets the
|
|
56
|
-
*
|
|
64
|
+
* that knows nothing still gets the subset that is true of every resource of
|
|
65
|
+
* the type — the language-agnostic recommendations for a service, and none
|
|
66
|
+
* for a database — rather than a guess.
|
|
57
67
|
*/
|
|
58
68
|
export interface MonitorRecommendationContext {
|
|
59
69
|
/*
|
|
@@ -64,6 +74,24 @@ export interface MonitorRecommendationContext {
|
|
|
64
74
|
* is how a `null` ends up narrowing to some default language by accident.
|
|
65
75
|
*/
|
|
66
76
|
serviceLanguage?: ServiceLanguage | null | undefined;
|
|
77
|
+
/*
|
|
78
|
+
* A database's engine — its `dbSystem`, a semconv `db.system.name` value
|
|
79
|
+
* such as "postgresql" or "redis". It selects the templates of the
|
|
80
|
+
* collector receivers that monitor that engine (so MariaDB gets MySQL's,
|
|
81
|
+
* see `getDatabaseAlertTemplates`). Every database template reads one
|
|
82
|
+
* receiver's metric names, so without an engine nothing applies — unlike a
|
|
83
|
+
* service, a database has no engine-agnostic subset.
|
|
84
|
+
*/
|
|
85
|
+
databaseEngine?: string | null | undefined;
|
|
86
|
+
/*
|
|
87
|
+
* Whether the database's engine metrics (a collector database receiver or
|
|
88
|
+
* the Database Agent) have ever arrived. `false` withholds every database
|
|
89
|
+
* recommendation: on a database seen only through its clients' spans or
|
|
90
|
+
* as a container, each would be a monitor over metrics nobody sends — and
|
|
91
|
+
* the "engine metrics stopped" one would fire the moment it was created.
|
|
92
|
+
* `null` / `undefined` mean "not known" and withhold nothing.
|
|
93
|
+
*/
|
|
94
|
+
databaseEngineMetricsReported?: boolean | null | undefined;
|
|
67
95
|
}
|
|
68
96
|
|
|
69
97
|
/*
|
|
@@ -84,6 +112,7 @@ export type MonitorRecommendationSeverity = "Critical" | "Warning";
|
|
|
84
112
|
* fleetIdentifier -> IoTDevice
|
|
85
113
|
* rumApplicationId -> RUM application
|
|
86
114
|
* serviceId -> APM service
|
|
115
|
+
* databaseServerId -> Database server
|
|
87
116
|
*
|
|
88
117
|
* The registry normalizes that single difference into `resourceIdentifier`
|
|
89
118
|
* and each catalog adapter renames it back on the way into the module's own
|
|
@@ -8,6 +8,7 @@ import MonitorSteps from "../MonitorSteps";
|
|
|
8
8
|
import MonitorCriteriaInstance from "../MonitorCriteriaInstance";
|
|
9
9
|
import { CriteriaIncident } from "../CriteriaIncident";
|
|
10
10
|
import { CriteriaAlert } from "../CriteriaAlert";
|
|
11
|
+
import { DATABASE_SERVER_ID_SCOPE_ATTRIBUTE } from "../DatabaseAlertTemplates";
|
|
11
12
|
import MonitorRecommendationSeverityMapper from "./MonitorRecommendationSeverityMapper";
|
|
12
13
|
import {
|
|
13
14
|
MonitorRecommendation,
|
|
@@ -23,8 +24,10 @@ import {
|
|
|
23
24
|
*
|
|
24
25
|
* Infrastructure configs carry a metric view plus a named resource
|
|
25
26
|
* identifier. RUM uses generic metric, trace and exception configs, where the
|
|
26
|
-
* application id lives in `telemetryServiceIds`.
|
|
27
|
-
*
|
|
27
|
+
* application id lives in `telemetryServiceIds`. Databases use generic metric
|
|
28
|
+
* configs scoped by an `oneuptime.database.server.id` query filter. The
|
|
29
|
+
* optional fields below are the stable query inputs that distinguish those
|
|
30
|
+
* shapes.
|
|
28
31
|
*/
|
|
29
32
|
interface RecommendationMonitorStepConfig {
|
|
30
33
|
clusterIdentifier?: string | undefined;
|
|
@@ -389,6 +392,7 @@ export default class MonitorRecommendationUtil {
|
|
|
389
392
|
config.hostIdentifier ||
|
|
390
393
|
config.fleetIdentifier ||
|
|
391
394
|
this.getTelemetryResourceIdentifier(config) ||
|
|
395
|
+
this.getAttributeScopedResourceIdentifier(config) ||
|
|
392
396
|
"";
|
|
393
397
|
|
|
394
398
|
const metricNames: Array<string> = [];
|
|
@@ -492,6 +496,43 @@ export default class MonitorRecommendationUtil {
|
|
|
492
496
|
.join(",");
|
|
493
497
|
}
|
|
494
498
|
|
|
499
|
+
/*
|
|
500
|
+
* The resource a metric step is scoped to by an attribute FILTER rather than
|
|
501
|
+
* by an identifier field or `telemetryServiceIds` — a database's metric
|
|
502
|
+
* monitors, which filter every query on `oneuptime.database.server.id`.
|
|
503
|
+
*
|
|
504
|
+
* The filter is already part of the fingerprint through `queryAttributes`,
|
|
505
|
+
* so two databases' monitors never collide; this only makes the step's
|
|
506
|
+
* resource identity explicit, so "which resource does this monitor watch"
|
|
507
|
+
* has the same answer for a database as for every other resource type.
|
|
508
|
+
* Values are deduped and sorted so a multi-query template scoped the same
|
|
509
|
+
* way on every query reads as one resource.
|
|
510
|
+
*/
|
|
511
|
+
private static getAttributeScopedResourceIdentifier(
|
|
512
|
+
config: RecommendationMonitorStepConfig,
|
|
513
|
+
): string {
|
|
514
|
+
const values: Set<string> = new Set<string>();
|
|
515
|
+
|
|
516
|
+
for (const queryConfig of config.metricViewConfig?.queryConfigs || []) {
|
|
517
|
+
const attributes: unknown =
|
|
518
|
+
queryConfig?.metricQueryData?.filterData?.["attributes"];
|
|
519
|
+
|
|
520
|
+
if (!attributes || typeof attributes !== "object") {
|
|
521
|
+
continue;
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
const value: unknown = (attributes as Record<string, unknown>)[
|
|
525
|
+
DATABASE_SERVER_ID_SCOPE_ATTRIBUTE
|
|
526
|
+
];
|
|
527
|
+
|
|
528
|
+
if (typeof value === "string" && value.trim()) {
|
|
529
|
+
values.add(value.trim());
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
return Array.from(values).sort().join(",");
|
|
534
|
+
}
|
|
535
|
+
|
|
495
536
|
/*
|
|
496
537
|
* Query inputs that do not live in a metric view. They must participate in
|
|
497
538
|
* coverage identity: an all-span trace monitor does not cover an error-span
|
|
@@ -228,6 +228,40 @@ export interface UnhealthyCriteriaArgs {
|
|
|
228
228
|
additionalFilters?: Array<AdditionalCriteriaFilterSpec> | undefined;
|
|
229
229
|
filterCondition?: FilterCondition | undefined;
|
|
230
230
|
treatNoDataAsZero?: boolean | undefined;
|
|
231
|
+
/*
|
|
232
|
+
* Fire when the window holds NO samples at all, whatever the threshold.
|
|
233
|
+
* For heartbeat-style criteria, where the metric going silent is itself
|
|
234
|
+
* the outage — a database receiver that cannot connect emits nothing, so
|
|
235
|
+
* "the engine's own metrics stopped" is the only telemetry-side signal of
|
|
236
|
+
* a database that is down. Takes precedence over `treatNoDataAsZero`:
|
|
237
|
+
* the two are different answers to the same question and a criteria can
|
|
238
|
+
* only give one.
|
|
239
|
+
*
|
|
240
|
+
* Only ever set on the UNHEALTHY side. The recovery criteria keeps the
|
|
241
|
+
* default Ignore, so a silent window matches neither criteria and the
|
|
242
|
+
* monitor holds its offline status until data comes back.
|
|
243
|
+
*/
|
|
244
|
+
triggerOnNoData?: boolean | undefined;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/*
|
|
248
|
+
* The no-data policy a criteria's filters carry. Undefined — the field left
|
|
249
|
+
* off entirely — rather than an explicit Ignore, so every criteria that never
|
|
250
|
+
* asked for one serializes exactly as it did before either option existed.
|
|
251
|
+
*/
|
|
252
|
+
function getNoDataPolicy(data: {
|
|
253
|
+
treatNoDataAsZero?: boolean | undefined;
|
|
254
|
+
triggerOnNoData?: boolean | undefined;
|
|
255
|
+
}): NoDataPolicy | undefined {
|
|
256
|
+
if (data.triggerOnNoData) {
|
|
257
|
+
return NoDataPolicy.Trigger;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
if (data.treatNoDataAsZero) {
|
|
261
|
+
return NoDataPolicy.TreatAsZero;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
return undefined;
|
|
231
265
|
}
|
|
232
266
|
|
|
233
267
|
export function buildUnhealthyCriteriaInstance(
|
|
@@ -253,9 +287,10 @@ export function buildUnhealthyCriteriaInstance(
|
|
|
253
287
|
value: args.value,
|
|
254
288
|
metricAggregationType: args.metricAggregationType ?? SustainedEvaluation,
|
|
255
289
|
additionalFilters: args.additionalFilters,
|
|
256
|
-
onNoDataPolicy:
|
|
257
|
-
|
|
258
|
-
:
|
|
290
|
+
onNoDataPolicy: getNoDataPolicy({
|
|
291
|
+
treatNoDataAsZero: args.treatNoDataAsZero,
|
|
292
|
+
triggerOnNoData: args.triggerOnNoData,
|
|
293
|
+
}),
|
|
259
294
|
}),
|
|
260
295
|
incidents: [
|
|
261
296
|
{
|
|
@@ -348,9 +383,9 @@ export function buildHealthyCriteriaInstance(
|
|
|
348
383
|
value: value,
|
|
349
384
|
metricAggregationType: args.metricAggregationType ?? SustainedEvaluation,
|
|
350
385
|
additionalFilters: args.additionalFilters,
|
|
351
|
-
onNoDataPolicy:
|
|
352
|
-
|
|
353
|
-
|
|
386
|
+
onNoDataPolicy: getNoDataPolicy({
|
|
387
|
+
treatNoDataAsZero: args.treatNoDataAsZero,
|
|
388
|
+
}),
|
|
354
389
|
/*
|
|
355
390
|
* Give every additional recovery comparison its own dead band too,
|
|
356
391
|
* derived the same way as the primary one.
|
|
@@ -150,6 +150,21 @@ const FriendlyLabelNames: Record<string, string> = {
|
|
|
150
150
|
"device.id": "Device",
|
|
151
151
|
"device.name": "Device",
|
|
152
152
|
|
|
153
|
+
/*
|
|
154
|
+
* --- Databases ---
|
|
155
|
+
*
|
|
156
|
+
* Ingest stamps every row of a database's own telemetry with the
|
|
157
|
+
* DatabaseServer it resolved to, so a monitor that groups by
|
|
158
|
+
* `oneuptime.database.server.id` alerts once per database. The rest are
|
|
159
|
+
* the collector receivers' own identities of one part of a database, for
|
|
160
|
+
* node-, tablespace- and replica-level monitors.
|
|
161
|
+
*/
|
|
162
|
+
"oneuptime.database.server.name": "Database",
|
|
163
|
+
"oneuptime.database.server.id": "Database ID",
|
|
164
|
+
"elasticsearch.node.name": "Elasticsearch Node",
|
|
165
|
+
tablespace_name: "Tablespace",
|
|
166
|
+
replication_client: "Replica",
|
|
167
|
+
|
|
153
168
|
// --- Services / RUM / telemetry ---
|
|
154
169
|
"service.name": "Service",
|
|
155
170
|
"oneuptime.service.name": "Service",
|
|
@@ -251,6 +266,17 @@ const LabelPriority: Record<string, number> = {
|
|
|
251
266
|
"service.instance.id": 22,
|
|
252
267
|
"service.name": 40,
|
|
253
268
|
"oneuptime.service.name": 40,
|
|
269
|
+
/*
|
|
270
|
+
* Databases: the part that breached (a node, a tablespace, a replica)
|
|
271
|
+
* first, then the database it belongs to. The database's id is a UUID,
|
|
272
|
+
* pushed to the end with the other ids — correct, but not what a human
|
|
273
|
+
* scans for.
|
|
274
|
+
*/
|
|
275
|
+
"elasticsearch.node.name": 25,
|
|
276
|
+
tablespace_name: 30,
|
|
277
|
+
replication_client: 30,
|
|
278
|
+
"oneuptime.database.server.name": 40,
|
|
279
|
+
"oneuptime.database.server.id": 95,
|
|
254
280
|
"k8s.namespace.name": 50,
|
|
255
281
|
"service.namespace": 50,
|
|
256
282
|
"k8s.node.name": 60,
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Why a discovered host was left without a name, as the probe saw it
|
|
3
|
+
* (OneUptime issue #3916).
|
|
4
|
+
*
|
|
5
|
+
* The report behind this: an ICMP-only scan of twelve kitchen displays named
|
|
6
|
+
* four of them by reverse DNS and listed the other eight by address, and
|
|
7
|
+
* nothing anywhere said why. The status message was silent, the probe logged
|
|
8
|
+
* at debug level, and the Review dialog showed a bare IP. "The device has no
|
|
9
|
+
* PTR record", "the probe's DNS server timed out", "the server answered
|
|
10
|
+
* SERVFAIL" and "NetBIOS was never asked" all looked exactly the same — so an
|
|
11
|
+
* operator who KNEW the devices had names could only conclude the product was
|
|
12
|
+
* broken, and nobody could tell them which of those it was.
|
|
13
|
+
*
|
|
14
|
+
* These codes are that missing sentence, one per naming source. The probe
|
|
15
|
+
* stamps them on a host only when the source in question left that host
|
|
16
|
+
* unnamed, the server stores them verbatim in the `discoveredDevices` jsonb,
|
|
17
|
+
* and the Review dialog turns them into a tooltip beside the address
|
|
18
|
+
* (DiscoveredHostNamingDiagnosis.ts).
|
|
19
|
+
*
|
|
20
|
+
* Short kebab-case strings rather than sentences or raw error text: a scan
|
|
21
|
+
* can hold tens of thousands of hosts, and the copy belongs to the dashboard,
|
|
22
|
+
* where it can change without a probe release.
|
|
23
|
+
*
|
|
24
|
+
* UNTRUSTED ON THE WAY OUT. Like every other field in that column the value
|
|
25
|
+
* is whatever the probe's payload said, so every reader goes through the
|
|
26
|
+
* read* functions below, which answer undefined for anything that is not one
|
|
27
|
+
* of these exact strings. A value the dashboard does not recognise — a newer
|
|
28
|
+
* probe's code, or junk — then reads as "no code", which every reader already
|
|
29
|
+
* handles, rather than as a code it would have to guess the meaning of.
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
/*
|
|
33
|
+
* What the reverse-DNS (PTR) lookup for an address came back with, when it
|
|
34
|
+
* did not come back with a usable name.
|
|
35
|
+
*/
|
|
36
|
+
export enum DiscoveredHostReverseDnsStatus {
|
|
37
|
+
/*
|
|
38
|
+
* The DNS server ANSWERED, and the answer was that this address has no PTR
|
|
39
|
+
* record — NXDOMAIN, or the reverse name exists with no PTR data. The one
|
|
40
|
+
* code here that is a fact about the address rather than about the lookup,
|
|
41
|
+
* and the only one a retry cannot change.
|
|
42
|
+
*/
|
|
43
|
+
NoRecord = "no-record",
|
|
44
|
+
/*
|
|
45
|
+
* A PTR record came back, but no answer in it was usable as a hostname
|
|
46
|
+
* (ReverseDnsNameUtil refused every one — an in-addr.arpa echo, a name
|
|
47
|
+
* with a space in it, a name that merely restates the address).
|
|
48
|
+
*/
|
|
49
|
+
UnusableName = "unusable-name",
|
|
50
|
+
/*
|
|
51
|
+
* No answer in time. The probe retries a lookup that fails this way, but
|
|
52
|
+
* only while the pass's time budget lasts, so a host can carry this code
|
|
53
|
+
* after one try. The copy that explains it must not claim a retry.
|
|
54
|
+
*/
|
|
55
|
+
Timeout = "timeout",
|
|
56
|
+
// The DNS server answered SERVFAIL. Retried like Timeout, on the same terms.
|
|
57
|
+
ServerFailure = "server-failure",
|
|
58
|
+
// The DNS server answered REFUSED.
|
|
59
|
+
Refused = "refused",
|
|
60
|
+
// Nothing was listening where the probe's DNS server should be.
|
|
61
|
+
Unreachable = "unreachable",
|
|
62
|
+
// Any other failure of the lookup itself.
|
|
63
|
+
Failed = "failed",
|
|
64
|
+
/*
|
|
65
|
+
* Never looked up: the naming pass ran out of its wall-clock budget
|
|
66
|
+
* before reaching this address. The scan's status message says so too.
|
|
67
|
+
*/
|
|
68
|
+
SkippedTimeBudget = "skipped-time-budget",
|
|
69
|
+
/*
|
|
70
|
+
* Never looked up: every lookup the probe had made so far failed without
|
|
71
|
+
* a single answer, so it judged DNS unusable from where it sits and
|
|
72
|
+
* stopped asking. The scan's status message says so too.
|
|
73
|
+
*/
|
|
74
|
+
SkippedNoResolver = "skipped-no-resolver",
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/*
|
|
78
|
+
* What the NetBIOS node status (NBSTAT) lookup for an address came to, when
|
|
79
|
+
* it did not produce a usable name. Only ever stamped on a scan that asked for
|
|
80
|
+
* NetBIOS names: a scan that did not is described by its own
|
|
81
|
+
* `isNetbiosLookupEnabled` column, and repeating that on every host would be
|
|
82
|
+
* thousands of copies of one scan-wide fact.
|
|
83
|
+
*/
|
|
84
|
+
export enum DiscoveredHostNetbiosStatus {
|
|
85
|
+
/*
|
|
86
|
+
* Queried on UDP 137 (and retried, unless the lookup was cut short first),
|
|
87
|
+
* and never answered.
|
|
88
|
+
*/
|
|
89
|
+
NoReply = "no-reply",
|
|
90
|
+
// Answered, but reported no name the naming rules accept.
|
|
91
|
+
NoUsableName = "no-usable-name",
|
|
92
|
+
// The query could not be sent from the probe.
|
|
93
|
+
SendFailed = "send-failed",
|
|
94
|
+
/*
|
|
95
|
+
* Never queried: the lookup stopped first — its time budget ran out or its
|
|
96
|
+
* socket failed. The scan's status message says which.
|
|
97
|
+
*/
|
|
98
|
+
Skipped = "skipped",
|
|
99
|
+
// Never queried: the lookup reached the probe's NetBIOS host limit first.
|
|
100
|
+
SkippedHostCap = "skipped-host-cap",
|
|
101
|
+
/*
|
|
102
|
+
* Never queried: NetBIOS is only ever sent to private and CGNAT IPv4
|
|
103
|
+
* addresses, whoever asks. The dashboard's copy of that rule,
|
|
104
|
+
* isNetbiosQueryableIPv4Address (NetbiosNameUtil.ts), keeps the Review
|
|
105
|
+
* dialog from suggesting NetBIOS for such an address, and gives an older
|
|
106
|
+
* probe's row this code's sentence (#3916).
|
|
107
|
+
*/
|
|
108
|
+
SkippedIneligibleAddress = "skipped-ineligible-address",
|
|
109
|
+
/*
|
|
110
|
+
* Never queried: the scan ran on a global probe, which never sends NetBIOS
|
|
111
|
+
* queries whatever the scan asks for.
|
|
112
|
+
*/
|
|
113
|
+
SkippedGlobalProbe = "skipped-global-probe",
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const REVERSE_DNS_STATUSES: ReadonlySet<string> = new Set<string>(
|
|
117
|
+
Object.values(DiscoveredHostReverseDnsStatus),
|
|
118
|
+
);
|
|
119
|
+
|
|
120
|
+
const NETBIOS_STATUSES: ReadonlySet<string> = new Set<string>(
|
|
121
|
+
Object.values(DiscoveredHostNetbiosStatus),
|
|
122
|
+
);
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* The reverse-DNS status a stored value stands for, or undefined when it is
|
|
126
|
+
* not exactly one of the codes above. Accepts `unknown` because its input is
|
|
127
|
+
* read out of jsonb, where the declared type is a hope rather than a fact.
|
|
128
|
+
*/
|
|
129
|
+
export function readDiscoveredHostReverseDnsStatus(
|
|
130
|
+
value: unknown,
|
|
131
|
+
): DiscoveredHostReverseDnsStatus | undefined {
|
|
132
|
+
return typeof value === "string" && REVERSE_DNS_STATUSES.has(value)
|
|
133
|
+
? (value as DiscoveredHostReverseDnsStatus)
|
|
134
|
+
: undefined;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* The NetBIOS status a stored value stands for, or undefined when it is not
|
|
139
|
+
* exactly one of the codes above. Same contract as the reverse-DNS reader.
|
|
140
|
+
*/
|
|
141
|
+
export function readDiscoveredHostNetbiosStatus(
|
|
142
|
+
value: unknown,
|
|
143
|
+
): DiscoveredHostNetbiosStatus | undefined {
|
|
144
|
+
return typeof value === "string" && NETBIOS_STATUSES.has(value)
|
|
145
|
+
? (value as DiscoveredHostNetbiosStatus)
|
|
146
|
+
: undefined;
|
|
147
|
+
}
|