datasource.go 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  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. QueryPVActiveMinutes(start, end time.Time) QueryResultsChan
  10. QueryPVUsedAverage(start, end time.Time) QueryResultsChan
  11. QueryPVUsedMax(start, end time.Time) QueryResultsChan
  12. // Local Cluster Disks
  13. QueryLocalStorageActiveMinutes(start, end time.Time) QueryResultsChan
  14. QueryLocalStorageCost(start, end time.Time) QueryResultsChan
  15. QueryLocalStorageUsedCost(start, end time.Time) QueryResultsChan
  16. QueryLocalStorageUsedAvg(start, end time.Time) QueryResultsChan
  17. QueryLocalStorageUsedMax(start, end time.Time) QueryResultsChan
  18. QueryLocalStorageBytes(start, end time.Time) QueryResultsChan
  19. QueryLocalStorageBytesByProvider(provider string, start, end time.Time) QueryResultsChan
  20. QueryLocalStorageUsedByProvider(provider string, start, end time.Time) QueryResultsChan
  21. // Nodes
  22. QueryNodeActiveMinutes(start, end time.Time) QueryResultsChan
  23. QueryNodeCPUCoresCapacity(start, end time.Time) QueryResultsChan
  24. QueryNodeCPUCoresAllocatable(start, end time.Time) QueryResultsChan
  25. QueryNodeRAMBytesCapacity(start, end time.Time) QueryResultsChan
  26. QueryNodeRAMBytesAllocatable(start, end time.Time) QueryResultsChan
  27. QueryNodeGPUCount(start, end time.Time) QueryResultsChan
  28. QueryNodeCPUModeTotal(start, end time.Time) QueryResultsChan
  29. QueryNodeIsSpot(start, end time.Time) QueryResultsChan
  30. QueryNodeCPUModePercent(start, end time.Time) QueryResultsChan
  31. QueryNodeRAMSystemPercent(start, end time.Time) QueryResultsChan
  32. QueryNodeRAMUserPercent(start, end time.Time) QueryResultsChan
  33. // Load Balancers
  34. QueryLBActiveMinutes(start, end time.Time) QueryResultsChan
  35. QueryLBPricePerHr(start, end time.Time) QueryResultsChan
  36. // Cluster Management
  37. QueryClusterManagementDuration(start, end time.Time) QueryResultsChan
  38. QueryClusterManagementPricePerHr(start, end time.Time) QueryResultsChan
  39. // Cluster Costs
  40. QueryDataCount(start, end time.Time) QueryResultsChan
  41. QueryTotalGPU(start, end time.Time) QueryResultsChan
  42. QueryTotalCPU(start, end time.Time) QueryResultsChan
  43. QueryTotalRAM(start, end time.Time) QueryResultsChan
  44. QueryTotalStorage(start, end time.Time) QueryResultsChan
  45. // Cluster Costs
  46. QueryClusterCores(start, end time.Time, step time.Duration) QueryResultsChan
  47. QueryClusterRAM(start, end time.Time, step time.Duration) QueryResultsChan
  48. QueryClusterStorage(start, end time.Time, step time.Duration) QueryResultsChan
  49. QueryClusterStorageByProvider(provider string, start, end time.Time, step time.Duration) QueryResultsChan
  50. QueryClusterTotal(start, end time.Time, step time.Duration) QueryResultsChan
  51. QueryClusterTotalByProvider(provider string, start, end time.Time, step time.Duration) QueryResultsChan
  52. QueryClusterNodes(start, end time.Time, step time.Duration) QueryResultsChan
  53. QueryClusterNodesByProvider(provider string, start, end time.Time, step time.Duration) QueryResultsChan
  54. }
  55. type AllocationMetricsQuerier interface {
  56. QueryPods(start, end time.Time) QueryResultsChan
  57. QueryPodsUID(start, end time.Time) QueryResultsChan
  58. QueryRAMBytesAllocated(start, end time.Time) QueryResultsChan
  59. QueryRAMRequests(start, end time.Time) QueryResultsChan
  60. QueryRAMUsageAvg(start, end time.Time) QueryResultsChan
  61. QueryRAMUsageMax(start, end time.Time) QueryResultsChan
  62. QueryNodeRAMPricePerGiBHr(start, end time.Time) QueryResultsChan
  63. QueryCPUCoresAllocated(start, end time.Time) QueryResultsChan
  64. QueryCPURequests(start, end time.Time) QueryResultsChan
  65. QueryCPUUsageAvg(start, end time.Time) QueryResultsChan
  66. QueryCPUUsageMax(start, end time.Time) QueryResultsChan
  67. QueryNodeCPUPricePerHr(start, end time.Time) QueryResultsChan
  68. QueryGPUsAllocated(start, end time.Time) QueryResultsChan
  69. QueryGPUsRequested(start, end time.Time) QueryResultsChan
  70. QueryGPUsUsageAvg(start, end time.Time) QueryResultsChan
  71. QueryGPUsUsageMax(start, end time.Time) QueryResultsChan
  72. QueryNodeGPUPricePerHr(start, end time.Time) QueryResultsChan
  73. QueryGPUInfo(start, end time.Time) QueryResultsChan
  74. QueryIsGPUShared(start, end time.Time) QueryResultsChan
  75. QueryPodPVCAllocation(start, end time.Time) QueryResultsChan
  76. QueryPVCBytesRequested(start, end time.Time) QueryResultsChan
  77. QueryPVCInfo(start, end time.Time) QueryResultsChan
  78. QueryPVBytes(start, end time.Time) QueryResultsChan
  79. QueryPVPricePerGiBHour(start, end time.Time) QueryResultsChan
  80. QueryPVInfo(start, end time.Time) QueryResultsChan
  81. QueryNetZoneGiB(start, end time.Time) QueryResultsChan
  82. QueryNetZoneCostPerGiB(start, end time.Time) QueryResultsChan
  83. QueryNetRegionGiB(start, end time.Time) QueryResultsChan
  84. QueryNetRegionCostPerGiB(start, end time.Time) QueryResultsChan
  85. QueryNetInternetGiB(start, end time.Time) QueryResultsChan
  86. QueryNetInternetCostPerGiB(start, end time.Time) QueryResultsChan
  87. QueryNetReceiveBytes(start, end time.Time) QueryResultsChan
  88. QueryNetTransferBytes(start, end time.Time) QueryResultsChan
  89. QueryNamespaceAnnotations(start, end time.Time) QueryResultsChan
  90. QueryPodAnnotations(start, end time.Time) QueryResultsChan
  91. QueryNodeLabels(start, end time.Time) QueryResultsChan
  92. QueryNamespaceLabels(start, end time.Time) QueryResultsChan
  93. QueryPodLabels(start, end time.Time) QueryResultsChan
  94. QueryServiceLabels(start, end time.Time) QueryResultsChan
  95. QueryDeploymentLabels(start, end time.Time) QueryResultsChan
  96. QueryStatefulSetLabels(start, end time.Time) QueryResultsChan
  97. QueryDaemonSetLabels(start, end time.Time) QueryResultsChan
  98. QueryJobLabels(start, end time.Time) QueryResultsChan
  99. QueryPodsWithReplicaSetOwner(start, end time.Time) QueryResultsChan
  100. QueryReplicaSetsWithoutOwners(start, end time.Time) QueryResultsChan
  101. QueryReplicaSetsWithRollout(start, end time.Time) QueryResultsChan
  102. QueryDataCoverage(limitDays int) (time.Time, time.Time, error)
  103. }
  104. type OpenCostDataSource interface {
  105. ClusterMetricsQuerier
  106. AllocationMetricsQuerier
  107. NewClusterMap(clusterInfoProvider clusters.ClusterInfoProvider) clusters.ClusterMap
  108. RegisterEndPoints(router *httprouter.Router)
  109. BatchDuration() time.Duration
  110. Resolution() time.Duration
  111. MetaData() map[string]string
  112. }