@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.
Files changed (427) hide show
  1. package/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.ts +41 -24
  2. package/Models/AnalyticsModels/Index.ts +4 -0
  3. package/Models/AnalyticsModels/KubernetesCostAllocation.ts +842 -0
  4. package/Models/AnalyticsModels/MetricBaselineHourly.ts +2 -0
  5. package/Models/AnalyticsModels/MetricItemAggMV1m.ts +5 -2
  6. package/Models/AnalyticsModels/MetricItemAggMV1mByContainer.ts +5 -2
  7. package/Models/AnalyticsModels/MetricItemAggMV1mByHostV2.ts +5 -2
  8. package/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.ts +5 -2
  9. package/Models/AnalyticsModels/MetricItemAggMV1mByService.ts +5 -2
  10. package/Models/AnalyticsModels/NetworkFlow.ts +54 -0
  11. package/Models/AnalyticsModels/SloHistory.ts +240 -0
  12. package/Models/DatabaseModels/Index.ts +20 -0
  13. package/Models/DatabaseModels/NetworkDevice.ts +453 -6
  14. package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +7 -6
  15. package/Models/DatabaseModels/NetworkEndpoint.ts +753 -0
  16. package/Models/DatabaseModels/NetworkSite.ts +1155 -0
  17. package/Models/DatabaseModels/NetworkSiteAssignmentRule.ts +517 -0
  18. package/Models/DatabaseModels/NetworkSiteLink.ts +611 -0
  19. package/Models/DatabaseModels/NetworkSiteStatusTimeline.ts +520 -0
  20. package/Models/DatabaseModels/NetworkSiteType.ts +499 -0
  21. package/Models/DatabaseModels/ServiceLevelObjective.ts +1106 -0
  22. package/Models/DatabaseModels/ServiceLevelObjectiveBurnRateRule.ts +762 -0
  23. package/Models/DatabaseModels/ServiceLevelObjectiveOwnerTeam.ts +444 -0
  24. package/Models/DatabaseModels/ServiceLevelObjectiveOwnerUser.ts +443 -0
  25. package/Server/Infrastructure/Postgres/SchemaMigrations/1784757142154-AddNetworkSiteHierarchyAndEndpoints.ts +359 -0
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1784897317860-AddNetworkSiteAlerting.ts +48 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/1784970388777-AddNetworkDevicePollingColumns.ts +65 -0
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/1784986826214-AddNetworkSiteTypeTable.ts +88 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1784987015619-AddServiceLevelObjective.ts +391 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
  31. package/Server/Services/AnalyticsDatabaseService.ts +38 -10
  32. package/Server/Services/Index.ts +24 -0
  33. package/Server/Services/KubernetesCostAllocationService.ts +14 -0
  34. package/Server/Services/MetricService.ts +21 -2
  35. package/Server/Services/MonitorService.ts +22 -0
  36. package/Server/Services/NetworkDeviceService.ts +438 -2
  37. package/Server/Services/NetworkEndpointService.ts +414 -0
  38. package/Server/Services/NetworkSiteAssignmentRuleService.ts +98 -0
  39. package/Server/Services/NetworkSiteLinkService.ts +10 -0
  40. package/Server/Services/NetworkSiteService.ts +1254 -0
  41. package/Server/Services/NetworkSiteStatusTimelineService.ts +10 -0
  42. package/Server/Services/NetworkSiteTypeService.ts +10 -0
  43. package/Server/Services/ProjectService.ts +122 -2
  44. package/Server/Services/ServiceLevelObjectiveBurnRateRuleService.ts +457 -0
  45. package/Server/Services/ServiceLevelObjectiveOwnerTeamService.ts +10 -0
  46. package/Server/Services/ServiceLevelObjectiveOwnerUserService.ts +10 -0
  47. package/Server/Services/ServiceLevelObjectiveService.ts +677 -0
  48. package/Server/Services/SloHistoryService.ts +101 -0
  49. package/Server/Services/UserNotificationSettingService.ts +37 -0
  50. package/Server/Types/AnalyticsDatabase/AggregateBy.ts +9 -0
  51. package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +15 -0
  52. package/Server/Utils/AnalyticsDatabase/Statement.ts +39 -3
  53. package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +128 -52
  54. package/Server/Utils/Memory.ts +9 -1
  55. package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +190 -12
  56. package/Server/Utils/Monitor/Data/OuiVendors.json +6920 -0
  57. package/Server/Utils/Monitor/DnsResolutionCache.ts +129 -0
  58. package/Server/Utils/Monitor/MonitorResource.ts +4 -30
  59. package/Server/Utils/Monitor/NetworkDeviceHydrationUtil.ts +214 -39
  60. package/Server/Utils/Monitor/NetworkDeviceMetricUtil.ts +343 -0
  61. package/Server/Utils/Monitor/NetworkDeviceWalkUtil.ts +251 -0
  62. package/Server/Utils/Monitor/NetworkInventoryUtil.ts +176 -142
  63. package/Server/Utils/Monitor/OuiLookupUtil.ts +49 -0
  64. package/Server/Utils/Monitor/SnmpInterfaceRateUtil.ts +17 -13
  65. package/Server/Utils/WhatsAppTemplateUtil.ts +7 -3
  66. package/Tests/Models/AnalyticsModels/AnalyticsBaseModel.test.ts +122 -0
  67. package/Tests/Models/AnalyticsModels/KubernetesCostAllocation.test.ts +135 -0
  68. package/Tests/Models/NetworkSiteHierarchy.test.ts +134 -0
  69. package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +239 -0
  70. package/Tests/Server/Services/KubernetesCostAllocationAggregate.test.ts +338 -0
  71. package/Tests/Server/Services/MetricServiceAggregate.test.ts +142 -0
  72. package/Tests/Server/Services/NetworkDeviceSiteAssignment.test.ts +484 -0
  73. package/Tests/Server/Services/NetworkEndpointServiceUpsert.test.ts +686 -0
  74. package/Tests/Server/Services/NetworkSiteAssignmentRuleService.test.ts +185 -0
  75. package/Tests/Server/Services/NetworkSiteService.test.ts +1354 -0
  76. package/Tests/Server/Services/ServiceLevelObjectiveBurnRateRuleService.test.ts +1313 -0
  77. package/Tests/Server/Services/ServiceLevelObjectiveService.test.ts +1988 -0
  78. package/Tests/Server/Utils/AnalyticsDatabase/ClusterAwareSchema.test.ts +164 -3
  79. package/Tests/Server/Utils/AnalyticsDatabase/Statement.test.ts +22 -0
  80. package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +503 -0
  81. package/Tests/Server/Utils/Encryption.test.ts +70 -0
  82. package/Tests/Server/Utils/FileAttachmentMarkdownUtil.test.ts +225 -0
  83. package/Tests/Server/Utils/JsonWebToken.test.ts +175 -0
  84. package/Tests/Server/Utils/LocalFile.test.ts +258 -0
  85. package/Tests/Server/Utils/Memory.test.ts +213 -0
  86. package/Tests/Server/Utils/Monitor/Criteria/LogMonitorCriteria.test.ts +30 -0
  87. package/Tests/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.test.ts +385 -0
  88. package/Tests/Server/Utils/Monitor/DnsResolutionCache.test.ts +194 -0
  89. package/Tests/Server/Utils/Monitor/NetworkDeviceHydrationUtil.test.ts +155 -0
  90. package/Tests/Server/Utils/Monitor/NetworkDeviceWalkUtil.test.ts +600 -0
  91. package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +151 -124
  92. package/Tests/Server/Utils/Monitor/SnmpInterfaceRateUtil.test.ts +496 -0
  93. package/Tests/Server/Utils/MonitorCriteriaDataExtractor.test.ts +175 -0
  94. package/Tests/Server/Utils/MonitorCriteriaMessageFormatter.test.ts +282 -0
  95. package/Tests/Server/Utils/OuiLookupUtil.test.ts +59 -0
  96. package/Tests/Server/Utils/SeriesResourceLabels.test.ts +117 -0
  97. package/Tests/Server/Utils/StackTraceParser.test.ts +370 -0
  98. package/Tests/Server/Utils/Stream.test.ts +87 -0
  99. package/Tests/Server/Utils/ValidateGlobalProviderProjectTeams.test.ts +221 -0
  100. package/Tests/Server/Utils/WhatsAppTemplateUtil.test.ts +199 -0
  101. package/Tests/Types/Database/CompareOperatorWireSerialization.test.ts +33 -0
  102. package/Tests/Types/Email.test.ts +198 -0
  103. package/Tests/Types/HashCode.test.ts +41 -0
  104. package/Tests/Types/Kubernetes/KubernetesObjectParser.test.ts +177 -0
  105. package/Tests/Types/Log/LogQueryParser.test.ts +186 -0
  106. package/Tests/Types/Log/LogQueryToFilter.test.ts +111 -0
  107. package/Tests/Types/Monitor/MonitorStepNetworkDeviceMonitor.test.ts +141 -1
  108. package/Tests/Types/Monitor/MonitorType.test.ts +59 -1
  109. package/Tests/Types/Monitor/NetworkDeviceAlertPack.test.ts +97 -0
  110. package/Tests/Types/Monitor/SnmpEndpointDiscovery.test.ts +151 -0
  111. package/Tests/Types/Monitor/SnmpVendorTemplate.test.ts +110 -6
  112. package/Tests/Types/NetworkSite/DefaultNetworkSiteType.test.ts +129 -0
  113. package/Tests/Types/SerializableObjectDictionary.test.ts +166 -0
  114. package/Tests/Types/Time/RangeStartAndEndDateTime.test.ts +98 -0
  115. package/Tests/Types/WebsiteRequest.test.ts +230 -0
  116. package/Tests/UI/Components/EntityFilterRoundTrip.test.tsx +103 -0
  117. package/Tests/UI/Components/ModelTable/BaseModelTableUrlState.test.tsx +612 -0
  118. package/Tests/UI/Components/ModelTable/FilterDataToQuery.test.ts +275 -0
  119. package/Tests/UI/Utils/LogExport.test.ts +159 -0
  120. package/Tests/UI/Utils/Navigation.test.ts +183 -0
  121. package/Tests/UI/Utils/TableFilterUrlState.test.ts +539 -0
  122. package/Tests/UI/Utils/TableViewUrlState.test.ts +272 -0
  123. package/Tests/Utils/Base64.test.ts +51 -0
  124. package/Tests/Utils/Boolean.test.ts +76 -0
  125. package/Tests/Utils/Crypto.test.ts +48 -0
  126. package/Tests/Utils/Dashboard/DashboardSloComponent.test.ts +259 -0
  127. package/Tests/Utils/Dashboard/ModelQueryVariableInterpolation.test.ts +162 -0
  128. package/Tests/Utils/Dashboard/VariableInterpolation.test.ts +197 -0
  129. package/Tests/Utils/Enum.test.ts +54 -0
  130. package/Tests/Utils/IpCanonicalUtil.test.ts +85 -0
  131. package/Tests/Utils/Metrics/MetricSeriesFingerprint.test.ts +160 -0
  132. package/Tests/Utils/Monitor/EndpointAttachmentUtil.test.ts +836 -0
  133. package/Tests/Utils/Monitor/MonitorMetricType.test.ts +218 -0
  134. package/Tests/Utils/Monitor/NetworkTopologyUtil.test.ts +447 -0
  135. package/Tests/Utils/NetworkSite/CidrMatchUtil.test.ts +440 -0
  136. package/Tests/Utils/NetworkSite/MaterializedPathUtil.test.ts +205 -0
  137. package/Tests/Utils/NetworkSite/SiteStatusRollupUtil.test.ts +221 -0
  138. package/Tests/Utils/NetworkSite/SiteUptimeUtil.test.ts +283 -0
  139. package/Tests/Utils/ObjectUtil.test.ts +30 -0
  140. package/Tests/Utils/Slo/SloStatusColor.test.ts +89 -0
  141. package/Tests/Utils/Slo/SloUtil.test.ts +1980 -0
  142. package/Tests/Utils/Slo/SloWidgetFormat.test.ts +605 -0
  143. package/Tests/Utils/TechStack.test.ts +50 -0
  144. package/Tests/Utils/Traces/CriticalPath.test.ts +178 -0
  145. package/Tests/Utils/ValueFormatter.test.ts +305 -0
  146. package/Types/AnalyticsDatabase/AnalyticsTableName.ts +10 -0
  147. package/Types/AnalyticsDatabase/TableColumn.ts +23 -0
  148. package/Types/BaseDatabase/EqualTo.ts +9 -1
  149. package/Types/BaseDatabase/EqualToOrNull.ts +9 -1
  150. package/Types/BaseDatabase/NotEqual.ts +9 -1
  151. package/Types/Dashboard/DashboardComponentType.ts +1 -0
  152. package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +1 -0
  153. package/Types/Dashboard/DashboardComponents/DashboardSloComponent.ts +42 -0
  154. package/Types/Dashboard/DashboardTemplates.ts +214 -0
  155. package/Types/Email/EmailTemplateType.ts +2 -0
  156. package/Types/Kubernetes/KubernetesCostIngest.ts +79 -0
  157. package/Types/Monitor/CriteriaFilter.ts +9 -0
  158. package/Types/Monitor/MonitorStep.ts +5 -8
  159. package/Types/Monitor/MonitorStepNetworkDeviceMonitor.ts +27 -5
  160. package/Types/Monitor/MonitorType.ts +15 -5
  161. package/Types/Monitor/SnmpMonitor/ArpEntry.ts +14 -0
  162. package/Types/Monitor/SnmpMonitor/FdbEntry.ts +18 -0
  163. package/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.ts +10 -3
  164. package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +31 -5
  165. package/Types/Monitor/SnmpMonitor/SnmpMonitorResponse.ts +12 -0
  166. package/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.ts +231 -3
  167. package/Types/NetworkSite/DefaultNetworkSiteType.ts +20 -0
  168. package/Types/NotificationSetting/NotificationSettingEventType.ts +4 -0
  169. package/Types/Permission.ts +449 -0
  170. package/Types/ServiceLevelObjective/SliType.ts +6 -0
  171. package/Types/ServiceLevelObjective/SloMultiMonitorMode.ts +6 -0
  172. package/Types/ServiceLevelObjective/SloStatus.ts +9 -0
  173. package/Types/ServiceLevelObjective/SloWindowType.ts +6 -0
  174. package/Types/Telemetry/ServiceType.ts +1 -0
  175. package/UI/Components/Filters/EntityFilter.tsx +16 -0
  176. package/UI/Components/Filters/FilterViewer.tsx +22 -5
  177. package/UI/Components/List/List.tsx +8 -0
  178. package/UI/Components/ModelTable/BaseModelTable.tsx +309 -106
  179. package/UI/Components/ModelTable/FilterDataToQuery.ts +172 -0
  180. package/UI/Components/Navbar/NavBar.tsx +16 -2
  181. package/UI/Components/Navbar/NavBarMenuModal.tsx +3 -3
  182. package/UI/Utils/Navigation.ts +10 -0
  183. package/UI/Utils/TableFilterUrlState.ts +204 -17
  184. package/UI/Utils/TableViewUrlState.ts +165 -0
  185. package/Utils/Dashboard/Components/DashboardSloComponent.ts +114 -0
  186. package/Utils/Dashboard/Components/Index.ts +7 -0
  187. package/Utils/IpCanonicalUtil.ts +134 -0
  188. package/Utils/Monitor/EndpointAttachmentUtil.ts +508 -0
  189. package/Utils/Monitor/NetworkTopologyUtil.ts +157 -5
  190. package/Utils/NetworkSite/CidrMatchUtil.ts +296 -0
  191. package/Utils/NetworkSite/MaterializedPathUtil.ts +115 -0
  192. package/Utils/NetworkSite/SiteStatusRollupUtil.ts +97 -0
  193. package/Utils/NetworkSite/SiteUptimeUtil.ts +111 -0
  194. package/Utils/Slo/SloStatusColor.ts +54 -0
  195. package/Utils/Slo/SloUtil.ts +637 -0
  196. package/Utils/Slo/SloWidgetFormat.ts +383 -0
  197. package/build/dist/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.js +25 -20
  198. package/build/dist/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.js.map +1 -1
  199. package/build/dist/Models/AnalyticsModels/Index.js +4 -0
  200. package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
  201. package/build/dist/Models/AnalyticsModels/KubernetesCostAllocation.js +713 -0
  202. package/build/dist/Models/AnalyticsModels/KubernetesCostAllocation.js.map +1 -0
  203. package/build/dist/Models/AnalyticsModels/MetricBaselineHourly.js +2 -0
  204. package/build/dist/Models/AnalyticsModels/MetricBaselineHourly.js.map +1 -1
  205. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1m.js +5 -2
  206. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1m.js.map +1 -1
  207. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByContainer.js +5 -2
  208. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByContainer.js.map +1 -1
  209. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByHostV2.js +5 -2
  210. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByHostV2.js.map +1 -1
  211. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.js +5 -2
  212. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.js.map +1 -1
  213. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByService.js +5 -2
  214. package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByService.js.map +1 -1
  215. package/build/dist/Models/AnalyticsModels/NetworkFlow.js +44 -0
  216. package/build/dist/Models/AnalyticsModels/NetworkFlow.js.map +1 -1
  217. package/build/dist/Models/AnalyticsModels/SloHistory.js +215 -0
  218. package/build/dist/Models/AnalyticsModels/SloHistory.js.map +1 -0
  219. package/build/dist/Models/DatabaseModels/Index.js +20 -0
  220. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  221. package/build/dist/Models/DatabaseModels/NetworkDevice.js +458 -6
  222. package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
  223. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +0 -6
  224. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
  225. package/build/dist/Models/DatabaseModels/NetworkEndpoint.js +779 -0
  226. package/build/dist/Models/DatabaseModels/NetworkEndpoint.js.map +1 -0
  227. package/build/dist/Models/DatabaseModels/NetworkSite.js +1180 -0
  228. package/build/dist/Models/DatabaseModels/NetworkSite.js.map +1 -0
  229. package/build/dist/Models/DatabaseModels/NetworkSiteAssignmentRule.js +534 -0
  230. package/build/dist/Models/DatabaseModels/NetworkSiteAssignmentRule.js.map +1 -0
  231. package/build/dist/Models/DatabaseModels/NetworkSiteLink.js +629 -0
  232. package/build/dist/Models/DatabaseModels/NetworkSiteLink.js.map +1 -0
  233. package/build/dist/Models/DatabaseModels/NetworkSiteStatusTimeline.js +538 -0
  234. package/build/dist/Models/DatabaseModels/NetworkSiteStatusTimeline.js.map +1 -0
  235. package/build/dist/Models/DatabaseModels/NetworkSiteType.js +522 -0
  236. package/build/dist/Models/DatabaseModels/NetworkSiteType.js.map +1 -0
  237. package/build/dist/Models/DatabaseModels/ServiceLevelObjective.js +1124 -0
  238. package/build/dist/Models/DatabaseModels/ServiceLevelObjective.js.map +1 -0
  239. package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveBurnRateRule.js +769 -0
  240. package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveBurnRateRule.js.map +1 -0
  241. package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerTeam.js +460 -0
  242. package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerTeam.js.map +1 -0
  243. package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerUser.js +459 -0
  244. package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerUser.js.map +1 -0
  245. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784757142154-AddNetworkSiteHierarchyAndEndpoints.js +130 -0
  246. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784757142154-AddNetworkSiteHierarchyAndEndpoints.js.map +1 -0
  247. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784897317860-AddNetworkSiteAlerting.js +31 -0
  248. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784897317860-AddNetworkSiteAlerting.js.map +1 -0
  249. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784970388777-AddNetworkDevicePollingColumns.js +36 -0
  250. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784970388777-AddNetworkDevicePollingColumns.js.map +1 -0
  251. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784986826214-AddNetworkSiteTypeTable.js +49 -0
  252. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784986826214-AddNetworkSiteTypeTable.js.map +1 -0
  253. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784987015619-AddServiceLevelObjective.js +140 -0
  254. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784987015619-AddServiceLevelObjective.js.map +1 -0
  255. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
  256. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  257. package/build/dist/Server/Services/AnalyticsDatabaseService.js +32 -7
  258. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  259. package/build/dist/Server/Services/Index.js +24 -0
  260. package/build/dist/Server/Services/Index.js.map +1 -1
  261. package/build/dist/Server/Services/KubernetesCostAllocationService.js +12 -0
  262. package/build/dist/Server/Services/KubernetesCostAllocationService.js.map +1 -0
  263. package/build/dist/Server/Services/MetricService.js +21 -3
  264. package/build/dist/Server/Services/MetricService.js.map +1 -1
  265. package/build/dist/Server/Services/MonitorService.js +19 -0
  266. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  267. package/build/dist/Server/Services/NetworkDeviceService.js +351 -1
  268. package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
  269. package/build/dist/Server/Services/NetworkEndpointService.js +319 -0
  270. package/build/dist/Server/Services/NetworkEndpointService.js.map +1 -0
  271. package/build/dist/Server/Services/NetworkSiteAssignmentRuleService.js +90 -0
  272. package/build/dist/Server/Services/NetworkSiteAssignmentRuleService.js.map +1 -0
  273. package/build/dist/Server/Services/NetworkSiteLinkService.js +9 -0
  274. package/build/dist/Server/Services/NetworkSiteLinkService.js.map +1 -0
  275. package/build/dist/Server/Services/NetworkSiteService.js +1038 -0
  276. package/build/dist/Server/Services/NetworkSiteService.js.map +1 -0
  277. package/build/dist/Server/Services/NetworkSiteStatusTimelineService.js +9 -0
  278. package/build/dist/Server/Services/NetworkSiteStatusTimelineService.js.map +1 -0
  279. package/build/dist/Server/Services/NetworkSiteTypeService.js +9 -0
  280. package/build/dist/Server/Services/NetworkSiteTypeService.js.map +1 -0
  281. package/build/dist/Server/Services/ProjectService.js +98 -2
  282. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  283. package/build/dist/Server/Services/ServiceLevelObjectiveBurnRateRuleService.js +358 -0
  284. package/build/dist/Server/Services/ServiceLevelObjectiveBurnRateRuleService.js.map +1 -0
  285. package/build/dist/Server/Services/ServiceLevelObjectiveOwnerTeamService.js +9 -0
  286. package/build/dist/Server/Services/ServiceLevelObjectiveOwnerTeamService.js.map +1 -0
  287. package/build/dist/Server/Services/ServiceLevelObjectiveOwnerUserService.js +9 -0
  288. package/build/dist/Server/Services/ServiceLevelObjectiveOwnerUserService.js.map +1 -0
  289. package/build/dist/Server/Services/ServiceLevelObjectiveService.js +582 -0
  290. package/build/dist/Server/Services/ServiceLevelObjectiveService.js.map +1 -0
  291. package/build/dist/Server/Services/SloHistoryService.js +77 -0
  292. package/build/dist/Server/Services/SloHistoryService.js.map +1 -0
  293. package/build/dist/Server/Services/UserNotificationSettingService.js +20 -0
  294. package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
  295. package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js +9 -0
  296. package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js.map +1 -1
  297. package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +15 -0
  298. package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
  299. package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js +31 -0
  300. package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js.map +1 -1
  301. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +105 -52
  302. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
  303. package/build/dist/Server/Utils/Memory.js +9 -1
  304. package/build/dist/Server/Utils/Memory.js.map +1 -1
  305. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +132 -10
  306. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
  307. package/build/dist/Server/Utils/Monitor/Data/OuiVendors.json +6920 -0
  308. package/build/dist/Server/Utils/Monitor/DnsResolutionCache.js +77 -0
  309. package/build/dist/Server/Utils/Monitor/DnsResolutionCache.js.map +1 -0
  310. package/build/dist/Server/Utils/Monitor/MonitorResource.js +21 -41
  311. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  312. package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js +152 -40
  313. package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js.map +1 -1
  314. package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js +262 -0
  315. package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js.map +1 -0
  316. package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js +201 -0
  317. package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js.map +1 -0
  318. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +152 -120
  319. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
  320. package/build/dist/Server/Utils/Monitor/OuiLookupUtil.js +44 -0
  321. package/build/dist/Server/Utils/Monitor/OuiLookupUtil.js.map +1 -0
  322. package/build/dist/Server/Utils/Monitor/SnmpInterfaceRateUtil.js +10 -10
  323. package/build/dist/Server/Utils/Monitor/SnmpInterfaceRateUtil.js.map +1 -1
  324. package/build/dist/Server/Utils/WhatsAppTemplateUtil.js +5 -0
  325. package/build/dist/Server/Utils/WhatsAppTemplateUtil.js.map +1 -1
  326. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +10 -0
  327. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -1
  328. package/build/dist/Types/AnalyticsDatabase/TableColumn.js +7 -0
  329. package/build/dist/Types/AnalyticsDatabase/TableColumn.js.map +1 -1
  330. package/build/dist/Types/BaseDatabase/EqualTo.js +9 -1
  331. package/build/dist/Types/BaseDatabase/EqualTo.js.map +1 -1
  332. package/build/dist/Types/BaseDatabase/EqualToOrNull.js +9 -1
  333. package/build/dist/Types/BaseDatabase/EqualToOrNull.js.map +1 -1
  334. package/build/dist/Types/BaseDatabase/NotEqual.js +9 -1
  335. package/build/dist/Types/BaseDatabase/NotEqual.js.map +1 -1
  336. package/build/dist/Types/Dashboard/DashboardComponentType.js +1 -0
  337. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  338. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +1 -0
  339. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
  340. package/build/dist/Types/Dashboard/DashboardComponents/DashboardSloComponent.js +23 -0
  341. package/build/dist/Types/Dashboard/DashboardComponents/DashboardSloComponent.js.map +1 -0
  342. package/build/dist/Types/Dashboard/DashboardTemplates.js +205 -0
  343. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  344. package/build/dist/Types/Email/EmailTemplateType.js +1 -0
  345. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  346. package/build/dist/Types/Kubernetes/KubernetesCostIngest.js +21 -0
  347. package/build/dist/Types/Kubernetes/KubernetesCostIngest.js.map +1 -0
  348. package/build/dist/Types/Monitor/CriteriaFilter.js +1 -0
  349. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  350. package/build/dist/Types/Monitor/MonitorStep.js +5 -5
  351. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  352. package/build/dist/Types/Monitor/MonitorStepNetworkDeviceMonitor.js +8 -0
  353. package/build/dist/Types/Monitor/MonitorStepNetworkDeviceMonitor.js.map +1 -1
  354. package/build/dist/Types/Monitor/MonitorType.js +15 -5
  355. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  356. package/build/dist/Types/Monitor/SnmpMonitor/ArpEntry.js +2 -0
  357. package/build/dist/Types/Monitor/SnmpMonitor/ArpEntry.js.map +1 -0
  358. package/build/dist/Types/Monitor/SnmpMonitor/FdbEntry.js +2 -0
  359. package/build/dist/Types/Monitor/SnmpMonitor/FdbEntry.js.map +1 -0
  360. package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js +9 -3
  361. package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js.map +1 -1
  362. package/build/dist/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.js +217 -3
  363. package/build/dist/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.js.map +1 -1
  364. package/build/dist/Types/NetworkSite/DefaultNetworkSiteType.js +21 -0
  365. package/build/dist/Types/NetworkSite/DefaultNetworkSiteType.js.map +1 -0
  366. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js +3 -0
  367. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
  368. package/build/dist/Types/Permission.js +409 -0
  369. package/build/dist/Types/Permission.js.map +1 -1
  370. package/build/dist/Types/ServiceLevelObjective/SliType.js +7 -0
  371. package/build/dist/Types/ServiceLevelObjective/SliType.js.map +1 -0
  372. package/build/dist/Types/ServiceLevelObjective/SloMultiMonitorMode.js +7 -0
  373. package/build/dist/Types/ServiceLevelObjective/SloMultiMonitorMode.js.map +1 -0
  374. package/build/dist/Types/ServiceLevelObjective/SloStatus.js +10 -0
  375. package/build/dist/Types/ServiceLevelObjective/SloStatus.js.map +1 -0
  376. package/build/dist/Types/ServiceLevelObjective/SloWindowType.js +7 -0
  377. package/build/dist/Types/ServiceLevelObjective/SloWindowType.js.map +1 -0
  378. package/build/dist/Types/Telemetry/ServiceType.js +1 -0
  379. package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
  380. package/build/dist/UI/Components/Filters/EntityFilter.js +15 -0
  381. package/build/dist/UI/Components/Filters/EntityFilter.js.map +1 -1
  382. package/build/dist/UI/Components/Filters/FilterViewer.js +19 -4
  383. package/build/dist/UI/Components/Filters/FilterViewer.js.map +1 -1
  384. package/build/dist/UI/Components/List/List.js +1 -1
  385. package/build/dist/UI/Components/List/List.js.map +1 -1
  386. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +235 -89
  387. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  388. package/build/dist/UI/Components/ModelTable/FilterDataToQuery.js +96 -0
  389. package/build/dist/UI/Components/ModelTable/FilterDataToQuery.js.map +1 -0
  390. package/build/dist/UI/Components/Navbar/NavBar.js +14 -2
  391. package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
  392. package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +3 -2
  393. package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
  394. package/build/dist/UI/Utils/Navigation.js +9 -0
  395. package/build/dist/UI/Utils/Navigation.js.map +1 -1
  396. package/build/dist/UI/Utils/TableFilterUrlState.js +159 -15
  397. package/build/dist/UI/Utils/TableFilterUrlState.js.map +1 -1
  398. package/build/dist/UI/Utils/TableViewUrlState.js +103 -0
  399. package/build/dist/UI/Utils/TableViewUrlState.js.map +1 -0
  400. package/build/dist/Utils/Dashboard/Components/DashboardSloComponent.js +93 -0
  401. package/build/dist/Utils/Dashboard/Components/DashboardSloComponent.js.map +1 -0
  402. package/build/dist/Utils/Dashboard/Components/Index.js +4 -0
  403. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  404. package/build/dist/Utils/IpCanonicalUtil.js +110 -0
  405. package/build/dist/Utils/IpCanonicalUtil.js.map +1 -0
  406. package/build/dist/Utils/Monitor/EndpointAttachmentUtil.js +311 -0
  407. package/build/dist/Utils/Monitor/EndpointAttachmentUtil.js.map +1 -0
  408. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +98 -5
  409. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
  410. package/build/dist/Utils/NetworkSite/CidrMatchUtil.js +222 -0
  411. package/build/dist/Utils/NetworkSite/CidrMatchUtil.js.map +1 -0
  412. package/build/dist/Utils/NetworkSite/MaterializedPathUtil.js +89 -0
  413. package/build/dist/Utils/NetworkSite/MaterializedPathUtil.js.map +1 -0
  414. package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js +60 -0
  415. package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js.map +1 -0
  416. package/build/dist/Utils/NetworkSite/SiteUptimeUtil.js +76 -0
  417. package/build/dist/Utils/NetworkSite/SiteUptimeUtil.js.map +1 -0
  418. package/build/dist/Utils/Slo/SloStatusColor.js +18 -0
  419. package/build/dist/Utils/Slo/SloStatusColor.js.map +1 -0
  420. package/build/dist/Utils/Slo/SloUtil.js +393 -0
  421. package/build/dist/Utils/Slo/SloUtil.js.map +1 -0
  422. package/build/dist/Utils/Slo/SloWidgetFormat.js +174 -0
  423. package/build/dist/Utils/Slo/SloWidgetFormat.js.map +1 -0
  424. package/package.json +2 -2
  425. package/Types/Dashboard/DashboardComponents/Index.ts +0 -7
  426. package/build/dist/Types/Dashboard/DashboardComponents/Index.js +0 -8
  427. package/build/dist/Types/Dashboard/DashboardComponents/Index.js.map +0 -1
@@ -234,6 +234,8 @@ GROUP BY projectId, name, primaryEntityId, day, hourOfWeek`,
234
234
  tableSettings:
235
235
  "ttl_only_drop_parts = 1, non_replicated_deduplication_window = 10000",
236
236
  ttlExpression: "day + INTERVAL 90 DAY",
237
+ includeBaseColumns: false,
238
+ defaultSortColumn: "day",
237
239
  });
238
240
  }
239
241
  }
@@ -110,9 +110,10 @@ export default class MetricItemAggMV1m extends AnalyticsBaseModel {
110
110
  key: "retentionDate",
111
111
  title: "Retention Date",
112
112
  description:
113
- "Date after which this row is eligible for TTL deletion. Computed by the MV as max(retentionDate) per bucket inherits from the source MetricItemV3 rows.",
113
+ "Latest date after which this aggregate bucket is eligible for TTL deletion. Stored as SimpleAggregateFunction(max, DateTime) so partial rows keep the maximum expiry when AggregatingMergeTree merges them.",
114
114
  required: true,
115
115
  type: TableColumnType.Date,
116
+ simpleAggregateFunction: "max",
116
117
  });
117
118
 
118
119
  super({
@@ -156,7 +157,7 @@ SELECT
156
157
  countState(toFloat64(coalesce(value, sum, 0))) AS valueCountState,
157
158
  minState(toFloat64(coalesce(value, sum, 0))) AS valueMinState,
158
159
  maxState(toFloat64(coalesce(value, sum, 0))) AS valueMaxState,
159
- max(retentionDate) AS retentionDate
160
+ maxSimpleState(retentionDate) AS retentionDate
160
161
  FROM MetricItemV3
161
162
  GROUP BY projectId, name, primaryEntityId, bucketTime`,
162
163
  },
@@ -172,6 +173,8 @@ GROUP BY projectId, name, primaryEntityId, bucketTime`,
172
173
  tableSettings:
173
174
  "ttl_only_drop_parts = 1, non_replicated_deduplication_window = 10000",
174
175
  ttlExpression: "retentionDate DELETE",
176
+ includeBaseColumns: false,
177
+ defaultSortColumn: "bucketTime",
175
178
  });
176
179
  }
177
180
  }
@@ -111,9 +111,10 @@ export default class MetricItemAggMV1mByContainer extends AnalyticsBaseModel {
111
111
  key: "retentionDate",
112
112
  title: "Retention Date",
113
113
  description:
114
- "Date after which this row is eligible for TTL deletion. Computed by the MV as max(retentionDate) per bucket inherits from the source MetricItemV3 rows.",
114
+ "Latest date after which this aggregate bucket is eligible for TTL deletion. Stored as SimpleAggregateFunction(max, DateTime) so partial rows keep the maximum expiry when AggregatingMergeTree merges them.",
115
115
  required: true,
116
116
  type: TableColumnType.Date,
117
+ simpleAggregateFunction: "max",
117
118
  });
118
119
 
119
120
  super({
@@ -159,7 +160,7 @@ SELECT
159
160
  countState(toFloat64(coalesce(value, sum, 0))) AS valueCountState,
160
161
  minState(toFloat64(coalesce(value, sum, 0))) AS valueMinState,
161
162
  maxState(toFloat64(coalesce(value, sum, 0))) AS valueMaxState,
162
- max(retentionDate) AS retentionDate
163
+ maxSimpleState(retentionDate) AS retentionDate
163
164
  FROM MetricItemV3
164
165
  WHERE containerEntityKey != ''
165
166
  GROUP BY projectId, name, containerEntityKey, bucketTime`,
@@ -173,6 +174,8 @@ GROUP BY projectId, name, containerEntityKey, bucketTime`,
173
174
  tableSettings:
174
175
  "ttl_only_drop_parts = 1, non_replicated_deduplication_window = 10000",
175
176
  ttlExpression: "retentionDate DELETE",
177
+ includeBaseColumns: false,
178
+ defaultSortColumn: "bucketTime",
176
179
  });
177
180
  }
178
181
  }
@@ -114,9 +114,10 @@ export default class MetricItemAggMV1mByHostV2 extends AnalyticsBaseModel {
114
114
  key: "retentionDate",
115
115
  title: "Retention Date",
116
116
  description:
117
- "Date after which this row is eligible for TTL deletion. Computed by the MV as max(retentionDate) per bucket inherits from the source MetricItemV3 rows.",
117
+ "Latest date after which this aggregate bucket is eligible for TTL deletion. Stored as SimpleAggregateFunction(max, DateTime) so partial rows keep the maximum expiry when AggregatingMergeTree merges them.",
118
118
  required: true,
119
119
  type: TableColumnType.Date,
120
+ simpleAggregateFunction: "max",
120
121
  });
121
122
 
122
123
  super({
@@ -162,7 +163,7 @@ SELECT
162
163
  countState(toFloat64(coalesce(value, sum, 0))) AS valueCountState,
163
164
  minState(toFloat64(coalesce(value, sum, 0))) AS valueMinState,
164
165
  maxState(toFloat64(coalesce(value, sum, 0))) AS valueMaxState,
165
- max(retentionDate) AS retentionDate
166
+ maxSimpleState(retentionDate) AS retentionDate
166
167
  FROM MetricItemV3
167
168
  WHERE hostEntityKey != ''
168
169
  GROUP BY projectId, name, hostEntityKey, bucketTime`,
@@ -176,6 +177,8 @@ GROUP BY projectId, name, hostEntityKey, bucketTime`,
176
177
  tableSettings:
177
178
  "ttl_only_drop_parts = 1, non_replicated_deduplication_window = 10000",
178
179
  ttlExpression: "retentionDate DELETE",
180
+ includeBaseColumns: false,
181
+ defaultSortColumn: "bucketTime",
179
182
  });
180
183
  }
181
184
  }
@@ -110,9 +110,10 @@ export default class MetricItemAggMV1mByK8sCluster extends AnalyticsBaseModel {
110
110
  key: "retentionDate",
111
111
  title: "Retention Date",
112
112
  description:
113
- "Date after which this row is eligible for TTL deletion. Computed by the MV as max(retentionDate) per bucket inherits from the source MetricItemV3 rows.",
113
+ "Latest date after which this aggregate bucket is eligible for TTL deletion. Stored as SimpleAggregateFunction(max, DateTime) so partial rows keep the maximum expiry when AggregatingMergeTree merges them.",
114
114
  required: true,
115
115
  type: TableColumnType.Date,
116
+ simpleAggregateFunction: "max",
116
117
  });
117
118
 
118
119
  super({
@@ -160,7 +161,7 @@ SELECT
160
161
  countState(toFloat64(coalesce(value, sum, 0))) AS valueCountState,
161
162
  minState(toFloat64(coalesce(value, sum, 0))) AS valueMinState,
162
163
  maxState(toFloat64(coalesce(value, sum, 0))) AS valueMaxState,
163
- max(retentionDate) AS retentionDate
164
+ maxSimpleState(retentionDate) AS retentionDate
164
165
  FROM MetricItemV3
165
166
  WHERE k8sClusterEntityKey != ''
166
167
  GROUP BY projectId, name, k8sClusterEntityKey, bucketTime`,
@@ -174,6 +175,8 @@ GROUP BY projectId, name, k8sClusterEntityKey, bucketTime`,
174
175
  tableSettings:
175
176
  "ttl_only_drop_parts = 1, non_replicated_deduplication_window = 10000",
176
177
  ttlExpression: "retentionDate DELETE",
178
+ includeBaseColumns: false,
179
+ defaultSortColumn: "bucketTime",
177
180
  });
178
181
  }
179
182
  }
@@ -112,9 +112,10 @@ export default class MetricItemAggMV1mByService extends AnalyticsBaseModel {
112
112
  key: "retentionDate",
113
113
  title: "Retention Date",
114
114
  description:
115
- "Date after which this row is eligible for TTL deletion. Computed by the MV as max(retentionDate) per bucket inherits from the source MetricItemV3 rows.",
115
+ "Latest date after which this aggregate bucket is eligible for TTL deletion. Stored as SimpleAggregateFunction(max, DateTime) so partial rows keep the maximum expiry when AggregatingMergeTree merges them.",
116
116
  required: true,
117
117
  type: TableColumnType.Date,
118
+ simpleAggregateFunction: "max",
118
119
  });
119
120
 
120
121
  super({
@@ -160,7 +161,7 @@ SELECT
160
161
  countState(toFloat64(coalesce(value, sum, 0))) AS valueCountState,
161
162
  minState(toFloat64(coalesce(value, sum, 0))) AS valueMinState,
162
163
  maxState(toFloat64(coalesce(value, sum, 0))) AS valueMaxState,
163
- max(retentionDate) AS retentionDate
164
+ maxSimpleState(retentionDate) AS retentionDate
164
165
  FROM MetricItemV3
165
166
  WHERE serviceEntityKey != ''
166
167
  GROUP BY projectId, name, serviceEntityKey, bucketTime`,
@@ -174,6 +175,8 @@ GROUP BY projectId, name, serviceEntityKey, bucketTime`,
174
175
  tableSettings:
175
176
  "ttl_only_drop_parts = 1, non_replicated_deduplication_window = 10000",
176
177
  ttlExpression: "retentionDate DELETE",
178
+ includeBaseColumns: false,
179
+ defaultSortColumn: "bucketTime",
177
180
  });
178
181
  }
179
182
  }
@@ -157,6 +157,42 @@ export default class NetworkFlow extends AnalyticsBaseModel {
157
157
  },
158
158
  });
159
159
 
160
+ /*
161
+ * SNMP ifIndex of the interfaces the flow entered/left through — the
162
+ * key that ties flow records to NetworkInterface rows for
163
+ * per-interface traffic attribution. 0 when the exporter did not
164
+ * report one (and on rows ingested before these columns existed).
165
+ */
166
+ const inputInterfaceIndexColumn: AnalyticsTableColumn =
167
+ new AnalyticsTableColumn({
168
+ key: "inputInterfaceIndex",
169
+ title: "Input Interface Index",
170
+ description:
171
+ "SNMP ifIndex of the interface the flow entered through (0 when unknown)",
172
+ required: true,
173
+ type: TableColumnType.Number,
174
+ accessControl: {
175
+ read: readPermissions,
176
+ create: createPermissions,
177
+ update: [],
178
+ },
179
+ });
180
+
181
+ const outputInterfaceIndexColumn: AnalyticsTableColumn =
182
+ new AnalyticsTableColumn({
183
+ key: "outputInterfaceIndex",
184
+ title: "Output Interface Index",
185
+ description:
186
+ "SNMP ifIndex of the interface the flow left through (0 when unknown)",
187
+ required: true,
188
+ type: TableColumnType.Number,
189
+ accessControl: {
190
+ read: readPermissions,
191
+ create: createPermissions,
192
+ update: [],
193
+ },
194
+ });
195
+
160
196
  const octetsColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
161
197
  key: "octets",
162
198
  title: "Octets",
@@ -260,6 +296,8 @@ export default class NetworkFlow extends AnalyticsBaseModel {
260
296
  srcPortColumn,
261
297
  dstPortColumn,
262
298
  protocolColumn,
299
+ inputInterfaceIndexColumn,
300
+ outputInterfaceIndexColumn,
263
301
  octetsColumn,
264
302
  packetsColumn,
265
303
  flowStartAtColumn,
@@ -366,6 +404,22 @@ export default class NetworkFlow extends AnalyticsBaseModel {
366
404
  this.setColumnValue("protocol", v);
367
405
  }
368
406
 
407
+ public get inputInterfaceIndex(): number | undefined {
408
+ return this.getColumnValue("inputInterfaceIndex") as number | undefined;
409
+ }
410
+
411
+ public set inputInterfaceIndex(v: number | undefined) {
412
+ this.setColumnValue("inputInterfaceIndex", v);
413
+ }
414
+
415
+ public get outputInterfaceIndex(): number | undefined {
416
+ return this.getColumnValue("outputInterfaceIndex") as number | undefined;
417
+ }
418
+
419
+ public set outputInterfaceIndex(v: number | undefined) {
420
+ this.setColumnValue("outputInterfaceIndex", v);
421
+ }
422
+
369
423
  public get octets(): number | undefined {
370
424
  return this.getColumnValue("octets") as number | undefined;
371
425
  }
@@ -0,0 +1,240 @@
1
+ import AnalyticsBaseModel from "./AnalyticsBaseModel/AnalyticsBaseModel";
2
+ import Route from "../../Types/API/Route";
3
+ import AnalyticsTableEngine from "../../Types/AnalyticsDatabase/AnalyticsTableEngine";
4
+ import AnalyticsTableName from "../../Types/AnalyticsDatabase/AnalyticsTableName";
5
+ import AnalyticsTableColumn from "../../Types/AnalyticsDatabase/TableColumn";
6
+ import TableColumnType from "../../Types/AnalyticsDatabase/TableColumnType";
7
+ import ObjectID from "../../Types/ObjectID";
8
+ import Permission from "../../Types/Permission";
9
+
10
+ /**
11
+ * Time-bucketed history of computed SLO / Error Budget numbers, written
12
+ * by the SLO evaluation worker and read by dashboard charts through this
13
+ * model's auto-generated `/aggregate` endpoint.
14
+ *
15
+ * Why a dedicated table (and NOT MetricItemV3): MetricItemV3 partitions
16
+ * by `toYYYYMMDD(time)` with `ttl_only_drop_parts = 1`, so a single
17
+ * 400-day SLO row per day would pin every daily raw-telemetry partition
18
+ * for 400 days. This table owns its retention (monthly partitions,
19
+ * `bucketStart + INTERVAL 400 DAY` TTL) so history rows never interfere
20
+ * with telemetry retention — and SLO rows stay out of telemetry usage
21
+ * billing entirely.
22
+ *
23
+ * History is POINT-IN-TIME: the evaluator writes exactly one
24
+ * minute-floored bucket per series per run, once, holding the numbers as
25
+ * computed at that moment. Retroactive edits to the underlying
26
+ * MonitorStatusTimeline are NOT restated into already-written buckets —
27
+ * the SLO overview page recomputes its current numbers from Postgres and
28
+ * so self-heals, while these rows remain a record of what was reported
29
+ * at the time. (Possible future work: restate a trailing window of
30
+ * buckets on every run so retroactive edits propagate into charts; the
31
+ * version column below already supports it, but nothing writes such
32
+ * rewrites today.)
33
+ *
34
+ * Why ReplacingMergeTree + `version` (MutableMetric precedent): writes
35
+ * are at-least-once, so the same dedupe identity
36
+ * (projectId, sloId, metricName, bucketStart) can rarely be written
37
+ * twice — a retried job, or two runs landing in the same minute. Those
38
+ * rows collapse to the highest `version` at merge time rather than
39
+ * double-counting. Merges are asynchronous, so a naive reader can
40
+ * transiently see both rows: read through `/aggregate` (its GROUP BY on
41
+ * the bucketed timestamp collapses duplicates, which is what the
42
+ * dashboard charts do) or dedupe explicitly via
43
+ * `argMax(value, version) ... GROUP BY <identity>`.
44
+ *
45
+ * `metricName` values: "sli.percent", "error.budget.remaining.percent",
46
+ * "burn.rate", "good.count", "total.count".
47
+ */
48
+ export default class SloHistory extends AnalyticsBaseModel {
49
+ public constructor() {
50
+ const readPermissions: Array<Permission> = [
51
+ Permission.ProjectOwner,
52
+ Permission.ProjectAdmin,
53
+ Permission.ProjectMember,
54
+ Permission.Viewer,
55
+ Permission.ReadServiceLevelObjective,
56
+ ];
57
+
58
+ const projectIdColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
59
+ key: "projectId",
60
+ title: "Project ID",
61
+ description: "ID of project",
62
+ required: true,
63
+ type: TableColumnType.ObjectID,
64
+ isTenantId: true,
65
+ accessControl: {
66
+ read: readPermissions,
67
+ create: [],
68
+ update: [],
69
+ },
70
+ });
71
+
72
+ const sloIdColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
73
+ key: "sloId",
74
+ title: "SLO ID",
75
+ description: "ID of the Service Level Objective this row belongs to.",
76
+ required: true,
77
+ type: TableColumnType.ObjectID,
78
+ accessControl: {
79
+ read: readPermissions,
80
+ create: [],
81
+ update: [],
82
+ },
83
+ });
84
+
85
+ const metricNameColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
86
+ key: "metricName",
87
+ isLowCardinality: true,
88
+ title: "Metric Name",
89
+ description:
90
+ "Which SLO series this row belongs to: sli.percent, error.budget.remaining.percent, burn.rate, good.count, or total.count.",
91
+ required: true,
92
+ type: TableColumnType.Text,
93
+ accessControl: {
94
+ read: readPermissions,
95
+ create: [],
96
+ update: [],
97
+ },
98
+ });
99
+
100
+ const bucketStartColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
101
+ key: "bucketStart",
102
+ codec: [{ codec: "DoubleDelta" }, { codec: "ZSTD", level: 1 }],
103
+ title: "Bucket Start",
104
+ description:
105
+ "Start of the time bucket this value was computed for. Also drives the monthly partition key and the 400-day TTL.",
106
+ required: true,
107
+ type: TableColumnType.Date,
108
+ accessControl: {
109
+ read: readPermissions,
110
+ create: [],
111
+ update: [],
112
+ },
113
+ });
114
+
115
+ const valueColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
116
+ key: "value",
117
+ codec: [{ codec: "Gorilla" }, { codec: "ZSTD", level: 1 }],
118
+ title: "Value",
119
+ description: "Computed value for this SLO series at this bucket.",
120
+ required: true,
121
+ type: TableColumnType.Decimal,
122
+ accessControl: {
123
+ read: readPermissions,
124
+ create: [],
125
+ update: [],
126
+ },
127
+ });
128
+
129
+ const versionColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
130
+ key: "version",
131
+ codec: [{ codec: "DoubleDelta" }, { codec: "ZSTD", level: 1 }],
132
+ title: "Version",
133
+ description:
134
+ "Monotonic write version (unix millis at write time) for ReplacingMergeTree dedupe and version-aware reads.",
135
+ required: true,
136
+ type: TableColumnType.UInt64,
137
+ accessControl: {
138
+ read: readPermissions,
139
+ create: [],
140
+ update: [],
141
+ },
142
+ });
143
+
144
+ super({
145
+ tableName: AnalyticsTableName.SloHistory,
146
+ /*
147
+ * ReplacingMergeTree resolves to Replicated*ReplacingMergeTree(version)
148
+ * in ClusterConfig.getStorageEngine — the version column MUST be
149
+ * named exactly `version` (same mechanism as MutableMetric).
150
+ */
151
+ tableEngine: AnalyticsTableEngine.ReplacingMergeTree,
152
+ singularName: "SLO History",
153
+ pluralName: "SLO History",
154
+ crudApiPath: new Route("/slo-history"),
155
+ tableDescription:
156
+ "Historical SLI, error-budget, and burn-rate values per SLO, written by the SLO evaluation worker. Query via /aggregate for charts.",
157
+ accessControl: {
158
+ read: readPermissions,
159
+ create: [],
160
+ update: [],
161
+ delete: [],
162
+ },
163
+ tableColumns: [
164
+ projectIdColumn,
165
+ sloIdColumn,
166
+ metricNameColumn,
167
+ bucketStartColumn,
168
+ valueColumn,
169
+ versionColumn,
170
+ ],
171
+ projections: [],
172
+ sortKeys: ["projectId", "sloId", "metricName", "bucketStart"],
173
+ primaryKeys: ["projectId", "sloId", "metricName", "bucketStart"],
174
+ /*
175
+ * Monthly partitions: volume is tiny (~1 row/min/SLO across 5
176
+ * series) and every row in a partition shares its bucketStart
177
+ * month, so the fixed-interval TTL below expires whole partitions
178
+ * cleanly under ttl_only_drop_parts.
179
+ */
180
+ partitionKey: "toYYYYMM(bucketStart)",
181
+ /*
182
+ * Co-locate all of one SLO's series on a single shard so the
183
+ * read-side argMax dedupe GROUP BY aggregates per-shard cleanly.
184
+ */
185
+ shardingKey: "cityHash64(projectId, sloId)",
186
+ tableSettings:
187
+ "ttl_only_drop_parts = 1, non_replicated_deduplication_window = 10000",
188
+ ttlExpression: "bucketStart + INTERVAL 400 DAY",
189
+ defaultSortColumn: "bucketStart",
190
+ });
191
+ }
192
+
193
+ public get projectId(): ObjectID | undefined {
194
+ return this.getColumnValue("projectId") as ObjectID | undefined;
195
+ }
196
+
197
+ public set projectId(v: ObjectID | undefined) {
198
+ this.setColumnValue("projectId", v);
199
+ }
200
+
201
+ public get sloId(): ObjectID | undefined {
202
+ return this.getColumnValue("sloId") as ObjectID | undefined;
203
+ }
204
+
205
+ public set sloId(v: ObjectID | undefined) {
206
+ this.setColumnValue("sloId", v);
207
+ }
208
+
209
+ public get metricName(): string | undefined {
210
+ return this.getColumnValue("metricName") as string | undefined;
211
+ }
212
+
213
+ public set metricName(v: string | undefined) {
214
+ this.setColumnValue("metricName", v);
215
+ }
216
+
217
+ public get bucketStart(): Date | undefined {
218
+ return this.getColumnValue("bucketStart") as Date | undefined;
219
+ }
220
+
221
+ public set bucketStart(v: Date | undefined) {
222
+ this.setColumnValue("bucketStart", v);
223
+ }
224
+
225
+ public get value(): number | undefined {
226
+ return this.getColumnValue("value") as number | undefined;
227
+ }
228
+
229
+ public set value(v: number | undefined) {
230
+ this.setColumnValue("value", v);
231
+ }
232
+
233
+ public get version(): number | undefined {
234
+ return this.getColumnValue("version") as number | undefined;
235
+ }
236
+
237
+ public set version(v: number | undefined) {
238
+ this.setColumnValue("version", v);
239
+ }
240
+ }
@@ -13,6 +13,12 @@ import NetworkDeviceOwnerRule from "./NetworkDeviceOwnerRule";
13
13
  import NetworkDeviceLabelRule from "./NetworkDeviceLabelRule";
14
14
  import NetworkDeviceDiscoveryScan from "./NetworkDeviceDiscoveryScan";
15
15
  import NetworkInterface from "./NetworkInterface";
16
+ import NetworkSite from "./NetworkSite";
17
+ import NetworkSiteType from "./NetworkSiteType";
18
+ import NetworkEndpoint from "./NetworkEndpoint";
19
+ import NetworkSiteStatusTimeline from "./NetworkSiteStatusTimeline";
20
+ import NetworkSiteLink from "./NetworkSiteLink";
21
+ import NetworkSiteAssignmentRule from "./NetworkSiteAssignmentRule";
16
22
  import DockerHostOwnerTeam from "./DockerHostOwnerTeam";
17
23
  import DockerHostOwnerUser from "./DockerHostOwnerUser";
18
24
  import DockerResource from "./DockerResource";
@@ -348,6 +354,10 @@ import IncidentEpisodePrivacyRule from "./IncidentEpisodePrivacyRule";
348
354
  import IncidentEpisodeLabelRule from "./IncidentEpisodeLabelRule";
349
355
  import IncidentSlaRule from "./IncidentSlaRule";
350
356
  import IncidentSla from "./IncidentSla";
357
+ import ServiceLevelObjective from "./ServiceLevelObjective";
358
+ import ServiceLevelObjectiveBurnRateRule from "./ServiceLevelObjectiveBurnRateRule";
359
+ import ServiceLevelObjectiveOwnerUser from "./ServiceLevelObjectiveOwnerUser";
360
+ import ServiceLevelObjectiveOwnerTeam from "./ServiceLevelObjectiveOwnerTeam";
351
361
  import IncidentReminderRule from "./IncidentReminderRule";
352
362
  import AlertReminderRule from "./AlertReminderRule";
353
363
  import ScheduledMaintenanceReminderRule from "./ScheduledMaintenanceReminderRule";
@@ -527,6 +537,10 @@ const AllModelTypes: Array<{
527
537
  IncidentEpisodeLabelRule,
528
538
  IncidentSlaRule,
529
539
  IncidentSla,
540
+ ServiceLevelObjective,
541
+ ServiceLevelObjectiveBurnRateRule,
542
+ ServiceLevelObjectiveOwnerUser,
543
+ ServiceLevelObjectiveOwnerTeam,
530
544
  IncidentReminderRule,
531
545
  AlertReminderRule,
532
546
  ScheduledMaintenanceReminderRule,
@@ -780,6 +794,12 @@ const AllModelTypes: Array<{
780
794
  NetworkDeviceLabelRule,
781
795
  NetworkDeviceDiscoveryScan,
782
796
  NetworkInterface,
797
+ NetworkSite,
798
+ NetworkSiteType,
799
+ NetworkEndpoint,
800
+ NetworkSiteStatusTimeline,
801
+ NetworkSiteLink,
802
+ NetworkSiteAssignmentRule,
783
803
  DockerHostOwnerTeam,
784
804
  DockerHostOwnerUser,
785
805
  DockerResource,