2
0

datasource.go 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. package source
  2. import (
  3. "time"
  4. "github.com/julienschmidt/httprouter"
  5. "github.com/opencost/opencost/core/pkg/clusters"
  6. )
  7. type InstantMetricsQuerier interface {
  8. QueryRAMUsage(window string, offset string) QueryResultsChan
  9. QueryCPUUsage(window string, offset string) QueryResultsChan
  10. QueryNetworkInZoneRequests(window string, offset string) QueryResultsChan
  11. QueryNetworkInRegionRequests(window string, offset string) QueryResultsChan
  12. QueryNetworkInternetRequests(window string, offset string) QueryResultsChan
  13. QueryNormalization(window string, offset string) QueryResultsChan
  14. QueryHistoricalCPUCost(window string, offset string) QueryResultsChan
  15. QueryHistoricalRAMCost(window string, offset string) QueryResultsChan
  16. QueryHistoricalGPUCost(window string, offset string) QueryResultsChan
  17. QueryHistoricalPodLabels(window string, offset string) QueryResultsChan
  18. }
  19. type RangeMetricsQuerier interface {
  20. QueryRAMRequestsOverTime(start, end time.Time, resolution time.Duration) QueryResultsChan
  21. QueryRAMUsageOverTime(start, end time.Time, resolution time.Duration) QueryResultsChan
  22. QueryRAMAllocationOverTime(start, end time.Time, resolution time.Duration) QueryResultsChan
  23. QueryCPURequestsOverTime(start, end time.Time, resolution time.Duration) QueryResultsChan
  24. QueryCPUUsageOverTime(start, end time.Time, resolution time.Duration) QueryResultsChan
  25. QueryCPUAllocationOverTime(start, end time.Time, resolution time.Duration) QueryResultsChan
  26. QueryGPURequestsOverTime(start, end time.Time, resolution time.Duration) QueryResultsChan
  27. QueryPVRequestsOverTime(start, end time.Time, resolution time.Duration) QueryResultsChan
  28. QueryPVCAllocationOverTime(start, end time.Time, resolution time.Duration) QueryResultsChan
  29. QueryPVHourlyCostOverTime(start, end time.Time, resolution time.Duration) QueryResultsChan
  30. QueryNetworkInZoneOverTime(start, end time.Time, resolution time.Duration) QueryResultsChan
  31. QueryNetworkInRegionOverTime(start, end time.Time, resolution time.Duration) QueryResultsChan
  32. QueryNetworkInternetOverTime(start, end time.Time, resolution time.Duration) QueryResultsChan
  33. QueryNamespaceLabelsOverTime(start, end time.Time, resolution time.Duration) QueryResultsChan
  34. QueryNamespaceAnnotationsOverTime(start, end time.Time, resolution time.Duration) QueryResultsChan
  35. QueryPodLabelsOverTime(start, end time.Time, resolution time.Duration) QueryResultsChan
  36. QueryPodAnnotationsOverTime(start, end time.Time, resolution time.Duration) QueryResultsChan
  37. QueryServiceLabelsOverTime(start, end time.Time, resolution time.Duration) QueryResultsChan
  38. QueryDeploymentLabelsOverTime(start, end time.Time, resolution time.Duration) QueryResultsChan
  39. QueryStatefulsetLabelsOverTime(start, end time.Time, resolution time.Duration) QueryResultsChan
  40. QueryPodJobsOverTime(start, end time.Time, resolution time.Duration) QueryResultsChan
  41. QueryPodDaemonsetsOverTime(start, end time.Time, resolution time.Duration) QueryResultsChan
  42. QueryNormalizationOverTime(start, end time.Time, resolution time.Duration) QueryResultsChan
  43. }
  44. type ClusterMetricsQuerier interface {
  45. // Cluster Disks
  46. QueryPVCost(start, end time.Time) QueryResultsChan
  47. QueryPVSize(start, end time.Time) QueryResultsChan
  48. QueryPVStorageClass(start, end time.Time) QueryResultsChan
  49. QueryPVUsedAverage(start, end time.Time) QueryResultsChan
  50. QueryPVUsedMax(start, end time.Time) QueryResultsChan
  51. QueryPVCInfo(start, end time.Time) QueryResultsChan
  52. QueryPVActiveMinutes(start, end time.Time) QueryResultsChan
  53. // Local Cluster Disks
  54. QueryLocalStorageCost(start, end time.Time) QueryResultsChan
  55. QueryLocalStorageUsedCost(start, end time.Time) QueryResultsChan
  56. QueryLocalStorageUsedAvg(start, end time.Time) QueryResultsChan
  57. QueryLocalStorageUsedMax(start, end time.Time) QueryResultsChan
  58. QueryLocalStorageBytes(start, end time.Time) QueryResultsChan
  59. QueryLocalStorageActiveMinutes(start, end time.Time) QueryResultsChan
  60. QueryLocalStorageBytesByProvider(provider string, start, end time.Time) QueryResultsChan
  61. QueryLocalStorageUsedByProvider(provider string, start, end time.Time) QueryResultsChan
  62. // Nodes
  63. QueryNodeCPUHourlyCost(start, end time.Time) QueryResultsChan
  64. QueryNodeCPUCoresCapacity(start, end time.Time) QueryResultsChan
  65. QueryNodeCPUCoresAllocatable(start, end time.Time) QueryResultsChan
  66. QueryNodeRAMHourlyCost(start, end time.Time) QueryResultsChan
  67. QueryNodeRAMBytesCapacity(start, end time.Time) QueryResultsChan
  68. QueryNodeRAMBytesAllocatable(start, end time.Time) QueryResultsChan
  69. QueryNodeGPUCount(start, end time.Time) QueryResultsChan
  70. QueryNodeGPUHourlyCost(start, end time.Time) QueryResultsChan
  71. QueryNodeLabels(start, end time.Time) QueryResultsChan
  72. QueryNodeActiveMinutes(start, end time.Time) QueryResultsChan
  73. QueryNodeIsSpot(start, end time.Time) QueryResultsChan
  74. QueryNodeCPUModeTotal(start, end time.Time) QueryResultsChan
  75. QueryNodeCPUModePercent(start, end time.Time) QueryResultsChan
  76. QueryNodeRAMSystemPercent(start, end time.Time) QueryResultsChan
  77. QueryNodeRAMUserPercent(start, end time.Time) QueryResultsChan
  78. //QueryNodeTotalLocalStorage(start, end time.Time) QueryResultsChan
  79. //QueryNodeUsedLocalStorage(start, end time.Time) QueryResultsChan
  80. // Load Balancers
  81. QueryLBCost(start, end time.Time) QueryResultsChan
  82. QueryLBActiveMinutes(start, end time.Time) QueryResultsChan
  83. // Cluster Costs
  84. QueryDataCount(start, end time.Time) QueryResultsChan
  85. QueryTotalGPU(start, end time.Time) QueryResultsChan
  86. QueryTotalCPU(start, end time.Time) QueryResultsChan
  87. QueryTotalRAM(start, end time.Time) QueryResultsChan
  88. QueryTotalStorage(start, end time.Time) QueryResultsChan
  89. // Cluster Costs
  90. QueryClusterCores(start, end time.Time, step time.Duration) QueryResultsChan
  91. QueryClusterRAM(start, end time.Time, step time.Duration) QueryResultsChan
  92. QueryClusterStorage(start, end time.Time, step time.Duration) QueryResultsChan
  93. QueryClusterStorageByProvider(provider string, start, end time.Time, step time.Duration) QueryResultsChan
  94. QueryClusterTotal(start, end time.Time, step time.Duration) QueryResultsChan
  95. QueryClusterTotalByProvider(provider string, start, end time.Time, step time.Duration) QueryResultsChan
  96. QueryClusterNodes(start, end time.Time, step time.Duration) QueryResultsChan
  97. QueryClusterNodesByProvider(provider string, start, end time.Time, step time.Duration) QueryResultsChan
  98. }
  99. type AllocationMetricsQuerier interface {
  100. QueryPods(start, end time.Time) QueryResultsChan
  101. QueryPodsUID(start, end time.Time) QueryResultsChan
  102. QueryRAMBytesAllocated(start, end time.Time) QueryResultsChan
  103. QueryRAMRequests(start, end time.Time) QueryResultsChan
  104. QueryRAMUsageAvg(start, end time.Time) QueryResultsChan
  105. QueryRAMUsageMax(start, end time.Time) QueryResultsChan
  106. QueryCPUCoresAllocated(start, end time.Time) QueryResultsChan
  107. QueryCPURequests(start, end time.Time) QueryResultsChan
  108. QueryCPUUsageAvg(start, end time.Time) QueryResultsChan
  109. QueryCPUUsageMax(start, end time.Time) QueryResultsChan
  110. QueryGPUsRequested(start, end time.Time) QueryResultsChan
  111. QueryGPUsUsageAvg(start, end time.Time) QueryResultsChan
  112. QueryGPUsUsageMax(start, end time.Time) QueryResultsChan
  113. QueryGPUsAllocated(start, end time.Time) QueryResultsChan
  114. QueryNodeCostPerCPUHr(start, end time.Time) QueryResultsChan
  115. QueryNodeCostPerRAMGiBHr(start, end time.Time) QueryResultsChan
  116. QueryNodeCostPerGPUHr(start, end time.Time) QueryResultsChan
  117. QueryNodeIsSpot2(start, end time.Time) QueryResultsChan
  118. QueryPVCInfo2(start, end time.Time) QueryResultsChan
  119. QueryPodPVCAllocation(start, end time.Time) QueryResultsChan
  120. QueryPVCBytesRequested(start, end time.Time) QueryResultsChan
  121. QueryPVActiveMins(start, end time.Time) QueryResultsChan
  122. QueryPVBytes(start, end time.Time) QueryResultsChan
  123. QueryPVCostPerGiBHour(start, end time.Time) QueryResultsChan
  124. QueryPVMeta(start, end time.Time) QueryResultsChan
  125. QueryNetZoneGiB(start, end time.Time) QueryResultsChan
  126. QueryNetZoneCostPerGiB(start, end time.Time) QueryResultsChan
  127. QueryNetRegionGiB(start, end time.Time) QueryResultsChan
  128. QueryNetRegionCostPerGiB(start, end time.Time) QueryResultsChan
  129. QueryNetInternetGiB(start, end time.Time) QueryResultsChan
  130. QueryNetInternetCostPerGiB(start, end time.Time) QueryResultsChan
  131. QueryNetReceiveBytes(start, end time.Time) QueryResultsChan
  132. QueryNetTransferBytes(start, end time.Time) QueryResultsChan
  133. QueryNodeLabels(start, end time.Time) QueryResultsChan
  134. QueryNamespaceLabels(start, end time.Time) QueryResultsChan
  135. QueryNamespaceAnnotations(start, end time.Time) QueryResultsChan
  136. QueryPodLabels(start, end time.Time) QueryResultsChan
  137. QueryPodAnnotations(start, end time.Time) QueryResultsChan
  138. QueryServiceLabels(start, end time.Time) QueryResultsChan
  139. QueryDeploymentLabels(start, end time.Time) QueryResultsChan
  140. QueryStatefulSetLabels(start, end time.Time) QueryResultsChan
  141. QueryDaemonSetLabels(start, end time.Time) QueryResultsChan
  142. QueryJobLabels(start, end time.Time) QueryResultsChan
  143. QueryPodsWithReplicaSetOwner(start, end time.Time) QueryResultsChan
  144. QueryReplicaSetsWithoutOwners(start, end time.Time) QueryResultsChan
  145. QueryReplicaSetsWithRollout(start, end time.Time) QueryResultsChan
  146. QueryLBCostPerHr(start, end time.Time) QueryResultsChan
  147. QueryLBActiveMins(start, end time.Time) QueryResultsChan
  148. QueryDataCoverage(limitDays int) (time.Time, time.Time, error)
  149. QueryIsGPUShared(start, end time.Time) QueryResultsChan
  150. QueryGetGPUInfo(start, end time.Time) QueryResultsChan
  151. }
  152. type OpenCostDataSource interface {
  153. InstantMetricsQuerier
  154. RangeMetricsQuerier
  155. ClusterMetricsQuerier
  156. AllocationMetricsQuerier
  157. NewClusterMap(clusterInfoProvider clusters.ClusterInfoProvider) clusters.ClusterMap
  158. RegisterEndPoints(router *httprouter.Router)
  159. BatchDuration() time.Duration
  160. Resolution() time.Duration
  161. MetaData() map[string]string
  162. }