datasource.go 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. package source
  2. import (
  3. "time"
  4. "github.com/julienschmidt/httprouter"
  5. "github.com/opencost/opencost/core/pkg/clusters"
  6. )
  7. type ClusterMetricsQuerier interface {
  8. // Cluster Disks
  9. QueryPVCost(start, end time.Time) QueryResultsChan
  10. QueryPVSize(start, end time.Time) QueryResultsChan
  11. QueryPVStorageClass(start, end time.Time) QueryResultsChan
  12. QueryPVUsedAverage(start, end time.Time) QueryResultsChan
  13. QueryPVUsedMax(start, end time.Time) QueryResultsChan
  14. QueryPVCInfo(start, end time.Time) QueryResultsChan
  15. QueryPVActiveMinutes(start, end time.Time) QueryResultsChan
  16. // Local Cluster Disks
  17. QueryLocalStorageCost(start, end time.Time) QueryResultsChan
  18. QueryLocalStorageUsedCost(start, end time.Time) QueryResultsChan
  19. QueryLocalStorageUsedAvg(start, end time.Time) QueryResultsChan
  20. QueryLocalStorageUsedMax(start, end time.Time) QueryResultsChan
  21. QueryLocalStorageBytes(start, end time.Time) QueryResultsChan
  22. QueryLocalStorageActiveMinutes(start, end time.Time) QueryResultsChan
  23. QueryLocalStorageBytesByProvider(provider string, start, end time.Time) QueryResultsChan
  24. QueryLocalStorageUsedByProvider(provider string, start, end time.Time) QueryResultsChan
  25. // Nodes
  26. QueryNodeCPUHourlyCost(start, end time.Time) QueryResultsChan // Duplicate: QueryNodeCostPerCPUHr
  27. QueryNodeCPUCoresCapacity(start, end time.Time) QueryResultsChan
  28. QueryNodeCPUCoresAllocatable(start, end time.Time) QueryResultsChan
  29. QueryNodeRAMHourlyCost(start, end time.Time) QueryResultsChan // Duplicate: QueryNodeCostPerRAMHr
  30. QueryNodeRAMBytesCapacity(start, end time.Time) QueryResultsChan
  31. QueryNodeRAMBytesAllocatable(start, end time.Time) QueryResultsChan
  32. QueryNodeGPUCount(start, end time.Time) QueryResultsChan
  33. QueryNodeGPUHourlyCost(start, end time.Time) QueryResultsChan // Duplicate: QueryNodeCostPerGPUHr
  34. QueryNodeLabels(start, end time.Time) QueryResultsChan
  35. QueryNodeActiveMinutes(start, end time.Time) QueryResultsChan
  36. QueryNodeIsSpot(start, end time.Time) QueryResultsChan
  37. QueryNodeCPUModeTotal(start, end time.Time) QueryResultsChan
  38. QueryNodeCPUModePercent(start, end time.Time) QueryResultsChan
  39. QueryNodeRAMSystemPercent(start, end time.Time) QueryResultsChan
  40. QueryNodeRAMUserPercent(start, end time.Time) QueryResultsChan
  41. // Load Balancers
  42. QueryLBPricePerHr(start, end time.Time) QueryResultsChan
  43. QueryLBActiveMinutes(start, end time.Time) QueryResultsChan
  44. // Cluster Management
  45. QueryClusterManagementDuration(start, end time.Time) QueryResultsChan
  46. QueryClusterManagementPricePerHr(start, end time.Time) QueryResultsChan
  47. // Cluster Costs
  48. QueryDataCount(start, end time.Time) QueryResultsChan
  49. QueryTotalGPU(start, end time.Time) QueryResultsChan
  50. QueryTotalCPU(start, end time.Time) QueryResultsChan
  51. QueryTotalRAM(start, end time.Time) QueryResultsChan
  52. QueryTotalStorage(start, end time.Time) QueryResultsChan
  53. // Cluster Costs
  54. QueryClusterCores(start, end time.Time, step time.Duration) QueryResultsChan
  55. QueryClusterRAM(start, end time.Time, step time.Duration) QueryResultsChan
  56. QueryClusterStorage(start, end time.Time, step time.Duration) QueryResultsChan
  57. QueryClusterStorageByProvider(provider string, start, end time.Time, step time.Duration) QueryResultsChan
  58. QueryClusterTotal(start, end time.Time, step time.Duration) QueryResultsChan
  59. QueryClusterTotalByProvider(provider string, start, end time.Time, step time.Duration) QueryResultsChan
  60. QueryClusterNodes(start, end time.Time, step time.Duration) QueryResultsChan
  61. QueryClusterNodesByProvider(provider string, start, end time.Time, step time.Duration) QueryResultsChan
  62. }
  63. type AllocationMetricsQuerier interface {
  64. QueryPods(start, end time.Time) QueryResultsChan
  65. QueryPodsUID(start, end time.Time) QueryResultsChan
  66. QueryRAMBytesAllocated(start, end time.Time) QueryResultsChan
  67. QueryRAMRequests(start, end time.Time) QueryResultsChan
  68. QueryRAMUsageAvg(start, end time.Time) QueryResultsChan
  69. QueryRAMUsageMax(start, end time.Time) QueryResultsChan
  70. QueryCPUCoresAllocated(start, end time.Time) QueryResultsChan
  71. QueryCPURequests(start, end time.Time) QueryResultsChan
  72. QueryCPUUsageAvg(start, end time.Time) QueryResultsChan
  73. QueryCPUUsageMax(start, end time.Time) QueryResultsChan
  74. QueryGPUsRequested(start, end time.Time) QueryResultsChan
  75. QueryGPUsUsageAvg(start, end time.Time) QueryResultsChan
  76. QueryGPUsUsageMax(start, end time.Time) QueryResultsChan
  77. QueryGPUsAllocated(start, end time.Time) QueryResultsChan
  78. QueryNodeCostPerCPUHr(start, end time.Time) QueryResultsChan
  79. QueryNodeCostPerRAMGiBHr(start, end time.Time) QueryResultsChan
  80. QueryNodeCostPerGPUHr(start, end time.Time) QueryResultsChan
  81. QueryNodeIsSpot2(start, end time.Time) QueryResultsChan
  82. QueryPVCInfo2(start, end time.Time) QueryResultsChan
  83. QueryPodPVCAllocation(start, end time.Time) QueryResultsChan
  84. QueryPVCBytesRequested(start, end time.Time) QueryResultsChan
  85. QueryPVActiveMins(start, end time.Time) QueryResultsChan
  86. QueryPVBytes(start, end time.Time) QueryResultsChan
  87. QueryPVCostPerGiBHour(start, end time.Time) QueryResultsChan
  88. QueryPVMeta(start, end time.Time) QueryResultsChan
  89. QueryNetZoneGiB(start, end time.Time) QueryResultsChan
  90. QueryNetZoneCostPerGiB(start, end time.Time) QueryResultsChan
  91. QueryNetRegionGiB(start, end time.Time) QueryResultsChan
  92. QueryNetRegionCostPerGiB(start, end time.Time) QueryResultsChan
  93. QueryNetInternetGiB(start, end time.Time) QueryResultsChan
  94. QueryNetInternetCostPerGiB(start, end time.Time) QueryResultsChan
  95. QueryNetReceiveBytes(start, end time.Time) QueryResultsChan
  96. QueryNetTransferBytes(start, end time.Time) QueryResultsChan
  97. QueryNodeLabels(start, end time.Time) QueryResultsChan
  98. QueryNamespaceLabels(start, end time.Time) QueryResultsChan
  99. QueryNamespaceAnnotations(start, end time.Time) QueryResultsChan
  100. QueryPodLabels(start, end time.Time) QueryResultsChan
  101. QueryPodAnnotations(start, end time.Time) QueryResultsChan
  102. QueryServiceLabels(start, end time.Time) QueryResultsChan
  103. QueryDeploymentLabels(start, end time.Time) QueryResultsChan
  104. QueryStatefulSetLabels(start, end time.Time) QueryResultsChan
  105. QueryDaemonSetLabels(start, end time.Time) QueryResultsChan
  106. QueryJobLabels(start, end time.Time) QueryResultsChan
  107. QueryPodsWithReplicaSetOwner(start, end time.Time) QueryResultsChan
  108. QueryReplicaSetsWithoutOwners(start, end time.Time) QueryResultsChan
  109. QueryReplicaSetsWithRollout(start, end time.Time) QueryResultsChan
  110. QueryDataCoverage(limitDays int) (time.Time, time.Time, error)
  111. QueryIsGPUShared(start, end time.Time) QueryResultsChan
  112. QueryGetGPUInfo(start, end time.Time) QueryResultsChan
  113. }
  114. type OpenCostDataSource interface {
  115. ClusterMetricsQuerier
  116. AllocationMetricsQuerier
  117. NewClusterMap(clusterInfoProvider clusters.ClusterInfoProvider) clusters.ClusterMap
  118. RegisterEndPoints(router *httprouter.Router)
  119. BatchDuration() time.Duration
  120. Resolution() time.Duration
  121. MetaData() map[string]string
  122. }