@oneuptime/common 11.6.1 → 11.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Models/AnalyticsModels/Index.ts +4 -0
- package/Models/AnalyticsModels/KubernetesCostAllocation.ts +842 -0
- package/Models/AnalyticsModels/NetworkFlow.ts +54 -0
- package/Models/AnalyticsModels/SloHistory.ts +240 -0
- package/Models/DatabaseModels/Index.ts +20 -0
- package/Models/DatabaseModels/NetworkDevice.ts +453 -6
- package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +7 -6
- package/Models/DatabaseModels/NetworkEndpoint.ts +753 -0
- package/Models/DatabaseModels/NetworkSite.ts +1155 -0
- package/Models/DatabaseModels/NetworkSiteAssignmentRule.ts +517 -0
- package/Models/DatabaseModels/NetworkSiteLink.ts +611 -0
- package/Models/DatabaseModels/NetworkSiteStatusTimeline.ts +520 -0
- package/Models/DatabaseModels/NetworkSiteType.ts +499 -0
- package/Models/DatabaseModels/ServiceLevelObjective.ts +1106 -0
- package/Models/DatabaseModels/ServiceLevelObjectiveBurnRateRule.ts +762 -0
- package/Models/DatabaseModels/ServiceLevelObjectiveOwnerTeam.ts +444 -0
- package/Models/DatabaseModels/ServiceLevelObjectiveOwnerUser.ts +443 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784757142154-AddNetworkSiteHierarchyAndEndpoints.ts +359 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784897317860-AddNetworkSiteAlerting.ts +48 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784970388777-AddNetworkDevicePollingColumns.ts +65 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784986826214-AddNetworkSiteTypeTable.ts +88 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784987015619-AddServiceLevelObjective.ts +391 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
- package/Server/Services/AnalyticsDatabaseService.ts +25 -9
- package/Server/Services/Index.ts +24 -0
- package/Server/Services/KubernetesCostAllocationService.ts +14 -0
- package/Server/Services/MetricService.ts +21 -2
- package/Server/Services/MonitorService.ts +22 -0
- package/Server/Services/NetworkDeviceService.ts +438 -2
- package/Server/Services/NetworkEndpointService.ts +414 -0
- package/Server/Services/NetworkSiteAssignmentRuleService.ts +98 -0
- package/Server/Services/NetworkSiteLinkService.ts +10 -0
- package/Server/Services/NetworkSiteService.ts +1254 -0
- package/Server/Services/NetworkSiteStatusTimelineService.ts +10 -0
- package/Server/Services/NetworkSiteTypeService.ts +10 -0
- package/Server/Services/ProjectService.ts +122 -2
- package/Server/Services/ServiceLevelObjectiveBurnRateRuleService.ts +457 -0
- package/Server/Services/ServiceLevelObjectiveOwnerTeamService.ts +10 -0
- package/Server/Services/ServiceLevelObjectiveOwnerUserService.ts +10 -0
- package/Server/Services/ServiceLevelObjectiveService.ts +677 -0
- package/Server/Services/SloHistoryService.ts +101 -0
- package/Server/Services/UserNotificationSettingService.ts +37 -0
- package/Server/Types/AnalyticsDatabase/AggregateBy.ts +9 -0
- package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +15 -0
- package/Server/Utils/AnalyticsDatabase/Statement.ts +39 -3
- package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +87 -48
- package/Server/Utils/Memory.ts +9 -1
- package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +190 -12
- package/Server/Utils/Monitor/Data/OuiVendors.json +6920 -0
- package/Server/Utils/Monitor/DnsResolutionCache.ts +129 -0
- package/Server/Utils/Monitor/MonitorResource.ts +4 -30
- package/Server/Utils/Monitor/NetworkDeviceHydrationUtil.ts +214 -39
- package/Server/Utils/Monitor/NetworkDeviceMetricUtil.ts +343 -0
- package/Server/Utils/Monitor/NetworkDeviceWalkUtil.ts +251 -0
- package/Server/Utils/Monitor/NetworkInventoryUtil.ts +176 -142
- package/Server/Utils/Monitor/OuiLookupUtil.ts +49 -0
- package/Server/Utils/Monitor/SnmpInterfaceRateUtil.ts +17 -13
- package/Server/Utils/WhatsAppTemplateUtil.ts +7 -3
- package/Tests/Models/AnalyticsModels/KubernetesCostAllocation.test.ts +135 -0
- package/Tests/Models/NetworkSiteHierarchy.test.ts +134 -0
- package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +239 -0
- package/Tests/Server/Services/KubernetesCostAllocationAggregate.test.ts +338 -0
- package/Tests/Server/Services/MetricServiceAggregate.test.ts +142 -0
- package/Tests/Server/Services/NetworkDeviceSiteAssignment.test.ts +484 -0
- package/Tests/Server/Services/NetworkEndpointServiceUpsert.test.ts +686 -0
- package/Tests/Server/Services/NetworkSiteAssignmentRuleService.test.ts +185 -0
- package/Tests/Server/Services/NetworkSiteService.test.ts +1354 -0
- package/Tests/Server/Services/ServiceLevelObjectiveBurnRateRuleService.test.ts +1313 -0
- package/Tests/Server/Services/ServiceLevelObjectiveService.test.ts +1988 -0
- package/Tests/Server/Utils/AnalyticsDatabase/Statement.test.ts +22 -0
- package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +404 -0
- package/Tests/Server/Utils/Encryption.test.ts +70 -0
- package/Tests/Server/Utils/FileAttachmentMarkdownUtil.test.ts +225 -0
- package/Tests/Server/Utils/JsonWebToken.test.ts +175 -0
- package/Tests/Server/Utils/LocalFile.test.ts +258 -0
- package/Tests/Server/Utils/Memory.test.ts +213 -0
- package/Tests/Server/Utils/Monitor/Criteria/LogMonitorCriteria.test.ts +30 -0
- package/Tests/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.test.ts +385 -0
- package/Tests/Server/Utils/Monitor/DnsResolutionCache.test.ts +194 -0
- package/Tests/Server/Utils/Monitor/NetworkDeviceHydrationUtil.test.ts +155 -0
- package/Tests/Server/Utils/Monitor/NetworkDeviceWalkUtil.test.ts +600 -0
- package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +151 -124
- package/Tests/Server/Utils/Monitor/SnmpInterfaceRateUtil.test.ts +496 -0
- package/Tests/Server/Utils/MonitorCriteriaDataExtractor.test.ts +175 -0
- package/Tests/Server/Utils/MonitorCriteriaMessageFormatter.test.ts +282 -0
- package/Tests/Server/Utils/OuiLookupUtil.test.ts +59 -0
- package/Tests/Server/Utils/SeriesResourceLabels.test.ts +117 -0
- package/Tests/Server/Utils/StackTraceParser.test.ts +370 -0
- package/Tests/Server/Utils/Stream.test.ts +87 -0
- package/Tests/Server/Utils/ValidateGlobalProviderProjectTeams.test.ts +221 -0
- package/Tests/Server/Utils/WhatsAppTemplateUtil.test.ts +199 -0
- package/Tests/Types/Database/CompareOperatorWireSerialization.test.ts +33 -0
- package/Tests/Types/Email.test.ts +198 -0
- package/Tests/Types/Kubernetes/KubernetesObjectParser.test.ts +177 -0
- package/Tests/Types/Log/LogQueryToFilter.test.ts +111 -0
- package/Tests/Types/Monitor/MonitorStepNetworkDeviceMonitor.test.ts +141 -1
- package/Tests/Types/Monitor/MonitorType.test.ts +59 -1
- package/Tests/Types/Monitor/NetworkDeviceAlertPack.test.ts +97 -0
- package/Tests/Types/Monitor/SnmpEndpointDiscovery.test.ts +151 -0
- package/Tests/Types/Monitor/SnmpVendorTemplate.test.ts +110 -6
- package/Tests/Types/NetworkSite/DefaultNetworkSiteType.test.ts +129 -0
- package/Tests/Types/SerializableObjectDictionary.test.ts +166 -0
- package/Tests/Types/Time/RangeStartAndEndDateTime.test.ts +98 -0
- package/Tests/Types/WebsiteRequest.test.ts +230 -0
- package/Tests/UI/Components/EntityFilterRoundTrip.test.tsx +103 -0
- package/Tests/UI/Components/ModelTable/BaseModelTableUrlState.test.tsx +612 -0
- package/Tests/UI/Components/ModelTable/FilterDataToQuery.test.ts +275 -0
- package/Tests/UI/Utils/LogExport.test.ts +159 -0
- package/Tests/UI/Utils/Navigation.test.ts +183 -0
- package/Tests/UI/Utils/TableFilterUrlState.test.ts +539 -0
- package/Tests/UI/Utils/TableViewUrlState.test.ts +272 -0
- package/Tests/Utils/Base64.test.ts +51 -0
- package/Tests/Utils/Boolean.test.ts +76 -0
- package/Tests/Utils/Crypto.test.ts +48 -0
- package/Tests/Utils/Dashboard/DashboardSloComponent.test.ts +259 -0
- package/Tests/Utils/Dashboard/ModelQueryVariableInterpolation.test.ts +162 -0
- package/Tests/Utils/Enum.test.ts +54 -0
- package/Tests/Utils/IpCanonicalUtil.test.ts +85 -0
- package/Tests/Utils/Metrics/MetricSeriesFingerprint.test.ts +160 -0
- package/Tests/Utils/Monitor/EndpointAttachmentUtil.test.ts +836 -0
- package/Tests/Utils/Monitor/MonitorMetricType.test.ts +218 -0
- package/Tests/Utils/Monitor/NetworkTopologyUtil.test.ts +447 -0
- package/Tests/Utils/NetworkSite/CidrMatchUtil.test.ts +440 -0
- package/Tests/Utils/NetworkSite/MaterializedPathUtil.test.ts +205 -0
- package/Tests/Utils/NetworkSite/SiteStatusRollupUtil.test.ts +221 -0
- package/Tests/Utils/NetworkSite/SiteUptimeUtil.test.ts +283 -0
- package/Tests/Utils/ObjectUtil.test.ts +30 -0
- package/Tests/Utils/Slo/SloStatusColor.test.ts +89 -0
- package/Tests/Utils/Slo/SloUtil.test.ts +1980 -0
- package/Tests/Utils/Slo/SloWidgetFormat.test.ts +605 -0
- package/Tests/Utils/TechStack.test.ts +50 -0
- package/Tests/Utils/Traces/CriticalPath.test.ts +178 -0
- package/Types/AnalyticsDatabase/AnalyticsTableName.ts +10 -0
- package/Types/BaseDatabase/EqualTo.ts +9 -1
- package/Types/BaseDatabase/EqualToOrNull.ts +9 -1
- package/Types/BaseDatabase/NotEqual.ts +9 -1
- package/Types/Dashboard/DashboardComponentType.ts +1 -0
- package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +1 -0
- package/Types/Dashboard/DashboardComponents/DashboardSloComponent.ts +42 -0
- package/Types/Dashboard/DashboardTemplates.ts +214 -0
- package/Types/Email/EmailTemplateType.ts +2 -0
- package/Types/Kubernetes/KubernetesCostIngest.ts +79 -0
- package/Types/Monitor/CriteriaFilter.ts +9 -0
- package/Types/Monitor/MonitorStep.ts +5 -8
- package/Types/Monitor/MonitorStepNetworkDeviceMonitor.ts +27 -5
- package/Types/Monitor/MonitorType.ts +15 -5
- package/Types/Monitor/SnmpMonitor/ArpEntry.ts +14 -0
- package/Types/Monitor/SnmpMonitor/FdbEntry.ts +18 -0
- package/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.ts +10 -3
- package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +31 -5
- package/Types/Monitor/SnmpMonitor/SnmpMonitorResponse.ts +12 -0
- package/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.ts +231 -3
- package/Types/NetworkSite/DefaultNetworkSiteType.ts +20 -0
- package/Types/NotificationSetting/NotificationSettingEventType.ts +4 -0
- package/Types/Permission.ts +449 -0
- package/Types/ServiceLevelObjective/SliType.ts +6 -0
- package/Types/ServiceLevelObjective/SloMultiMonitorMode.ts +6 -0
- package/Types/ServiceLevelObjective/SloStatus.ts +9 -0
- package/Types/ServiceLevelObjective/SloWindowType.ts +6 -0
- package/Types/Telemetry/ServiceType.ts +1 -0
- package/UI/Components/Filters/EntityFilter.tsx +16 -0
- package/UI/Components/Filters/FilterViewer.tsx +22 -5
- package/UI/Components/List/List.tsx +8 -0
- package/UI/Components/ModelTable/BaseModelTable.tsx +309 -106
- package/UI/Components/ModelTable/FilterDataToQuery.ts +172 -0
- package/UI/Components/Navbar/NavBar.tsx +16 -2
- package/UI/Components/Navbar/NavBarMenuModal.tsx +3 -3
- package/UI/Utils/Navigation.ts +10 -0
- package/UI/Utils/TableFilterUrlState.ts +204 -17
- package/UI/Utils/TableViewUrlState.ts +165 -0
- package/Utils/Dashboard/Components/DashboardSloComponent.ts +114 -0
- package/Utils/Dashboard/Components/Index.ts +7 -0
- package/Utils/IpCanonicalUtil.ts +134 -0
- package/Utils/Monitor/EndpointAttachmentUtil.ts +508 -0
- package/Utils/Monitor/NetworkTopologyUtil.ts +157 -5
- package/Utils/NetworkSite/CidrMatchUtil.ts +296 -0
- package/Utils/NetworkSite/MaterializedPathUtil.ts +115 -0
- package/Utils/NetworkSite/SiteStatusRollupUtil.ts +97 -0
- package/Utils/NetworkSite/SiteUptimeUtil.ts +111 -0
- package/Utils/Slo/SloStatusColor.ts +54 -0
- package/Utils/Slo/SloUtil.ts +637 -0
- package/Utils/Slo/SloWidgetFormat.ts +383 -0
- package/build/dist/Models/AnalyticsModels/Index.js +4 -0
- package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/KubernetesCostAllocation.js +713 -0
- package/build/dist/Models/AnalyticsModels/KubernetesCostAllocation.js.map +1 -0
- package/build/dist/Models/AnalyticsModels/NetworkFlow.js +44 -0
- package/build/dist/Models/AnalyticsModels/NetworkFlow.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/SloHistory.js +215 -0
- package/build/dist/Models/AnalyticsModels/SloHistory.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Index.js +20 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDevice.js +458 -6
- package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +0 -6
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkEndpoint.js +779 -0
- package/build/dist/Models/DatabaseModels/NetworkEndpoint.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkSite.js +1180 -0
- package/build/dist/Models/DatabaseModels/NetworkSite.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkSiteAssignmentRule.js +534 -0
- package/build/dist/Models/DatabaseModels/NetworkSiteAssignmentRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkSiteLink.js +629 -0
- package/build/dist/Models/DatabaseModels/NetworkSiteLink.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkSiteStatusTimeline.js +538 -0
- package/build/dist/Models/DatabaseModels/NetworkSiteStatusTimeline.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkSiteType.js +522 -0
- package/build/dist/Models/DatabaseModels/NetworkSiteType.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjective.js +1124 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjective.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveBurnRateRule.js +769 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveBurnRateRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerTeam.js +460 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerUser.js +459 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerUser.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784757142154-AddNetworkSiteHierarchyAndEndpoints.js +130 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784757142154-AddNetworkSiteHierarchyAndEndpoints.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784897317860-AddNetworkSiteAlerting.js +31 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784897317860-AddNetworkSiteAlerting.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784970388777-AddNetworkDevicePollingColumns.js +36 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784970388777-AddNetworkDevicePollingColumns.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784986826214-AddNetworkSiteTypeTable.js +49 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784986826214-AddNetworkSiteTypeTable.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784987015619-AddServiceLevelObjective.js +140 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784987015619-AddServiceLevelObjective.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js +23 -6
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +24 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/KubernetesCostAllocationService.js +12 -0
- package/build/dist/Server/Services/KubernetesCostAllocationService.js.map +1 -0
- package/build/dist/Server/Services/MetricService.js +21 -3
- package/build/dist/Server/Services/MetricService.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +19 -0
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceService.js +351 -1
- package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
- package/build/dist/Server/Services/NetworkEndpointService.js +319 -0
- package/build/dist/Server/Services/NetworkEndpointService.js.map +1 -0
- package/build/dist/Server/Services/NetworkSiteAssignmentRuleService.js +90 -0
- package/build/dist/Server/Services/NetworkSiteAssignmentRuleService.js.map +1 -0
- package/build/dist/Server/Services/NetworkSiteLinkService.js +9 -0
- package/build/dist/Server/Services/NetworkSiteLinkService.js.map +1 -0
- package/build/dist/Server/Services/NetworkSiteService.js +1038 -0
- package/build/dist/Server/Services/NetworkSiteService.js.map +1 -0
- package/build/dist/Server/Services/NetworkSiteStatusTimelineService.js +9 -0
- package/build/dist/Server/Services/NetworkSiteStatusTimelineService.js.map +1 -0
- package/build/dist/Server/Services/NetworkSiteTypeService.js +9 -0
- package/build/dist/Server/Services/NetworkSiteTypeService.js.map +1 -0
- package/build/dist/Server/Services/ProjectService.js +98 -2
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/ServiceLevelObjectiveBurnRateRuleService.js +358 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveBurnRateRuleService.js.map +1 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveOwnerUserService.js +9 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveService.js +582 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveService.js.map +1 -0
- package/build/dist/Server/Services/SloHistoryService.js +77 -0
- package/build/dist/Server/Services/SloHistoryService.js.map +1 -0
- package/build/dist/Server/Services/UserNotificationSettingService.js +20 -0
- package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
- package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js +9 -0
- package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +15 -0
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js +31 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +76 -48
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
- package/build/dist/Server/Utils/Memory.js +9 -1
- package/build/dist/Server/Utils/Memory.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +132 -10
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Data/OuiVendors.json +6920 -0
- package/build/dist/Server/Utils/Monitor/DnsResolutionCache.js +77 -0
- package/build/dist/Server/Utils/Monitor/DnsResolutionCache.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +21 -41
- package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js +152 -40
- package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js +262 -0
- package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js +201 -0
- package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +152 -120
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/OuiLookupUtil.js +44 -0
- package/build/dist/Server/Utils/Monitor/OuiLookupUtil.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/SnmpInterfaceRateUtil.js +10 -10
- package/build/dist/Server/Utils/Monitor/SnmpInterfaceRateUtil.js.map +1 -1
- package/build/dist/Server/Utils/WhatsAppTemplateUtil.js +5 -0
- package/build/dist/Server/Utils/WhatsAppTemplateUtil.js.map +1 -1
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +10 -0
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -1
- package/build/dist/Types/BaseDatabase/EqualTo.js +9 -1
- package/build/dist/Types/BaseDatabase/EqualTo.js.map +1 -1
- package/build/dist/Types/BaseDatabase/EqualToOrNull.js +9 -1
- package/build/dist/Types/BaseDatabase/EqualToOrNull.js.map +1 -1
- package/build/dist/Types/BaseDatabase/NotEqual.js +9 -1
- package/build/dist/Types/BaseDatabase/NotEqual.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponentType.js +1 -0
- package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardSloComponent.js +23 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardSloComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardTemplates.js +205 -0
- package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
- package/build/dist/Types/Email/EmailTemplateType.js +1 -0
- package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
- package/build/dist/Types/Kubernetes/KubernetesCostIngest.js +21 -0
- package/build/dist/Types/Kubernetes/KubernetesCostIngest.js.map +1 -0
- package/build/dist/Types/Monitor/CriteriaFilter.js +1 -0
- package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +5 -5
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepNetworkDeviceMonitor.js +8 -0
- package/build/dist/Types/Monitor/MonitorStepNetworkDeviceMonitor.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorType.js +15 -5
- package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
- package/build/dist/Types/Monitor/SnmpMonitor/ArpEntry.js +2 -0
- package/build/dist/Types/Monitor/SnmpMonitor/ArpEntry.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/FdbEntry.js +2 -0
- package/build/dist/Types/Monitor/SnmpMonitor/FdbEntry.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js +9 -3
- package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js.map +1 -1
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.js +217 -3
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.js.map +1 -1
- package/build/dist/Types/NetworkSite/DefaultNetworkSiteType.js +21 -0
- package/build/dist/Types/NetworkSite/DefaultNetworkSiteType.js.map +1 -0
- package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js +3 -0
- package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
- package/build/dist/Types/Permission.js +409 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/ServiceLevelObjective/SliType.js +7 -0
- package/build/dist/Types/ServiceLevelObjective/SliType.js.map +1 -0
- package/build/dist/Types/ServiceLevelObjective/SloMultiMonitorMode.js +7 -0
- package/build/dist/Types/ServiceLevelObjective/SloMultiMonitorMode.js.map +1 -0
- package/build/dist/Types/ServiceLevelObjective/SloStatus.js +10 -0
- package/build/dist/Types/ServiceLevelObjective/SloStatus.js.map +1 -0
- package/build/dist/Types/ServiceLevelObjective/SloWindowType.js +7 -0
- package/build/dist/Types/ServiceLevelObjective/SloWindowType.js.map +1 -0
- package/build/dist/Types/Telemetry/ServiceType.js +1 -0
- package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
- package/build/dist/UI/Components/Filters/EntityFilter.js +15 -0
- package/build/dist/UI/Components/Filters/EntityFilter.js.map +1 -1
- package/build/dist/UI/Components/Filters/FilterViewer.js +19 -4
- package/build/dist/UI/Components/Filters/FilterViewer.js.map +1 -1
- package/build/dist/UI/Components/List/List.js +1 -1
- package/build/dist/UI/Components/List/List.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +235 -89
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/FilterDataToQuery.js +96 -0
- package/build/dist/UI/Components/ModelTable/FilterDataToQuery.js.map +1 -0
- package/build/dist/UI/Components/Navbar/NavBar.js +14 -2
- package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +3 -2
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
- package/build/dist/UI/Utils/Navigation.js +9 -0
- package/build/dist/UI/Utils/Navigation.js.map +1 -1
- package/build/dist/UI/Utils/TableFilterUrlState.js +159 -15
- package/build/dist/UI/Utils/TableFilterUrlState.js.map +1 -1
- package/build/dist/UI/Utils/TableViewUrlState.js +103 -0
- package/build/dist/UI/Utils/TableViewUrlState.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardSloComponent.js +93 -0
- package/build/dist/Utils/Dashboard/Components/DashboardSloComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/Index.js +4 -0
- package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
- package/build/dist/Utils/IpCanonicalUtil.js +110 -0
- package/build/dist/Utils/IpCanonicalUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/EndpointAttachmentUtil.js +311 -0
- package/build/dist/Utils/Monitor/EndpointAttachmentUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +98 -5
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
- package/build/dist/Utils/NetworkSite/CidrMatchUtil.js +222 -0
- package/build/dist/Utils/NetworkSite/CidrMatchUtil.js.map +1 -0
- package/build/dist/Utils/NetworkSite/MaterializedPathUtil.js +89 -0
- package/build/dist/Utils/NetworkSite/MaterializedPathUtil.js.map +1 -0
- package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js +60 -0
- package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js.map +1 -0
- package/build/dist/Utils/NetworkSite/SiteUptimeUtil.js +76 -0
- package/build/dist/Utils/NetworkSite/SiteUptimeUtil.js.map +1 -0
- package/build/dist/Utils/Slo/SloStatusColor.js +18 -0
- package/build/dist/Utils/Slo/SloStatusColor.js.map +1 -0
- package/build/dist/Utils/Slo/SloUtil.js +393 -0
- package/build/dist/Utils/Slo/SloUtil.js.map +1 -0
- package/build/dist/Utils/Slo/SloWidgetFormat.js +174 -0
- package/build/dist/Utils/Slo/SloWidgetFormat.js.map +1 -0
- package/package.json +2 -2
- package/Types/Dashboard/DashboardComponents/Index.ts +0 -7
- package/build/dist/Types/Dashboard/DashboardComponents/Index.js +0 -8
- package/build/dist/Types/Dashboard/DashboardComponents/Index.js.map +0 -1
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
import AggregationInterval from "../../Types/BaseDatabase/AggregationInterval";
|
|
2
|
+
import { SloWidgetMetric } from "../../Types/Dashboard/DashboardComponents/DashboardSloComponent";
|
|
3
|
+
import SloStatus from "../../Types/ServiceLevelObjective/SloStatus";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Pure value/label derivation for the dashboard SLO widget.
|
|
7
|
+
*
|
|
8
|
+
* Everything the widget needs to turn a ServiceLevelObjective row into
|
|
9
|
+
* display strings lives here rather than in the React renderer, so the
|
|
10
|
+
* formatting rules (and every null / negative / rounding edge) are
|
|
11
|
+
* unit-testable without a DOM.
|
|
12
|
+
*
|
|
13
|
+
* The worker-maintained state columns on ServiceLevelObjective are NULL
|
|
14
|
+
* until the SLO is first evaluated, so every entry point must be able to
|
|
15
|
+
* answer "not evaluated yet" instead of rendering "null%" or "NaN%".
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/** Shown in place of a number whenever the SLO has no evaluated state. */
|
|
19
|
+
export const SLO_NOT_EVALUATED_TEXT: string = "Not evaluated yet";
|
|
20
|
+
|
|
21
|
+
/** U+2212 MINUS SIGN — reads as a minus rather than a hyphen at tile sizes. */
|
|
22
|
+
const MINUS_SIGN: string = "−";
|
|
23
|
+
|
|
24
|
+
/** U+00D7 MULTIPLICATION SIGN — burn rate is a multiplier ("3.2×"). */
|
|
25
|
+
const MULTIPLICATION_SIGN: string = "×";
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* The subset of ServiceLevelObjective the widget reads. Declared
|
|
29
|
+
* structurally (rather than importing the database model) so this helper
|
|
30
|
+
* stays dependency-free and tests can pass plain objects. Every state
|
|
31
|
+
* field is nullable because the evaluation worker has not necessarily
|
|
32
|
+
* run yet.
|
|
33
|
+
*/
|
|
34
|
+
export interface SloWidgetStateData {
|
|
35
|
+
name?: string | undefined | null;
|
|
36
|
+
targetPercentage?: number | undefined | null;
|
|
37
|
+
currentSliPercentage?: number | undefined | null;
|
|
38
|
+
errorBudgetRemainingPercentage?: number | undefined | null;
|
|
39
|
+
errorBudgetRemainingSeconds?: number | undefined | null;
|
|
40
|
+
currentBurnRate?: number | undefined | null;
|
|
41
|
+
sloStatus?: SloStatus | undefined | null;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface SloWidgetTileDisplay {
|
|
45
|
+
/** False when the metric's state column is null/undefined/non-finite. */
|
|
46
|
+
isEvaluated: boolean;
|
|
47
|
+
/** The big number, or SLO_NOT_EVALUATED_TEXT when isEvaluated is false. */
|
|
48
|
+
value: string;
|
|
49
|
+
/** Secondary line under the number, or null when there is nothing to add. */
|
|
50
|
+
subline: string | null;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* `null` for anything that is not a real, finite number — which includes
|
|
55
|
+
* the un-evaluated NULL columns, and NaN/Infinity should a bad row ever
|
|
56
|
+
* reach the client. Booleans and strings are rejected too so a JSON
|
|
57
|
+
* round-trip cannot smuggle `"99.9"` past the finite check.
|
|
58
|
+
*/
|
|
59
|
+
type ToFiniteNumberFunction = (
|
|
60
|
+
value: number | undefined | null,
|
|
61
|
+
) => number | null;
|
|
62
|
+
|
|
63
|
+
const toFiniteNumber: ToFiniteNumberFunction = (
|
|
64
|
+
value: number | undefined | null,
|
|
65
|
+
): number | null => {
|
|
66
|
+
if (typeof value !== "number" || !isFinite(value)) {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return value;
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Round to at most `maxDecimals` places. Number -> string conversion drops
|
|
75
|
+
* trailing zeros for free, so 99.90 renders "99.9" and 100 renders "100"
|
|
76
|
+
* instead of "99.90" / "100.00".
|
|
77
|
+
*/
|
|
78
|
+
type RoundToDecimalsFunction = (value: number, maxDecimals: number) => number;
|
|
79
|
+
|
|
80
|
+
const roundToDecimals: RoundToDecimalsFunction = (
|
|
81
|
+
value: number,
|
|
82
|
+
maxDecimals: number,
|
|
83
|
+
): number => {
|
|
84
|
+
const factor: number = Math.pow(10, maxDecimals);
|
|
85
|
+
|
|
86
|
+
/*
|
|
87
|
+
* `+ 0` normalises -0 (which Math.round can produce from a tiny
|
|
88
|
+
* negative) so it never renders as "-0".
|
|
89
|
+
*/
|
|
90
|
+
return Math.round(value * factor) / factor + 0;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* SLI is quoted to three decimals to match the SLO pages — the digits
|
|
95
|
+
* past the second matter at 99.99x targets. Error budget remaining is a
|
|
96
|
+
* coarse gauge, so one decimal is enough; the precise number lives in the
|
|
97
|
+
* seconds subline.
|
|
98
|
+
*/
|
|
99
|
+
const SLI_DECIMALS: number = 3;
|
|
100
|
+
const BUDGET_PERCENT_DECIMALS: number = 1;
|
|
101
|
+
const BURN_RATE_DECIMALS: number = 2;
|
|
102
|
+
|
|
103
|
+
export type FormatSloPercentFunction = (
|
|
104
|
+
value: number | undefined | null,
|
|
105
|
+
maxDecimals?: number | undefined,
|
|
106
|
+
) => string | null;
|
|
107
|
+
|
|
108
|
+
export const formatSloPercent: FormatSloPercentFunction = (
|
|
109
|
+
value: number | undefined | null,
|
|
110
|
+
maxDecimals?: number | undefined,
|
|
111
|
+
): string | null => {
|
|
112
|
+
const numericValue: number | null = toFiniteNumber(value);
|
|
113
|
+
|
|
114
|
+
if (numericValue === null) {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return `${roundToDecimals(numericValue, maxDecimals ?? SLI_DECIMALS)}%`;
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
export type FormatSloBurnRateFunction = (
|
|
122
|
+
value: number | undefined | null,
|
|
123
|
+
) => string | null;
|
|
124
|
+
|
|
125
|
+
export const formatSloBurnRate: FormatSloBurnRateFunction = (
|
|
126
|
+
value: number | undefined | null,
|
|
127
|
+
): string | null => {
|
|
128
|
+
const numericValue: number | null = toFiniteNumber(value);
|
|
129
|
+
|
|
130
|
+
if (numericValue === null) {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return `${roundToDecimals(numericValue, BURN_RATE_DECIMALS)}${MULTIPLICATION_SIGN}`;
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* `errorBudgetRemainingSeconds` is SIGNED: negative means the budget is
|
|
139
|
+
* overspent. Render the overage plainly ("−42 min over budget") rather
|
|
140
|
+
* than clamping it to zero, which would hide a breach.
|
|
141
|
+
*/
|
|
142
|
+
export type FormatErrorBudgetRemainingSecondsFunction = (
|
|
143
|
+
seconds: number | undefined | null,
|
|
144
|
+
) => string | null;
|
|
145
|
+
|
|
146
|
+
export const formatErrorBudgetRemainingSeconds: FormatErrorBudgetRemainingSecondsFunction =
|
|
147
|
+
(seconds: number | undefined | null): string | null => {
|
|
148
|
+
const numericSeconds: number | null = toFiniteNumber(seconds);
|
|
149
|
+
|
|
150
|
+
if (numericSeconds === null) {
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
const isOverBudget: boolean = numericSeconds < 0;
|
|
155
|
+
const suffix: string = isOverBudget ? "over budget" : "remaining";
|
|
156
|
+
const minutes: number = Math.round(Math.abs(numericSeconds) / 60);
|
|
157
|
+
|
|
158
|
+
if (minutes === 0) {
|
|
159
|
+
/*
|
|
160
|
+
* Exactly zero is a real state worth stating; a sub-30-second
|
|
161
|
+
* remainder would otherwise round to a misleading "0 min".
|
|
162
|
+
*/
|
|
163
|
+
if (numericSeconds === 0) {
|
|
164
|
+
return `0 min ${suffix}`;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
return `under 1 min ${suffix}`;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
return `${isOverBudget ? MINUS_SIGN : ""}${minutes} min ${suffix}`;
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
export type GetSloMetricLabelFunction = (
|
|
174
|
+
sloMetric: SloWidgetMetric | undefined | null,
|
|
175
|
+
) => string;
|
|
176
|
+
|
|
177
|
+
export const getSloMetricLabel: GetSloMetricLabelFunction = (
|
|
178
|
+
sloMetric: SloWidgetMetric | undefined | null,
|
|
179
|
+
): string => {
|
|
180
|
+
if (sloMetric === SloWidgetMetric.ErrorBudgetRemaining) {
|
|
181
|
+
return "Error Budget Remaining";
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
if (sloMetric === SloWidgetMetric.BurnRate) {
|
|
185
|
+
return "Burn Rate";
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// Sli is the default metric, so it is also the fallback label.
|
|
189
|
+
return "SLI";
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* ClickHouse `SloHistory.metricName` value for each widget metric — the
|
|
194
|
+
* strings the evaluation worker writes.
|
|
195
|
+
*/
|
|
196
|
+
export type GetSloHistoryMetricNameFunction = (
|
|
197
|
+
sloMetric: SloWidgetMetric | undefined | null,
|
|
198
|
+
) => string;
|
|
199
|
+
|
|
200
|
+
export const getSloHistoryMetricName: GetSloHistoryMetricNameFunction = (
|
|
201
|
+
sloMetric: SloWidgetMetric | undefined | null,
|
|
202
|
+
): string => {
|
|
203
|
+
if (sloMetric === SloWidgetMetric.ErrorBudgetRemaining) {
|
|
204
|
+
return "error.budget.remaining.percent";
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
if (sloMetric === SloWidgetMetric.BurnRate) {
|
|
208
|
+
return "burn.rate";
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
return "sli.percent";
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Widget header: the author's title wins; otherwise fall back to the SLO
|
|
216
|
+
* name plus the metric label so an unnamed widget still says what it is.
|
|
217
|
+
* A whitespace-only title counts as empty.
|
|
218
|
+
*/
|
|
219
|
+
export type GetSloWidgetTitleFunction = (data: {
|
|
220
|
+
widgetTitle?: string | undefined | null;
|
|
221
|
+
sloName?: string | undefined | null;
|
|
222
|
+
sloMetric?: SloWidgetMetric | undefined | null;
|
|
223
|
+
}) => string;
|
|
224
|
+
|
|
225
|
+
export const getSloWidgetTitle: GetSloWidgetTitleFunction = (data: {
|
|
226
|
+
widgetTitle?: string | undefined | null;
|
|
227
|
+
sloName?: string | undefined | null;
|
|
228
|
+
sloMetric?: SloWidgetMetric | undefined | null;
|
|
229
|
+
}): string => {
|
|
230
|
+
const trimmedTitle: string = (data.widgetTitle || "").trim();
|
|
231
|
+
|
|
232
|
+
if (trimmedTitle) {
|
|
233
|
+
return trimmedTitle;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
const metricLabel: string = getSloMetricLabel(data.sloMetric);
|
|
237
|
+
const trimmedName: string = (data.sloName || "").trim();
|
|
238
|
+
|
|
239
|
+
if (!trimmedName) {
|
|
240
|
+
return metricLabel;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
return `${trimmedName} · ${metricLabel}`;
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Everything the tile renders for one metric. Returns the explicit
|
|
248
|
+
* not-evaluated state whenever the metric's own state column is missing,
|
|
249
|
+
* so the caller never has to guard against "null%" itself.
|
|
250
|
+
*/
|
|
251
|
+
export type GetSloWidgetTileDisplayFunction = (data: {
|
|
252
|
+
sloMetric?: SloWidgetMetric | undefined | null;
|
|
253
|
+
slo?: SloWidgetStateData | undefined | null;
|
|
254
|
+
}) => SloWidgetTileDisplay;
|
|
255
|
+
|
|
256
|
+
export const getSloWidgetTileDisplay: GetSloWidgetTileDisplayFunction = (data: {
|
|
257
|
+
sloMetric?: SloWidgetMetric | undefined | null;
|
|
258
|
+
slo?: SloWidgetStateData | undefined | null;
|
|
259
|
+
}): SloWidgetTileDisplay => {
|
|
260
|
+
const notEvaluated: SloWidgetTileDisplay = {
|
|
261
|
+
isEvaluated: false,
|
|
262
|
+
value: SLO_NOT_EVALUATED_TEXT,
|
|
263
|
+
subline: null,
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
const slo: SloWidgetStateData | undefined | null = data.slo;
|
|
267
|
+
|
|
268
|
+
if (!slo) {
|
|
269
|
+
return notEvaluated;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
if (data.sloMetric === SloWidgetMetric.ErrorBudgetRemaining) {
|
|
273
|
+
const value: string | null = formatSloPercent(
|
|
274
|
+
slo.errorBudgetRemainingPercentage,
|
|
275
|
+
BUDGET_PERCENT_DECIMALS,
|
|
276
|
+
);
|
|
277
|
+
|
|
278
|
+
if (value === null) {
|
|
279
|
+
return notEvaluated;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
return {
|
|
283
|
+
isEvaluated: true,
|
|
284
|
+
value: value,
|
|
285
|
+
subline: formatErrorBudgetRemainingSeconds(
|
|
286
|
+
slo.errorBudgetRemainingSeconds,
|
|
287
|
+
),
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
if (data.sloMetric === SloWidgetMetric.BurnRate) {
|
|
292
|
+
const value: string | null = formatSloBurnRate(slo.currentBurnRate);
|
|
293
|
+
|
|
294
|
+
if (value === null) {
|
|
295
|
+
return notEvaluated;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
return {
|
|
299
|
+
isEvaluated: true,
|
|
300
|
+
value: value,
|
|
301
|
+
subline: null,
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
// Sli (also the default when the argument was never set).
|
|
306
|
+
const value: string | null = formatSloPercent(
|
|
307
|
+
slo.currentSliPercentage,
|
|
308
|
+
SLI_DECIMALS,
|
|
309
|
+
);
|
|
310
|
+
|
|
311
|
+
if (value === null) {
|
|
312
|
+
return notEvaluated;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
const target: string | null = formatSloPercent(
|
|
316
|
+
slo.targetPercentage,
|
|
317
|
+
SLI_DECIMALS,
|
|
318
|
+
);
|
|
319
|
+
|
|
320
|
+
return {
|
|
321
|
+
isEvaluated: true,
|
|
322
|
+
value: value,
|
|
323
|
+
subline: target === null ? null : `target ${target}`,
|
|
324
|
+
};
|
|
325
|
+
};
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* Bucket size for the Chart display, picked from the dashboard's selected
|
|
329
|
+
* window so the point count stays bounded no matter how often the worker
|
|
330
|
+
* writes (it writes every ~5 minutes today). Same reasoning as the SLO
|
|
331
|
+
* detail page's charts: aggregate server-side rather than pulling raw
|
|
332
|
+
* rows under a row-count cap, which silently truncates long windows.
|
|
333
|
+
*
|
|
334
|
+
* <= 12h -> 5-minute buckets (<= 144 points, the native write cadence)
|
|
335
|
+
* <= 3d -> 30-minute buckets (<= 144 points)
|
|
336
|
+
* <= 45d -> hourly buckets (<= 1,080 points)
|
|
337
|
+
* > 45d -> daily buckets (<= ~365 points for a year)
|
|
338
|
+
*/
|
|
339
|
+
export type GetSloChartAggregationIntervalFunction = (
|
|
340
|
+
rangeInMinutes: number,
|
|
341
|
+
) => AggregationInterval;
|
|
342
|
+
|
|
343
|
+
export const getSloChartAggregationInterval: GetSloChartAggregationIntervalFunction =
|
|
344
|
+
(rangeInMinutes: number): AggregationInterval => {
|
|
345
|
+
if (!isFinite(rangeInMinutes) || rangeInMinutes <= 12 * 60) {
|
|
346
|
+
return AggregationInterval.FiveMinutes;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
if (rangeInMinutes <= 3 * 24 * 60) {
|
|
350
|
+
return AggregationInterval.ThirtyMinutes;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
if (rangeInMinutes <= 45 * 24 * 60) {
|
|
354
|
+
return AggregationInterval.Hour;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
return AggregationInterval.Day;
|
|
358
|
+
};
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* Y-axis / tooltip formatter for the Chart display. Bare numbers are
|
|
362
|
+
* ambiguous across the three metrics (a "3" could be 3% or 3× budget
|
|
363
|
+
* burn), so each metric carries its own unit.
|
|
364
|
+
*/
|
|
365
|
+
export type FormatSloChartValueFunction = (
|
|
366
|
+
sloMetric: SloWidgetMetric | undefined | null,
|
|
367
|
+
value: number,
|
|
368
|
+
) => string;
|
|
369
|
+
|
|
370
|
+
export const formatSloChartValue: FormatSloChartValueFunction = (
|
|
371
|
+
sloMetric: SloWidgetMetric | undefined | null,
|
|
372
|
+
value: number,
|
|
373
|
+
): string => {
|
|
374
|
+
if (sloMetric === SloWidgetMetric.BurnRate) {
|
|
375
|
+
return formatSloBurnRate(value) || "";
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
if (sloMetric === SloWidgetMetric.ErrorBudgetRemaining) {
|
|
379
|
+
return formatSloPercent(value, BUDGET_PERCENT_DECIMALS) || "";
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
return formatSloPercent(value, SLI_DECIMALS) || "";
|
|
383
|
+
};
|
|
@@ -6,10 +6,12 @@ import MetricItemAggMV1mByService from "./MetricItemAggMV1mByService";
|
|
|
6
6
|
import MetricItemAggMV1mByK8sCluster from "./MetricItemAggMV1mByK8sCluster";
|
|
7
7
|
import MetricItemAggMV1mByContainer from "./MetricItemAggMV1mByContainer";
|
|
8
8
|
import MetricBaselineHourly from "./MetricBaselineHourly";
|
|
9
|
+
import SloHistory from "./SloHistory";
|
|
9
10
|
import Span from "./Span";
|
|
10
11
|
import ExceptionInstance from "./ExceptionInstance";
|
|
11
12
|
import MonitorLog from "./MonitorLog";
|
|
12
13
|
import NetworkFlow from "./NetworkFlow";
|
|
14
|
+
import KubernetesCostAllocation from "./KubernetesCostAllocation";
|
|
13
15
|
import Profile from "./Profile";
|
|
14
16
|
import ProfileSample from "./ProfileSample";
|
|
15
17
|
import AuditLog from "./AuditLog";
|
|
@@ -37,9 +39,11 @@ const AnalyticsModels = [
|
|
|
37
39
|
MetricItemAggMV1mByK8sCluster,
|
|
38
40
|
MetricItemAggMV1mByContainer,
|
|
39
41
|
MetricBaselineHourly,
|
|
42
|
+
SloHistory,
|
|
40
43
|
ExceptionInstance,
|
|
41
44
|
MonitorLog,
|
|
42
45
|
NetworkFlow,
|
|
46
|
+
KubernetesCostAllocation,
|
|
43
47
|
Profile,
|
|
44
48
|
ProfileSample,
|
|
45
49
|
AuditLog,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Index.js","sourceRoot":"","sources":["../../../../Models/AnalyticsModels/Index.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,yBAAyB,MAAM,6BAA6B,CAAC;AACpE,OAAO,0BAA0B,MAAM,8BAA8B,CAAC;AACtE,OAAO,6BAA6B,MAAM,iCAAiC,CAAC;AAC5E,OAAO,4BAA4B,MAAM,gCAAgC,CAAC;AAC1E,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,eAAe,GAA0C;IAC7D,GAAG;IACH,IAAI;IACJ,MAAM;IACN;;;OAGG;IACH,iBAAiB;IACjB;;;;OAIG;IACH,yBAAyB;IACzB;;;;OAIG;IACH,0BAA0B;IAC1B,6BAA6B;IAC7B,4BAA4B;IAC5B,oBAAoB;IACpB,iBAAiB;IACjB,UAAU;IACV,WAAW;IACX,OAAO;IACP,aAAa;IACb,QAAQ;CACT,CAAC;AAEF,MAAM,YAAY,GAAsD,EAAE,CAAC;AAM3E,MAAM,CAAC,MAAM,kBAAkB,GAAuB,CACpD,SAAiB,EACsB,EAAE;IACzC,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,OAAO,YAAY,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;IACzC,CAAC;IAED,MAAM,SAAS,GACb,eAAe,CAAC,IAAI,CAAC,CAAC,SAAyC,EAAE,EAAE;QACjE,OAAO,IAAI,SAAS,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC;IACjD,CAAC,CAAC,CAAC;IAEL,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IAEpC,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"Index.js","sourceRoot":"","sources":["../../../../Models/AnalyticsModels/Index.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,yBAAyB,MAAM,6BAA6B,CAAC;AACpE,OAAO,0BAA0B,MAAM,8BAA8B,CAAC;AACtE,OAAO,6BAA6B,MAAM,iCAAiC,CAAC;AAC5E,OAAO,4BAA4B,MAAM,gCAAgC,CAAC;AAC1E,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,eAAe,GAA0C;IAC7D,GAAG;IACH,IAAI;IACJ,MAAM;IACN;;;OAGG;IACH,iBAAiB;IACjB;;;;OAIG;IACH,yBAAyB;IACzB;;;;OAIG;IACH,0BAA0B;IAC1B,6BAA6B;IAC7B,4BAA4B;IAC5B,oBAAoB;IACpB,UAAU;IACV,iBAAiB;IACjB,UAAU;IACV,WAAW;IACX,wBAAwB;IACxB,OAAO;IACP,aAAa;IACb,QAAQ;CACT,CAAC;AAEF,MAAM,YAAY,GAAsD,EAAE,CAAC;AAM3E,MAAM,CAAC,MAAM,kBAAkB,GAAuB,CACpD,SAAiB,EACsB,EAAE;IACzC,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,OAAO,YAAY,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;IACzC,CAAC;IAED,MAAM,SAAS,GACb,eAAe,CAAC,IAAI,CAAC,CAAC,SAAyC,EAAE,EAAE;QACjE,OAAO,IAAI,SAAS,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC;IACjD,CAAC,CAAC,CAAC;IAEL,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IAEpC,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC"}
|