@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
|
@@ -38,6 +38,8 @@ import DockerSwarmClusterOwnerTeamService from "../../../Services/DockerSwarmClu
|
|
|
38
38
|
import DockerSwarmClusterOwnerUserService from "../../../Services/DockerSwarmClusterOwnerUserService";
|
|
39
39
|
import VMwareVCenterOwnerTeamService from "../../../Services/VMwareVCenterOwnerTeamService";
|
|
40
40
|
import VMwareVCenterOwnerUserService from "../../../Services/VMwareVCenterOwnerUserService";
|
|
41
|
+
import DatabaseServerOwnerTeamService from "../../../Services/DatabaseServerOwnerTeamService";
|
|
42
|
+
import DatabaseServerOwnerUserService from "../../../Services/DatabaseServerOwnerUserService";
|
|
41
43
|
import IoTFleetOwnerTeamService from "../../../Services/IoTFleetOwnerTeamService";
|
|
42
44
|
import IoTFleetOwnerUserService from "../../../Services/IoTFleetOwnerUserService";
|
|
43
45
|
import NetworkDeviceOwnerTeamService from "../../../Services/NetworkDeviceOwnerTeamService";
|
|
@@ -65,6 +67,7 @@ import ProxmoxClusterService from "../../../Services/ProxmoxClusterService";
|
|
|
65
67
|
import CephClusterService from "../../../Services/CephClusterService";
|
|
66
68
|
import DockerSwarmClusterService from "../../../Services/DockerSwarmClusterService";
|
|
67
69
|
import VMwareVCenterService from "../../../Services/VMwareVCenterService";
|
|
70
|
+
import DatabaseServerService from "../../../Services/DatabaseServerService";
|
|
68
71
|
import IoTFleetService from "../../../Services/IoTFleetService";
|
|
69
72
|
import NetworkDeviceService from "../../../Services/NetworkDeviceService";
|
|
70
73
|
|
|
@@ -306,6 +309,21 @@ const ownerTableRegistry: Map<string, OwnerTablePair> = new Map<
|
|
|
306
309
|
modelService: VMwareVCenterService,
|
|
307
310
|
},
|
|
308
311
|
],
|
|
312
|
+
[
|
|
313
|
+
/*
|
|
314
|
+
* Receiver batches (the collector / Database Agent) stamp the database
|
|
315
|
+
* server's id as the telemetry row's serviceId (serviceType
|
|
316
|
+
* DatabaseServer), so owning a database grants its telemetry.
|
|
317
|
+
*/
|
|
318
|
+
"DatabaseServer",
|
|
319
|
+
{
|
|
320
|
+
ownerUserService: DatabaseServerOwnerUserService,
|
|
321
|
+
ownerTeamService: DatabaseServerOwnerTeamService,
|
|
322
|
+
fkColumn: "databaseServerId",
|
|
323
|
+
canOwnTelemetry: true,
|
|
324
|
+
modelService: DatabaseServerService,
|
|
325
|
+
},
|
|
326
|
+
],
|
|
309
327
|
[
|
|
310
328
|
/*
|
|
311
329
|
* IoT telemetry carries the fleet ID in primaryEntityId even though its
|
|
@@ -28,9 +28,22 @@ export default class QueryHelper {
|
|
|
28
28
|
|
|
29
29
|
return Raw(
|
|
30
30
|
(alias: string) => {
|
|
31
|
+
/*
|
|
32
|
+
* SELECT builders hand Raw the unescaped `Alias.property` path and
|
|
33
|
+
* quote it afterwards, but only where the whole token is `Alias.<known
|
|
34
|
+
* property>`. `Alias."criteria"` is not such a token, so an unquoted
|
|
35
|
+
* qualifier reached Postgres as-is and folded to lowercase, which
|
|
36
|
+
* names no table in FROM ("missing FROM-clause entry for table
|
|
37
|
+
* "incidentreminderrule""). Quote the qualifier here instead.
|
|
38
|
+
*
|
|
39
|
+
* UPDATE and DELETE builders hand Raw the bare property name, with no
|
|
40
|
+
* alias, and there criteria stays a bare quoted column.
|
|
41
|
+
*/
|
|
31
42
|
const separatorIndex: number = alias.lastIndexOf(".");
|
|
32
43
|
const qualifier: string =
|
|
33
|
-
separatorIndex >= 0
|
|
44
|
+
separatorIndex >= 0
|
|
45
|
+
? `${QueryHelper.quoteIdentifier(alias.slice(0, separatorIndex))}.`
|
|
46
|
+
: "";
|
|
34
47
|
const criteriaAlias: string = `${qualifier}"${criteriaColumnName}"`;
|
|
35
48
|
|
|
36
49
|
return `((CASE WHEN ${criteriaAlias} IS NULL THEN COALESCE(${alias}, false) ELSE ${alias} IS NULL END) = :${rid})`;
|
|
@@ -41,6 +54,22 @@ export default class QueryHelper {
|
|
|
41
54
|
);
|
|
42
55
|
}
|
|
43
56
|
|
|
57
|
+
/*
|
|
58
|
+
* A Postgres quoted identifier. TypeORM 0.3 always hands Raw an unescaped
|
|
59
|
+
* alias; one that is already quoted is kept as is, defensively.
|
|
60
|
+
*/
|
|
61
|
+
private static quoteIdentifier(identifier: string): string {
|
|
62
|
+
if (
|
|
63
|
+
identifier.length >= 2 &&
|
|
64
|
+
identifier.startsWith('"') &&
|
|
65
|
+
identifier.endsWith('"')
|
|
66
|
+
) {
|
|
67
|
+
return identifier;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return `"${identifier.replace(/"/g, '""')}"`;
|
|
71
|
+
}
|
|
72
|
+
|
|
44
73
|
@CaptureSpan()
|
|
45
74
|
public static modulo(
|
|
46
75
|
moduloBy: number,
|
|
@@ -11,6 +11,7 @@ import ServerlessFunction from "../../../../Models/DatabaseModels/ServerlessFunc
|
|
|
11
11
|
import CloudResource from "../../../../Models/DatabaseModels/CloudResource";
|
|
12
12
|
import IoTFleet from "../../../../Models/DatabaseModels/IoTFleet";
|
|
13
13
|
import NetworkDevice from "../../../../Models/DatabaseModels/NetworkDevice";
|
|
14
|
+
import DatabaseServer from "../../../../Models/DatabaseModels/DatabaseServer";
|
|
14
15
|
import Metric from "../../../../Models/AnalyticsModels/Metric";
|
|
15
16
|
import Log from "../../../../Models/AnalyticsModels/Log";
|
|
16
17
|
import Span from "../../../../Models/AnalyticsModels/Span";
|
|
@@ -55,6 +56,7 @@ import ServerlessFunctionService from "../../../Services/ServerlessFunctionServi
|
|
|
55
56
|
import CloudResourceService from "../../../Services/CloudResourceService";
|
|
56
57
|
import IoTFleetService from "../../../Services/IoTFleetService";
|
|
57
58
|
import NetworkDeviceService from "../../../Services/NetworkDeviceService";
|
|
59
|
+
import DatabaseServerService from "../../../Services/DatabaseServerService";
|
|
58
60
|
import MetricService from "../../../Services/MetricService";
|
|
59
61
|
import LogAggregationService, {
|
|
60
62
|
HistogramBucket,
|
|
@@ -66,7 +68,9 @@ import FindBy from "../../../Types/Database/FindBy";
|
|
|
66
68
|
import QueryHelper from "../../../Types/Database/QueryHelper";
|
|
67
69
|
import DatabaseRequestType from "../../../Types/BaseDatabase/DatabaseRequestType";
|
|
68
70
|
import ModelPermission from "../../../Types/AnalyticsDatabase/ModelPermission";
|
|
69
|
-
import {
|
|
71
|
+
import ResourceEntityFilter, {
|
|
72
|
+
ResourceEntityScope,
|
|
73
|
+
} from "../../Telemetry/ResourceEntityFilter";
|
|
70
74
|
import ToolResultSerializer, { SerializedResult } from "./Serializer";
|
|
71
75
|
import {
|
|
72
76
|
ObservabilityTool,
|
|
@@ -87,6 +91,17 @@ interface ResourceDescriptor {
|
|
|
87
91
|
attributeKey?: string;
|
|
88
92
|
keyFor?: (projectId: string, identifier: string) => string;
|
|
89
93
|
runtime?: string;
|
|
94
|
+
/*
|
|
95
|
+
* For a resource whose telemetry is not named by one identifier (a
|
|
96
|
+
* Database owns several endpoints plus the pods / containers it runs as):
|
|
97
|
+
* its scope, resolved exactly the way the explorer's resource facet and
|
|
98
|
+
* the resource's own pages resolve it. Called only after the
|
|
99
|
+
* permission-checked parent read.
|
|
100
|
+
*/
|
|
101
|
+
resolveResourceScopes?: (data: {
|
|
102
|
+
projectId: ObjectID;
|
|
103
|
+
id: ObjectID;
|
|
104
|
+
}) => Promise<Array<ResourceEntityScope>>;
|
|
90
105
|
}
|
|
91
106
|
|
|
92
107
|
/*
|
|
@@ -274,6 +289,30 @@ const RESOURCE_DESCRIPTORS: Record<AIResourceType, ResourceDescriptor> = {
|
|
|
274
289
|
"lastPolledAt",
|
|
275
290
|
],
|
|
276
291
|
},
|
|
292
|
+
[AIResourceType.DatabaseServer]: {
|
|
293
|
+
model: DatabaseServer,
|
|
294
|
+
findBy: (data: FindBy<BaseModel>) => {
|
|
295
|
+
return DatabaseServerService.findBy(data as never);
|
|
296
|
+
},
|
|
297
|
+
fields: [
|
|
298
|
+
"dbSystem",
|
|
299
|
+
"dbVersion",
|
|
300
|
+
"serverAddress",
|
|
301
|
+
"serverPort",
|
|
302
|
+
"discoverySource",
|
|
303
|
+
"instanceCount",
|
|
304
|
+
"collectorLastSeenAt",
|
|
305
|
+
],
|
|
306
|
+
resolveResourceScopes: (data: {
|
|
307
|
+
projectId: ObjectID;
|
|
308
|
+
id: ObjectID;
|
|
309
|
+
}): Promise<Array<ResourceEntityScope>> => {
|
|
310
|
+
return ResourceEntityFilter.resolveScopes({
|
|
311
|
+
projectId: data.projectId,
|
|
312
|
+
selections: { databaseServerId: [data.id.toString()] },
|
|
313
|
+
});
|
|
314
|
+
},
|
|
315
|
+
},
|
|
277
316
|
};
|
|
278
317
|
|
|
279
318
|
function getResourceType(args: JSONObject): AIResourceType {
|
|
@@ -503,10 +542,33 @@ export function buildAIResourceTelemetryScope(data: {
|
|
|
503
542
|
resource: JSONObject;
|
|
504
543
|
projectId: ObjectID;
|
|
505
544
|
signal: ResourceSignal;
|
|
545
|
+
// From the descriptor's resolveResourceScopes, when it has one.
|
|
546
|
+
resolvedScopes?: Array<ResourceEntityScope> | undefined;
|
|
506
547
|
}): AIResourceTelemetryScope {
|
|
507
548
|
const descriptor: ResourceDescriptor = RESOURCE_DESCRIPTORS[data.type];
|
|
508
549
|
const note: string =
|
|
509
550
|
"Scope is the parent resource; no individual child identity or namespace was selected. Missing telemetry is not evidence of health.";
|
|
551
|
+
if (data.type === AIResourceType.DatabaseServer) {
|
|
552
|
+
/*
|
|
553
|
+
* Only a resolved scope of THIS database is used; one that could not be
|
|
554
|
+
* resolved narrows to the row's own collector / agent data, never widens.
|
|
555
|
+
*/
|
|
556
|
+
const scopes: Array<ResourceEntityScope> = (
|
|
557
|
+
data.resolvedScopes || []
|
|
558
|
+
).filter((scope: ResourceEntityScope): boolean => {
|
|
559
|
+
return (
|
|
560
|
+
scope.entityIds.length === 1 &&
|
|
561
|
+
scope.entityIds[0] === data.id.toString()
|
|
562
|
+
);
|
|
563
|
+
});
|
|
564
|
+
return {
|
|
565
|
+
resourceScopes:
|
|
566
|
+
scopes.length > 0
|
|
567
|
+
? scopes
|
|
568
|
+
: [{ entityIds: [data.id.toString()], entityKeys: [] }],
|
|
569
|
+
note: `${note} A database's telemetry is its own collector / Database Agent data plus everything carrying one of its endpoints or workload members: application database calls, and the logs and metrics of the pods and containers it runs as.`,
|
|
570
|
+
};
|
|
571
|
+
}
|
|
510
572
|
if (data.type === AIResourceType.CloudResource) {
|
|
511
573
|
const attributes: Record<string, string> = {};
|
|
512
574
|
for (const [column, key] of [
|
|
@@ -707,6 +769,12 @@ export const QueryResourceTelemetryTool: ObservabilityTool = {
|
|
|
707
769
|
resource: resources[0] as unknown as JSONObject,
|
|
708
770
|
projectId: ctx.projectId,
|
|
709
771
|
signal,
|
|
772
|
+
resolvedScopes: descriptor.resolveResourceScopes
|
|
773
|
+
? await descriptor.resolveResourceScopes({
|
|
774
|
+
projectId: ctx.projectId,
|
|
775
|
+
id,
|
|
776
|
+
})
|
|
777
|
+
: undefined,
|
|
710
778
|
});
|
|
711
779
|
const target: AIChatCitationTarget = resourceTarget(type, id);
|
|
712
780
|
const label: string = `${getAIResourceDefinition(type).label} ${signal}, ${startTime.toISOString()} – ${endTime.toISOString()}`;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import CephClusterService from "../../Services/CephClusterService";
|
|
2
|
+
import DatabaseServerService from "../../Services/DatabaseServerService";
|
|
2
3
|
import DockerHostService from "../../Services/DockerHostService";
|
|
3
4
|
import DockerResourceService from "../../Services/DockerResourceService";
|
|
4
5
|
import DockerSwarmClusterService from "../../Services/DockerSwarmClusterService";
|
|
@@ -108,6 +109,11 @@ function getAllAffectedResourceRelations(): Array<ProjectScopedRelation> {
|
|
|
108
109
|
modelName: "Ceph Cluster",
|
|
109
110
|
service: CephClusterService,
|
|
110
111
|
},
|
|
112
|
+
{
|
|
113
|
+
column: "databaseServers",
|
|
114
|
+
modelName: "Database",
|
|
115
|
+
service: DatabaseServerService,
|
|
116
|
+
},
|
|
111
117
|
{
|
|
112
118
|
column: "dockerResources",
|
|
113
119
|
modelName: "Docker Resource",
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import AggregateModel from "../../../../Types/BaseDatabase/AggregatedModel";
|
|
2
2
|
import AggregatedResult from "../../../../Types/BaseDatabase/AggregatedResult";
|
|
3
|
+
import MetricAliasData from "../../../../Types/Metrics/MetricAliasData";
|
|
3
4
|
import MetricFormulaConfigData from "../../../../Types/Metrics/MetricFormulaConfigData";
|
|
4
5
|
import MetricQueryConfigData from "../../../../Types/Metrics/MetricQueryConfigData";
|
|
5
6
|
import MetricsAggregationType from "../../../../Types/Metrics/MetricsAggregationType";
|
|
@@ -274,6 +275,7 @@ export default class MetricMonitorCriteria {
|
|
|
274
275
|
seriesFingerprint: input.seriesFingerprint,
|
|
275
276
|
seriesLabels: input.seriesLabels,
|
|
276
277
|
projectId: input.projectId,
|
|
278
|
+
nativeUnitsByMetricName: input.nativeUnitsByMetricName,
|
|
277
279
|
});
|
|
278
280
|
}
|
|
279
281
|
|
|
@@ -363,6 +365,19 @@ export default class MetricMonitorCriteria {
|
|
|
363
365
|
},
|
|
364
366
|
);
|
|
365
367
|
|
|
368
|
+
const finiteNumbers: Array<number> = numbersInDisplayUnit.filter(
|
|
369
|
+
(n: number) => {
|
|
370
|
+
return Number.isFinite(n);
|
|
371
|
+
},
|
|
372
|
+
);
|
|
373
|
+
|
|
374
|
+
if (finiteNumbers.length > 0) {
|
|
375
|
+
metricContext.sampleValueRange = {
|
|
376
|
+
min: Math.min(...finiteNumbers),
|
|
377
|
+
max: Math.max(...finiteNumbers),
|
|
378
|
+
};
|
|
379
|
+
}
|
|
380
|
+
|
|
366
381
|
const comparisonMessage: string | null =
|
|
367
382
|
CompareCriteria.compareCriteriaNumbers({
|
|
368
383
|
value: numbersInDisplayUnit.length > 0 ? numbersInDisplayUnit : 0,
|
|
@@ -438,7 +453,10 @@ export default class MetricMonitorCriteria {
|
|
|
438
453
|
} = {
|
|
439
454
|
value: convertedValue,
|
|
440
455
|
timestamp: sample.timestamp,
|
|
441
|
-
attributes: MetricMonitorCriteria.extractLabelAttributes(
|
|
456
|
+
attributes: MetricMonitorCriteria.extractLabelAttributes(
|
|
457
|
+
sample,
|
|
458
|
+
input.seriesLabels,
|
|
459
|
+
),
|
|
442
460
|
};
|
|
443
461
|
|
|
444
462
|
if (componentValueLookup && metricContext.components) {
|
|
@@ -571,7 +589,10 @@ export default class MetricMonitorCriteria {
|
|
|
571
589
|
}
|
|
572
590
|
}
|
|
573
591
|
|
|
574
|
-
private static extractLabelAttributes(
|
|
592
|
+
private static extractLabelAttributes(
|
|
593
|
+
sample: AggregateModel,
|
|
594
|
+
seriesLabels?: JSONObject | undefined,
|
|
595
|
+
): JSONObject {
|
|
575
596
|
/*
|
|
576
597
|
* AggregatedModel has a string index signature that holds group-by
|
|
577
598
|
* attributes alongside `timestamp` and `value`. Strip the known keys
|
|
@@ -579,7 +600,7 @@ export default class MetricMonitorCriteria {
|
|
|
579
600
|
*/
|
|
580
601
|
const labels: JSONObject = {};
|
|
581
602
|
for (const key of Object.keys(sample)) {
|
|
582
|
-
if (key === "timestamp" || key === "value") {
|
|
603
|
+
if (key === "timestamp" || key === "value" || key === "attributes") {
|
|
583
604
|
continue;
|
|
584
605
|
}
|
|
585
606
|
const v: unknown = (sample as unknown as JSONObject)[key];
|
|
@@ -588,6 +609,50 @@ export default class MetricMonitorCriteria {
|
|
|
588
609
|
}
|
|
589
610
|
labels[key] = v as JSONObject[string];
|
|
590
611
|
}
|
|
612
|
+
|
|
613
|
+
/*
|
|
614
|
+
* Grouped rows carry their labels NESTED under `attributes` — both
|
|
615
|
+
* MetricService.aggregateBy with groupByAttributeKeys and the
|
|
616
|
+
* infrastructure monitors' raw-scan path return them that way. The
|
|
617
|
+
* map used to be copied through as a single `attributes` label, which
|
|
618
|
+
* the Breaching Samples list rendered as "`attributes`:
|
|
619
|
+
* `[object Object]`".
|
|
620
|
+
*
|
|
621
|
+
* The raw scan nests EVERY datapoint attribute of the bucket's first
|
|
622
|
+
* row, not just the grouped ones, so when the series labels are known
|
|
623
|
+
* only those keys are lifted out: they are what identifies the series.
|
|
624
|
+
* A formula's rows carry no attributes at all, so each key falls back
|
|
625
|
+
* to the series' own label — every sample of a series belongs to it.
|
|
626
|
+
*/
|
|
627
|
+
const nested: unknown = (sample as unknown as JSONObject)["attributes"];
|
|
628
|
+
const nestedAttributes: JSONObject =
|
|
629
|
+
nested && typeof nested === "object" && !Array.isArray(nested)
|
|
630
|
+
? (nested as JSONObject)
|
|
631
|
+
: {};
|
|
632
|
+
|
|
633
|
+
if (nested !== undefined && nested !== null && typeof nested !== "object") {
|
|
634
|
+
// A flat label that happens to be called `attributes`.
|
|
635
|
+
labels["attributes"] = nested as JSONObject[string];
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
const labelKeys: Array<string> = Object.keys(seriesLabels || {});
|
|
639
|
+
const keys: Array<string> =
|
|
640
|
+
labelKeys.length > 0 ? labelKeys : Object.keys(nestedAttributes);
|
|
641
|
+
|
|
642
|
+
for (const key of keys) {
|
|
643
|
+
if (key in labels) {
|
|
644
|
+
continue;
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
const v: unknown = nestedAttributes[key] ?? seriesLabels?.[key];
|
|
648
|
+
|
|
649
|
+
if (v === undefined || v === null || v === "" || typeof v === "object") {
|
|
650
|
+
continue;
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
labels[key] = v as JSONObject[string];
|
|
654
|
+
}
|
|
655
|
+
|
|
591
656
|
return labels;
|
|
592
657
|
}
|
|
593
658
|
|
|
@@ -659,12 +724,20 @@ export default class MetricMonitorCriteria {
|
|
|
659
724
|
formulaConfig: f,
|
|
660
725
|
queryConfigs: input.queryConfigs,
|
|
661
726
|
formulaConfigs: input.formulaConfigs,
|
|
727
|
+
nativeUnitsByMetricName: input.nativeUnitsByMetricName,
|
|
662
728
|
})
|
|
663
729
|
: undefined;
|
|
664
730
|
|
|
731
|
+
const displayName: string | undefined =
|
|
732
|
+
MetricMonitorCriteria.getAliasDisplayName({
|
|
733
|
+
aliasData: q?.metricAliasData || f?.metricAliasData,
|
|
734
|
+
metricAlias: input.metricAlias,
|
|
735
|
+
});
|
|
736
|
+
|
|
665
737
|
return {
|
|
666
738
|
metricName,
|
|
667
739
|
alias: input.metricAlias,
|
|
740
|
+
...(displayName ? { displayName } : {}),
|
|
668
741
|
unit,
|
|
669
742
|
aggregationType,
|
|
670
743
|
isFormula: Boolean(f),
|
|
@@ -677,6 +750,36 @@ export default class MetricMonitorCriteria {
|
|
|
677
750
|
};
|
|
678
751
|
}
|
|
679
752
|
|
|
753
|
+
/**
|
|
754
|
+
* The human legend of a query or formula, or undefined when it is empty
|
|
755
|
+
* or just repeats the alias. The shipped templates title every single
|
|
756
|
+
* query with its own alias ("container_restarts"), which is not a name
|
|
757
|
+
* worth promoting over the metric name; the ratio templates give their
|
|
758
|
+
* formula a real legend ("Node Memory Utilization (%)").
|
|
759
|
+
*/
|
|
760
|
+
public static getAliasDisplayName(input: {
|
|
761
|
+
aliasData: MetricAliasData | undefined;
|
|
762
|
+
metricAlias: string;
|
|
763
|
+
}): string | undefined {
|
|
764
|
+
const candidates: Array<string | undefined> = [
|
|
765
|
+
input.aliasData?.legend,
|
|
766
|
+
input.aliasData?.title,
|
|
767
|
+
];
|
|
768
|
+
|
|
769
|
+
for (const candidate of candidates) {
|
|
770
|
+
const trimmed: string = (candidate || "").trim();
|
|
771
|
+
|
|
772
|
+
if (
|
|
773
|
+
trimmed &&
|
|
774
|
+
trimmed.toLowerCase() !== input.metricAlias.trim().toLowerCase()
|
|
775
|
+
) {
|
|
776
|
+
return trimmed;
|
|
777
|
+
}
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
return undefined;
|
|
781
|
+
}
|
|
782
|
+
|
|
680
783
|
/**
|
|
681
784
|
* Resolve the variables the formula references to their source
|
|
682
785
|
* query/formula definitions so the root cause can label each
|
|
@@ -686,6 +789,7 @@ export default class MetricMonitorCriteria {
|
|
|
686
789
|
formulaConfig: MetricFormulaConfigData;
|
|
687
790
|
queryConfigs: Array<MetricQueryConfigData>;
|
|
688
791
|
formulaConfigs: Array<MetricFormulaConfigData>;
|
|
792
|
+
nativeUnitsByMetricName?: { [key: string]: string } | undefined;
|
|
689
793
|
}): Array<MetricComponent> {
|
|
690
794
|
const formula: string =
|
|
691
795
|
input.formulaConfig.metricFormulaData?.metricFormula || "";
|
|
@@ -717,10 +821,25 @@ export default class MetricMonitorCriteria {
|
|
|
717
821
|
| undefined) ||
|
|
718
822
|
queryMatch.metricAliasData?.title ||
|
|
719
823
|
normalizedAlias;
|
|
824
|
+
/*
|
|
825
|
+
* A component's values are in its legendUnit when it has one (the
|
|
826
|
+
* worker converted them), and in the metric's own unit when it
|
|
827
|
+
* does not — the ratio templates leave both sides unconverted, so
|
|
828
|
+
* `used_mem` and `alloc_mem` are bytes. Without the fallback those
|
|
829
|
+
* printed as bare 12-digit numbers under a formula that read
|
|
830
|
+
* "88.82%".
|
|
831
|
+
*/
|
|
832
|
+
const rawMetricName: string | undefined =
|
|
833
|
+
(queryMatch.metricQueryData?.filterData?.metricName as
|
|
834
|
+
| string
|
|
835
|
+
| undefined) || undefined;
|
|
836
|
+
const nativeUnit: string | undefined = rawMetricName
|
|
837
|
+
? input.nativeUnitsByMetricName?.[rawMetricName.toLowerCase()]
|
|
838
|
+
: undefined;
|
|
720
839
|
components.push({
|
|
721
840
|
alias: normalizedAlias,
|
|
722
841
|
name,
|
|
723
|
-
unit: queryMatch.metricAliasData?.legendUnit || null,
|
|
842
|
+
unit: queryMatch.metricAliasData?.legendUnit || nativeUnit || null,
|
|
724
843
|
isFormula: false,
|
|
725
844
|
});
|
|
726
845
|
continue;
|
|
@@ -774,6 +893,7 @@ export default class MetricMonitorCriteria {
|
|
|
774
893
|
seriesFingerprint: string | undefined;
|
|
775
894
|
seriesLabels: JSONObject;
|
|
776
895
|
projectId: { toString(): string } | undefined;
|
|
896
|
+
nativeUnitsByMetricName?: { [key: string]: string } | undefined;
|
|
777
897
|
}): Promise<MetricSeriesEvaluationResult> {
|
|
778
898
|
const { criteriaFilter, metricContext } = input;
|
|
779
899
|
|
|
@@ -858,6 +978,19 @@ export default class MetricMonitorCriteria {
|
|
|
858
978
|
return noBreach();
|
|
859
979
|
}
|
|
860
980
|
|
|
981
|
+
/*
|
|
982
|
+
* The baseline is aggregated from the raw stored values, so it is in
|
|
983
|
+
* the metric's NATIVE unit — but the samples were already converted
|
|
984
|
+
* into the query's legendUnit by the worker. Rescale the baseline
|
|
985
|
+
* into the sample unit before anything compares against it or
|
|
986
|
+
* renders it; otherwise a "By" baseline read as "MB" puts the mean a
|
|
987
|
+
* million times too high — AnomalouslyHigh can never fire,
|
|
988
|
+
* AnomalouslyLow fires on every sample, and the root cause prints
|
|
989
|
+
* the mean in TB.
|
|
990
|
+
*/
|
|
991
|
+
const baselineUnit: string | undefined =
|
|
992
|
+
input.nativeUnitsByMetricName?.[metricContext.metricName.toLowerCase()];
|
|
993
|
+
|
|
861
994
|
const baselineByHour: Map<number, BaselineSummary> = new Map();
|
|
862
995
|
for (const hour of hoursInWindow) {
|
|
863
996
|
const baseline: BaselineSummary | null =
|
|
@@ -869,7 +1002,14 @@ export default class MetricMonitorCriteria {
|
|
|
869
1002
|
minSamples,
|
|
870
1003
|
});
|
|
871
1004
|
if (baseline && baseline.isReliable) {
|
|
872
|
-
baselineByHour.set(
|
|
1005
|
+
baselineByHour.set(
|
|
1006
|
+
hour,
|
|
1007
|
+
MetricMonitorCriteria.convertBaselineToUnit({
|
|
1008
|
+
baseline,
|
|
1009
|
+
fromUnit: baselineUnit,
|
|
1010
|
+
toUnit: metricContext.unit || undefined,
|
|
1011
|
+
}),
|
|
1012
|
+
);
|
|
873
1013
|
}
|
|
874
1014
|
}
|
|
875
1015
|
|
|
@@ -945,7 +1085,10 @@ export default class MetricMonitorCriteria {
|
|
|
945
1085
|
breachingSamples.push({
|
|
946
1086
|
value: sample.value,
|
|
947
1087
|
timestamp: ts,
|
|
948
|
-
attributes: MetricMonitorCriteria.extractLabelAttributes(
|
|
1088
|
+
attributes: MetricMonitorCriteria.extractLabelAttributes(
|
|
1089
|
+
sample,
|
|
1090
|
+
input.seriesLabels,
|
|
1091
|
+
),
|
|
949
1092
|
});
|
|
950
1093
|
if (!firstBreach) {
|
|
951
1094
|
firstBreach = { sample, baseline, sigma: observedSigma };
|
|
@@ -1035,6 +1178,45 @@ export default class MetricMonitorCriteria {
|
|
|
1035
1178
|
};
|
|
1036
1179
|
}
|
|
1037
1180
|
|
|
1181
|
+
/**
|
|
1182
|
+
* Rescale every quantity in a baseline from one unit into another.
|
|
1183
|
+
* Every supported unit family converts by a pure multiplier (no
|
|
1184
|
+
* offsets), so the spread terms (stddev, MAD) scale by the same
|
|
1185
|
+
* factor as the location terms. When the units match, either is
|
|
1186
|
+
* missing, or they aren't convertible, the baseline is returned
|
|
1187
|
+
* unchanged — the same pass-through the worker applies to samples.
|
|
1188
|
+
*/
|
|
1189
|
+
private static convertBaselineToUnit(input: {
|
|
1190
|
+
baseline: BaselineSummary;
|
|
1191
|
+
fromUnit: string | undefined;
|
|
1192
|
+
toUnit: string | undefined;
|
|
1193
|
+
}): BaselineSummary {
|
|
1194
|
+
const { baseline, fromUnit, toUnit } = input;
|
|
1195
|
+
|
|
1196
|
+
if (!fromUnit || !toUnit || fromUnit === toUnit) {
|
|
1197
|
+
return baseline;
|
|
1198
|
+
}
|
|
1199
|
+
|
|
1200
|
+
const convert: (value: number) => number = (value: number): number => {
|
|
1201
|
+
return MetricUnitUtil.convertToMetricUnit({
|
|
1202
|
+
value,
|
|
1203
|
+
fromUnit,
|
|
1204
|
+
metricUnit: toUnit,
|
|
1205
|
+
});
|
|
1206
|
+
};
|
|
1207
|
+
|
|
1208
|
+
return {
|
|
1209
|
+
...baseline,
|
|
1210
|
+
mean: convert(baseline.mean),
|
|
1211
|
+
stddev: convert(baseline.stddev),
|
|
1212
|
+
median: convert(baseline.median),
|
|
1213
|
+
p95: convert(baseline.p95),
|
|
1214
|
+
minObserved: convert(baseline.minObserved),
|
|
1215
|
+
maxObserved: convert(baseline.maxObserved),
|
|
1216
|
+
...(baseline.mad !== undefined ? { mad: convert(baseline.mad) } : {}),
|
|
1217
|
+
};
|
|
1218
|
+
}
|
|
1219
|
+
|
|
1038
1220
|
private static anomalyBreaches(
|
|
1039
1221
|
value: number,
|
|
1040
1222
|
expectedHigh: number,
|
|
@@ -37,6 +37,7 @@ import SeriesResourceLinker, {
|
|
|
37
37
|
import MonitorDependencySuppression, {
|
|
38
38
|
DependencySuppressionResult,
|
|
39
39
|
} from "./MonitorDependencySuppression";
|
|
40
|
+
import PerSeriesResolutionRootCause from "./PerSeriesResolutionRootCause";
|
|
40
41
|
import { JSONObject } from "../../../Types/JSON";
|
|
41
42
|
import OneUptimeDate from "../../../Types/Date";
|
|
42
43
|
import MonitorEvaluationSummary from "../../../Types/Monitor/MonitorEvaluationSummary";
|
|
@@ -76,6 +77,13 @@ export default class MonitorAlert {
|
|
|
76
77
|
* code paths for grouped incoming-request monitors.
|
|
77
78
|
*/
|
|
78
79
|
disableSeriesAbsenceResolution?: boolean | undefined;
|
|
80
|
+
/**
|
|
81
|
+
* Every criteria on the monitor, keyed by id. Used to name the
|
|
82
|
+
* criteria a recovered series no longer satisfies when its alert is
|
|
83
|
+
* resolved per series; without it the resolution text falls back to
|
|
84
|
+
* "the criteria that raised it".
|
|
85
|
+
*/
|
|
86
|
+
criteriaInstancesById?: Dictionary<MonitorCriteriaInstance> | undefined;
|
|
79
87
|
}): Promise<Array<Alert>> {
|
|
80
88
|
// check active alerts and if there are open alerts, do not create another alert.
|
|
81
89
|
const openAlerts: Array<Alert> = await AlertService.findBy({
|
|
@@ -123,10 +131,29 @@ export default class MonitorAlert {
|
|
|
123
131
|
if (shouldClose) {
|
|
124
132
|
resolvedAlertIds.add(openAlert.id!.toString());
|
|
125
133
|
|
|
134
|
+
/*
|
|
135
|
+
* A series resolved per series closes on a tick where other series
|
|
136
|
+
* may still breach, and input.rootCause describes those. Record why
|
|
137
|
+
* THIS series resolved instead. Whole-monitor resolves keep the
|
|
138
|
+
* caller's root cause.
|
|
139
|
+
*/
|
|
140
|
+
const isPerSeriesResolution: boolean =
|
|
141
|
+
input.breachingSeriesFingerprints !== undefined &&
|
|
142
|
+
Boolean(openAlert.seriesFingerprint);
|
|
143
|
+
|
|
144
|
+
const rootCause: string = isPerSeriesResolution
|
|
145
|
+
? PerSeriesResolutionRootCause.build({
|
|
146
|
+
seriesLabels: openAlert.seriesLabels,
|
|
147
|
+
createdCriteriaId:
|
|
148
|
+
openAlert.createdCriteriaId?.toString() || undefined,
|
|
149
|
+
criteriaInstancesById: input.criteriaInstancesById,
|
|
150
|
+
})
|
|
151
|
+
: input.rootCause;
|
|
152
|
+
|
|
126
153
|
// then resolve alert.
|
|
127
154
|
await this.resolveOpenAlert({
|
|
128
155
|
openAlert: openAlert,
|
|
129
|
-
rootCause:
|
|
156
|
+
rootCause: rootCause,
|
|
130
157
|
dataToProcess: input.dataToProcess,
|
|
131
158
|
});
|
|
132
159
|
|