@oneuptime/common 11.6.0 → 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/AnalyticsBaseModel/AnalyticsBaseModel.ts +41 -24
- package/Models/AnalyticsModels/Index.ts +4 -0
- package/Models/AnalyticsModels/KubernetesCostAllocation.ts +842 -0
- package/Models/AnalyticsModels/MetricBaselineHourly.ts +2 -0
- package/Models/AnalyticsModels/MetricItemAggMV1m.ts +5 -2
- package/Models/AnalyticsModels/MetricItemAggMV1mByContainer.ts +5 -2
- package/Models/AnalyticsModels/MetricItemAggMV1mByHostV2.ts +5 -2
- package/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.ts +5 -2
- package/Models/AnalyticsModels/MetricItemAggMV1mByService.ts +5 -2
- 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 +38 -10
- 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 +128 -52
- 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/AnalyticsBaseModel.test.ts +122 -0
- 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/ClusterAwareSchema.test.ts +164 -3
- package/Tests/Server/Utils/AnalyticsDatabase/Statement.test.ts +22 -0
- package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +503 -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/HashCode.test.ts +41 -0
- package/Tests/Types/Kubernetes/KubernetesObjectParser.test.ts +177 -0
- package/Tests/Types/Log/LogQueryParser.test.ts +186 -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/Dashboard/VariableInterpolation.test.ts +197 -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/Tests/Utils/ValueFormatter.test.ts +305 -0
- package/Types/AnalyticsDatabase/AnalyticsTableName.ts +10 -0
- package/Types/AnalyticsDatabase/TableColumn.ts +23 -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/AnalyticsBaseModel/AnalyticsBaseModel.js +25 -20
- package/build/dist/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.js.map +1 -1
- 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/MetricBaselineHourly.js +2 -0
- package/build/dist/Models/AnalyticsModels/MetricBaselineHourly.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1m.js +5 -2
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1m.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByContainer.js +5 -2
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByContainer.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByHostV2.js +5 -2
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByHostV2.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.js +5 -2
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByService.js +5 -2
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByService.js.map +1 -1
- 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 +32 -7
- 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 +105 -52
- 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/AnalyticsDatabase/TableColumn.js +7 -0
- package/build/dist/Types/AnalyticsDatabase/TableColumn.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
|
@@ -27,6 +27,7 @@ export enum DashboardTemplateType {
|
|
|
27
27
|
Incident = "Incident",
|
|
28
28
|
Alert = "Alert",
|
|
29
29
|
Kubernetes = "Kubernetes",
|
|
30
|
+
KubernetesCost = "KubernetesCost",
|
|
30
31
|
Host = "Host",
|
|
31
32
|
Proxmox = "Proxmox",
|
|
32
33
|
Ceph = "Ceph",
|
|
@@ -110,6 +111,14 @@ export const DashboardTemplates: Array<DashboardTemplate> = [
|
|
|
110
111
|
icon: IconProp.Kubernetes,
|
|
111
112
|
category: DashboardTemplateCategory.Infrastructure,
|
|
112
113
|
},
|
|
114
|
+
{
|
|
115
|
+
type: DashboardTemplateType.KubernetesCost,
|
|
116
|
+
name: "Kubernetes Cost Dashboard",
|
|
117
|
+
description:
|
|
118
|
+
"Node hourly cost trends, CPU/RAM unit costs, persistent volume and load balancer spend from your in-cluster cost engine (OpenCost / Kubecost).",
|
|
119
|
+
icon: IconProp.Billing,
|
|
120
|
+
category: DashboardTemplateCategory.Infrastructure,
|
|
121
|
+
},
|
|
113
122
|
{
|
|
114
123
|
type: DashboardTemplateType.Host,
|
|
115
124
|
name: "Hosts Dashboard",
|
|
@@ -1639,6 +1648,209 @@ function createKubernetesDashboardConfig(): DashboardViewConfig {
|
|
|
1639
1648
|
};
|
|
1640
1649
|
}
|
|
1641
1650
|
|
|
1651
|
+
function createKubernetesCostDashboardConfig(): DashboardViewConfig {
|
|
1652
|
+
/*
|
|
1653
|
+
* Built on the cost metrics the kubernetes-agent chart scrapes from an
|
|
1654
|
+
* in-cluster cost engine (OpenCost / Kubecost cost-model) when
|
|
1655
|
+
* `cost.metrics` is enabled — node_total_hourly_cost,
|
|
1656
|
+
* node_cpu_hourly_cost, node_ram_hourly_cost, pv_hourly_cost,
|
|
1657
|
+
* kubecost_load_balancer_cost. Per-workload allocation (namespace /
|
|
1658
|
+
* controller spend, idle, efficiency) is NOT charted here — those come
|
|
1659
|
+
* from the Allocation API poller and live on the cluster's Costs page.
|
|
1660
|
+
*
|
|
1661
|
+
* Layout notes:
|
|
1662
|
+
*
|
|
1663
|
+
* - Every cost metric here is a per-resource gauge (one series per
|
|
1664
|
+
* node / volume / load balancer) re-emitted on every scrape, so a
|
|
1665
|
+
* `Sum` aggregation would multiply by the scrape count over the
|
|
1666
|
+
* window — the same trap the Kubernetes template documents for
|
|
1667
|
+
* k8s.pod.phase. All widgets therefore use `Avg`, and the charts fan
|
|
1668
|
+
* out per resource via groupByAttributeKeys so a stacked area still
|
|
1669
|
+
* reads as the cluster total per bucket.
|
|
1670
|
+
*
|
|
1671
|
+
* - The engine's metric labels are plain Prometheus labels ("node",
|
|
1672
|
+
* "persistentvolume", "service_name"), not OTel resource attributes,
|
|
1673
|
+
* so group keys have no `resource.` prefix.
|
|
1674
|
+
*/
|
|
1675
|
+
const components: Array<DashboardBaseComponent> = [
|
|
1676
|
+
// Row 0: Title
|
|
1677
|
+
createTextComponent({
|
|
1678
|
+
text: "Kubernetes Cost Dashboard",
|
|
1679
|
+
top: 0,
|
|
1680
|
+
left: 0,
|
|
1681
|
+
width: 12,
|
|
1682
|
+
height: 1,
|
|
1683
|
+
isBold: true,
|
|
1684
|
+
}),
|
|
1685
|
+
|
|
1686
|
+
// Row 1: Unit-cost stat tiles. Rising cost is "worse" for all four.
|
|
1687
|
+
createValueComponent({
|
|
1688
|
+
title: "Node Cost $/hr (avg per node)",
|
|
1689
|
+
top: 1,
|
|
1690
|
+
left: 0,
|
|
1691
|
+
width: 3,
|
|
1692
|
+
metricConfig: {
|
|
1693
|
+
metricName: "node_total_hourly_cost",
|
|
1694
|
+
aggregationType: MetricsAggregationType.Avg,
|
|
1695
|
+
},
|
|
1696
|
+
trendDirection: DashboardValueTrendDirection.HigherIsWorse,
|
|
1697
|
+
}),
|
|
1698
|
+
createValueComponent({
|
|
1699
|
+
title: "CPU Cost $/core-hr (avg)",
|
|
1700
|
+
top: 1,
|
|
1701
|
+
left: 3,
|
|
1702
|
+
width: 3,
|
|
1703
|
+
metricConfig: {
|
|
1704
|
+
metricName: "node_cpu_hourly_cost",
|
|
1705
|
+
aggregationType: MetricsAggregationType.Avg,
|
|
1706
|
+
},
|
|
1707
|
+
trendDirection: DashboardValueTrendDirection.HigherIsWorse,
|
|
1708
|
+
}),
|
|
1709
|
+
createValueComponent({
|
|
1710
|
+
title: "RAM Cost $/GiB-hr (avg)",
|
|
1711
|
+
top: 1,
|
|
1712
|
+
left: 6,
|
|
1713
|
+
width: 3,
|
|
1714
|
+
metricConfig: {
|
|
1715
|
+
metricName: "node_ram_hourly_cost",
|
|
1716
|
+
aggregationType: MetricsAggregationType.Avg,
|
|
1717
|
+
},
|
|
1718
|
+
trendDirection: DashboardValueTrendDirection.HigherIsWorse,
|
|
1719
|
+
}),
|
|
1720
|
+
createValueComponent({
|
|
1721
|
+
title: "PV Cost $/hr (avg per volume)",
|
|
1722
|
+
top: 1,
|
|
1723
|
+
left: 9,
|
|
1724
|
+
width: 3,
|
|
1725
|
+
metricConfig: {
|
|
1726
|
+
metricName: "pv_hourly_cost",
|
|
1727
|
+
aggregationType: MetricsAggregationType.Avg,
|
|
1728
|
+
},
|
|
1729
|
+
trendDirection: DashboardValueTrendDirection.HigherIsWorse,
|
|
1730
|
+
}),
|
|
1731
|
+
|
|
1732
|
+
/*
|
|
1733
|
+
* Row 2-5: Hourly cost per node, stacked — the stack height is the
|
|
1734
|
+
* cluster's total node $/hr per bucket.
|
|
1735
|
+
*/
|
|
1736
|
+
createChartComponent({
|
|
1737
|
+
title: "Node Hourly Cost ($/hr, stacked by node)",
|
|
1738
|
+
chartType: DashboardChartType.StackedArea,
|
|
1739
|
+
top: 2,
|
|
1740
|
+
left: 0,
|
|
1741
|
+
width: 12,
|
|
1742
|
+
height: 3,
|
|
1743
|
+
metricConfig: {
|
|
1744
|
+
metricName: "node_total_hourly_cost",
|
|
1745
|
+
aggregationType: MetricsAggregationType.Avg,
|
|
1746
|
+
legend: "Node",
|
|
1747
|
+
legendUnit: "$/hr",
|
|
1748
|
+
groupByAttributeKeys: ["node"],
|
|
1749
|
+
},
|
|
1750
|
+
}),
|
|
1751
|
+
|
|
1752
|
+
// Row 5-8: Unit-cost trends per node — catches spot/instance-type churn.
|
|
1753
|
+
createChartComponent({
|
|
1754
|
+
title: "CPU Cost per Core Hour by Node",
|
|
1755
|
+
chartType: DashboardChartType.Line,
|
|
1756
|
+
top: 5,
|
|
1757
|
+
left: 0,
|
|
1758
|
+
width: 6,
|
|
1759
|
+
height: 3,
|
|
1760
|
+
metricConfig: {
|
|
1761
|
+
metricName: "node_cpu_hourly_cost",
|
|
1762
|
+
aggregationType: MetricsAggregationType.Avg,
|
|
1763
|
+
legend: "Node",
|
|
1764
|
+
legendUnit: "$/core-hr",
|
|
1765
|
+
groupByAttributeKeys: ["node"],
|
|
1766
|
+
},
|
|
1767
|
+
}),
|
|
1768
|
+
createChartComponent({
|
|
1769
|
+
title: "RAM Cost per GiB Hour by Node",
|
|
1770
|
+
chartType: DashboardChartType.Line,
|
|
1771
|
+
top: 5,
|
|
1772
|
+
left: 6,
|
|
1773
|
+
width: 6,
|
|
1774
|
+
height: 3,
|
|
1775
|
+
metricConfig: {
|
|
1776
|
+
metricName: "node_ram_hourly_cost",
|
|
1777
|
+
aggregationType: MetricsAggregationType.Avg,
|
|
1778
|
+
legend: "Node",
|
|
1779
|
+
legendUnit: "$/GiB-hr",
|
|
1780
|
+
groupByAttributeKeys: ["node"],
|
|
1781
|
+
},
|
|
1782
|
+
}),
|
|
1783
|
+
|
|
1784
|
+
// Row 8-11: Storage and load balancer spend.
|
|
1785
|
+
createChartComponent({
|
|
1786
|
+
title: "Persistent Volume Hourly Cost (stacked by volume)",
|
|
1787
|
+
chartType: DashboardChartType.StackedArea,
|
|
1788
|
+
top: 8,
|
|
1789
|
+
left: 0,
|
|
1790
|
+
width: 6,
|
|
1791
|
+
height: 3,
|
|
1792
|
+
metricConfig: {
|
|
1793
|
+
metricName: "pv_hourly_cost",
|
|
1794
|
+
aggregationType: MetricsAggregationType.Avg,
|
|
1795
|
+
legend: "Volume",
|
|
1796
|
+
legendUnit: "$/hr",
|
|
1797
|
+
groupByAttributeKeys: ["persistentvolume"],
|
|
1798
|
+
},
|
|
1799
|
+
}),
|
|
1800
|
+
createChartComponent({
|
|
1801
|
+
title: "Load Balancer Hourly Cost (stacked by service)",
|
|
1802
|
+
chartType: DashboardChartType.StackedArea,
|
|
1803
|
+
top: 8,
|
|
1804
|
+
left: 6,
|
|
1805
|
+
width: 6,
|
|
1806
|
+
height: 3,
|
|
1807
|
+
metricConfig: {
|
|
1808
|
+
metricName: "kubecost_load_balancer_cost",
|
|
1809
|
+
aggregationType: MetricsAggregationType.Avg,
|
|
1810
|
+
legend: "Service",
|
|
1811
|
+
legendUnit: "$/hr",
|
|
1812
|
+
groupByAttributeKeys: ["service_name"],
|
|
1813
|
+
},
|
|
1814
|
+
}),
|
|
1815
|
+
|
|
1816
|
+
// Row 11-14: Per-node cost table for quick ranking.
|
|
1817
|
+
createTableComponent({
|
|
1818
|
+
title: "Cost by Node ($/hr)",
|
|
1819
|
+
top: 11,
|
|
1820
|
+
left: 0,
|
|
1821
|
+
width: 12,
|
|
1822
|
+
height: 3,
|
|
1823
|
+
maxRows: 20,
|
|
1824
|
+
metricConfig: {
|
|
1825
|
+
metricName: "node_total_hourly_cost",
|
|
1826
|
+
aggregationType: MetricsAggregationType.Avg,
|
|
1827
|
+
groupByAttributeKeys: ["node"],
|
|
1828
|
+
},
|
|
1829
|
+
}),
|
|
1830
|
+
];
|
|
1831
|
+
|
|
1832
|
+
/*
|
|
1833
|
+
* Cluster picker so multi-cluster projects can scope every widget from
|
|
1834
|
+
* the toolbar. The deployment collector stamps k8s.cluster.name on the
|
|
1835
|
+
* scraped cost metrics, so the binding key matches the other
|
|
1836
|
+
* Kubernetes dashboards.
|
|
1837
|
+
*/
|
|
1838
|
+
const variables: Array<DashboardVariable> = [
|
|
1839
|
+
createTelemetryAttributeVariable({
|
|
1840
|
+
name: "cluster",
|
|
1841
|
+
label: "Cluster",
|
|
1842
|
+
attributeKey: "resource.k8s.cluster.name",
|
|
1843
|
+
}),
|
|
1844
|
+
];
|
|
1845
|
+
|
|
1846
|
+
return {
|
|
1847
|
+
_type: ObjectType.DashboardViewConfig,
|
|
1848
|
+
components,
|
|
1849
|
+
variables,
|
|
1850
|
+
heightInDashboardUnits: Math.max(DashboardSize.heightInDashboardUnits, 14),
|
|
1851
|
+
};
|
|
1852
|
+
}
|
|
1853
|
+
|
|
1642
1854
|
function createMetricsDashboardConfig(): DashboardViewConfig {
|
|
1643
1855
|
/*
|
|
1644
1856
|
* Layout notes:
|
|
@@ -2697,6 +2909,8 @@ export function getTemplateConfig(
|
|
|
2697
2909
|
return createAlertDashboardConfig();
|
|
2698
2910
|
case DashboardTemplateType.Kubernetes:
|
|
2699
2911
|
return createKubernetesDashboardConfig();
|
|
2912
|
+
case DashboardTemplateType.KubernetesCost:
|
|
2913
|
+
return createKubernetesCostDashboardConfig();
|
|
2700
2914
|
case DashboardTemplateType.Host:
|
|
2701
2915
|
return createHostDashboardConfig();
|
|
2702
2916
|
case DashboardTemplateType.Proxmox:
|
|
@@ -32,6 +32,8 @@ enum EmailTemplateType {
|
|
|
32
32
|
MonitorProbesStatus = "MonitorProbesStatus.hbs",
|
|
33
33
|
MonitorOwnerStatusChanged = "MonitorOwnerStatusChanged.hbs",
|
|
34
34
|
|
|
35
|
+
SloOwnerStatusChanged = "SloOwnerStatusChanged.hbs",
|
|
36
|
+
|
|
35
37
|
IncidentOwnerAdded = "IncidentOwnerAdded.hbs",
|
|
36
38
|
IncidentOwnerStateChanged = "IncidentOwnerStateChanged.hbs",
|
|
37
39
|
IncidentOwnerNotePosted = "IncidentOwnerNotePosted.hbs",
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Wire contract for POST /kubernetes-cost/ingest — the payload the
|
|
3
|
+
* Kubernetes agent's cost poller ships after querying an in-cluster cost
|
|
4
|
+
* engine's Allocation API (OpenCost `/allocation/compute`, Kubecost
|
|
5
|
+
* `/model/allocation`). One request carries one cluster's allocation rows
|
|
6
|
+
* for one or more closed time windows.
|
|
7
|
+
*
|
|
8
|
+
* The route is mounted under both "/telemetry" and "/" (TELEMETRY_PREFIXES).
|
|
9
|
+
* The agent posts to the "/telemetry" prefix — see the note in
|
|
10
|
+
* KubernetesCostAgent/Shipper.ts for why.
|
|
11
|
+
*
|
|
12
|
+
* The agent projects are standalone (no dependency on Common), so the
|
|
13
|
+
* poller carries its own mirror of these interfaces
|
|
14
|
+
* (KubernetesCostAgent/Types.ts) — keep the two in sync.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
export interface KubernetesCostAllocationIngestRow {
|
|
18
|
+
/** ISO-8601 start of the allocation window. Required. */
|
|
19
|
+
windowStart: string;
|
|
20
|
+
/** ISO-8601 end of the allocation window. Required. */
|
|
21
|
+
windowEnd: string;
|
|
22
|
+
|
|
23
|
+
/*
|
|
24
|
+
* Workload identity. All optional — idle / unallocated rows carry the
|
|
25
|
+
* engine's sentinel in `namespace` ("__idle__" / "__unallocated__") and
|
|
26
|
+
* nothing else.
|
|
27
|
+
*/
|
|
28
|
+
namespace?: string | undefined;
|
|
29
|
+
controllerKind?: string | undefined;
|
|
30
|
+
controllerName?: string | undefined;
|
|
31
|
+
podName?: string | undefined;
|
|
32
|
+
containerName?: string | undefined;
|
|
33
|
+
nodeName?: string | undefined;
|
|
34
|
+
providerId?: string | undefined;
|
|
35
|
+
labels?: Record<string, string> | undefined;
|
|
36
|
+
|
|
37
|
+
// Usage / request measures.
|
|
38
|
+
cpuCoreHours?: number | undefined;
|
|
39
|
+
cpuCoreRequestAverage?: number | undefined;
|
|
40
|
+
cpuCoreUsageAverage?: number | undefined;
|
|
41
|
+
gpuHours?: number | undefined;
|
|
42
|
+
ramByteHours?: number | undefined;
|
|
43
|
+
ramBytesRequestAverage?: number | undefined;
|
|
44
|
+
ramBytesUsageAverage?: number | undefined;
|
|
45
|
+
pvByteHours?: number | undefined;
|
|
46
|
+
|
|
47
|
+
// Pre-priced cost components (in `currency` of the payload).
|
|
48
|
+
cpuCost?: number | undefined;
|
|
49
|
+
gpuCost?: number | undefined;
|
|
50
|
+
ramCost?: number | undefined;
|
|
51
|
+
pvCost?: number | undefined;
|
|
52
|
+
networkCost?: number | undefined;
|
|
53
|
+
loadBalancerCost?: number | undefined;
|
|
54
|
+
sharedCost?: number | undefined;
|
|
55
|
+
externalCost?: number | undefined;
|
|
56
|
+
totalCost?: number | undefined;
|
|
57
|
+
|
|
58
|
+
// Efficiency ratios (usage / request, 0..1+).
|
|
59
|
+
cpuEfficiency?: number | undefined;
|
|
60
|
+
ramEfficiency?: number | undefined;
|
|
61
|
+
totalEfficiency?: number | undefined;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export interface KubernetesCostIngestPayload {
|
|
65
|
+
/**
|
|
66
|
+
* Cluster identifier — must match the k8s.cluster.name the agent stamps
|
|
67
|
+
* on metrics so cost rows land on the same KubernetesCluster resource.
|
|
68
|
+
*/
|
|
69
|
+
clusterName: string;
|
|
70
|
+
/** Currency code of all cost figures (e.g. "USD"). Optional. */
|
|
71
|
+
currency?: string | undefined;
|
|
72
|
+
allocations: Array<KubernetesCostAllocationIngestRow>;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Upper bound on `allocations.length` per request. The poller chunks its
|
|
77
|
+
* output to stay under this; the ingest endpoint rejects anything larger.
|
|
78
|
+
*/
|
|
79
|
+
export const MAX_KUBERNETES_COST_ALLOCATIONS_PER_REQUEST: number = 5000;
|
|
@@ -119,6 +119,14 @@ export interface ServerMonitorOptions {
|
|
|
119
119
|
|
|
120
120
|
export interface SnmpMonitorOptions {
|
|
121
121
|
oid?: string | undefined;
|
|
122
|
+
/*
|
|
123
|
+
* Optional interface scope for the interface CheckOns (down /
|
|
124
|
+
* utilization / errors). When set, only interfaces whose name or alias
|
|
125
|
+
* equals this value (case-insensitive) are evaluated — so "uplink Gi0/1
|
|
126
|
+
* above 80%" does not fire because an access port got busy. Empty =
|
|
127
|
+
* every monitored interface, the historical behavior.
|
|
128
|
+
*/
|
|
129
|
+
interfaceName?: string | undefined;
|
|
122
130
|
}
|
|
123
131
|
|
|
124
132
|
export enum EvaluateOverTimeType {
|
|
@@ -429,6 +437,7 @@ export const CriteriaFilterSchema: ZodSchema = Zod.object({
|
|
|
429
437
|
}).optional(),
|
|
430
438
|
snmpMonitorOptions: Zod.object({
|
|
431
439
|
oid: Zod.string().optional(),
|
|
440
|
+
interfaceName: Zod.string().optional(),
|
|
432
441
|
}).optional(),
|
|
433
442
|
filterType: Zod.string().optional(),
|
|
434
443
|
value: Zod.union([Zod.string(), Zod.number()]).optional(),
|
|
@@ -734,18 +734,15 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
734
734
|
return "Port is required";
|
|
735
735
|
}
|
|
736
736
|
|
|
737
|
+
/*
|
|
738
|
+
* A Network Device monitor only needs to know WHICH device to alert
|
|
739
|
+
* on. What gets collected (interface walks, endpoint discovery, health
|
|
740
|
+
* OIDs) is configured on the NetworkDevice resource itself, not here.
|
|
741
|
+
*/
|
|
737
742
|
if (monitorType === MonitorType.NetworkDevice) {
|
|
738
743
|
if (!value.data.networkDeviceMonitor?.networkDeviceId) {
|
|
739
744
|
return "Network Device is required";
|
|
740
745
|
}
|
|
741
|
-
|
|
742
|
-
if (
|
|
743
|
-
!value.data.networkDeviceMonitor.monitorInterfaces &&
|
|
744
|
-
(!value.data.networkDeviceMonitor.oids ||
|
|
745
|
-
value.data.networkDeviceMonitor.oids.length === 0)
|
|
746
|
-
) {
|
|
747
|
-
return "Enable interface monitoring or configure at least one OID";
|
|
748
|
-
}
|
|
749
746
|
}
|
|
750
747
|
|
|
751
748
|
if (monitorType === MonitorType.DNS) {
|
|
@@ -2,15 +2,29 @@ import { JSONObject } from "../JSON";
|
|
|
2
2
|
import SnmpOid from "./SnmpMonitor/SnmpOid";
|
|
3
3
|
|
|
4
4
|
/*
|
|
5
|
-
* Step configuration for Network Device monitors.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
5
|
+
* Step configuration for Network Device monitors. The step is purely a
|
|
6
|
+
* device reference: the NetworkDevice resource owns the hostname,
|
|
7
|
+
* credentials, polling schedule, interface walks, endpoint discovery, and
|
|
8
|
+
* health OIDs. The monitor is the alerting layer — it is evaluated
|
|
9
|
+
* server-side against the device's walk results and traps.
|
|
10
10
|
*/
|
|
11
11
|
export default interface MonitorStepNetworkDeviceMonitor {
|
|
12
12
|
networkDeviceId: string | undefined;
|
|
13
|
+
/*
|
|
14
|
+
* DEPRECATED: interface walking is now configured on the NetworkDevice
|
|
15
|
+
* (walkInterfaces). Retained so steps saved before the move still parse;
|
|
16
|
+
* never written by the dashboard anymore.
|
|
17
|
+
*/
|
|
13
18
|
monitorInterfaces: boolean;
|
|
19
|
+
/*
|
|
20
|
+
* DEPRECATED: endpoint collection is now configured on the NetworkDevice
|
|
21
|
+
* (collectEndpoints). Retained for parsing legacy steps only.
|
|
22
|
+
*/
|
|
23
|
+
collectEndpoints?: boolean | undefined;
|
|
24
|
+
/*
|
|
25
|
+
* DEPRECATED: health OIDs are now configured on the NetworkDevice
|
|
26
|
+
* (snmpOids). Retained for parsing legacy steps only.
|
|
27
|
+
*/
|
|
14
28
|
oids: Array<SnmpOid>;
|
|
15
29
|
}
|
|
16
30
|
|
|
@@ -19,6 +33,8 @@ export class MonitorStepNetworkDeviceMonitorUtil {
|
|
|
19
33
|
return {
|
|
20
34
|
networkDeviceId: undefined,
|
|
21
35
|
monitorInterfaces: true,
|
|
36
|
+
// Off by default; the form renders it as an explicit opt-in switch.
|
|
37
|
+
collectEndpoints: false,
|
|
22
38
|
oids: [],
|
|
23
39
|
};
|
|
24
40
|
}
|
|
@@ -27,6 +43,11 @@ export class MonitorStepNetworkDeviceMonitorUtil {
|
|
|
27
43
|
return {
|
|
28
44
|
networkDeviceId: (json["networkDeviceId"] as string) || undefined,
|
|
29
45
|
monitorInterfaces: json["monitorInterfaces"] !== false,
|
|
46
|
+
/*
|
|
47
|
+
* Unlike monitorInterfaces, this is default-FALSE: only an explicit
|
|
48
|
+
* true opts in, so steps saved before the flag existed stay off.
|
|
49
|
+
*/
|
|
50
|
+
collectEndpoints: json["collectEndpoints"] === true,
|
|
30
51
|
oids: ((json["oids"] as Array<JSONObject>) || []).map(
|
|
31
52
|
(oid: JSONObject) => {
|
|
32
53
|
return {
|
|
@@ -43,6 +64,7 @@ export class MonitorStepNetworkDeviceMonitorUtil {
|
|
|
43
64
|
return {
|
|
44
65
|
networkDeviceId: monitor.networkDeviceId,
|
|
45
66
|
monitorInterfaces: monitor.monitorInterfaces,
|
|
67
|
+
collectEndpoints: monitor.collectEndpoints,
|
|
46
68
|
oids: monitor.oids.map((oid: SnmpOid) => {
|
|
47
69
|
return {
|
|
48
70
|
oid: oid.oid,
|
|
@@ -37,9 +37,11 @@ enum MonitorType {
|
|
|
37
37
|
|
|
38
38
|
/*
|
|
39
39
|
* Network device monitoring (SNMP-based). Replaced the retired SNMP
|
|
40
|
-
* monitor type
|
|
41
|
-
*
|
|
42
|
-
*
|
|
40
|
+
* monitor type. The referenced NetworkDevice resource owns everything
|
|
41
|
+
* about data collection — credentials, polling schedule, interface
|
|
42
|
+
* walks, endpoint discovery, and health OIDs. The monitor is purely the
|
|
43
|
+
* alerting layer: it picks a device and evaluates criteria against the
|
|
44
|
+
* device's walk results and traps, server-side.
|
|
43
45
|
*/
|
|
44
46
|
NetworkDevice = "Network Device",
|
|
45
47
|
|
|
@@ -354,7 +356,7 @@ export class MonitorTypeHelper {
|
|
|
354
356
|
monitorType: MonitorType.NetworkDevice,
|
|
355
357
|
title: "Network Device",
|
|
356
358
|
description:
|
|
357
|
-
"This monitor type
|
|
359
|
+
"This monitor type alerts on a registered Network Device (switch, router, firewall, or access point) — availability, interface status, bandwidth, health OIDs, and traps. The device itself is polled by its assigned probe; the monitor chooses what to alert on.",
|
|
358
360
|
icon: IconProp.Signal,
|
|
359
361
|
},
|
|
360
362
|
{
|
|
@@ -420,6 +422,15 @@ export class MonitorTypeHelper {
|
|
|
420
422
|
return monitorTypeProps[0].title;
|
|
421
423
|
}
|
|
422
424
|
|
|
425
|
+
/*
|
|
426
|
+
* Monitor types the probe executes on a schedule via MonitorProbe rows.
|
|
427
|
+
*
|
|
428
|
+
* NetworkDevice is deliberately NOT probeable: the NetworkDevice resource
|
|
429
|
+
* owns its own polling (the device's assigned probe walks it on the
|
|
430
|
+
* device's schedule), and Network Device monitors are evaluated
|
|
431
|
+
* server-side against each walk result and incoming trap — like
|
|
432
|
+
* IncomingRequest monitors, they never appear in a probe's work list.
|
|
433
|
+
*/
|
|
423
434
|
public static isProbableMonitor(monitorType: MonitorType): boolean {
|
|
424
435
|
const isProbeableMonitor: boolean =
|
|
425
436
|
monitorType === MonitorType.API ||
|
|
@@ -430,7 +441,6 @@ export class MonitorTypeHelper {
|
|
|
430
441
|
monitorType === MonitorType.SSLCertificate ||
|
|
431
442
|
monitorType === MonitorType.SyntheticMonitor ||
|
|
432
443
|
monitorType === MonitorType.CustomJavaScriptCode ||
|
|
433
|
-
monitorType === MonitorType.NetworkDevice ||
|
|
434
444
|
monitorType === MonitorType.DNS ||
|
|
435
445
|
monitorType === MonitorType.DNSSEC ||
|
|
436
446
|
monitorType === MonitorType.Domain ||
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* One entry from a device's ARP / IP-to-media table (IP-MIB
|
|
3
|
+
* ipNetToMediaTable). Captured by the probe alongside the interface walk
|
|
4
|
+
* when endpoint collection is enabled; the server joins these against FDB
|
|
5
|
+
* entries by MAC address to give discovered endpoints an IP address on the
|
|
6
|
+
* topology graph.
|
|
7
|
+
*/
|
|
8
|
+
export default interface ArpEntry {
|
|
9
|
+
ipAddress: string;
|
|
10
|
+
macAddress: string;
|
|
11
|
+
interfaceIndex: number;
|
|
12
|
+
// ipNetToMediaType, decoded: e.g. "dynamic", "static", "invalid".
|
|
13
|
+
entryType?: string | undefined;
|
|
14
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* One entry from a switch's forwarding database (BRIDGE-MIB dot1dTpFdbTable
|
|
3
|
+
* or Q-BRIDGE-MIB dot1qTpFdbTable). Each row says "this MAC address was
|
|
4
|
+
* learned on this bridge port" — the raw material for endpoint discovery.
|
|
5
|
+
* The probe resolves bridgePort to an ifIndex via dot1dBasePortIfIndex when
|
|
6
|
+
* the device implements it; the server turns MACs learned on leaf ports
|
|
7
|
+
* into endpoint nodes on the topology graph.
|
|
8
|
+
*/
|
|
9
|
+
export default interface FdbEntry {
|
|
10
|
+
macAddress: string;
|
|
11
|
+
bridgePort: number;
|
|
12
|
+
// ifIndex the bridge port maps to, when dot1dBasePortIfIndex resolved it.
|
|
13
|
+
interfaceIndex?: number | undefined;
|
|
14
|
+
// From Q-BRIDGE-MIB walks; undefined when only dot1d data was available.
|
|
15
|
+
vlanId?: number | undefined;
|
|
16
|
+
// dot1dTpFdbStatus, decoded: e.g. "learned", "self", "mgmt".
|
|
17
|
+
status?: string | undefined;
|
|
18
|
+
}
|
|
@@ -88,8 +88,9 @@ export default class NetworkDeviceAlertPackUtil {
|
|
|
88
88
|
|
|
89
89
|
/*
|
|
90
90
|
* Builds ready-to-append MonitorCriteriaInstances from the pack. Each is
|
|
91
|
-
* enabled
|
|
92
|
-
* policies are left for the
|
|
91
|
+
* enabled; incident-creating items also change the monitor status to the
|
|
92
|
+
* context's down status. Severities and on-call policies are left for the
|
|
93
|
+
* user to fill in.
|
|
93
94
|
*/
|
|
94
95
|
public static buildCriteriaInstances(
|
|
95
96
|
context?: NetworkDeviceAlertPackContext,
|
|
@@ -105,7 +106,13 @@ export default class NetworkDeviceAlertPackUtil {
|
|
|
105
106
|
alerts: [],
|
|
106
107
|
createAlerts: item.createAlerts,
|
|
107
108
|
createIncidents: item.createIncidents,
|
|
108
|
-
|
|
109
|
+
/*
|
|
110
|
+
* Never claim to change monitor status without a status to change
|
|
111
|
+
* to — a caller that passes no context would otherwise produce
|
|
112
|
+
* criteria that "change" the monitor to an undefined status.
|
|
113
|
+
*/
|
|
114
|
+
changeMonitorStatus:
|
|
115
|
+
item.createIncidents && Boolean(context?.downMonitorStatusId),
|
|
109
116
|
isEnabled: true,
|
|
110
117
|
name: item.name,
|
|
111
118
|
description: item.description,
|
|
@@ -1,16 +1,30 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* A derived view of the network topology for one project, built server-side
|
|
3
|
-
* from the LLDP and CDP neighbor data each device reports
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* from the LLDP and CDP neighbor data each device reports (and, when
|
|
4
|
+
* endpoint collection is enabled, the ARP/FDB endpoint data). Nodes are
|
|
5
|
+
* devices; unmanaged neighbors (discovery-protocol peers with no matching
|
|
6
|
+
* NetworkDevice) appear as lightweight nodes so the graph doesn't dead-end,
|
|
7
|
+
* and discovered endpoints appear as "endpoint" nodes attached via "fdb"
|
|
8
|
+
* links.
|
|
6
9
|
* Edges are physical links — one per device pair even when both ends (or
|
|
7
10
|
* both protocols) report it — annotated with the operational state of the
|
|
8
11
|
* interface at each end when the neighbor entry identifies it.
|
|
9
12
|
*/
|
|
10
13
|
export type NetworkTopologyNodeStatus = "up" | "down" | "unknown";
|
|
11
14
|
|
|
12
|
-
|
|
13
|
-
|
|
15
|
+
/*
|
|
16
|
+
* Which source(s) reported a link — a discovery protocol, or the bridge
|
|
17
|
+
* forwarding database (endpoint attachment).
|
|
18
|
+
*/
|
|
19
|
+
export type NetworkTopologyLinkProtocol = "lldp" | "cdp" | "fdb";
|
|
20
|
+
|
|
21
|
+
/*
|
|
22
|
+
* What a node represents. Older payloads carry no kind — readers should
|
|
23
|
+
* derive it from isManaged ("device" when true, "unmanaged" otherwise).
|
|
24
|
+
* "endpoint" nodes are non-network hosts (POS terminals, cameras, kiosks)
|
|
25
|
+
* discovered from ARP/FDB data.
|
|
26
|
+
*/
|
|
27
|
+
export type NetworkTopologyNodeKind = "device" | "unmanaged" | "endpoint";
|
|
14
28
|
|
|
15
29
|
export interface NetworkTopologyNode {
|
|
16
30
|
// Device id for managed nodes; a synthetic "unmanaged:<key>" id otherwise.
|
|
@@ -18,6 +32,8 @@ export interface NetworkTopologyNode {
|
|
|
18
32
|
name: string;
|
|
19
33
|
isManaged: boolean;
|
|
20
34
|
status: NetworkTopologyNodeStatus;
|
|
35
|
+
// Missing on older payloads — derive from isManaged.
|
|
36
|
+
kind?: NetworkTopologyNodeKind | undefined;
|
|
21
37
|
interfacesUp?: number | undefined;
|
|
22
38
|
interfacesDown?: number | undefined;
|
|
23
39
|
// Extra device identity for search and the detail panel (managed nodes).
|
|
@@ -25,6 +41,16 @@ export interface NetworkTopologyNode {
|
|
|
25
41
|
vendor?: string | undefined;
|
|
26
42
|
// For unmanaged CDP peers this carries the reported platform string.
|
|
27
43
|
deviceModel?: string | undefined;
|
|
44
|
+
/*
|
|
45
|
+
* Endpoint identity (endpoint nodes only), all best-effort: MAC from the
|
|
46
|
+
* FDB, IP from the ARP join, classification from OUI/heuristics (e.g.
|
|
47
|
+
* "pos-terminal", "camera", "printer"), VLAN from the FDB entry that
|
|
48
|
+
* learned the MAC. Optional so older payloads stay valid.
|
|
49
|
+
*/
|
|
50
|
+
macAddress?: string | undefined;
|
|
51
|
+
ipAddress?: string | undefined;
|
|
52
|
+
classification?: string | undefined;
|
|
53
|
+
vlanId?: number | undefined;
|
|
28
54
|
}
|
|
29
55
|
|
|
30
56
|
/*
|
|
@@ -3,6 +3,8 @@ import SnmpDataType from "./SnmpDataType";
|
|
|
3
3
|
import SnmpInterface from "./SnmpInterface";
|
|
4
4
|
import LldpNeighbor from "./LldpNeighbor";
|
|
5
5
|
import CdpNeighbor from "./CdpNeighbor";
|
|
6
|
+
import ArpEntry from "./ArpEntry";
|
|
7
|
+
import FdbEntry from "./FdbEntry";
|
|
6
8
|
import SnmpSystemInfo from "./SnmpSystemInfo";
|
|
7
9
|
import SnmpEntityInfo from "./SnmpEntityInfo";
|
|
8
10
|
|
|
@@ -49,4 +51,14 @@ export default interface SnmpMonitorResponse {
|
|
|
49
51
|
* Undefined on older probes and non-CDP devices.
|
|
50
52
|
*/
|
|
51
53
|
cdpNeighbors?: Array<CdpNeighbor> | undefined;
|
|
54
|
+
/*
|
|
55
|
+
* ARP / IP-to-media entries, walked when endpoint collection is enabled
|
|
56
|
+
* on the monitor step. Undefined on older probes.
|
|
57
|
+
*/
|
|
58
|
+
arpEntries?: Array<ArpEntry> | undefined;
|
|
59
|
+
/*
|
|
60
|
+
* Bridge forwarding-database entries — MAC addresses learned per bridge
|
|
61
|
+
* port. Undefined on older probes and non-bridge devices.
|
|
62
|
+
*/
|
|
63
|
+
fdbEntries?: Array<FdbEntry> | undefined;
|
|
52
64
|
}
|