@oneuptime/common 14.0.3 → 14.0.6
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/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/Index.ts +16 -0
- package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +26 -0
- 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/1795000000000-AddDatabaseServerTables.ts +673 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1795100000000-AddUserProjectSsoConsent.ts +51 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -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/IncidentReminderRuleService.ts +103 -23
- package/Server/Services/Index.ts +16 -0
- package/Server/Services/InventoryItemService.ts +113 -5
- package/Server/Services/IoTDeviceService.ts +145 -37
- package/Server/Services/MetricService.ts +1 -1
- 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 +84 -2
- package/Server/Utils/AI/Toolbox/MetricTools.ts +13 -2
- package/Server/Utils/AI/Toolbox/ResourceTools.ts +81 -2
- package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +1 -1
- package/Server/Utils/Database/AffectedResourceRelations.ts +6 -0
- package/Server/Utils/Monitor/Criteria/CompareCriteria.ts +33 -0
- package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +192 -9
- package/Server/Utils/Monitor/MonitorAlert.ts +28 -1
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +2264 -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/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/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/EventOverlayScope.test.ts +147 -0
- package/Tests/App/Dashboard/EventOverlayScopeHook.test.tsx +1 -0
- package/Tests/App/Dashboard/LogsResourceFacetChips.test.tsx +1 -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/NetworkTopologyExplorerSearch.test.tsx +1267 -0
- package/Tests/App/Dashboard/ProductOrientation.test.tsx +4 -3
- 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 +4 -1
- package/Tests/App/Dashboard/RumOverviewPage.test.tsx +127 -0
- package/Tests/App/Dashboard/ScheduledMaintenanceOverviewPage.test.tsx +2 -0
- package/Tests/App/Dashboard/ServiceMapDatabaseLink.test.tsx +1085 -0
- package/Tests/App/Dashboard/SiteSearchBox.test.tsx +2110 -0
- package/Tests/App/Dashboard/TelemetryMetricsSignals.test.ts +168 -8
- package/Tests/App/Dashboard/TelemetryResourceRetentionSettings.test.tsx +10 -0
- package/Tests/App/Dashboard/TracesResourceFacets.test.tsx +2 -1
- 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/ResourceFeedModels.test.ts +24 -5
- 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/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/IncidentAlertSloLinkSurvivesEdit.test.ts +2 -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/MetricServiceAggregate.test.ts +12 -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/SavedViewDefaults.test.ts +325 -0
- package/Tests/Server/Services/StaticRuleCriteriaRuntimeCoverage.test.ts +3 -3
- package/Tests/Server/Services/StatusPageCertificateService.test.ts +169 -0
- package/Tests/Server/Services/TeamComplianceSettingService.test.ts +191 -0
- 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/Types/Database/QueryHelperSearchAllWords.test.ts +651 -0
- package/Tests/Server/Utils/AI/AlertWriteTools.test.ts +256 -0
- package/Tests/Server/Utils/AI/IncidentWriteTools.test.ts +482 -0
- package/Tests/Server/Utils/AI/ResourceTools.test.ts +134 -0
- package/Tests/Server/Utils/Monitor/Criteria/CompareCriteria.test.ts +54 -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/MetricDecimalThreshold.test.ts +417 -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 +1815 -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/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/BaseDatabase/AggregationType.test.ts +5 -1
- package/Tests/Types/Dashboard/KubernetesDashboardTemplate.test.ts +184 -0
- package/Tests/Types/Dashboard/KubernetesDashboardTemplates.test.ts +107 -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 +292 -0
- package/Tests/Types/Monitor/KubernetesMetricCatalog.test.ts +272 -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 +202 -0
- package/Tests/Types/NetworkDevice/DiscoveredHostNamingStatus.test.ts +401 -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/ForeignHiddenRuleResilience.test.tsx +1147 -0
- package/Tests/UI/Components/HeaderRightRail.test.tsx +41 -1
- package/Tests/UI/Components/LogsEntityNames.test.ts +16 -1
- package/Tests/UI/Components/LogsFacetSidebarHiddenFacets.test.tsx +7 -3
- 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/TelemetryFacetSidebarHiddenFacets.test.tsx +4 -1
- package/Tests/UI/ForeignHiddenRuleGuard.test.ts +1951 -0
- package/Tests/UI/Rum/ChunkLoader.test.ts +76 -0
- package/Tests/UI/Rum/ReplayPlayerChrome.test.tsx +19 -1
- package/Tests/UI/Rum/ReplayRailDetail.test.tsx +53 -0
- package/Tests/UI/Rum/ReplaySignals.test.ts +54 -0
- package/Tests/UI/Rum/ReplayTabSwitcher.test.tsx +19 -1
- package/Tests/UI/TailwindPlayCdnForeignHiddenRule.test.ts +1005 -0
- package/Tests/UI/ThemeGroupHoverReveal.test.ts +847 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +70 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +21 -0
- package/Tests/UI/Utils/ModelAPISsoRedirect.test.ts +127 -0
- package/Tests/UI/Utils/Navigation.test.ts +102 -0
- package/Tests/UI/Utils/Telemetry/TelemetryEntityNames.test.ts +23 -0
- package/Tests/Utils/Dashboard/KubernetesClusterCpuTileRepair.test.ts +370 -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/Rules/MonitorTypeRuleCriteria.test.ts +181 -0
- package/Tests/Utils/ValueFormatter.test.ts +50 -0
- package/Tests/tsconfig.json +16 -0
- package/Types/AI/AIResourceContext.ts +7 -0
- package/Types/BaseDatabase/AggregationType.ts +7 -0
- package/Types/Dashboard/DashboardTemplates.ts +22 -8
- 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/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 +267 -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/SessionReplayCustomEvents.ts +29 -3
- package/Types/Rum/WebVitals.ts +13 -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/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/Input/Input.tsx +11 -0
- 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 +4 -4
- 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/TelemetryViewer/components/TelemetryFacetSidebar.tsx +1 -1
- package/UI/Components/TelemetryViewer/components/TelemetryFacetValueRow.tsx +1 -1
- 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/Telemetry/TelemetryEntityNames.ts +7 -0
- package/UI/Utils/TelemetryService.ts +4 -3
- package/Utils/Dashboard/KubernetesClusterCpuTileRepair.ts +147 -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/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/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/Index.js +16 -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/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/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 +4 -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/IncidentReminderRuleService.js +73 -23
- package/build/dist/Server/Services/IncidentReminderRuleService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +16 -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/MetricService.js +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 +73 -2
- package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/MetricTools.js +13 -2
- package/build/dist/Server/Utils/AI/Toolbox/MetricTools.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/ResourceTools.js +58 -1
- package/build/dist/Server/Utils/AI/Toolbox/ResourceTools.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +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/CompareCriteria.js +31 -0
- package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +135 -14
- 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/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/BaseDatabase/AggregationType.js +7 -0
- package/build/dist/Types/BaseDatabase/AggregationType.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardTemplates.js +22 -8
- 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/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 +234 -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/SessionReplayCustomEvents.js.map +1 -1
- package/build/dist/Types/Rum/WebVitals.js +12 -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/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/Input/Input.js +1 -1
- package/build/dist/UI/Components/Input/Input.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 +4 -4
- 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/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/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/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/Dashboard/KubernetesClusterCpuTileRepair.js +110 -0
- package/build/dist/Utils/Dashboard/KubernetesClusterCpuTileRepair.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/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
|
@@ -0,0 +1,2124 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The database engines the Databases product knows, and everything that has
|
|
3
|
+
* to agree about them. This is the single source of truth for:
|
|
4
|
+
*
|
|
5
|
+
* - normalizing `db.system.name` / legacy `db.system` values (and the
|
|
6
|
+
* spellings seen in the wild) to one value per engine
|
|
7
|
+
* - the engine's display name, which is also the prefix of every
|
|
8
|
+
* auto-generated DatabaseServer name ("PostgreSQL db.prod:5432")
|
|
9
|
+
* - the engine family: a fork or wire-compatible drop-in (MariaDB,
|
|
10
|
+
* Valkey, ScyllaDB, CockroachDB, TiDB, …) is its own engine, but client
|
|
11
|
+
* libraries report it under the family's name
|
|
12
|
+
* - the default port applied before an endpoint is keyed (semconv omits
|
|
13
|
+
* `server.port` when it is the default)
|
|
14
|
+
* - whether a client span alone may create a database of the engine
|
|
15
|
+
* - recognising OpenTelemetry Collector DB receivers from their
|
|
16
|
+
* instrumentation scope name, and where engine metrics come from when
|
|
17
|
+
* the collector has no receiver for the engine
|
|
18
|
+
* - the container images and Helm chart names the Kubernetes / Docker /
|
|
19
|
+
* Podman classifier accepts
|
|
20
|
+
*
|
|
21
|
+
* The `system` values are the semconv `db.system.name` values where semconv
|
|
22
|
+
* defines one (https://opentelemetry.io/docs/specs/semconv/registry/attributes/db/),
|
|
23
|
+
* the legacy `db.system` value where only that exists (`vertica`, `sybase`),
|
|
24
|
+
* and a lowercase OneUptime-defined name otherwise (`snowflake`, `tidb`,
|
|
25
|
+
* `qdrant`), in the semconv `<provider>.<service>` style for managed cloud
|
|
26
|
+
* services (`aws.documentdb`). Pure and isomorphic: no server imports,
|
|
27
|
+
* nothing here throws.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
/*
|
|
31
|
+
* How the engine is reached, which decides whether an endpoint seen in a
|
|
32
|
+
* client span names ONE database:
|
|
33
|
+
*
|
|
34
|
+
* - "server": a server or cluster with its own address — self-hosted, or
|
|
35
|
+
* a managed service whose endpoint is per cluster / per account
|
|
36
|
+
* (`orders.abc123.us-east-1.redshift.amazonaws.com`,
|
|
37
|
+
* `acme.snowflakecomputing.com`).
|
|
38
|
+
* - "cloud-api": a managed service reached through its provider's API
|
|
39
|
+
* host. Either every customer in a region shares that host (DynamoDB's
|
|
40
|
+
* `dynamodb.us-east-1.amazonaws.com`, `bigquery.googleapis.com`), or an
|
|
41
|
+
* account is served from several regional hosts (Cosmos DB), so the
|
|
42
|
+
* host does not name one database.
|
|
43
|
+
* - "embedded": an in-process library (SQLite, H2, DuckDB) — there is no
|
|
44
|
+
* server, and a span carries no address worth keying.
|
|
45
|
+
*
|
|
46
|
+
* Only "server" engines are created from client spans on their own; every
|
|
47
|
+
* engine can still be created by hand, by an agent or by a linked id.
|
|
48
|
+
*/
|
|
49
|
+
export type DatabaseDeployment = "server" | "cloud-api" | "embedded";
|
|
50
|
+
|
|
51
|
+
/*
|
|
52
|
+
* Where the engine's own health metrics come from, for the docs and the
|
|
53
|
+
* in-app guide. The Database Agent and "your own collector" recipes are
|
|
54
|
+
* built from this.
|
|
55
|
+
*/
|
|
56
|
+
export type DatabaseEngineMetricsSource =
|
|
57
|
+
// A collector-contrib receiver (the descriptor's receiverTypes).
|
|
58
|
+
| { kind: "receiver" }
|
|
59
|
+
/*
|
|
60
|
+
* The engine serves Prometheus metrics itself: scrape it with the
|
|
61
|
+
* collector's `prometheus` receiver and stamp the identity.
|
|
62
|
+
*/
|
|
63
|
+
| {
|
|
64
|
+
kind: "prometheus";
|
|
65
|
+
port: number;
|
|
66
|
+
path: string;
|
|
67
|
+
// What has to be switched on first, if anything.
|
|
68
|
+
note?: string | undefined;
|
|
69
|
+
}
|
|
70
|
+
// A managed service: its provider's monitoring API has the metrics.
|
|
71
|
+
| { kind: "cloud-monitoring"; receiver: string; note: string }
|
|
72
|
+
// No ready-made path; `reason` says what the options are.
|
|
73
|
+
| { kind: "none"; reason: string }
|
|
74
|
+
// In-process: there is no server to collect from.
|
|
75
|
+
| { kind: "embedded" };
|
|
76
|
+
|
|
77
|
+
export interface DatabaseSystemDescriptor {
|
|
78
|
+
// `db.system.name` value (or the OneUptime-defined name), lowercase.
|
|
79
|
+
system: string;
|
|
80
|
+
// "PostgreSQL".
|
|
81
|
+
displayName: string;
|
|
82
|
+
// Raw values that normalize to `system` (legacy `db.system`, spellings).
|
|
83
|
+
aliases: ReadonlyArray<string>;
|
|
84
|
+
defaultPort: number | null;
|
|
85
|
+
/*
|
|
86
|
+
* The opentelemetry-collector-contrib receivers that monitor the engine,
|
|
87
|
+
* by the name in their Go module (`<type>receiver`, which is also the
|
|
88
|
+
* instrumentation scope name): "postgresql", "googlecloudspanner". A fork
|
|
89
|
+
* lists its family's receiver when that receiver works against it
|
|
90
|
+
* (MariaDB is monitored by the `mysql` receiver); the receiver still
|
|
91
|
+
* REPORTS the family, so a scope name maps to the family's engine.
|
|
92
|
+
*/
|
|
93
|
+
receiverTypes: ReadonlyArray<string>;
|
|
94
|
+
// Metric-name prefixes those receivers emit (lowercase, as stored).
|
|
95
|
+
receiverMetricPrefixes: ReadonlyArray<string>;
|
|
96
|
+
/*
|
|
97
|
+
* Normalized image repositories (see
|
|
98
|
+
* DatabaseContainerClassifier.normalizeImageRepository). An entry without a
|
|
99
|
+
* "/" matches the repository's basename exactly; an entry with one matches
|
|
100
|
+
* the whole repository or a path suffix at a "/" boundary. Never a
|
|
101
|
+
* substring: `acme/redis-cache-warmer` is not Redis. Listed in their
|
|
102
|
+
* canonical form: `bitnami/…` also stands for Bitnami's relocated
|
|
103
|
+
* `bitnamilegacy/…` and `bitnamisecure/…` repositories, and a Red Hat /
|
|
104
|
+
* OpenShift Software Collections image (`rhel9/postgresql-16`) is matched
|
|
105
|
+
* by its engine's bare basename once normalization drops the version.
|
|
106
|
+
*/
|
|
107
|
+
imageRepositories: ReadonlyArray<string>;
|
|
108
|
+
// `app.kubernetes.io/name` values of the common Helm charts (Bitnami & co).
|
|
109
|
+
kubernetesChartNames: ReadonlyArray<string>;
|
|
110
|
+
hasCollectorReceiver: boolean;
|
|
111
|
+
/*
|
|
112
|
+
* The engine this one is a fork or wire-compatible drop-in of ("redis" for
|
|
113
|
+
* Valkey, "mysql" for MariaDB, "cassandra" for ScyllaDB, "postgresql" for
|
|
114
|
+
* CockroachDB). Client libraries cannot tell the two apart, so a span
|
|
115
|
+
* reports the family's value while an image or a receiver can name the
|
|
116
|
+
* fork; getDatabaseSystemFamily lets both land on one row, and a stronger
|
|
117
|
+
* source refines the engine to the fork. Absent for an engine that is its
|
|
118
|
+
* own family.
|
|
119
|
+
*/
|
|
120
|
+
family?: string | undefined;
|
|
121
|
+
/*
|
|
122
|
+
* A server's own version string (`SELECT VERSION()`) that names this
|
|
123
|
+
* engine rather than its family: MariaDB answers
|
|
124
|
+
* "10.11.7-MariaDB-1:10.11.7+maria~ubu2204", TiDB "8.0.11-TiDB-v7.5.1",
|
|
125
|
+
* Vitess "8.0.30-Vitess". Only on forks (see
|
|
126
|
+
* refineDatabaseSystemFromVersion).
|
|
127
|
+
*/
|
|
128
|
+
versionPattern?: RegExp | undefined;
|
|
129
|
+
/*
|
|
130
|
+
* The lowest MAJOR version that names this engine on its own, because its
|
|
131
|
+
* family's releases never reached it: MySQL's stop at 9.x, while MariaDB
|
|
132
|
+
* numbers its releases 10.x, 11.x and 12.x. It matters because the
|
|
133
|
+
* collector's `mysql` receiver reports only the leading number
|
|
134
|
+
* ("11.4.13", never "11.4.13-MariaDB-ubu2404") in `db.system.version`,
|
|
135
|
+
* which versionPattern cannot read. Only on forks, and checked after every
|
|
136
|
+
* fork's versionPattern (see refineDatabaseSystemFromVersion).
|
|
137
|
+
*/
|
|
138
|
+
versionMajorFrom?: number | undefined;
|
|
139
|
+
/*
|
|
140
|
+
* Resource attributes a receiver fills, for this engine, with the version
|
|
141
|
+
* of the engine it stays compatible with rather than its own — never read
|
|
142
|
+
* as this engine's version. Valkey answers INFO's `redis_version` with
|
|
143
|
+
* 7.2.4, the Redis release it forked from, whatever its own version
|
|
144
|
+
* (`valkey_version`) is, and the `redis` receiver reports that field as
|
|
145
|
+
* `redis.version`.
|
|
146
|
+
*/
|
|
147
|
+
compatibilityVersionAttributes?: ReadonlyArray<string> | undefined;
|
|
148
|
+
deployment: DatabaseDeployment;
|
|
149
|
+
engineMetrics: DatabaseEngineMetricsSource;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
const RECEIVER: DatabaseEngineMetricsSource = { kind: "receiver" };
|
|
153
|
+
const EMBEDDED: DatabaseEngineMetricsSource = { kind: "embedded" };
|
|
154
|
+
|
|
155
|
+
// CloudWatch has no metrics receiver in collector-contrib; Metric Streams do.
|
|
156
|
+
const AWS_CLOUDWATCH_METRICS: DatabaseEngineMetricsSource = {
|
|
157
|
+
kind: "cloud-monitoring",
|
|
158
|
+
receiver: "awsfirehose",
|
|
159
|
+
note: "Stream the service's CloudWatch metrics to a collector through a CloudWatch Metric Stream and Amazon Data Firehose, received by the `awsfirehose` receiver.",
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
const GOOGLE_CLOUD_MONITORING: DatabaseEngineMetricsSource = {
|
|
163
|
+
kind: "cloud-monitoring",
|
|
164
|
+
receiver: "googlecloudmonitoring",
|
|
165
|
+
note: "Read the service's metrics from Cloud Monitoring with the `googlecloudmonitoring` receiver.",
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
const JMX_ONLY: string =
|
|
169
|
+
"exposes its metrics over JMX; run the Prometheus JMX exporter as a Java agent and scrape it with the `prometheus` receiver";
|
|
170
|
+
|
|
171
|
+
export const DATABASE_SYSTEMS: ReadonlyArray<DatabaseSystemDescriptor> = [
|
|
172
|
+
// ---- relational -------------------------------------------------------
|
|
173
|
+
{
|
|
174
|
+
system: "postgresql",
|
|
175
|
+
displayName: "PostgreSQL",
|
|
176
|
+
// `edb`: EDB Postgres Advanced Server (a legacy semconv value).
|
|
177
|
+
aliases: ["postgres", "pg", "pgsql", "edb"],
|
|
178
|
+
defaultPort: 5432,
|
|
179
|
+
receiverTypes: ["postgresql"],
|
|
180
|
+
receiverMetricPrefixes: ["postgresql."],
|
|
181
|
+
imageRepositories: [
|
|
182
|
+
"postgres",
|
|
183
|
+
"postgresql",
|
|
184
|
+
"postgis/postgis",
|
|
185
|
+
"kartoza/postgis",
|
|
186
|
+
"timescale/timescaledb",
|
|
187
|
+
"timescale/timescaledb-ha",
|
|
188
|
+
"pgvector/pgvector",
|
|
189
|
+
"ankane/pgvector",
|
|
190
|
+
"supabase/postgres",
|
|
191
|
+
"citusdata/citus",
|
|
192
|
+
"paradedb/paradedb",
|
|
193
|
+
"bitnami/postgresql",
|
|
194
|
+
"bitnami/postgresql-repmgr",
|
|
195
|
+
"cloudnative-pg/postgresql",
|
|
196
|
+
"cloudnative-pg/postgis",
|
|
197
|
+
"crunchydata/crunchy-postgres",
|
|
198
|
+
"crunchydata/crunchy-postgres-gis",
|
|
199
|
+
"percona/percona-distribution-postgresql",
|
|
200
|
+
],
|
|
201
|
+
kubernetesChartNames: ["postgresql", "postgresql-ha"],
|
|
202
|
+
hasCollectorReceiver: true,
|
|
203
|
+
deployment: "server",
|
|
204
|
+
engineMetrics: RECEIVER,
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
system: "mysql",
|
|
208
|
+
displayName: "MySQL",
|
|
209
|
+
// Percona Server for MySQL is MySQL, not a fork with its own protocol.
|
|
210
|
+
aliases: ["percona"],
|
|
211
|
+
defaultPort: 3306,
|
|
212
|
+
receiverTypes: ["mysql"],
|
|
213
|
+
receiverMetricPrefixes: ["mysql."],
|
|
214
|
+
imageRepositories: [
|
|
215
|
+
"mysql",
|
|
216
|
+
"mysql/mysql-server",
|
|
217
|
+
"mysql/community-server",
|
|
218
|
+
"mysql/enterprise-server",
|
|
219
|
+
"bitnami/mysql",
|
|
220
|
+
"percona",
|
|
221
|
+
"percona/percona-server",
|
|
222
|
+
"percona/percona-server-mysql",
|
|
223
|
+
"percona/percona-xtradb-cluster",
|
|
224
|
+
],
|
|
225
|
+
kubernetesChartNames: ["mysql"],
|
|
226
|
+
hasCollectorReceiver: true,
|
|
227
|
+
deployment: "server",
|
|
228
|
+
engineMetrics: RECEIVER,
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
system: "mariadb",
|
|
232
|
+
displayName: "MariaDB",
|
|
233
|
+
aliases: [],
|
|
234
|
+
defaultPort: 3306,
|
|
235
|
+
receiverTypes: ["mysql"],
|
|
236
|
+
receiverMetricPrefixes: ["mysql."],
|
|
237
|
+
imageRepositories: [
|
|
238
|
+
"mariadb",
|
|
239
|
+
"mariadb/server",
|
|
240
|
+
"bitnami/mariadb",
|
|
241
|
+
"bitnami/mariadb-galera",
|
|
242
|
+
],
|
|
243
|
+
kubernetesChartNames: ["mariadb", "mariadb-galera"],
|
|
244
|
+
hasCollectorReceiver: true,
|
|
245
|
+
family: "mysql",
|
|
246
|
+
versionPattern: /mariadb/i,
|
|
247
|
+
versionMajorFrom: 10,
|
|
248
|
+
deployment: "server",
|
|
249
|
+
engineMetrics: RECEIVER,
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
system: "microsoft.sql_server",
|
|
253
|
+
displayName: "SQL Server",
|
|
254
|
+
aliases: ["mssql", "sqlserver", "sql_server"],
|
|
255
|
+
defaultPort: 1433,
|
|
256
|
+
receiverTypes: ["sqlserver"],
|
|
257
|
+
receiverMetricPrefixes: ["sqlserver."],
|
|
258
|
+
imageRepositories: ["mssql/server", "mssql/rhel/server", "azure-sql-edge"],
|
|
259
|
+
kubernetesChartNames: ["mssql", "mssql-server"],
|
|
260
|
+
hasCollectorReceiver: true,
|
|
261
|
+
deployment: "server",
|
|
262
|
+
engineMetrics: RECEIVER,
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
system: "oracle.db",
|
|
266
|
+
displayName: "Oracle",
|
|
267
|
+
aliases: ["oracle", "oracledb"],
|
|
268
|
+
defaultPort: 1521,
|
|
269
|
+
receiverTypes: ["oracledb"],
|
|
270
|
+
receiverMetricPrefixes: ["oracledb."],
|
|
271
|
+
imageRepositories: [
|
|
272
|
+
"gvenzl/oracle-free",
|
|
273
|
+
"gvenzl/oracle-xe",
|
|
274
|
+
"database/enterprise",
|
|
275
|
+
"database/free",
|
|
276
|
+
"database/express",
|
|
277
|
+
"oracle/database",
|
|
278
|
+
],
|
|
279
|
+
kubernetesChartNames: [],
|
|
280
|
+
hasCollectorReceiver: true,
|
|
281
|
+
deployment: "server",
|
|
282
|
+
engineMetrics: RECEIVER,
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
system: "ibm.db2",
|
|
286
|
+
displayName: "IBM Db2",
|
|
287
|
+
aliases: ["db2"],
|
|
288
|
+
defaultPort: 50000,
|
|
289
|
+
receiverTypes: [],
|
|
290
|
+
receiverMetricPrefixes: [],
|
|
291
|
+
imageRepositories: ["db2_community/db2", "ibmcom/db2"],
|
|
292
|
+
kubernetesChartNames: [],
|
|
293
|
+
hasCollectorReceiver: false,
|
|
294
|
+
deployment: "server",
|
|
295
|
+
engineMetrics: {
|
|
296
|
+
kind: "none",
|
|
297
|
+
reason:
|
|
298
|
+
"The collector has no Db2 receiver and its `sql_query` receiver has no Db2 driver; use IBM's own Db2 monitoring (or a Prometheus exporter for Db2) and stamp its data with this database's identity.",
|
|
299
|
+
},
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
system: "sap.hana",
|
|
303
|
+
displayName: "SAP HANA",
|
|
304
|
+
// `saphana` is what the collector's saphana receiver puts in `db.system`.
|
|
305
|
+
aliases: ["hanadb", "saphana"],
|
|
306
|
+
defaultPort: 30015,
|
|
307
|
+
receiverTypes: ["saphana"],
|
|
308
|
+
receiverMetricPrefixes: ["saphana."],
|
|
309
|
+
imageRepositories: ["saplabs/hanaexpress"],
|
|
310
|
+
kubernetesChartNames: [],
|
|
311
|
+
hasCollectorReceiver: true,
|
|
312
|
+
deployment: "server",
|
|
313
|
+
engineMetrics: RECEIVER,
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
system: "ibm.informix",
|
|
317
|
+
displayName: "IBM Informix",
|
|
318
|
+
aliases: ["informix"],
|
|
319
|
+
defaultPort: 9088,
|
|
320
|
+
receiverTypes: [],
|
|
321
|
+
receiverMetricPrefixes: [],
|
|
322
|
+
imageRepositories: ["informix-developer-database"],
|
|
323
|
+
kubernetesChartNames: [],
|
|
324
|
+
hasCollectorReceiver: false,
|
|
325
|
+
deployment: "server",
|
|
326
|
+
engineMetrics: {
|
|
327
|
+
kind: "none",
|
|
328
|
+
reason:
|
|
329
|
+
"The collector has no Informix receiver; export Informix's own statistics (onstat, the sysmaster database) and stamp them with this database's identity.",
|
|
330
|
+
},
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
system: "ibm.netezza",
|
|
334
|
+
displayName: "IBM Netezza",
|
|
335
|
+
aliases: ["netezza"],
|
|
336
|
+
defaultPort: 5480,
|
|
337
|
+
receiverTypes: [],
|
|
338
|
+
receiverMetricPrefixes: [],
|
|
339
|
+
imageRepositories: [],
|
|
340
|
+
kubernetesChartNames: [],
|
|
341
|
+
hasCollectorReceiver: false,
|
|
342
|
+
deployment: "server",
|
|
343
|
+
engineMetrics: {
|
|
344
|
+
kind: "none",
|
|
345
|
+
reason:
|
|
346
|
+
"The collector has no Netezza receiver; use the appliance's own monitoring and stamp its data with this database's identity.",
|
|
347
|
+
},
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
system: "teradata",
|
|
351
|
+
displayName: "Teradata",
|
|
352
|
+
aliases: [],
|
|
353
|
+
defaultPort: 1025,
|
|
354
|
+
receiverTypes: [],
|
|
355
|
+
receiverMetricPrefixes: [],
|
|
356
|
+
imageRepositories: [],
|
|
357
|
+
kubernetesChartNames: [],
|
|
358
|
+
hasCollectorReceiver: false,
|
|
359
|
+
deployment: "server",
|
|
360
|
+
engineMetrics: {
|
|
361
|
+
kind: "none",
|
|
362
|
+
reason:
|
|
363
|
+
"The collector has no Teradata receiver; export Teradata's own resource usage (DBQL, ResUsage) and stamp it with this database's identity.",
|
|
364
|
+
},
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
system: "sap.maxdb",
|
|
368
|
+
displayName: "SAP MaxDB",
|
|
369
|
+
aliases: ["maxdb"],
|
|
370
|
+
defaultPort: 7210,
|
|
371
|
+
receiverTypes: [],
|
|
372
|
+
receiverMetricPrefixes: [],
|
|
373
|
+
imageRepositories: [],
|
|
374
|
+
kubernetesChartNames: [],
|
|
375
|
+
hasCollectorReceiver: false,
|
|
376
|
+
deployment: "server",
|
|
377
|
+
engineMetrics: {
|
|
378
|
+
kind: "none",
|
|
379
|
+
reason:
|
|
380
|
+
"The collector has no MaxDB receiver; export MaxDB's own statistics and stamp them with this database's identity.",
|
|
381
|
+
},
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
system: "sybase",
|
|
385
|
+
displayName: "SAP ASE (Sybase)",
|
|
386
|
+
aliases: ["sap.ase"],
|
|
387
|
+
defaultPort: 5000,
|
|
388
|
+
receiverTypes: [],
|
|
389
|
+
receiverMetricPrefixes: [],
|
|
390
|
+
imageRepositories: [],
|
|
391
|
+
kubernetesChartNames: [],
|
|
392
|
+
hasCollectorReceiver: false,
|
|
393
|
+
deployment: "server",
|
|
394
|
+
engineMetrics: {
|
|
395
|
+
kind: "none",
|
|
396
|
+
reason:
|
|
397
|
+
"The collector has no SAP ASE receiver; export the monitoring tables (MDA tables) and stamp them with this database's identity.",
|
|
398
|
+
},
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
system: "intersystems.cache",
|
|
402
|
+
displayName: "InterSystems IRIS / Caché",
|
|
403
|
+
aliases: ["cache", "intersystems_cache"],
|
|
404
|
+
defaultPort: 1972,
|
|
405
|
+
receiverTypes: [],
|
|
406
|
+
receiverMetricPrefixes: [],
|
|
407
|
+
imageRepositories: [
|
|
408
|
+
"intersystems/iris",
|
|
409
|
+
"intersystems/iris-community",
|
|
410
|
+
"intersystemsdc/iris-community",
|
|
411
|
+
],
|
|
412
|
+
kubernetesChartNames: [],
|
|
413
|
+
hasCollectorReceiver: false,
|
|
414
|
+
deployment: "server",
|
|
415
|
+
engineMetrics: {
|
|
416
|
+
kind: "prometheus",
|
|
417
|
+
port: 52773,
|
|
418
|
+
path: "/api/monitor/metrics",
|
|
419
|
+
note: "IRIS serves this on its web server port (Caché has no such endpoint).",
|
|
420
|
+
},
|
|
421
|
+
},
|
|
422
|
+
{
|
|
423
|
+
system: "actian.ingres",
|
|
424
|
+
displayName: "Actian Ingres",
|
|
425
|
+
aliases: ["ingres"],
|
|
426
|
+
// The listen port derives from the installation code; there is no one default.
|
|
427
|
+
defaultPort: null,
|
|
428
|
+
receiverTypes: [],
|
|
429
|
+
receiverMetricPrefixes: [],
|
|
430
|
+
imageRepositories: [],
|
|
431
|
+
kubernetesChartNames: [],
|
|
432
|
+
hasCollectorReceiver: false,
|
|
433
|
+
deployment: "server",
|
|
434
|
+
engineMetrics: {
|
|
435
|
+
kind: "none",
|
|
436
|
+
reason:
|
|
437
|
+
"The collector has no Ingres receiver; export Ingres's own statistics and stamp them with this database's identity.",
|
|
438
|
+
},
|
|
439
|
+
},
|
|
440
|
+
{
|
|
441
|
+
system: "softwareag.adabas",
|
|
442
|
+
displayName: "Software AG Adabas",
|
|
443
|
+
aliases: ["adabas"],
|
|
444
|
+
defaultPort: null,
|
|
445
|
+
receiverTypes: [],
|
|
446
|
+
receiverMetricPrefixes: [],
|
|
447
|
+
imageRepositories: [],
|
|
448
|
+
kubernetesChartNames: [],
|
|
449
|
+
hasCollectorReceiver: false,
|
|
450
|
+
deployment: "server",
|
|
451
|
+
engineMetrics: {
|
|
452
|
+
kind: "none",
|
|
453
|
+
reason:
|
|
454
|
+
"The collector has no Adabas receiver; export Adabas's own statistics and stamp them with this database's identity.",
|
|
455
|
+
},
|
|
456
|
+
},
|
|
457
|
+
{
|
|
458
|
+
system: "firebirdsql",
|
|
459
|
+
displayName: "Firebird",
|
|
460
|
+
aliases: ["firebird"],
|
|
461
|
+
defaultPort: 3050,
|
|
462
|
+
receiverTypes: [],
|
|
463
|
+
receiverMetricPrefixes: [],
|
|
464
|
+
imageRepositories: ["firebirdsql/firebird", "jacobalberty/firebird"],
|
|
465
|
+
kubernetesChartNames: [],
|
|
466
|
+
hasCollectorReceiver: false,
|
|
467
|
+
deployment: "server",
|
|
468
|
+
engineMetrics: {
|
|
469
|
+
kind: "none",
|
|
470
|
+
reason:
|
|
471
|
+
"The collector has no Firebird receiver; export the MON$ monitoring tables and stamp them with this database's identity.",
|
|
472
|
+
},
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
system: "interbase",
|
|
476
|
+
displayName: "InterBase",
|
|
477
|
+
aliases: [],
|
|
478
|
+
defaultPort: 3050,
|
|
479
|
+
receiverTypes: [],
|
|
480
|
+
receiverMetricPrefixes: [],
|
|
481
|
+
imageRepositories: [],
|
|
482
|
+
kubernetesChartNames: [],
|
|
483
|
+
hasCollectorReceiver: false,
|
|
484
|
+
// Firebird forked from InterBase 6 and keeps its wire protocol.
|
|
485
|
+
family: "firebirdsql",
|
|
486
|
+
deployment: "server",
|
|
487
|
+
engineMetrics: {
|
|
488
|
+
kind: "none",
|
|
489
|
+
reason:
|
|
490
|
+
"The collector has no InterBase receiver; export the TMP$ monitoring tables and stamp them with this database's identity.",
|
|
491
|
+
},
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
system: "progress",
|
|
495
|
+
displayName: "Progress OpenEdge",
|
|
496
|
+
aliases: [],
|
|
497
|
+
// The SQL broker port is chosen per database; there is no one default.
|
|
498
|
+
defaultPort: null,
|
|
499
|
+
receiverTypes: [],
|
|
500
|
+
receiverMetricPrefixes: [],
|
|
501
|
+
imageRepositories: [],
|
|
502
|
+
kubernetesChartNames: [],
|
|
503
|
+
hasCollectorReceiver: false,
|
|
504
|
+
deployment: "server",
|
|
505
|
+
engineMetrics: {
|
|
506
|
+
kind: "none",
|
|
507
|
+
reason:
|
|
508
|
+
"The collector has no OpenEdge receiver; export the virtual system tables (_Connect, _ActSummary) and stamp them with this database's identity.",
|
|
509
|
+
},
|
|
510
|
+
},
|
|
511
|
+
{
|
|
512
|
+
system: "pervasive",
|
|
513
|
+
displayName: "Actian Zen (Pervasive PSQL)",
|
|
514
|
+
aliases: [],
|
|
515
|
+
defaultPort: 1583,
|
|
516
|
+
receiverTypes: [],
|
|
517
|
+
receiverMetricPrefixes: [],
|
|
518
|
+
imageRepositories: [],
|
|
519
|
+
kubernetesChartNames: [],
|
|
520
|
+
hasCollectorReceiver: false,
|
|
521
|
+
deployment: "server",
|
|
522
|
+
engineMetrics: {
|
|
523
|
+
kind: "none",
|
|
524
|
+
reason:
|
|
525
|
+
"The collector has no Actian Zen receiver; export its monitor statistics and stamp them with this database's identity.",
|
|
526
|
+
},
|
|
527
|
+
},
|
|
528
|
+
{
|
|
529
|
+
system: "filemaker",
|
|
530
|
+
displayName: "Claris FileMaker",
|
|
531
|
+
aliases: [],
|
|
532
|
+
// The xDBC (ODBC / JDBC) listener SQL clients connect to.
|
|
533
|
+
defaultPort: 2399,
|
|
534
|
+
receiverTypes: [],
|
|
535
|
+
receiverMetricPrefixes: [],
|
|
536
|
+
imageRepositories: [],
|
|
537
|
+
kubernetesChartNames: [],
|
|
538
|
+
hasCollectorReceiver: false,
|
|
539
|
+
deployment: "server",
|
|
540
|
+
engineMetrics: {
|
|
541
|
+
kind: "none",
|
|
542
|
+
reason:
|
|
543
|
+
"The collector has no FileMaker receiver; export FileMaker Server's statistics (its Admin API) and stamp them with this database's identity.",
|
|
544
|
+
},
|
|
545
|
+
},
|
|
546
|
+
|
|
547
|
+
// ---- distributed SQL, PostgreSQL and MySQL wire-compatible ------------
|
|
548
|
+
{
|
|
549
|
+
system: "cockroachdb",
|
|
550
|
+
displayName: "CockroachDB",
|
|
551
|
+
aliases: ["cockroach"],
|
|
552
|
+
defaultPort: 26257,
|
|
553
|
+
receiverTypes: [],
|
|
554
|
+
receiverMetricPrefixes: [],
|
|
555
|
+
imageRepositories: ["cockroachdb/cockroach"],
|
|
556
|
+
kubernetesChartNames: ["cockroachdb"],
|
|
557
|
+
hasCollectorReceiver: false,
|
|
558
|
+
// Applications reach it with a PostgreSQL driver.
|
|
559
|
+
family: "postgresql",
|
|
560
|
+
deployment: "server",
|
|
561
|
+
engineMetrics: { kind: "prometheus", port: 8080, path: "/_status/vars" },
|
|
562
|
+
},
|
|
563
|
+
{
|
|
564
|
+
system: "yugabytedb",
|
|
565
|
+
displayName: "YugabyteDB",
|
|
566
|
+
aliases: ["yugabyte"],
|
|
567
|
+
// YSQL, the PostgreSQL-compatible API.
|
|
568
|
+
defaultPort: 5433,
|
|
569
|
+
receiverTypes: [],
|
|
570
|
+
receiverMetricPrefixes: [],
|
|
571
|
+
imageRepositories: ["yugabytedb/yugabyte"],
|
|
572
|
+
kubernetesChartNames: [],
|
|
573
|
+
hasCollectorReceiver: false,
|
|
574
|
+
family: "postgresql",
|
|
575
|
+
deployment: "server",
|
|
576
|
+
engineMetrics: {
|
|
577
|
+
kind: "prometheus",
|
|
578
|
+
port: 9000,
|
|
579
|
+
path: "/prometheus-metrics",
|
|
580
|
+
note: "Served by every yb-tserver (yb-master serves the same path on port 7000).",
|
|
581
|
+
},
|
|
582
|
+
},
|
|
583
|
+
{
|
|
584
|
+
system: "aws.redshift",
|
|
585
|
+
displayName: "Amazon Redshift",
|
|
586
|
+
aliases: ["redshift"],
|
|
587
|
+
defaultPort: 5439,
|
|
588
|
+
receiverTypes: [],
|
|
589
|
+
receiverMetricPrefixes: [],
|
|
590
|
+
imageRepositories: [],
|
|
591
|
+
kubernetesChartNames: [],
|
|
592
|
+
hasCollectorReceiver: false,
|
|
593
|
+
// Applications reach it with a PostgreSQL driver.
|
|
594
|
+
family: "postgresql",
|
|
595
|
+
// A cluster (or workgroup) endpoint names one warehouse.
|
|
596
|
+
deployment: "server",
|
|
597
|
+
engineMetrics: AWS_CLOUDWATCH_METRICS,
|
|
598
|
+
},
|
|
599
|
+
{
|
|
600
|
+
system: "greenplum",
|
|
601
|
+
displayName: "Greenplum",
|
|
602
|
+
aliases: [],
|
|
603
|
+
defaultPort: 5432,
|
|
604
|
+
receiverTypes: [],
|
|
605
|
+
receiverMetricPrefixes: [],
|
|
606
|
+
imageRepositories: [],
|
|
607
|
+
kubernetesChartNames: [],
|
|
608
|
+
hasCollectorReceiver: false,
|
|
609
|
+
family: "postgresql",
|
|
610
|
+
deployment: "server",
|
|
611
|
+
engineMetrics: {
|
|
612
|
+
kind: "none",
|
|
613
|
+
reason:
|
|
614
|
+
"The collector has no Greenplum receiver; export the gp_toolkit views and stamp them with this database's identity.",
|
|
615
|
+
},
|
|
616
|
+
},
|
|
617
|
+
{
|
|
618
|
+
system: "questdb",
|
|
619
|
+
displayName: "QuestDB",
|
|
620
|
+
aliases: [],
|
|
621
|
+
// The PostgreSQL wire protocol port applications query.
|
|
622
|
+
defaultPort: 8812,
|
|
623
|
+
receiverTypes: [],
|
|
624
|
+
receiverMetricPrefixes: [],
|
|
625
|
+
imageRepositories: ["questdb/questdb"],
|
|
626
|
+
kubernetesChartNames: ["questdb"],
|
|
627
|
+
hasCollectorReceiver: false,
|
|
628
|
+
family: "postgresql",
|
|
629
|
+
deployment: "server",
|
|
630
|
+
engineMetrics: {
|
|
631
|
+
kind: "prometheus",
|
|
632
|
+
port: 9003,
|
|
633
|
+
path: "/metrics",
|
|
634
|
+
note: "Set `metrics.enabled=true` in server.conf (or QDB_METRICS_ENABLED=true).",
|
|
635
|
+
},
|
|
636
|
+
},
|
|
637
|
+
{
|
|
638
|
+
system: "tidb",
|
|
639
|
+
displayName: "TiDB",
|
|
640
|
+
aliases: [],
|
|
641
|
+
defaultPort: 4000,
|
|
642
|
+
receiverTypes: [],
|
|
643
|
+
receiverMetricPrefixes: [],
|
|
644
|
+
imageRepositories: ["pingcap/tidb"],
|
|
645
|
+
kubernetesChartNames: [],
|
|
646
|
+
hasCollectorReceiver: false,
|
|
647
|
+
// Applications reach it with a MySQL driver.
|
|
648
|
+
family: "mysql",
|
|
649
|
+
versionPattern: /tidb/i,
|
|
650
|
+
deployment: "server",
|
|
651
|
+
engineMetrics: {
|
|
652
|
+
kind: "prometheus",
|
|
653
|
+
port: 10080,
|
|
654
|
+
path: "/metrics",
|
|
655
|
+
note: "The tidb-server status port.",
|
|
656
|
+
},
|
|
657
|
+
},
|
|
658
|
+
{
|
|
659
|
+
system: "vitess",
|
|
660
|
+
displayName: "Vitess",
|
|
661
|
+
aliases: [],
|
|
662
|
+
// vtgate's MySQL port, as the Vitess operator and PlanetScale serve it.
|
|
663
|
+
defaultPort: 3306,
|
|
664
|
+
receiverTypes: [],
|
|
665
|
+
receiverMetricPrefixes: [],
|
|
666
|
+
imageRepositories: ["vitess/vtgate"],
|
|
667
|
+
kubernetesChartNames: [],
|
|
668
|
+
hasCollectorReceiver: false,
|
|
669
|
+
family: "mysql",
|
|
670
|
+
versionPattern: /vitess/i,
|
|
671
|
+
deployment: "server",
|
|
672
|
+
engineMetrics: {
|
|
673
|
+
kind: "prometheus",
|
|
674
|
+
port: 15000,
|
|
675
|
+
path: "/metrics",
|
|
676
|
+
note: "Served on each component's web port (`--port`); scrape vtgate and the vttablets.",
|
|
677
|
+
},
|
|
678
|
+
},
|
|
679
|
+
{
|
|
680
|
+
system: "singlestore",
|
|
681
|
+
displayName: "SingleStore",
|
|
682
|
+
aliases: ["memsql"],
|
|
683
|
+
defaultPort: 3306,
|
|
684
|
+
receiverTypes: [],
|
|
685
|
+
receiverMetricPrefixes: [],
|
|
686
|
+
imageRepositories: [
|
|
687
|
+
"singlestore/cluster-in-a-box",
|
|
688
|
+
"singlestore/node",
|
|
689
|
+
"memsql/cluster-in-a-box",
|
|
690
|
+
],
|
|
691
|
+
kubernetesChartNames: [],
|
|
692
|
+
hasCollectorReceiver: false,
|
|
693
|
+
family: "mysql",
|
|
694
|
+
deployment: "server",
|
|
695
|
+
engineMetrics: {
|
|
696
|
+
kind: "prometheus",
|
|
697
|
+
port: 9104,
|
|
698
|
+
path: "/metrics",
|
|
699
|
+
note: "Start the exporter on the master aggregator (`SET GLOBAL exporter_port = 9104`).",
|
|
700
|
+
},
|
|
701
|
+
},
|
|
702
|
+
{
|
|
703
|
+
system: "oceanbase",
|
|
704
|
+
displayName: "OceanBase",
|
|
705
|
+
aliases: [],
|
|
706
|
+
defaultPort: 2881,
|
|
707
|
+
receiverTypes: [],
|
|
708
|
+
receiverMetricPrefixes: [],
|
|
709
|
+
imageRepositories: ["oceanbase/oceanbase-ce"],
|
|
710
|
+
kubernetesChartNames: [],
|
|
711
|
+
hasCollectorReceiver: false,
|
|
712
|
+
family: "mysql",
|
|
713
|
+
versionPattern: /oceanbase/i,
|
|
714
|
+
deployment: "server",
|
|
715
|
+
engineMetrics: {
|
|
716
|
+
kind: "none",
|
|
717
|
+
reason:
|
|
718
|
+
"The collector has no OceanBase receiver; scrape the Prometheus endpoint of OceanBase's obagent with the `prometheus` receiver and stamp it with this database's identity.",
|
|
719
|
+
},
|
|
720
|
+
},
|
|
721
|
+
{
|
|
722
|
+
system: "starrocks",
|
|
723
|
+
displayName: "StarRocks",
|
|
724
|
+
aliases: [],
|
|
725
|
+
// The frontend's MySQL protocol port.
|
|
726
|
+
defaultPort: 9030,
|
|
727
|
+
receiverTypes: [],
|
|
728
|
+
receiverMetricPrefixes: [],
|
|
729
|
+
imageRepositories: ["starrocks/allin1-ubuntu", "starrocks/fe-ubuntu"],
|
|
730
|
+
kubernetesChartNames: [],
|
|
731
|
+
hasCollectorReceiver: false,
|
|
732
|
+
family: "mysql",
|
|
733
|
+
deployment: "server",
|
|
734
|
+
engineMetrics: {
|
|
735
|
+
kind: "prometheus",
|
|
736
|
+
port: 8030,
|
|
737
|
+
path: "/metrics",
|
|
738
|
+
note: "The frontend's HTTP port (backends serve the same path on 8040).",
|
|
739
|
+
},
|
|
740
|
+
},
|
|
741
|
+
{
|
|
742
|
+
system: "doris",
|
|
743
|
+
displayName: "Apache Doris",
|
|
744
|
+
aliases: [],
|
|
745
|
+
defaultPort: 9030,
|
|
746
|
+
receiverTypes: [],
|
|
747
|
+
receiverMetricPrefixes: [],
|
|
748
|
+
imageRepositories: ["apache/doris"],
|
|
749
|
+
kubernetesChartNames: [],
|
|
750
|
+
hasCollectorReceiver: false,
|
|
751
|
+
family: "mysql",
|
|
752
|
+
deployment: "server",
|
|
753
|
+
engineMetrics: {
|
|
754
|
+
kind: "prometheus",
|
|
755
|
+
port: 8030,
|
|
756
|
+
path: "/metrics",
|
|
757
|
+
note: "The frontend's HTTP port (backends serve the same path on 8040).",
|
|
758
|
+
},
|
|
759
|
+
},
|
|
760
|
+
{
|
|
761
|
+
system: "gcp.spanner",
|
|
762
|
+
displayName: "Cloud Spanner",
|
|
763
|
+
aliases: ["spanner"],
|
|
764
|
+
defaultPort: 443,
|
|
765
|
+
receiverTypes: ["googlecloudspanner"],
|
|
766
|
+
receiverMetricPrefixes: ["database/spanner/"],
|
|
767
|
+
imageRepositories: [],
|
|
768
|
+
kubernetesChartNames: [],
|
|
769
|
+
hasCollectorReceiver: true,
|
|
770
|
+
// spanner.googleapis.com serves every instance.
|
|
771
|
+
deployment: "cloud-api",
|
|
772
|
+
engineMetrics: RECEIVER,
|
|
773
|
+
},
|
|
774
|
+
|
|
775
|
+
// ---- warehouses, lakehouses and query engines --------------------------
|
|
776
|
+
{
|
|
777
|
+
system: "snowflake",
|
|
778
|
+
displayName: "Snowflake",
|
|
779
|
+
aliases: [],
|
|
780
|
+
defaultPort: 443,
|
|
781
|
+
receiverTypes: ["snowflake"],
|
|
782
|
+
receiverMetricPrefixes: ["snowflake."],
|
|
783
|
+
imageRepositories: [],
|
|
784
|
+
kubernetesChartNames: [],
|
|
785
|
+
hasCollectorReceiver: true,
|
|
786
|
+
// `<account>.snowflakecomputing.com` names one account.
|
|
787
|
+
deployment: "server",
|
|
788
|
+
engineMetrics: RECEIVER,
|
|
789
|
+
},
|
|
790
|
+
{
|
|
791
|
+
system: "bigquery",
|
|
792
|
+
displayName: "Google BigQuery",
|
|
793
|
+
aliases: ["gcp.bigquery"],
|
|
794
|
+
defaultPort: 443,
|
|
795
|
+
receiverTypes: [],
|
|
796
|
+
receiverMetricPrefixes: [],
|
|
797
|
+
imageRepositories: [],
|
|
798
|
+
kubernetesChartNames: [],
|
|
799
|
+
hasCollectorReceiver: false,
|
|
800
|
+
// bigquery.googleapis.com serves every project.
|
|
801
|
+
deployment: "cloud-api",
|
|
802
|
+
engineMetrics: GOOGLE_CLOUD_MONITORING,
|
|
803
|
+
},
|
|
804
|
+
{
|
|
805
|
+
system: "databricks",
|
|
806
|
+
displayName: "Databricks",
|
|
807
|
+
aliases: [],
|
|
808
|
+
defaultPort: 443,
|
|
809
|
+
receiverTypes: [],
|
|
810
|
+
receiverMetricPrefixes: [],
|
|
811
|
+
imageRepositories: [],
|
|
812
|
+
kubernetesChartNames: [],
|
|
813
|
+
hasCollectorReceiver: false,
|
|
814
|
+
// `<workspace>.cloud.databricks.com` names one workspace.
|
|
815
|
+
deployment: "server",
|
|
816
|
+
engineMetrics: {
|
|
817
|
+
kind: "none",
|
|
818
|
+
reason:
|
|
819
|
+
"The collector has no Databricks receiver; read warehouse and query history from the workspace's system tables and stamp it with this database's identity.",
|
|
820
|
+
},
|
|
821
|
+
},
|
|
822
|
+
{
|
|
823
|
+
system: "vertica",
|
|
824
|
+
displayName: "Vertica",
|
|
825
|
+
aliases: [],
|
|
826
|
+
defaultPort: 5433,
|
|
827
|
+
receiverTypes: [],
|
|
828
|
+
receiverMetricPrefixes: [],
|
|
829
|
+
imageRepositories: ["vertica/vertica-ce"],
|
|
830
|
+
kubernetesChartNames: [],
|
|
831
|
+
hasCollectorReceiver: false,
|
|
832
|
+
deployment: "server",
|
|
833
|
+
engineMetrics: {
|
|
834
|
+
kind: "none",
|
|
835
|
+
reason:
|
|
836
|
+
"The collector has no Vertica receiver; export the v_monitor schema (or scrape a Vertica Prometheus exporter) and stamp it with this database's identity.",
|
|
837
|
+
},
|
|
838
|
+
},
|
|
839
|
+
{
|
|
840
|
+
system: "clickhouse",
|
|
841
|
+
displayName: "ClickHouse",
|
|
842
|
+
aliases: [],
|
|
843
|
+
defaultPort: 9000,
|
|
844
|
+
receiverTypes: [],
|
|
845
|
+
receiverMetricPrefixes: [],
|
|
846
|
+
imageRepositories: [
|
|
847
|
+
"clickhouse-server",
|
|
848
|
+
"clickhouse/clickhouse-server",
|
|
849
|
+
"yandex/clickhouse-server",
|
|
850
|
+
"altinity/clickhouse-server",
|
|
851
|
+
"bitnami/clickhouse",
|
|
852
|
+
],
|
|
853
|
+
kubernetesChartNames: ["clickhouse"],
|
|
854
|
+
hasCollectorReceiver: false,
|
|
855
|
+
deployment: "server",
|
|
856
|
+
engineMetrics: {
|
|
857
|
+
kind: "prometheus",
|
|
858
|
+
port: 9363,
|
|
859
|
+
path: "/metrics",
|
|
860
|
+
note: "Enable the `<prometheus>` section of the server config.",
|
|
861
|
+
},
|
|
862
|
+
},
|
|
863
|
+
{
|
|
864
|
+
system: "hive",
|
|
865
|
+
displayName: "Apache Hive",
|
|
866
|
+
aliases: [],
|
|
867
|
+
// HiveServer2's Thrift port.
|
|
868
|
+
defaultPort: 10000,
|
|
869
|
+
receiverTypes: [],
|
|
870
|
+
receiverMetricPrefixes: [],
|
|
871
|
+
imageRepositories: ["apache/hive"],
|
|
872
|
+
kubernetesChartNames: [],
|
|
873
|
+
hasCollectorReceiver: false,
|
|
874
|
+
deployment: "server",
|
|
875
|
+
engineMetrics: { kind: "none", reason: `HiveServer2 ${JMX_ONLY}.` },
|
|
876
|
+
},
|
|
877
|
+
{
|
|
878
|
+
system: "impala",
|
|
879
|
+
displayName: "Apache Impala",
|
|
880
|
+
aliases: [],
|
|
881
|
+
// The HiveServer2-protocol port JDBC / ODBC clients use.
|
|
882
|
+
defaultPort: 21050,
|
|
883
|
+
receiverTypes: [],
|
|
884
|
+
receiverMetricPrefixes: [],
|
|
885
|
+
imageRepositories: [],
|
|
886
|
+
kubernetesChartNames: [],
|
|
887
|
+
hasCollectorReceiver: false,
|
|
888
|
+
deployment: "server",
|
|
889
|
+
engineMetrics: {
|
|
890
|
+
kind: "none",
|
|
891
|
+
reason:
|
|
892
|
+
"The collector has no Impala receiver; export the daemons' metrics from their debug web UI (/metrics?json) and stamp them with this database's identity.",
|
|
893
|
+
},
|
|
894
|
+
},
|
|
895
|
+
{
|
|
896
|
+
system: "trino",
|
|
897
|
+
displayName: "Trino",
|
|
898
|
+
aliases: [],
|
|
899
|
+
defaultPort: 8080,
|
|
900
|
+
receiverTypes: [],
|
|
901
|
+
receiverMetricPrefixes: [],
|
|
902
|
+
imageRepositories: ["trinodb/trino"],
|
|
903
|
+
kubernetesChartNames: ["trino"],
|
|
904
|
+
hasCollectorReceiver: false,
|
|
905
|
+
deployment: "server",
|
|
906
|
+
engineMetrics: {
|
|
907
|
+
kind: "prometheus",
|
|
908
|
+
port: 8080,
|
|
909
|
+
path: "/metrics",
|
|
910
|
+
note: "Served by the coordinator; send `X-Trino-User` if authentication is on.",
|
|
911
|
+
},
|
|
912
|
+
},
|
|
913
|
+
{
|
|
914
|
+
system: "presto",
|
|
915
|
+
displayName: "Presto",
|
|
916
|
+
aliases: [],
|
|
917
|
+
defaultPort: 8080,
|
|
918
|
+
receiverTypes: [],
|
|
919
|
+
receiverMetricPrefixes: [],
|
|
920
|
+
imageRepositories: ["prestodb/presto"],
|
|
921
|
+
kubernetesChartNames: [],
|
|
922
|
+
hasCollectorReceiver: false,
|
|
923
|
+
deployment: "server",
|
|
924
|
+
engineMetrics: { kind: "none", reason: `Presto ${JMX_ONLY}.` },
|
|
925
|
+
},
|
|
926
|
+
{
|
|
927
|
+
system: "druid",
|
|
928
|
+
displayName: "Apache Druid",
|
|
929
|
+
aliases: [],
|
|
930
|
+
// The router, which serves Druid SQL.
|
|
931
|
+
defaultPort: 8888,
|
|
932
|
+
receiverTypes: [],
|
|
933
|
+
receiverMetricPrefixes: [],
|
|
934
|
+
imageRepositories: ["apache/druid"],
|
|
935
|
+
kubernetesChartNames: ["druid"],
|
|
936
|
+
hasCollectorReceiver: false,
|
|
937
|
+
deployment: "server",
|
|
938
|
+
engineMetrics: {
|
|
939
|
+
kind: "none",
|
|
940
|
+
reason:
|
|
941
|
+
"The collector has no Druid receiver; load Druid's `prometheus-emitter` extension, scrape the port you give it with the `prometheus` receiver and stamp it with this database's identity.",
|
|
942
|
+
},
|
|
943
|
+
},
|
|
944
|
+
{
|
|
945
|
+
system: "pinot",
|
|
946
|
+
displayName: "Apache Pinot",
|
|
947
|
+
aliases: [],
|
|
948
|
+
// The broker's query port.
|
|
949
|
+
defaultPort: 8099,
|
|
950
|
+
receiverTypes: [],
|
|
951
|
+
receiverMetricPrefixes: [],
|
|
952
|
+
imageRepositories: ["apachepinot/pinot"],
|
|
953
|
+
kubernetesChartNames: ["pinot"],
|
|
954
|
+
hasCollectorReceiver: false,
|
|
955
|
+
deployment: "server",
|
|
956
|
+
engineMetrics: { kind: "none", reason: `Pinot ${JMX_ONLY}.` },
|
|
957
|
+
},
|
|
958
|
+
|
|
959
|
+
// ---- key-value stores and caches -----------------------------------------
|
|
960
|
+
{
|
|
961
|
+
system: "redis",
|
|
962
|
+
displayName: "Redis",
|
|
963
|
+
aliases: [],
|
|
964
|
+
defaultPort: 6379,
|
|
965
|
+
receiverTypes: ["redis"],
|
|
966
|
+
receiverMetricPrefixes: ["redis."],
|
|
967
|
+
imageRepositories: [
|
|
968
|
+
"redis",
|
|
969
|
+
"redis-stack-server",
|
|
970
|
+
"redis/redis-stack",
|
|
971
|
+
"redis/redis-stack-server",
|
|
972
|
+
"bitnami/redis",
|
|
973
|
+
"bitnami/redis-cluster",
|
|
974
|
+
"opstree/redis",
|
|
975
|
+
],
|
|
976
|
+
kubernetesChartNames: ["redis", "redis-cluster"],
|
|
977
|
+
hasCollectorReceiver: true,
|
|
978
|
+
deployment: "server",
|
|
979
|
+
engineMetrics: RECEIVER,
|
|
980
|
+
},
|
|
981
|
+
{
|
|
982
|
+
system: "valkey",
|
|
983
|
+
displayName: "Valkey",
|
|
984
|
+
aliases: [],
|
|
985
|
+
defaultPort: 6379,
|
|
986
|
+
receiverTypes: ["redis"],
|
|
987
|
+
receiverMetricPrefixes: ["redis."],
|
|
988
|
+
// The bare basename also covers Red Hat's rhel10/valkey-8.
|
|
989
|
+
imageRepositories: ["valkey", "bitnami/valkey-cluster"],
|
|
990
|
+
kubernetesChartNames: ["valkey", "valkey-cluster"],
|
|
991
|
+
hasCollectorReceiver: true,
|
|
992
|
+
family: "redis",
|
|
993
|
+
// INFO: redis_version:7.2.4 next to valkey_version:8.1.10.
|
|
994
|
+
compatibilityVersionAttributes: ["redis.version"],
|
|
995
|
+
deployment: "server",
|
|
996
|
+
engineMetrics: RECEIVER,
|
|
997
|
+
},
|
|
998
|
+
{
|
|
999
|
+
system: "keydb",
|
|
1000
|
+
displayName: "KeyDB",
|
|
1001
|
+
aliases: [],
|
|
1002
|
+
defaultPort: 6379,
|
|
1003
|
+
receiverTypes: ["redis"],
|
|
1004
|
+
receiverMetricPrefixes: ["redis."],
|
|
1005
|
+
imageRepositories: ["eqalpha/keydb"],
|
|
1006
|
+
kubernetesChartNames: ["keydb"],
|
|
1007
|
+
hasCollectorReceiver: true,
|
|
1008
|
+
family: "redis",
|
|
1009
|
+
deployment: "server",
|
|
1010
|
+
engineMetrics: RECEIVER,
|
|
1011
|
+
},
|
|
1012
|
+
{
|
|
1013
|
+
system: "dragonfly",
|
|
1014
|
+
displayName: "Dragonfly",
|
|
1015
|
+
aliases: ["dragonflydb"],
|
|
1016
|
+
defaultPort: 6379,
|
|
1017
|
+
receiverTypes: ["redis"],
|
|
1018
|
+
receiverMetricPrefixes: ["redis."],
|
|
1019
|
+
imageRepositories: ["dragonflydb/dragonfly"],
|
|
1020
|
+
kubernetesChartNames: ["dragonfly"],
|
|
1021
|
+
hasCollectorReceiver: true,
|
|
1022
|
+
family: "redis",
|
|
1023
|
+
/*
|
|
1024
|
+
* INFO's redis_version is the Redis API level Dragonfly emulates; its
|
|
1025
|
+
* own release is dragonfly_version (df-v1.x).
|
|
1026
|
+
*/
|
|
1027
|
+
compatibilityVersionAttributes: ["redis.version"],
|
|
1028
|
+
deployment: "server",
|
|
1029
|
+
engineMetrics: RECEIVER,
|
|
1030
|
+
},
|
|
1031
|
+
{
|
|
1032
|
+
system: "memcached",
|
|
1033
|
+
displayName: "Memcached",
|
|
1034
|
+
aliases: [],
|
|
1035
|
+
defaultPort: 11211,
|
|
1036
|
+
receiverTypes: ["memcached"],
|
|
1037
|
+
receiverMetricPrefixes: ["memcached."],
|
|
1038
|
+
imageRepositories: ["memcached", "bitnami/memcached"],
|
|
1039
|
+
kubernetesChartNames: ["memcached"],
|
|
1040
|
+
hasCollectorReceiver: true,
|
|
1041
|
+
deployment: "server",
|
|
1042
|
+
engineMetrics: RECEIVER,
|
|
1043
|
+
},
|
|
1044
|
+
{
|
|
1045
|
+
system: "etcd",
|
|
1046
|
+
displayName: "etcd",
|
|
1047
|
+
aliases: [],
|
|
1048
|
+
defaultPort: 2379,
|
|
1049
|
+
receiverTypes: [],
|
|
1050
|
+
receiverMetricPrefixes: [],
|
|
1051
|
+
/*
|
|
1052
|
+
* Not the bare `etcd` basename: that is also the Kubernetes control
|
|
1053
|
+
* plane's own etcd (registry.k8s.io/etcd).
|
|
1054
|
+
*/
|
|
1055
|
+
imageRepositories: ["coreos/etcd", "etcd-development/etcd", "bitnami/etcd"],
|
|
1056
|
+
kubernetesChartNames: ["etcd"],
|
|
1057
|
+
hasCollectorReceiver: false,
|
|
1058
|
+
deployment: "server",
|
|
1059
|
+
engineMetrics: { kind: "prometheus", port: 2379, path: "/metrics" },
|
|
1060
|
+
},
|
|
1061
|
+
{
|
|
1062
|
+
system: "hazelcast",
|
|
1063
|
+
displayName: "Hazelcast",
|
|
1064
|
+
aliases: [],
|
|
1065
|
+
defaultPort: 5701,
|
|
1066
|
+
receiverTypes: [],
|
|
1067
|
+
receiverMetricPrefixes: [],
|
|
1068
|
+
imageRepositories: [
|
|
1069
|
+
"hazelcast/hazelcast",
|
|
1070
|
+
"hazelcast/hazelcast-enterprise",
|
|
1071
|
+
],
|
|
1072
|
+
kubernetesChartNames: ["hazelcast"],
|
|
1073
|
+
hasCollectorReceiver: false,
|
|
1074
|
+
deployment: "server",
|
|
1075
|
+
engineMetrics: {
|
|
1076
|
+
kind: "none",
|
|
1077
|
+
reason:
|
|
1078
|
+
"The collector has no Hazelcast receiver; set PROMETHEUS_PORT on the Hazelcast container (its image bundles the JMX exporter), scrape that port with the `prometheus` receiver and stamp it with this database's identity.",
|
|
1079
|
+
},
|
|
1080
|
+
},
|
|
1081
|
+
{
|
|
1082
|
+
system: "ignite",
|
|
1083
|
+
displayName: "Apache Ignite",
|
|
1084
|
+
aliases: [],
|
|
1085
|
+
// The thin-client port.
|
|
1086
|
+
defaultPort: 10800,
|
|
1087
|
+
receiverTypes: [],
|
|
1088
|
+
receiverMetricPrefixes: [],
|
|
1089
|
+
imageRepositories: ["apacheignite/ignite"],
|
|
1090
|
+
kubernetesChartNames: [],
|
|
1091
|
+
hasCollectorReceiver: false,
|
|
1092
|
+
deployment: "server",
|
|
1093
|
+
engineMetrics: { kind: "none", reason: `Ignite ${JMX_ONLY}.` },
|
|
1094
|
+
},
|
|
1095
|
+
{
|
|
1096
|
+
system: "aerospike",
|
|
1097
|
+
displayName: "Aerospike",
|
|
1098
|
+
aliases: [],
|
|
1099
|
+
defaultPort: 3000,
|
|
1100
|
+
receiverTypes: ["aerospike"],
|
|
1101
|
+
receiverMetricPrefixes: ["aerospike."],
|
|
1102
|
+
imageRepositories: [
|
|
1103
|
+
"aerospike/aerospike-server",
|
|
1104
|
+
"aerospike/aerospike-server-enterprise",
|
|
1105
|
+
],
|
|
1106
|
+
kubernetesChartNames: [],
|
|
1107
|
+
hasCollectorReceiver: true,
|
|
1108
|
+
deployment: "server",
|
|
1109
|
+
engineMetrics: RECEIVER,
|
|
1110
|
+
},
|
|
1111
|
+
{
|
|
1112
|
+
system: "riak",
|
|
1113
|
+
displayName: "Riak KV",
|
|
1114
|
+
aliases: [],
|
|
1115
|
+
// The Protocol Buffers port clients use (the HTTP API is 8098).
|
|
1116
|
+
defaultPort: 8087,
|
|
1117
|
+
receiverTypes: ["riak"],
|
|
1118
|
+
receiverMetricPrefixes: ["riak."],
|
|
1119
|
+
imageRepositories: ["basho/riak-kv"],
|
|
1120
|
+
kubernetesChartNames: [],
|
|
1121
|
+
hasCollectorReceiver: true,
|
|
1122
|
+
deployment: "server",
|
|
1123
|
+
engineMetrics: RECEIVER,
|
|
1124
|
+
},
|
|
1125
|
+
{
|
|
1126
|
+
system: "foundationdb",
|
|
1127
|
+
displayName: "FoundationDB",
|
|
1128
|
+
aliases: [],
|
|
1129
|
+
defaultPort: 4500,
|
|
1130
|
+
receiverTypes: [],
|
|
1131
|
+
receiverMetricPrefixes: [],
|
|
1132
|
+
imageRepositories: ["foundationdb/foundationdb"],
|
|
1133
|
+
kubernetesChartNames: [],
|
|
1134
|
+
hasCollectorReceiver: false,
|
|
1135
|
+
deployment: "server",
|
|
1136
|
+
engineMetrics: {
|
|
1137
|
+
kind: "none",
|
|
1138
|
+
reason:
|
|
1139
|
+
"The collector has no FoundationDB receiver; export `status json` (for example with a FoundationDB Prometheus exporter) and stamp it with this database's identity.",
|
|
1140
|
+
},
|
|
1141
|
+
},
|
|
1142
|
+
{
|
|
1143
|
+
system: "aws.dynamodb",
|
|
1144
|
+
displayName: "Amazon DynamoDB",
|
|
1145
|
+
aliases: ["dynamodb"],
|
|
1146
|
+
defaultPort: 443,
|
|
1147
|
+
receiverTypes: [],
|
|
1148
|
+
receiverMetricPrefixes: [],
|
|
1149
|
+
imageRepositories: [],
|
|
1150
|
+
kubernetesChartNames: [],
|
|
1151
|
+
hasCollectorReceiver: false,
|
|
1152
|
+
// dynamodb.<region>.amazonaws.com serves every table in the region.
|
|
1153
|
+
deployment: "cloud-api",
|
|
1154
|
+
engineMetrics: AWS_CLOUDWATCH_METRICS,
|
|
1155
|
+
},
|
|
1156
|
+
{
|
|
1157
|
+
system: "gcp.bigtable",
|
|
1158
|
+
displayName: "Cloud Bigtable",
|
|
1159
|
+
aliases: ["bigtable"],
|
|
1160
|
+
defaultPort: 443,
|
|
1161
|
+
receiverTypes: [],
|
|
1162
|
+
receiverMetricPrefixes: [],
|
|
1163
|
+
imageRepositories: [],
|
|
1164
|
+
kubernetesChartNames: [],
|
|
1165
|
+
hasCollectorReceiver: false,
|
|
1166
|
+
// bigtable.googleapis.com serves every instance.
|
|
1167
|
+
deployment: "cloud-api",
|
|
1168
|
+
engineMetrics: GOOGLE_CLOUD_MONITORING,
|
|
1169
|
+
},
|
|
1170
|
+
|
|
1171
|
+
// ---- wide-column --------------------------------------------------------
|
|
1172
|
+
{
|
|
1173
|
+
system: "cassandra",
|
|
1174
|
+
displayName: "Cassandra",
|
|
1175
|
+
aliases: [],
|
|
1176
|
+
defaultPort: 9042,
|
|
1177
|
+
receiverTypes: [],
|
|
1178
|
+
receiverMetricPrefixes: [],
|
|
1179
|
+
imageRepositories: [
|
|
1180
|
+
"cassandra",
|
|
1181
|
+
"bitnami/cassandra",
|
|
1182
|
+
"k8ssandra/cass-management-api",
|
|
1183
|
+
"datastax/dse-server",
|
|
1184
|
+
],
|
|
1185
|
+
kubernetesChartNames: ["cassandra"],
|
|
1186
|
+
hasCollectorReceiver: false,
|
|
1187
|
+
deployment: "server",
|
|
1188
|
+
engineMetrics: { kind: "none", reason: `Cassandra ${JMX_ONLY}.` },
|
|
1189
|
+
},
|
|
1190
|
+
{
|
|
1191
|
+
system: "scylladb",
|
|
1192
|
+
displayName: "ScyllaDB",
|
|
1193
|
+
aliases: ["scylla"],
|
|
1194
|
+
defaultPort: 9042,
|
|
1195
|
+
receiverTypes: [],
|
|
1196
|
+
receiverMetricPrefixes: [],
|
|
1197
|
+
imageRepositories: ["scylladb/scylla", "scylladb/scylla-enterprise"],
|
|
1198
|
+
kubernetesChartNames: ["scylla"],
|
|
1199
|
+
hasCollectorReceiver: false,
|
|
1200
|
+
// Applications reach it with a Cassandra (CQL) driver.
|
|
1201
|
+
family: "cassandra",
|
|
1202
|
+
deployment: "server",
|
|
1203
|
+
engineMetrics: { kind: "prometheus", port: 9180, path: "/metrics" },
|
|
1204
|
+
},
|
|
1205
|
+
{
|
|
1206
|
+
system: "hbase",
|
|
1207
|
+
displayName: "Apache HBase",
|
|
1208
|
+
aliases: [],
|
|
1209
|
+
// Clients find the cluster through ZooKeeper; there is no one server port.
|
|
1210
|
+
defaultPort: null,
|
|
1211
|
+
receiverTypes: [],
|
|
1212
|
+
receiverMetricPrefixes: [],
|
|
1213
|
+
imageRepositories: [],
|
|
1214
|
+
kubernetesChartNames: [],
|
|
1215
|
+
hasCollectorReceiver: false,
|
|
1216
|
+
deployment: "server",
|
|
1217
|
+
engineMetrics: {
|
|
1218
|
+
kind: "none",
|
|
1219
|
+
reason:
|
|
1220
|
+
"The collector has no HBase receiver; add `prometheus` to `hbase.http.metrics.servlets` and scrape each server's web UI port (/prometheus) with the `prometheus` receiver, stamped with this database's identity.",
|
|
1221
|
+
},
|
|
1222
|
+
},
|
|
1223
|
+
{
|
|
1224
|
+
system: "geode",
|
|
1225
|
+
displayName: "Apache Geode",
|
|
1226
|
+
aliases: [],
|
|
1227
|
+
// The locator clients connect to.
|
|
1228
|
+
defaultPort: 10334,
|
|
1229
|
+
receiverTypes: [],
|
|
1230
|
+
receiverMetricPrefixes: [],
|
|
1231
|
+
imageRepositories: ["apachegeode/geode"],
|
|
1232
|
+
kubernetesChartNames: [],
|
|
1233
|
+
hasCollectorReceiver: false,
|
|
1234
|
+
deployment: "server",
|
|
1235
|
+
engineMetrics: { kind: "none", reason: `Geode ${JMX_ONLY}.` },
|
|
1236
|
+
},
|
|
1237
|
+
|
|
1238
|
+
// ---- document and multi-model -------------------------------------------
|
|
1239
|
+
{
|
|
1240
|
+
system: "mongodb",
|
|
1241
|
+
displayName: "MongoDB",
|
|
1242
|
+
aliases: ["mongo"],
|
|
1243
|
+
defaultPort: 27017,
|
|
1244
|
+
receiverTypes: ["mongodb", "mongodbatlas"],
|
|
1245
|
+
receiverMetricPrefixes: ["mongodb.", "mongodbatlas."],
|
|
1246
|
+
imageRepositories: [
|
|
1247
|
+
"mongo",
|
|
1248
|
+
// The bare basename covers Software Collections' centos/mongodb-36-centos7.
|
|
1249
|
+
"mongodb",
|
|
1250
|
+
"mongodb/mongodb-community-server",
|
|
1251
|
+
"mongodb/mongodb-enterprise-server",
|
|
1252
|
+
"mongodb/mongodb-enterprise-database",
|
|
1253
|
+
"mongodb/mongodb-enterprise-database-ubi",
|
|
1254
|
+
"bitnami/mongodb",
|
|
1255
|
+
"bitnami/mongodb-sharded",
|
|
1256
|
+
"percona/percona-server-mongodb",
|
|
1257
|
+
],
|
|
1258
|
+
kubernetesChartNames: ["mongodb", "mongodb-sharded"],
|
|
1259
|
+
hasCollectorReceiver: true,
|
|
1260
|
+
deployment: "server",
|
|
1261
|
+
engineMetrics: RECEIVER,
|
|
1262
|
+
},
|
|
1263
|
+
{
|
|
1264
|
+
system: "ferretdb",
|
|
1265
|
+
displayName: "FerretDB",
|
|
1266
|
+
aliases: [],
|
|
1267
|
+
defaultPort: 27017,
|
|
1268
|
+
receiverTypes: [],
|
|
1269
|
+
receiverMetricPrefixes: [],
|
|
1270
|
+
imageRepositories: ["ferretdb/ferretdb"],
|
|
1271
|
+
kubernetesChartNames: [],
|
|
1272
|
+
hasCollectorReceiver: false,
|
|
1273
|
+
// Applications reach it with a MongoDB driver.
|
|
1274
|
+
family: "mongodb",
|
|
1275
|
+
deployment: "server",
|
|
1276
|
+
engineMetrics: {
|
|
1277
|
+
kind: "prometheus",
|
|
1278
|
+
port: 8088,
|
|
1279
|
+
path: "/debug/metrics",
|
|
1280
|
+
note: "FerretDB's debug handler; make it listen beyond localhost (`FERRETDB_DEBUG_ADDR=:8088`).",
|
|
1281
|
+
},
|
|
1282
|
+
},
|
|
1283
|
+
{
|
|
1284
|
+
system: "aws.documentdb",
|
|
1285
|
+
displayName: "Amazon DocumentDB",
|
|
1286
|
+
aliases: ["documentdb"],
|
|
1287
|
+
defaultPort: 27017,
|
|
1288
|
+
receiverTypes: [],
|
|
1289
|
+
receiverMetricPrefixes: [],
|
|
1290
|
+
imageRepositories: [],
|
|
1291
|
+
kubernetesChartNames: [],
|
|
1292
|
+
hasCollectorReceiver: false,
|
|
1293
|
+
family: "mongodb",
|
|
1294
|
+
// A cluster endpoint names one cluster.
|
|
1295
|
+
deployment: "server",
|
|
1296
|
+
engineMetrics: AWS_CLOUDWATCH_METRICS,
|
|
1297
|
+
},
|
|
1298
|
+
{
|
|
1299
|
+
system: "azure.cosmosdb",
|
|
1300
|
+
displayName: "Azure Cosmos DB",
|
|
1301
|
+
aliases: ["cosmosdb"],
|
|
1302
|
+
defaultPort: 443,
|
|
1303
|
+
receiverTypes: [],
|
|
1304
|
+
receiverMetricPrefixes: [],
|
|
1305
|
+
imageRepositories: [],
|
|
1306
|
+
kubernetesChartNames: [],
|
|
1307
|
+
hasCollectorReceiver: false,
|
|
1308
|
+
/*
|
|
1309
|
+
* An account answers on its global host AND on one regional host per
|
|
1310
|
+
* region, so a span's host does not name one account.
|
|
1311
|
+
*/
|
|
1312
|
+
deployment: "cloud-api",
|
|
1313
|
+
engineMetrics: {
|
|
1314
|
+
kind: "cloud-monitoring",
|
|
1315
|
+
receiver: "azure_monitor",
|
|
1316
|
+
note: "Read the account's metrics from Azure Monitor with the `azure_monitor` receiver.",
|
|
1317
|
+
},
|
|
1318
|
+
},
|
|
1319
|
+
{
|
|
1320
|
+
system: "gcp.firestore",
|
|
1321
|
+
displayName: "Cloud Firestore",
|
|
1322
|
+
aliases: ["firestore"],
|
|
1323
|
+
defaultPort: 443,
|
|
1324
|
+
receiverTypes: [],
|
|
1325
|
+
receiverMetricPrefixes: [],
|
|
1326
|
+
imageRepositories: [],
|
|
1327
|
+
kubernetesChartNames: [],
|
|
1328
|
+
hasCollectorReceiver: false,
|
|
1329
|
+
// firestore.googleapis.com serves every database.
|
|
1330
|
+
deployment: "cloud-api",
|
|
1331
|
+
engineMetrics: GOOGLE_CLOUD_MONITORING,
|
|
1332
|
+
},
|
|
1333
|
+
{
|
|
1334
|
+
system: "couchdb",
|
|
1335
|
+
displayName: "CouchDB",
|
|
1336
|
+
aliases: [],
|
|
1337
|
+
defaultPort: 5984,
|
|
1338
|
+
receiverTypes: ["couchdb"],
|
|
1339
|
+
receiverMetricPrefixes: ["couchdb."],
|
|
1340
|
+
imageRepositories: ["couchdb", "apache/couchdb", "bitnami/couchdb"],
|
|
1341
|
+
kubernetesChartNames: ["couchdb"],
|
|
1342
|
+
hasCollectorReceiver: true,
|
|
1343
|
+
deployment: "server",
|
|
1344
|
+
engineMetrics: RECEIVER,
|
|
1345
|
+
},
|
|
1346
|
+
{
|
|
1347
|
+
system: "couchbase",
|
|
1348
|
+
displayName: "Couchbase",
|
|
1349
|
+
aliases: [],
|
|
1350
|
+
defaultPort: 11210,
|
|
1351
|
+
receiverTypes: [],
|
|
1352
|
+
receiverMetricPrefixes: [],
|
|
1353
|
+
imageRepositories: ["couchbase", "couchbase/server"],
|
|
1354
|
+
kubernetesChartNames: [],
|
|
1355
|
+
hasCollectorReceiver: false,
|
|
1356
|
+
deployment: "server",
|
|
1357
|
+
engineMetrics: {
|
|
1358
|
+
kind: "prometheus",
|
|
1359
|
+
port: 8091,
|
|
1360
|
+
path: "/metrics",
|
|
1361
|
+
note: "Couchbase Server 7.0 and later; the scrape needs a user with the External Stats Reader role (basic auth).",
|
|
1362
|
+
},
|
|
1363
|
+
},
|
|
1364
|
+
{
|
|
1365
|
+
system: "arangodb",
|
|
1366
|
+
displayName: "ArangoDB",
|
|
1367
|
+
aliases: [],
|
|
1368
|
+
defaultPort: 8529,
|
|
1369
|
+
receiverTypes: [],
|
|
1370
|
+
receiverMetricPrefixes: [],
|
|
1371
|
+
imageRepositories: ["arangodb", "arangodb/arangodb", "arangodb/enterprise"],
|
|
1372
|
+
kubernetesChartNames: [],
|
|
1373
|
+
hasCollectorReceiver: false,
|
|
1374
|
+
deployment: "server",
|
|
1375
|
+
engineMetrics: {
|
|
1376
|
+
kind: "prometheus",
|
|
1377
|
+
port: 8529,
|
|
1378
|
+
path: "/_admin/metrics/v2",
|
|
1379
|
+
},
|
|
1380
|
+
},
|
|
1381
|
+
{
|
|
1382
|
+
system: "ravendb",
|
|
1383
|
+
displayName: "RavenDB",
|
|
1384
|
+
aliases: [],
|
|
1385
|
+
defaultPort: 8080,
|
|
1386
|
+
receiverTypes: [],
|
|
1387
|
+
receiverMetricPrefixes: [],
|
|
1388
|
+
imageRepositories: ["ravendb/ravendb"],
|
|
1389
|
+
kubernetesChartNames: [],
|
|
1390
|
+
hasCollectorReceiver: false,
|
|
1391
|
+
deployment: "server",
|
|
1392
|
+
engineMetrics: {
|
|
1393
|
+
kind: "none",
|
|
1394
|
+
reason:
|
|
1395
|
+
"The collector has no RavenDB receiver; point RavenDB's own OpenTelemetry metrics export at a collector and stamp it with this database's identity.",
|
|
1396
|
+
},
|
|
1397
|
+
},
|
|
1398
|
+
{
|
|
1399
|
+
system: "surrealdb",
|
|
1400
|
+
displayName: "SurrealDB",
|
|
1401
|
+
aliases: [],
|
|
1402
|
+
defaultPort: 8000,
|
|
1403
|
+
receiverTypes: [],
|
|
1404
|
+
receiverMetricPrefixes: [],
|
|
1405
|
+
imageRepositories: ["surrealdb/surrealdb"],
|
|
1406
|
+
kubernetesChartNames: ["surrealdb"],
|
|
1407
|
+
hasCollectorReceiver: false,
|
|
1408
|
+
deployment: "server",
|
|
1409
|
+
engineMetrics: {
|
|
1410
|
+
kind: "none",
|
|
1411
|
+
reason:
|
|
1412
|
+
"The collector has no SurrealDB receiver; turn on SurrealDB's OpenTelemetry export (SURREAL_TELEMETRY_PROVIDER=otlp) towards a collector and stamp it with this database's identity.",
|
|
1413
|
+
},
|
|
1414
|
+
},
|
|
1415
|
+
|
|
1416
|
+
// ---- search ---------------------------------------------------------------
|
|
1417
|
+
{
|
|
1418
|
+
system: "elasticsearch",
|
|
1419
|
+
displayName: "Elasticsearch",
|
|
1420
|
+
aliases: ["elastic"],
|
|
1421
|
+
defaultPort: 9200,
|
|
1422
|
+
receiverTypes: ["elasticsearch"],
|
|
1423
|
+
receiverMetricPrefixes: ["elasticsearch."],
|
|
1424
|
+
imageRepositories: [
|
|
1425
|
+
"elasticsearch",
|
|
1426
|
+
"elasticsearch/elasticsearch",
|
|
1427
|
+
"elasticsearch/elasticsearch-oss",
|
|
1428
|
+
"bitnami/elasticsearch",
|
|
1429
|
+
],
|
|
1430
|
+
kubernetesChartNames: ["elasticsearch"],
|
|
1431
|
+
hasCollectorReceiver: true,
|
|
1432
|
+
deployment: "server",
|
|
1433
|
+
engineMetrics: RECEIVER,
|
|
1434
|
+
},
|
|
1435
|
+
{
|
|
1436
|
+
system: "opensearch",
|
|
1437
|
+
displayName: "OpenSearch",
|
|
1438
|
+
aliases: [],
|
|
1439
|
+
defaultPort: 9200,
|
|
1440
|
+
/*
|
|
1441
|
+
* OpenSearch keeps the node, cluster and index statistics APIs the
|
|
1442
|
+
* elasticsearch receiver reads.
|
|
1443
|
+
*/
|
|
1444
|
+
receiverTypes: ["elasticsearch"],
|
|
1445
|
+
receiverMetricPrefixes: ["elasticsearch."],
|
|
1446
|
+
imageRepositories: ["opensearchproject/opensearch", "bitnami/opensearch"],
|
|
1447
|
+
kubernetesChartNames: ["opensearch"],
|
|
1448
|
+
hasCollectorReceiver: true,
|
|
1449
|
+
// Older clients reach it with an Elasticsearch client.
|
|
1450
|
+
family: "elasticsearch",
|
|
1451
|
+
deployment: "server",
|
|
1452
|
+
engineMetrics: RECEIVER,
|
|
1453
|
+
},
|
|
1454
|
+
{
|
|
1455
|
+
system: "solr",
|
|
1456
|
+
displayName: "Apache Solr",
|
|
1457
|
+
aliases: [],
|
|
1458
|
+
defaultPort: 8983,
|
|
1459
|
+
receiverTypes: [],
|
|
1460
|
+
receiverMetricPrefixes: [],
|
|
1461
|
+
imageRepositories: ["solr", "bitnami/solr"],
|
|
1462
|
+
kubernetesChartNames: ["solr"],
|
|
1463
|
+
hasCollectorReceiver: false,
|
|
1464
|
+
deployment: "server",
|
|
1465
|
+
engineMetrics: {
|
|
1466
|
+
kind: "none",
|
|
1467
|
+
reason:
|
|
1468
|
+
"The collector has no Solr receiver; run the Prometheus exporter that ships with Solr (`solr-exporter`), scrape it with the `prometheus` receiver and stamp it with this database's identity.",
|
|
1469
|
+
},
|
|
1470
|
+
},
|
|
1471
|
+
{
|
|
1472
|
+
system: "meilisearch",
|
|
1473
|
+
displayName: "Meilisearch",
|
|
1474
|
+
aliases: [],
|
|
1475
|
+
defaultPort: 7700,
|
|
1476
|
+
receiverTypes: [],
|
|
1477
|
+
receiverMetricPrefixes: [],
|
|
1478
|
+
imageRepositories: ["getmeili/meilisearch"],
|
|
1479
|
+
kubernetesChartNames: ["meilisearch"],
|
|
1480
|
+
hasCollectorReceiver: false,
|
|
1481
|
+
deployment: "server",
|
|
1482
|
+
engineMetrics: {
|
|
1483
|
+
kind: "prometheus",
|
|
1484
|
+
port: 7700,
|
|
1485
|
+
path: "/metrics",
|
|
1486
|
+
note: "Start Meilisearch with `--experimental-enable-metrics`; the scrape needs the master key as a bearer token.",
|
|
1487
|
+
},
|
|
1488
|
+
},
|
|
1489
|
+
{
|
|
1490
|
+
system: "typesense",
|
|
1491
|
+
displayName: "Typesense",
|
|
1492
|
+
aliases: [],
|
|
1493
|
+
defaultPort: 8108,
|
|
1494
|
+
receiverTypes: [],
|
|
1495
|
+
receiverMetricPrefixes: [],
|
|
1496
|
+
imageRepositories: ["typesense/typesense"],
|
|
1497
|
+
kubernetesChartNames: [],
|
|
1498
|
+
hasCollectorReceiver: false,
|
|
1499
|
+
deployment: "server",
|
|
1500
|
+
engineMetrics: {
|
|
1501
|
+
kind: "none",
|
|
1502
|
+
reason:
|
|
1503
|
+
"The collector has no Typesense receiver and Typesense serves its statistics as JSON (/metrics.json), not in the Prometheus format; convert them and stamp the result with this database's identity.",
|
|
1504
|
+
},
|
|
1505
|
+
},
|
|
1506
|
+
|
|
1507
|
+
// ---- time series ------------------------------------------------------------
|
|
1508
|
+
{
|
|
1509
|
+
system: "influxdb",
|
|
1510
|
+
displayName: "InfluxDB",
|
|
1511
|
+
aliases: [],
|
|
1512
|
+
defaultPort: 8086,
|
|
1513
|
+
receiverTypes: [],
|
|
1514
|
+
receiverMetricPrefixes: [],
|
|
1515
|
+
imageRepositories: ["influxdb", "bitnami/influxdb"],
|
|
1516
|
+
kubernetesChartNames: ["influxdb", "influxdb2"],
|
|
1517
|
+
hasCollectorReceiver: false,
|
|
1518
|
+
deployment: "server",
|
|
1519
|
+
engineMetrics: { kind: "prometheus", port: 8086, path: "/metrics" },
|
|
1520
|
+
},
|
|
1521
|
+
|
|
1522
|
+
// ---- graph --------------------------------------------------------------------
|
|
1523
|
+
{
|
|
1524
|
+
system: "neo4j",
|
|
1525
|
+
displayName: "Neo4j",
|
|
1526
|
+
aliases: [],
|
|
1527
|
+
defaultPort: 7687,
|
|
1528
|
+
receiverTypes: [],
|
|
1529
|
+
receiverMetricPrefixes: [],
|
|
1530
|
+
imageRepositories: ["neo4j", "bitnami/neo4j"],
|
|
1531
|
+
kubernetesChartNames: ["neo4j"],
|
|
1532
|
+
hasCollectorReceiver: false,
|
|
1533
|
+
deployment: "server",
|
|
1534
|
+
engineMetrics: {
|
|
1535
|
+
kind: "prometheus",
|
|
1536
|
+
port: 2004,
|
|
1537
|
+
path: "/metrics",
|
|
1538
|
+
note: "Neo4j Enterprise: set `server.metrics.prometheus.enabled=true` and `server.metrics.prometheus.endpoint=0.0.0.0:2004`.",
|
|
1539
|
+
},
|
|
1540
|
+
},
|
|
1541
|
+
{
|
|
1542
|
+
system: "aws.neptune",
|
|
1543
|
+
displayName: "Amazon Neptune",
|
|
1544
|
+
aliases: ["neptune"],
|
|
1545
|
+
defaultPort: 8182,
|
|
1546
|
+
receiverTypes: [],
|
|
1547
|
+
receiverMetricPrefixes: [],
|
|
1548
|
+
imageRepositories: [],
|
|
1549
|
+
kubernetesChartNames: [],
|
|
1550
|
+
hasCollectorReceiver: false,
|
|
1551
|
+
// A cluster endpoint names one cluster.
|
|
1552
|
+
deployment: "server",
|
|
1553
|
+
engineMetrics: AWS_CLOUDWATCH_METRICS,
|
|
1554
|
+
},
|
|
1555
|
+
|
|
1556
|
+
// ---- vector -------------------------------------------------------------------
|
|
1557
|
+
{
|
|
1558
|
+
system: "milvus",
|
|
1559
|
+
displayName: "Milvus",
|
|
1560
|
+
aliases: [],
|
|
1561
|
+
defaultPort: 19530,
|
|
1562
|
+
receiverTypes: [],
|
|
1563
|
+
receiverMetricPrefixes: [],
|
|
1564
|
+
imageRepositories: ["milvusdb/milvus", "bitnami/milvus"],
|
|
1565
|
+
kubernetesChartNames: ["milvus"],
|
|
1566
|
+
hasCollectorReceiver: false,
|
|
1567
|
+
deployment: "server",
|
|
1568
|
+
engineMetrics: { kind: "prometheus", port: 9091, path: "/metrics" },
|
|
1569
|
+
},
|
|
1570
|
+
{
|
|
1571
|
+
system: "qdrant",
|
|
1572
|
+
displayName: "Qdrant",
|
|
1573
|
+
aliases: [],
|
|
1574
|
+
defaultPort: 6333,
|
|
1575
|
+
receiverTypes: [],
|
|
1576
|
+
receiverMetricPrefixes: [],
|
|
1577
|
+
imageRepositories: ["qdrant/qdrant"],
|
|
1578
|
+
kubernetesChartNames: ["qdrant"],
|
|
1579
|
+
hasCollectorReceiver: false,
|
|
1580
|
+
deployment: "server",
|
|
1581
|
+
engineMetrics: { kind: "prometheus", port: 6333, path: "/metrics" },
|
|
1582
|
+
},
|
|
1583
|
+
{
|
|
1584
|
+
system: "weaviate",
|
|
1585
|
+
displayName: "Weaviate",
|
|
1586
|
+
aliases: [],
|
|
1587
|
+
defaultPort: 8080,
|
|
1588
|
+
receiverTypes: [],
|
|
1589
|
+
receiverMetricPrefixes: [],
|
|
1590
|
+
imageRepositories: ["semitechnologies/weaviate"],
|
|
1591
|
+
kubernetesChartNames: ["weaviate"],
|
|
1592
|
+
hasCollectorReceiver: false,
|
|
1593
|
+
deployment: "server",
|
|
1594
|
+
engineMetrics: {
|
|
1595
|
+
kind: "prometheus",
|
|
1596
|
+
port: 2112,
|
|
1597
|
+
path: "/metrics",
|
|
1598
|
+
note: "Set PROMETHEUS_MONITORING_ENABLED=true.",
|
|
1599
|
+
},
|
|
1600
|
+
},
|
|
1601
|
+
{
|
|
1602
|
+
system: "chroma",
|
|
1603
|
+
displayName: "Chroma",
|
|
1604
|
+
aliases: ["chromadb"],
|
|
1605
|
+
defaultPort: 8000,
|
|
1606
|
+
receiverTypes: [],
|
|
1607
|
+
receiverMetricPrefixes: [],
|
|
1608
|
+
imageRepositories: ["chromadb/chroma", "chroma-core/chroma"],
|
|
1609
|
+
kubernetesChartNames: ["chromadb"],
|
|
1610
|
+
hasCollectorReceiver: false,
|
|
1611
|
+
deployment: "server",
|
|
1612
|
+
engineMetrics: {
|
|
1613
|
+
kind: "none",
|
|
1614
|
+
reason:
|
|
1615
|
+
"The collector has no Chroma receiver; Chroma exports OpenTelemetry traces (CHROMA_OTEL_COLLECTION_ENDPOINT) but no engine metrics endpoint.",
|
|
1616
|
+
},
|
|
1617
|
+
},
|
|
1618
|
+
{
|
|
1619
|
+
system: "pinecone",
|
|
1620
|
+
displayName: "Pinecone",
|
|
1621
|
+
aliases: [],
|
|
1622
|
+
defaultPort: 443,
|
|
1623
|
+
receiverTypes: [],
|
|
1624
|
+
receiverMetricPrefixes: [],
|
|
1625
|
+
imageRepositories: [],
|
|
1626
|
+
kubernetesChartNames: [],
|
|
1627
|
+
hasCollectorReceiver: false,
|
|
1628
|
+
// A managed service reached through Pinecone's shared API hosts.
|
|
1629
|
+
deployment: "cloud-api",
|
|
1630
|
+
engineMetrics: {
|
|
1631
|
+
kind: "none",
|
|
1632
|
+
reason:
|
|
1633
|
+
"Pinecone publishes index metrics for Prometheus on its own API (Standard and Enterprise plans); scrape them with the `prometheus` receiver and stamp them with this database's identity.",
|
|
1634
|
+
},
|
|
1635
|
+
},
|
|
1636
|
+
|
|
1637
|
+
// ---- embedded (in-process) ------------------------------------------------------
|
|
1638
|
+
{
|
|
1639
|
+
system: "sqlite",
|
|
1640
|
+
displayName: "SQLite",
|
|
1641
|
+
aliases: ["sqlite3"],
|
|
1642
|
+
defaultPort: null,
|
|
1643
|
+
receiverTypes: [],
|
|
1644
|
+
receiverMetricPrefixes: [],
|
|
1645
|
+
imageRepositories: [],
|
|
1646
|
+
kubernetesChartNames: [],
|
|
1647
|
+
hasCollectorReceiver: false,
|
|
1648
|
+
deployment: "embedded",
|
|
1649
|
+
engineMetrics: EMBEDDED,
|
|
1650
|
+
},
|
|
1651
|
+
{
|
|
1652
|
+
system: "duckdb",
|
|
1653
|
+
displayName: "DuckDB",
|
|
1654
|
+
aliases: [],
|
|
1655
|
+
defaultPort: null,
|
|
1656
|
+
receiverTypes: [],
|
|
1657
|
+
receiverMetricPrefixes: [],
|
|
1658
|
+
imageRepositories: [],
|
|
1659
|
+
kubernetesChartNames: [],
|
|
1660
|
+
hasCollectorReceiver: false,
|
|
1661
|
+
deployment: "embedded",
|
|
1662
|
+
engineMetrics: EMBEDDED,
|
|
1663
|
+
},
|
|
1664
|
+
{
|
|
1665
|
+
system: "h2database",
|
|
1666
|
+
displayName: "H2",
|
|
1667
|
+
aliases: ["h2"],
|
|
1668
|
+
// Its TCP server mode; usually it runs in-process.
|
|
1669
|
+
defaultPort: 9092,
|
|
1670
|
+
receiverTypes: [],
|
|
1671
|
+
receiverMetricPrefixes: [],
|
|
1672
|
+
imageRepositories: [],
|
|
1673
|
+
kubernetesChartNames: [],
|
|
1674
|
+
hasCollectorReceiver: false,
|
|
1675
|
+
deployment: "embedded",
|
|
1676
|
+
engineMetrics: EMBEDDED,
|
|
1677
|
+
},
|
|
1678
|
+
{
|
|
1679
|
+
system: "hsqldb",
|
|
1680
|
+
displayName: "HyperSQL",
|
|
1681
|
+
aliases: [],
|
|
1682
|
+
// Its server mode; usually it runs in-process.
|
|
1683
|
+
defaultPort: 9001,
|
|
1684
|
+
receiverTypes: [],
|
|
1685
|
+
receiverMetricPrefixes: [],
|
|
1686
|
+
imageRepositories: [],
|
|
1687
|
+
kubernetesChartNames: [],
|
|
1688
|
+
hasCollectorReceiver: false,
|
|
1689
|
+
deployment: "embedded",
|
|
1690
|
+
engineMetrics: EMBEDDED,
|
|
1691
|
+
},
|
|
1692
|
+
{
|
|
1693
|
+
system: "derby",
|
|
1694
|
+
displayName: "Apache Derby",
|
|
1695
|
+
// IBM Cloudscape became Apache Derby.
|
|
1696
|
+
aliases: ["cloudscape"],
|
|
1697
|
+
// Its Network Server mode; usually it runs in-process.
|
|
1698
|
+
defaultPort: 1527,
|
|
1699
|
+
receiverTypes: [],
|
|
1700
|
+
receiverMetricPrefixes: [],
|
|
1701
|
+
imageRepositories: [],
|
|
1702
|
+
kubernetesChartNames: [],
|
|
1703
|
+
hasCollectorReceiver: false,
|
|
1704
|
+
deployment: "embedded",
|
|
1705
|
+
engineMetrics: EMBEDDED,
|
|
1706
|
+
},
|
|
1707
|
+
{
|
|
1708
|
+
system: "instantdb",
|
|
1709
|
+
displayName: "InstantDB",
|
|
1710
|
+
aliases: [],
|
|
1711
|
+
defaultPort: null,
|
|
1712
|
+
receiverTypes: [],
|
|
1713
|
+
receiverMetricPrefixes: [],
|
|
1714
|
+
imageRepositories: [],
|
|
1715
|
+
kubernetesChartNames: [],
|
|
1716
|
+
hasCollectorReceiver: false,
|
|
1717
|
+
deployment: "embedded",
|
|
1718
|
+
engineMetrics: EMBEDDED,
|
|
1719
|
+
},
|
|
1720
|
+
];
|
|
1721
|
+
|
|
1722
|
+
/*
|
|
1723
|
+
* Collector component names that differ from the receiver's Go module name
|
|
1724
|
+
* (receiverTypes): the name to write under `receivers:` in a config.
|
|
1725
|
+
*/
|
|
1726
|
+
const RECEIVER_COMPONENT_NAMES: ReadonlyMap<string, string> = new Map<
|
|
1727
|
+
string,
|
|
1728
|
+
string
|
|
1729
|
+
>([
|
|
1730
|
+
["mongodbatlas", "mongodb_atlas"],
|
|
1731
|
+
["googlecloudspanner", "google_cloud_spanner"],
|
|
1732
|
+
]);
|
|
1733
|
+
|
|
1734
|
+
// raw (system or alias) → descriptor. A Map, so "constructor" finds nothing.
|
|
1735
|
+
const DESCRIPTOR_BY_NAME: ReadonlyMap<string, DatabaseSystemDescriptor> =
|
|
1736
|
+
((): Map<string, DatabaseSystemDescriptor> => {
|
|
1737
|
+
const map: Map<string, DatabaseSystemDescriptor> = new Map<
|
|
1738
|
+
string,
|
|
1739
|
+
DatabaseSystemDescriptor
|
|
1740
|
+
>();
|
|
1741
|
+
for (const descriptor of DATABASE_SYSTEMS) {
|
|
1742
|
+
map.set(descriptor.system, descriptor);
|
|
1743
|
+
for (const alias of descriptor.aliases) {
|
|
1744
|
+
map.set(alias, descriptor);
|
|
1745
|
+
}
|
|
1746
|
+
}
|
|
1747
|
+
return map;
|
|
1748
|
+
})();
|
|
1749
|
+
|
|
1750
|
+
/*
|
|
1751
|
+
* receiver type → the engine its data REPORTS. Only an engine that is its
|
|
1752
|
+
* own family owns a receiver: the mysql receiver pointed at MariaDB still
|
|
1753
|
+
* says "mysql" (refineDatabaseSystemFromVersion can tell them apart).
|
|
1754
|
+
*/
|
|
1755
|
+
const DESCRIPTOR_BY_RECEIVER_TYPE: ReadonlyMap<
|
|
1756
|
+
string,
|
|
1757
|
+
DatabaseSystemDescriptor
|
|
1758
|
+
> = ((): Map<string, DatabaseSystemDescriptor> => {
|
|
1759
|
+
const map: Map<string, DatabaseSystemDescriptor> = new Map<
|
|
1760
|
+
string,
|
|
1761
|
+
DatabaseSystemDescriptor
|
|
1762
|
+
>();
|
|
1763
|
+
for (const descriptor of DATABASE_SYSTEMS) {
|
|
1764
|
+
if (descriptor.family) {
|
|
1765
|
+
continue;
|
|
1766
|
+
}
|
|
1767
|
+
for (const receiverType of descriptor.receiverTypes) {
|
|
1768
|
+
map.set(receiverType, descriptor);
|
|
1769
|
+
}
|
|
1770
|
+
}
|
|
1771
|
+
return map;
|
|
1772
|
+
})();
|
|
1773
|
+
|
|
1774
|
+
function canonicalRaw(raw: unknown): string {
|
|
1775
|
+
if (typeof raw !== "string") {
|
|
1776
|
+
return "";
|
|
1777
|
+
}
|
|
1778
|
+
return raw.trim().toLowerCase();
|
|
1779
|
+
}
|
|
1780
|
+
|
|
1781
|
+
/**
|
|
1782
|
+
* `value` without any run of `character` at its end. A plain loop rather than
|
|
1783
|
+
* `replace(/x+$/, "")`: that regex backtracks quadratically on telemetry-supplied
|
|
1784
|
+
* strings holding long runs of `character` that do not end the string.
|
|
1785
|
+
*/
|
|
1786
|
+
export function trimTrailingCharacter(
|
|
1787
|
+
value: string,
|
|
1788
|
+
character: string,
|
|
1789
|
+
): string {
|
|
1790
|
+
let end: number = value.length;
|
|
1791
|
+
while (end > 0 && value.charAt(end - 1) === character) {
|
|
1792
|
+
end--;
|
|
1793
|
+
}
|
|
1794
|
+
return end === value.length ? value : value.substring(0, end);
|
|
1795
|
+
}
|
|
1796
|
+
|
|
1797
|
+
/**
|
|
1798
|
+
* Normalize a raw `db.system.name` / `db.system` value. A known alias maps to
|
|
1799
|
+
* its engine ("postgres" → "postgresql", "mssql" → "microsoft.sql_server");
|
|
1800
|
+
* an unknown non-empty value is returned canonicalized (trimmed, lowercased)
|
|
1801
|
+
* so it still displays and groups; an empty or non-string value is null.
|
|
1802
|
+
*/
|
|
1803
|
+
export function normalizeDatabaseSystem(raw: unknown): string | null {
|
|
1804
|
+
const canonical: string = canonicalRaw(raw);
|
|
1805
|
+
if (!canonical) {
|
|
1806
|
+
return null;
|
|
1807
|
+
}
|
|
1808
|
+
const descriptor: DatabaseSystemDescriptor | undefined =
|
|
1809
|
+
DESCRIPTOR_BY_NAME.get(canonical);
|
|
1810
|
+
return descriptor ? descriptor.system : canonical;
|
|
1811
|
+
}
|
|
1812
|
+
|
|
1813
|
+
/** The engine's descriptor (aliases accepted), or null for an unknown one. */
|
|
1814
|
+
export function getDatabaseSystemDescriptor(
|
|
1815
|
+
system: unknown,
|
|
1816
|
+
): DatabaseSystemDescriptor | null {
|
|
1817
|
+
return DESCRIPTOR_BY_NAME.get(canonicalRaw(system)) || null;
|
|
1818
|
+
}
|
|
1819
|
+
|
|
1820
|
+
export function isKnownDatabaseSystem(system: unknown): boolean {
|
|
1821
|
+
return getDatabaseSystemDescriptor(system) !== null;
|
|
1822
|
+
}
|
|
1823
|
+
|
|
1824
|
+
/**
|
|
1825
|
+
* The engine family a system belongs to: the `family` of a fork or drop-in
|
|
1826
|
+
* ("valkey" → "redis", "mariadb" → "mysql"), the system itself for an engine
|
|
1827
|
+
* that is its own family, and the canonicalized raw value for an unknown one.
|
|
1828
|
+
* Aliases are accepted. Empty or non-string input is null.
|
|
1829
|
+
*/
|
|
1830
|
+
export function getDatabaseSystemFamily(system: unknown): string | null {
|
|
1831
|
+
const descriptor: DatabaseSystemDescriptor | null =
|
|
1832
|
+
getDatabaseSystemDescriptor(system);
|
|
1833
|
+
if (descriptor) {
|
|
1834
|
+
return descriptor.family || descriptor.system;
|
|
1835
|
+
}
|
|
1836
|
+
const canonical: string = canonicalRaw(system);
|
|
1837
|
+
return canonical || null;
|
|
1838
|
+
}
|
|
1839
|
+
|
|
1840
|
+
/**
|
|
1841
|
+
* The engine whose collector receiver produces this engine's metrics — so
|
|
1842
|
+
* whose curated metric set applies: the family for a fork its family's
|
|
1843
|
+
* receiver monitors (MariaDB → "mysql", Valkey → "redis"), otherwise the
|
|
1844
|
+
* engine itself (TiDB stays "tidb": the mysql receiver does not work
|
|
1845
|
+
* against it). Aliases accepted; an unknown value is returned
|
|
1846
|
+
* canonicalized; empty or non-string input is null.
|
|
1847
|
+
*/
|
|
1848
|
+
export function getDatabaseSystemMetricsEngine(system: unknown): string | null {
|
|
1849
|
+
const descriptor: DatabaseSystemDescriptor | null =
|
|
1850
|
+
getDatabaseSystemDescriptor(system);
|
|
1851
|
+
if (descriptor && descriptor.family && descriptor.receiverTypes.length > 0) {
|
|
1852
|
+
return descriptor.family;
|
|
1853
|
+
}
|
|
1854
|
+
return normalizeDatabaseSystem(system);
|
|
1855
|
+
}
|
|
1856
|
+
|
|
1857
|
+
/**
|
|
1858
|
+
* True when two engine values describe the same family — the same engine,
|
|
1859
|
+
* aliases of it, or a fork and the engine it forks. A span that says "redis"
|
|
1860
|
+
* and an image that says "valkey" are the same database seen twice.
|
|
1861
|
+
*/
|
|
1862
|
+
export function isSameDatabaseFamily(a: unknown, b: unknown): boolean {
|
|
1863
|
+
const familyA: string | null = getDatabaseSystemFamily(a);
|
|
1864
|
+
return familyA !== null && familyA === getDatabaseSystemFamily(b);
|
|
1865
|
+
}
|
|
1866
|
+
|
|
1867
|
+
/**
|
|
1868
|
+
* The engine a database should show after a new sighting of it, given the
|
|
1869
|
+
* engine it shows now. A sighting that names a fork of the current engine
|
|
1870
|
+
* refines it ("mysql" seen by an image as "mariadb" becomes MariaDB); a
|
|
1871
|
+
* sighting that names only the family never undoes a fork ("mariadb" stays
|
|
1872
|
+
* MariaDB when a span says "mysql" — the client cannot tell). Anything else
|
|
1873
|
+
* — an unrelated engine, an unknown or empty value — keeps the current one,
|
|
1874
|
+
* except that an empty current engine takes the observed one. Both inputs
|
|
1875
|
+
* are normalized; the result is null only when both are empty.
|
|
1876
|
+
*/
|
|
1877
|
+
export function getMoreSpecificDatabaseSystem(
|
|
1878
|
+
current: unknown,
|
|
1879
|
+
observed: unknown,
|
|
1880
|
+
): string | null {
|
|
1881
|
+
const currentSystem: string | null = normalizeDatabaseSystem(current);
|
|
1882
|
+
const observedSystem: string | null = normalizeDatabaseSystem(observed);
|
|
1883
|
+
|
|
1884
|
+
if (!currentSystem) {
|
|
1885
|
+
return observedSystem;
|
|
1886
|
+
}
|
|
1887
|
+
if (!observedSystem || observedSystem === currentSystem) {
|
|
1888
|
+
return currentSystem;
|
|
1889
|
+
}
|
|
1890
|
+
|
|
1891
|
+
const currentDescriptor: DatabaseSystemDescriptor | null =
|
|
1892
|
+
getDatabaseSystemDescriptor(currentSystem);
|
|
1893
|
+
const observedDescriptor: DatabaseSystemDescriptor | null =
|
|
1894
|
+
getDatabaseSystemDescriptor(observedSystem);
|
|
1895
|
+
|
|
1896
|
+
// Only a known fork of the current (family) engine is more specific.
|
|
1897
|
+
if (
|
|
1898
|
+
observedDescriptor &&
|
|
1899
|
+
observedDescriptor.family &&
|
|
1900
|
+
observedDescriptor.family === currentSystem &&
|
|
1901
|
+
(!currentDescriptor || !currentDescriptor.family)
|
|
1902
|
+
) {
|
|
1903
|
+
return observedSystem;
|
|
1904
|
+
}
|
|
1905
|
+
|
|
1906
|
+
return currentSystem;
|
|
1907
|
+
}
|
|
1908
|
+
|
|
1909
|
+
// The leading number of a version string: "11.4.13" → 11. At most four digits.
|
|
1910
|
+
const VERSION_MAJOR_PATTERN: RegExp = /^\s*v?(\d{1,4})(?!\d)/i;
|
|
1911
|
+
|
|
1912
|
+
function readVersionMajor(version: string): number | null {
|
|
1913
|
+
const match: RegExpExecArray | null = VERSION_MAJOR_PATTERN.exec(version);
|
|
1914
|
+
return match ? Number(match[1]) : null;
|
|
1915
|
+
}
|
|
1916
|
+
|
|
1917
|
+
/**
|
|
1918
|
+
* The engine a server's own version string names, given the engine the
|
|
1919
|
+
* data reports: "mysql" + "10.11.7-MariaDB-1:10.11.7+maria~ubu2204" →
|
|
1920
|
+
* "mariadb", "mysql" + "8.0.11-TiDB-v7.5.1" → "tidb". A fork's name in the
|
|
1921
|
+
* string wins (versionPattern); otherwise a major version the family never
|
|
1922
|
+
* released names the fork that did (versionMajorFrom): "mysql" + "11.4.13"
|
|
1923
|
+
* → "mariadb", since MySQL has no 10.x or 11.x — which is how a collector's
|
|
1924
|
+
* `mysql` receiver pointed at MariaDB is told apart, as it reports only
|
|
1925
|
+
* that bare number. A version that names no fork of the engine's family
|
|
1926
|
+
* (or no version at all) keeps the engine, normalized; so does a MariaDB
|
|
1927
|
+
* older than 10 whose version has lost its "-MariaDB" suffix ("5.5.68").
|
|
1928
|
+
* Null only for an empty engine.
|
|
1929
|
+
*/
|
|
1930
|
+
export function refineDatabaseSystemFromVersion(
|
|
1931
|
+
system: unknown,
|
|
1932
|
+
version: unknown,
|
|
1933
|
+
): string | null {
|
|
1934
|
+
const normalized: string | null = normalizeDatabaseSystem(system);
|
|
1935
|
+
if (!normalized || typeof version !== "string" || !version.trim()) {
|
|
1936
|
+
return normalized;
|
|
1937
|
+
}
|
|
1938
|
+
|
|
1939
|
+
const family: string | null = getDatabaseSystemFamily(normalized);
|
|
1940
|
+
const descriptor: DatabaseSystemDescriptor | null =
|
|
1941
|
+
getDatabaseSystemDescriptor(normalized);
|
|
1942
|
+
// A fork already names itself; only a family value is refined.
|
|
1943
|
+
if (descriptor && descriptor.family) {
|
|
1944
|
+
return normalized;
|
|
1945
|
+
}
|
|
1946
|
+
|
|
1947
|
+
// Bounded: a version is a short string, never a document.
|
|
1948
|
+
const sample: string = version.substring(0, 256);
|
|
1949
|
+
for (const candidate of DATABASE_SYSTEMS) {
|
|
1950
|
+
if (
|
|
1951
|
+
candidate.family === family &&
|
|
1952
|
+
candidate.versionPattern &&
|
|
1953
|
+
candidate.versionPattern.test(sample)
|
|
1954
|
+
) {
|
|
1955
|
+
return candidate.system;
|
|
1956
|
+
}
|
|
1957
|
+
}
|
|
1958
|
+
|
|
1959
|
+
const major: number | null = readVersionMajor(sample);
|
|
1960
|
+
if (major !== null) {
|
|
1961
|
+
for (const candidate of DATABASE_SYSTEMS) {
|
|
1962
|
+
if (
|
|
1963
|
+
candidate.family === family &&
|
|
1964
|
+
typeof candidate.versionMajorFrom === "number" &&
|
|
1965
|
+
major >= candidate.versionMajorFrom
|
|
1966
|
+
) {
|
|
1967
|
+
return candidate.system;
|
|
1968
|
+
}
|
|
1969
|
+
}
|
|
1970
|
+
}
|
|
1971
|
+
|
|
1972
|
+
return normalized;
|
|
1973
|
+
}
|
|
1974
|
+
|
|
1975
|
+
/**
|
|
1976
|
+
* Whether a resource attribute holding a version is NOT this engine's own
|
|
1977
|
+
* version but the one of the engine it stays compatible with (see
|
|
1978
|
+
* DatabaseSystemDescriptor.compatibilityVersionAttributes): true for
|
|
1979
|
+
* `redis.version` on Valkey, whose INFO keeps `redis_version` at 7.2.4.
|
|
1980
|
+
* Aliases accepted; `attributeKey` is the flat resource key, with or
|
|
1981
|
+
* without the stored `resource.` prefix.
|
|
1982
|
+
*/
|
|
1983
|
+
export function isCompatibilityVersionAttribute(
|
|
1984
|
+
system: unknown,
|
|
1985
|
+
attributeKey: string,
|
|
1986
|
+
): boolean {
|
|
1987
|
+
const descriptor: DatabaseSystemDescriptor | null =
|
|
1988
|
+
getDatabaseSystemDescriptor(system);
|
|
1989
|
+
if (!descriptor || !descriptor.compatibilityVersionAttributes) {
|
|
1990
|
+
return false;
|
|
1991
|
+
}
|
|
1992
|
+
const key: string =
|
|
1993
|
+
typeof attributeKey === "string"
|
|
1994
|
+
? attributeKey.trim().replace(/^resource\./, "")
|
|
1995
|
+
: "";
|
|
1996
|
+
return descriptor.compatibilityVersionAttributes.includes(key);
|
|
1997
|
+
}
|
|
1998
|
+
|
|
1999
|
+
/**
|
|
2000
|
+
* True when a client-span-discovered endpoint of this engine may create a
|
|
2001
|
+
* DatabaseServer row on its own: the engine is known and is a server with
|
|
2002
|
+
* its own address (see DatabaseDeployment) — not a cloud API whose host
|
|
2003
|
+
* every customer shares, and not an in-process library.
|
|
2004
|
+
*/
|
|
2005
|
+
export function isAutoCreatableDatabaseSystem(system: unknown): boolean {
|
|
2006
|
+
const descriptor: DatabaseSystemDescriptor | null =
|
|
2007
|
+
getDatabaseSystemDescriptor(system);
|
|
2008
|
+
return descriptor !== null && descriptor.deployment === "server";
|
|
2009
|
+
}
|
|
2010
|
+
|
|
2011
|
+
/**
|
|
2012
|
+
* "PostgreSQL" for a known engine (aliases accepted), the trimmed raw value
|
|
2013
|
+
* for an unknown one, and "Database" when there is nothing to show.
|
|
2014
|
+
*/
|
|
2015
|
+
export function getDatabaseSystemDisplayName(system: unknown): string {
|
|
2016
|
+
const descriptor: DatabaseSystemDescriptor | null =
|
|
2017
|
+
getDatabaseSystemDescriptor(system);
|
|
2018
|
+
if (descriptor) {
|
|
2019
|
+
return descriptor.displayName;
|
|
2020
|
+
}
|
|
2021
|
+
const raw: string = typeof system === "string" ? system.trim() : "";
|
|
2022
|
+
return raw || "Database";
|
|
2023
|
+
}
|
|
2024
|
+
|
|
2025
|
+
export function getDefaultDatabasePort(system: unknown): number | null {
|
|
2026
|
+
const descriptor: DatabaseSystemDescriptor | null =
|
|
2027
|
+
getDatabaseSystemDescriptor(system);
|
|
2028
|
+
return descriptor ? descriptor.defaultPort : null;
|
|
2029
|
+
}
|
|
2030
|
+
|
|
2031
|
+
/**
|
|
2032
|
+
* Where an engine's own metrics come from (aliases accepted). An unknown
|
|
2033
|
+
* engine has no known path — `none` — which is not the same as `embedded`:
|
|
2034
|
+
* only an in-process engine truly has nothing to collect from, so only it
|
|
2035
|
+
* may be described as having no engine metrics.
|
|
2036
|
+
*/
|
|
2037
|
+
export function getDatabaseEngineMetricsSource(
|
|
2038
|
+
system: unknown,
|
|
2039
|
+
): DatabaseEngineMetricsSource {
|
|
2040
|
+
const descriptor: DatabaseSystemDescriptor | null =
|
|
2041
|
+
getDatabaseSystemDescriptor(system);
|
|
2042
|
+
if (descriptor) {
|
|
2043
|
+
return descriptor.engineMetrics;
|
|
2044
|
+
}
|
|
2045
|
+
return {
|
|
2046
|
+
kind: "none",
|
|
2047
|
+
reason:
|
|
2048
|
+
"OneUptime does not know this engine; stamp whatever exports its metrics with the database's identity.",
|
|
2049
|
+
};
|
|
2050
|
+
}
|
|
2051
|
+
|
|
2052
|
+
/**
|
|
2053
|
+
* The name a receiver is configured under in a collector config
|
|
2054
|
+
* (`receivers:` key) for a receiver type from `receiverTypes`:
|
|
2055
|
+
* "googlecloudspanner" → "google_cloud_spanner". Most are the same.
|
|
2056
|
+
*/
|
|
2057
|
+
export function getCollectorReceiverComponentName(
|
|
2058
|
+
receiverType: string,
|
|
2059
|
+
): string {
|
|
2060
|
+
return RECEIVER_COMPONENT_NAMES.get(receiverType) || receiverType;
|
|
2061
|
+
}
|
|
2062
|
+
|
|
2063
|
+
const RECEIVER_SUFFIX: string = "receiver";
|
|
2064
|
+
|
|
2065
|
+
/**
|
|
2066
|
+
* The engine a collector-contrib DB receiver reports, from its
|
|
2067
|
+
* instrumentation scope name. Matches the LAST path segment against
|
|
2068
|
+
* `<type>receiver`, so both the current Go-module form
|
|
2069
|
+
* (`github.com/open-telemetry/opentelemetry-collector-contrib/receiver/postgresqlreceiver`)
|
|
2070
|
+
* and the legacy `otelcol/postgresqlreceiver` form are recognised. A
|
|
2071
|
+
* receiver that also monitors forks reports its family ("mysql" for the
|
|
2072
|
+
* mysql receiver, whether it scrapes MySQL or MariaDB). Anything else (an
|
|
2073
|
+
* SDK scope, a non-DB receiver) is null.
|
|
2074
|
+
*/
|
|
2075
|
+
export function getDatabaseSystemFromReceiverScopeName(
|
|
2076
|
+
scopeName: unknown,
|
|
2077
|
+
): string | null {
|
|
2078
|
+
const canonical: string = trimTrailingCharacter(canonicalRaw(scopeName), "/");
|
|
2079
|
+
if (!canonical) {
|
|
2080
|
+
return null;
|
|
2081
|
+
}
|
|
2082
|
+
|
|
2083
|
+
const lastSegment: string =
|
|
2084
|
+
canonical.substring(canonical.lastIndexOf("/") + 1) || "";
|
|
2085
|
+
|
|
2086
|
+
if (
|
|
2087
|
+
lastSegment.length <= RECEIVER_SUFFIX.length ||
|
|
2088
|
+
!lastSegment.endsWith(RECEIVER_SUFFIX)
|
|
2089
|
+
) {
|
|
2090
|
+
return null;
|
|
2091
|
+
}
|
|
2092
|
+
|
|
2093
|
+
const receiverType: string = lastSegment.substring(
|
|
2094
|
+
0,
|
|
2095
|
+
lastSegment.length - RECEIVER_SUFFIX.length,
|
|
2096
|
+
);
|
|
2097
|
+
|
|
2098
|
+
const descriptor: DatabaseSystemDescriptor | undefined =
|
|
2099
|
+
DESCRIPTOR_BY_RECEIVER_TYPE.get(receiverType);
|
|
2100
|
+
|
|
2101
|
+
return descriptor ? descriptor.system : null;
|
|
2102
|
+
}
|
|
2103
|
+
|
|
2104
|
+
/**
|
|
2105
|
+
* The engine of the first DB receiver among a batch's scope names (the
|
|
2106
|
+
* receiver system hint ingest passes to
|
|
2107
|
+
* `resolveDatabaseFromResourceAttributes`), or null when no scope is a DB
|
|
2108
|
+
* receiver.
|
|
2109
|
+
*/
|
|
2110
|
+
export function getDatabaseReceiverSystemHint(
|
|
2111
|
+
scopeNames: Array<string | null | undefined>,
|
|
2112
|
+
): string | null {
|
|
2113
|
+
if (!Array.isArray(scopeNames)) {
|
|
2114
|
+
return null;
|
|
2115
|
+
}
|
|
2116
|
+
for (const scopeName of scopeNames) {
|
|
2117
|
+
const system: string | null =
|
|
2118
|
+
getDatabaseSystemFromReceiverScopeName(scopeName);
|
|
2119
|
+
if (system) {
|
|
2120
|
+
return system;
|
|
2121
|
+
}
|
|
2122
|
+
}
|
|
2123
|
+
return null;
|
|
2124
|
+
}
|