metricsquerier.go 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824
  1. package collector
  2. import (
  3. "fmt"
  4. "time"
  5. "github.com/opencost/opencost/core/pkg/source"
  6. "github.com/opencost/opencost/modules/collector-source/pkg/metric"
  7. "github.com/opencost/opencost/modules/collector-source/pkg/util"
  8. )
  9. const GiB = 1024 * 1024 * 1024
  10. const LocalStorageCostPerGiBHr = 0.04 / 730.0
  11. type collectorMetricsQuerier struct {
  12. collectorProvider StoreProvider
  13. }
  14. func newCollectorMetricsQuerier(repo *metric.MetricRepository, resoluationConfigs []util.ResolutionConfiguration) *collectorMetricsQuerier {
  15. return &collectorMetricsQuerier{
  16. collectorProvider: newRepoStoreProvider(repo, resoluationConfigs),
  17. }
  18. }
  19. func queryCollector[T any](c *collectorMetricsQuerier, start, end time.Time, id metric.MetricCollectorID, decoder source.ResultDecoder[T]) *source.Future[T] {
  20. queryResults := source.NewQueryResults(string(id))
  21. collector := c.collectorProvider.GetStore(start, end)
  22. if collector != nil {
  23. results, err := collector.Query(id)
  24. queryResults.Error = err
  25. for _, result := range results {
  26. queryResults.Results = append(queryResults.Results, result.ToQueryResult())
  27. }
  28. }
  29. ch := make(source.QueryResultsChan, 1)
  30. ch <- queryResults
  31. f := source.NewFuture[T](decoder, ch)
  32. return f
  33. }
  34. func queryCollectorGiB[T any](c *collectorMetricsQuerier, start, end time.Time, id metric.MetricCollectorID, decoder source.ResultDecoder[T]) *source.Future[T] {
  35. queryResults := source.NewQueryResults(string(id))
  36. collector := c.collectorProvider.GetStore(start, end)
  37. if collector != nil {
  38. results, err := collector.Query(id)
  39. queryResults.Error = err
  40. for _, result := range results {
  41. for i := range result.Values {
  42. result.Values[i].Value /= GiB
  43. }
  44. queryResults.Results = append(queryResults.Results, result.ToQueryResult())
  45. }
  46. }
  47. ch := make(source.QueryResultsChan, 1)
  48. ch <- queryResults
  49. f := source.NewFuture[T](decoder, ch)
  50. return f
  51. }
  52. func (c *collectorMetricsQuerier) QueryPVActiveMinutes(start, end time.Time) *source.Future[source.PVActiveMinutesResult] {
  53. return queryCollector(c, start, end, metric.PVActiveMinutesID, source.DecodePVActiveMinutesResult)
  54. }
  55. func (c *collectorMetricsQuerier) QueryPVUsedAverage(start, end time.Time) *source.Future[source.PVUsedAvgResult] {
  56. return queryCollector(c, start, end, metric.PVUsedAverageID, source.DecodePVUsedAvgResult)
  57. }
  58. func (c *collectorMetricsQuerier) QueryPVUsedMax(start, end time.Time) *source.Future[source.PVUsedMaxResult] {
  59. return queryCollector(c, start, end, metric.PVUsedMaxID, source.DecodePVUsedMaxResult)
  60. }
  61. func (c *collectorMetricsQuerier) QueryLocalStorageActiveMinutes(start, end time.Time) *source.Future[source.LocalStorageActiveMinutesResult] {
  62. return queryCollector(c, start, end, metric.LocalStorageActiveMinutesID, source.DecodeLocalStorageActiveMinutesResult)
  63. }
  64. func (c *collectorMetricsQuerier) QueryLocalStorageUsedAvg(start, end time.Time) *source.Future[source.LocalStorageUsedAvgResult] {
  65. return queryCollector(c, start, end, metric.LocalStorageUsedAverageID, source.DecodeLocalStorageUsedAvgResult)
  66. }
  67. func (c *collectorMetricsQuerier) QueryLocalStorageUsedMax(start, end time.Time) *source.Future[source.LocalStorageUsedMaxResult] {
  68. return queryCollector(c, start, end, metric.LocalStorageUsedMaxID, source.DecodeLocalStorageUsedMaxResult)
  69. }
  70. func (c *collectorMetricsQuerier) QueryLocalStorageBytes(start, end time.Time) *source.Future[source.LocalStorageBytesResult] {
  71. return queryCollector(c, start, end, metric.LocalStorageBytesID, source.DecodeLocalStorageBytesResult)
  72. }
  73. func (c *collectorMetricsQuerier) QueryNodeInfo(start, end time.Time) *source.Future[source.NodeInfoResult] {
  74. return queryCollector(c, start, end, metric.NodeInfoID, source.DecodeNodeInfoResult)
  75. }
  76. func (c *collectorMetricsQuerier) QueryNodeUptime(start, end time.Time) *source.Future[source.UptimeResult] {
  77. return queryCollector(c, start, end, metric.NodeUptimeID, source.DecodeUptimeResult)
  78. }
  79. func (c *collectorMetricsQuerier) QueryNodeActiveMinutes(start, end time.Time) *source.Future[source.NodeActiveMinutesResult] {
  80. return queryCollector(c, start, end, metric.NodeActiveMinutesID, source.DecodeNodeActiveMinutesResult)
  81. }
  82. func (c *collectorMetricsQuerier) QueryNodeCPUCoresCapacity(start, end time.Time) *source.Future[source.NodeCPUCoresCapacityResult] {
  83. return queryCollector(c, start, end, metric.NodeCPUCoresCapacityID, source.DecodeNodeCPUCoresCapacityResult)
  84. }
  85. func (c *collectorMetricsQuerier) QueryNodeCPUCoresAllocatable(start, end time.Time) *source.Future[source.NodeCPUCoresAllocatableResult] {
  86. return queryCollector(c, start, end, metric.NodeCPUCoresAllocatableID, source.DecodeNodeCPUCoresAllocatableResult)
  87. }
  88. func (c *collectorMetricsQuerier) QueryNodeRAMBytesCapacity(start, end time.Time) *source.Future[source.NodeRAMBytesCapacityResult] {
  89. return queryCollector(c, start, end, metric.NodeRAMBytesCapacityID, source.DecodeNodeRAMBytesCapacityResult)
  90. }
  91. func (c *collectorMetricsQuerier) QueryNodeRAMBytesAllocatable(start, end time.Time) *source.Future[source.NodeRAMBytesAllocatableResult] {
  92. return queryCollector(c, start, end, metric.NodeRAMBytesAllocatableID, source.DecodeNodeRAMBytesAllocatableResult)
  93. }
  94. func (c *collectorMetricsQuerier) QueryNodeGPUCount(start, end time.Time) *source.Future[source.NodeGPUCountResult] {
  95. return queryCollector(c, start, end, metric.NodeGPUCountID, source.DecodeNodeGPUCountResult)
  96. }
  97. func (c *collectorMetricsQuerier) QueryNodeCPUModeTotal(start, end time.Time) *source.Future[source.NodeCPUModeTotalResult] {
  98. return queryCollector(c, start, end, metric.NodeCPUModeTotalID, source.DecodeNodeCPUModeTotalResult)
  99. }
  100. func (c *collectorMetricsQuerier) QueryNodeIsSpot(start, end time.Time) *source.Future[source.NodeIsSpotResult] {
  101. return queryCollector(c, start, end, metric.NodeIsSpotID, source.DecodeNodeIsSpotResult)
  102. }
  103. func (c *collectorMetricsQuerier) QueryNodeRAMSystemPercent(start, end time.Time) *source.Future[source.NodeRAMSystemPercentResult] {
  104. queryResults := source.NewQueryResults("NodeRAMSystemPercent")
  105. collector := c.collectorProvider.GetStore(start, end)
  106. if collector != nil {
  107. capacityResult, err := collector.Query(metric.NodeRAMBytesCapacityID)
  108. if err != nil {
  109. queryResults.Error = err
  110. }
  111. nodeCapacities := map[string]float64{}
  112. for _, result := range capacityResult {
  113. node := result.MetricLabels[source.NodeLabel]
  114. if node == "" || len(result.Values) == 0 {
  115. continue
  116. }
  117. nodeCapacities[node] = result.Values[0].Value
  118. }
  119. results, err := collector.Query(metric.NodeRAMSystemUsageAverageID)
  120. if err != nil {
  121. queryResults.Error = err
  122. }
  123. for _, result := range results {
  124. instance := result.MetricLabels[source.InstanceLabel]
  125. capacity, ok := nodeCapacities[instance]
  126. if !ok || len(result.Values) == 0 {
  127. continue
  128. }
  129. result.Values[0].Value /= capacity
  130. queryResults.Results = append(queryResults.Results, result.ToQueryResult())
  131. }
  132. }
  133. ch := make(source.QueryResultsChan, 1)
  134. ch <- queryResults
  135. f := source.NewFuture(source.DecodeNodeRAMSystemPercentResult, ch)
  136. return f
  137. }
  138. func (c *collectorMetricsQuerier) QueryNodeRAMUserPercent(start, end time.Time) *source.Future[source.NodeRAMUserPercentResult] {
  139. queryResults := source.NewQueryResults("NodeRAMUserPercent")
  140. collector := c.collectorProvider.GetStore(start, end)
  141. if collector != nil {
  142. capacityResult, err := collector.Query(metric.NodeRAMBytesCapacityID)
  143. if err != nil {
  144. queryResults.Error = err
  145. }
  146. nodeCapacities := map[string]float64{}
  147. for _, result := range capacityResult {
  148. node := result.MetricLabels[source.NodeLabel]
  149. if node == "" || len(result.Values) == 0 {
  150. continue
  151. }
  152. nodeCapacities[node] = result.Values[0].Value
  153. }
  154. results, err := collector.Query(metric.NodeRAMUserUsageAverageID)
  155. if err != nil {
  156. queryResults.Error = err
  157. }
  158. for _, result := range results {
  159. instance := result.MetricLabels[source.InstanceLabel]
  160. capacity, ok := nodeCapacities[instance]
  161. if !ok || len(result.Values) == 0 {
  162. continue
  163. }
  164. result.Values[0].Value /= capacity
  165. queryResults.Results = append(queryResults.Results, result.ToQueryResult())
  166. }
  167. }
  168. ch := make(source.QueryResultsChan, 1)
  169. ch <- queryResults
  170. f := source.NewFuture(source.DecodeNodeRAMUserPercentResult, ch)
  171. return f
  172. }
  173. func (c *collectorMetricsQuerier) QueryNodeResourceCapacities(start, end time.Time) *source.Future[source.ResourceResult] {
  174. return queryCollector(c, start, end, metric.NodeResourceCapacitiesID, source.DecodeResourceResult)
  175. }
  176. func (c *collectorMetricsQuerier) QueryNodeResourcesAllocatable(start, end time.Time) *source.Future[source.ResourceResult] {
  177. return queryCollector(c, start, end, metric.NodeResourcesAllocatableID, source.DecodeResourceResult)
  178. }
  179. func (c *collectorMetricsQuerier) QueryLBActiveMinutes(start, end time.Time) *source.Future[source.LBActiveMinutesResult] {
  180. return queryCollector(c, start, end, metric.LBActiveMinutesID, source.DecodeLBActiveMinutesResult)
  181. }
  182. func (c *collectorMetricsQuerier) QueryLBPricePerHr(start, end time.Time) *source.Future[source.LBPricePerHrResult] {
  183. return queryCollector(c, start, end, metric.LBPricePerHourID, source.DecodeLBPricePerHrResult)
  184. }
  185. func (c *collectorMetricsQuerier) QueryClusterInfo(start, end time.Time) *source.Future[source.ClusterInfoResult] {
  186. return queryCollector(c, start, end, metric.ClusterInfoID, source.DecodeClusterInfoResult)
  187. }
  188. func (c *collectorMetricsQuerier) QueryClusterKubeModelVersion(start, end time.Time) *source.Future[source.ClusterKubeModelVersionResult] {
  189. return queryCollector(c, start, end, metric.ClusterCompleteKubeModelID, source.DecodeClusterKubeModelVersionResult)
  190. }
  191. func (c *collectorMetricsQuerier) QueryClusterUptime(start, end time.Time) *source.Future[source.UptimeResult] {
  192. return queryCollector(c, start, end, metric.ClusterUptimeID, source.DecodeUptimeResult)
  193. }
  194. func (c *collectorMetricsQuerier) QueryClusterManagementDuration(start, end time.Time) *source.Future[source.ClusterManagementDurationResult] {
  195. return queryCollector(c, start, end, metric.ClusterManagementDurationID, source.DecodeClusterManagementDurationResult)
  196. }
  197. func (c *collectorMetricsQuerier) QueryClusterManagementPricePerHr(start, end time.Time) *source.Future[source.ClusterManagementPricePerHrResult] {
  198. return queryCollector(c, start, end, metric.ClusterManagementPricePerHourID, source.DecodeClusterManagementPricePerHrResult)
  199. }
  200. func (c *collectorMetricsQuerier) QueryPods(start, end time.Time) *source.Future[source.PodsResult] {
  201. return queryCollector(c, start, end, metric.PodActiveMinutesID, source.DecodePodsResult)
  202. }
  203. func (c *collectorMetricsQuerier) QueryPodsUID(start, end time.Time) *source.Future[source.PodsResult] {
  204. return queryCollector(c, start, end, metric.PodActiveMinutesID, source.DecodePodsResult)
  205. }
  206. func (c *collectorMetricsQuerier) QueryPodInfo(start, end time.Time) *source.Future[source.PodInfoResult] {
  207. return queryCollector(c, start, end, metric.PodInfoID, source.DecodePodInfoResult)
  208. }
  209. func (c *collectorMetricsQuerier) QueryPodUptime(start, end time.Time) *source.Future[source.UptimeResult] {
  210. return queryCollector(c, start, end, metric.PodUptimeID, source.DecodeUptimeResult)
  211. }
  212. func (c *collectorMetricsQuerier) QueryPodOwners(start, end time.Time) *source.Future[source.OwnerResult] {
  213. return queryCollector(c, start, end, metric.PodOwnerID, source.DecodeOwnerResult)
  214. }
  215. func (c *collectorMetricsQuerier) QueryPodPVCVolumes(start, end time.Time) *source.Future[source.PodPVCVolumeResult] {
  216. return queryCollector(c, start, end, metric.PodPVCVolumeID, source.DecodePodPVCVolumeResult)
  217. }
  218. func (c *collectorMetricsQuerier) QueryPodNetworkEgressBytes(start, end time.Time) *source.Future[source.PodNetworkBytesResult] {
  219. return queryCollector(c, start, end, metric.PodNetworkEgressBytesID, source.DecodePodNetworkBytesResult)
  220. }
  221. func (c *collectorMetricsQuerier) QueryPodNetworkIngressBytes(start, end time.Time) *source.Future[source.PodNetworkBytesResult] {
  222. return queryCollector(c, start, end, metric.PodNetworkIngressBytesID, source.DecodePodNetworkBytesResult)
  223. }
  224. func (c *collectorMetricsQuerier) QueryContainerUptime(start, end time.Time) *source.Future[source.ContainerUptimeResult] {
  225. return queryCollector(c, start, end, metric.ContainerUptimeID, source.DecodeContainerUptimeResult)
  226. }
  227. func (c *collectorMetricsQuerier) QueryContainerResourceRequests(start, end time.Time) *source.Future[source.ContainerResourceResult] {
  228. return queryCollector(c, start, end, metric.ContainerResourceRequestsID, source.DecodeContainerResourceResult)
  229. }
  230. func (c *collectorMetricsQuerier) QueryContainerResourceLimits(start, end time.Time) *source.Future[source.ContainerResourceResult] {
  231. return queryCollector(c, start, end, metric.ContainerResourceLimitsID, source.DecodeContainerResourceResult)
  232. }
  233. func (c *collectorMetricsQuerier) QueryRAMBytesAllocated(start, end time.Time) *source.Future[source.RAMBytesAllocatedResult] {
  234. return queryCollector(c, start, end, metric.RAMBytesAllocatedID, source.DecodeRAMBytesAllocatedResult)
  235. }
  236. func (c *collectorMetricsQuerier) QueryRAMRequests(start, end time.Time) *source.Future[source.RAMRequestsResult] {
  237. return queryCollector(c, start, end, metric.RAMRequestsID, source.DecodeRAMRequestsResult)
  238. }
  239. func (c *collectorMetricsQuerier) QueryRAMLimits(start, end time.Time) *source.Future[source.RAMLimitsResult] {
  240. return queryCollector(c, start, end, metric.RAMLimitsID, source.DecodeRAMLimitsResult)
  241. }
  242. func (c *collectorMetricsQuerier) QueryRAMUsageAvg(start, end time.Time) *source.Future[source.RAMUsageAvgResult] {
  243. return queryCollector(c, start, end, metric.RAMUsageAverageID, source.DecodeRAMUsageAvgResult)
  244. }
  245. func (c *collectorMetricsQuerier) QueryRAMUsageMax(start, end time.Time) *source.Future[source.RAMUsageMaxResult] {
  246. return queryCollector(c, start, end, metric.RAMUsageMaxID, source.DecodeRAMUsageMaxResult)
  247. }
  248. func (c *collectorMetricsQuerier) QueryNodeRAMPricePerGiBHr(start, end time.Time) *source.Future[source.NodeRAMPricePerGiBHrResult] {
  249. return queryCollector(c, start, end, metric.NodeRAMPricePerGiBHourID, source.DecodeNodeRAMPricePerGiBHrResult)
  250. }
  251. func (c *collectorMetricsQuerier) QueryCPUCoresAllocated(start, end time.Time) *source.Future[source.CPUCoresAllocatedResult] {
  252. return queryCollector(c, start, end, metric.CPUCoresAllocatedID, source.DecodeCPUCoresAllocatedResult)
  253. }
  254. func (c *collectorMetricsQuerier) QueryCPURequests(start, end time.Time) *source.Future[source.CPURequestsResult] {
  255. return queryCollector(c, start, end, metric.CPURequestsID, source.DecodeCPURequestsResult)
  256. }
  257. func (c *collectorMetricsQuerier) QueryCPULimits(start, end time.Time) *source.Future[source.CPULimitsResult] {
  258. return queryCollector(c, start, end, metric.CPULimitsID, source.DecodeCPULimitsResult)
  259. }
  260. func (c *collectorMetricsQuerier) QueryCPUUsageAvg(start, end time.Time) *source.Future[source.CPUUsageAvgResult] {
  261. return queryCollector(c, start, end, metric.CPUUsageAverageID, source.DecodeCPUUsageAvgResult)
  262. }
  263. func (c *collectorMetricsQuerier) QueryCPUUsageMax(start, end time.Time) *source.Future[source.CPUUsageMaxResult] {
  264. return queryCollector(c, start, end, metric.CPUUsageMaxID, source.DecodeCPUUsageMaxResult)
  265. }
  266. func (c *collectorMetricsQuerier) QueryNodeCPUPricePerHr(start, end time.Time) *source.Future[source.NodeCPUPricePerHrResult] {
  267. return queryCollector(c, start, end, metric.NodeCPUPricePerHourID, source.DecodeNodeCPUPricePerHrResult)
  268. }
  269. func (c *collectorMetricsQuerier) QueryGPUsAllocated(start, end time.Time) *source.Future[source.GPUsAllocatedResult] {
  270. return queryCollector(c, start, end, metric.GPUsAllocatedID, source.DecodeGPUsAllocatedResult)
  271. }
  272. func (c *collectorMetricsQuerier) QueryGPUsRequested(start, end time.Time) *source.Future[source.GPUsRequestedResult] {
  273. return queryCollector(c, start, end, metric.GPUsRequestedID, source.DecodeGPUsRequestedResult)
  274. }
  275. func (c *collectorMetricsQuerier) QueryGPUsUsageAvg(start, end time.Time) *source.Future[source.GPUsUsageAvgResult] {
  276. return queryCollector(c, start, end, metric.GPUsUsageAverageID, source.DecodeGPUsUsageAvgResult)
  277. }
  278. func (c *collectorMetricsQuerier) QueryGPUsUsageMax(start, end time.Time) *source.Future[source.GPUsUsageMaxResult] {
  279. return queryCollector(c, start, end, metric.GPUsUsageMaxID, source.DecodeGPUsUsageMaxResult)
  280. }
  281. func (c *collectorMetricsQuerier) QueryNodeGPUPricePerHr(start, end time.Time) *source.Future[source.NodeGPUPricePerHrResult] {
  282. return queryCollector(c, start, end, metric.NodeGPUPricePerHourID, source.DecodeNodeGPUPricePerHrResult)
  283. }
  284. func (c *collectorMetricsQuerier) QueryGPUInfo(start, end time.Time) *source.Future[source.GPUInfoResult] {
  285. return queryCollector(c, start, end, metric.GPUInfoID, source.DecodeGPUInfoResult)
  286. }
  287. func (c *collectorMetricsQuerier) QueryIsGPUShared(start, end time.Time) *source.Future[source.IsGPUSharedResult] {
  288. return queryCollector(c, start, end, metric.IsGPUSharedID, source.DecodeIsGPUSharedResult)
  289. }
  290. func (c *collectorMetricsQuerier) QueryDCGMDeviceInfo(start, end time.Time) *source.Future[source.DCGMDeviceInfoResult] {
  291. return queryCollector(c, start, end, metric.DCGMInfoID, source.DecodeDCGMDeviceInfoResult)
  292. }
  293. func (c *collectorMetricsQuerier) QueryDCGMDeviceUptime(start, end time.Time) *source.Future[source.DCGMDeviceUptimeResult] {
  294. return queryCollector(c, start, end, metric.DCGMUptimeID, source.DecodeDCGMDeviceUptimeResult)
  295. }
  296. func (c *collectorMetricsQuerier) QueryDCGMContainerUsageAvg(start, end time.Time) *source.Future[source.DCGMDeviceContainerUsageResult] {
  297. return queryCollector(c, start, end, metric.DCGMContainerUsageAvgID, source.DecodeDCGMDeviceContainerUsageResult)
  298. }
  299. func (c *collectorMetricsQuerier) QueryDCGMContainerUsageMax(start, end time.Time) *source.Future[source.DCGMDeviceContainerUsageResult] {
  300. return queryCollector(c, start, end, metric.DCGMContainerUsageMaxID, source.DecodeDCGMDeviceContainerUsageResult)
  301. }
  302. func (c *collectorMetricsQuerier) QueryPodPVCAllocation(start, end time.Time) *source.Future[source.PodPVCAllocationResult] {
  303. return queryCollector(c, start, end, metric.PodPVCAllocationID, source.DecodePodPVCAllocationResult)
  304. }
  305. func (c *collectorMetricsQuerier) QueryPVCBytesRequested(start, end time.Time) *source.Future[source.PVCBytesRequestedResult] {
  306. return queryCollector(c, start, end, metric.PVCBytesRequestedID, source.DecodePVCBytesRequestedResult)
  307. }
  308. func (c *collectorMetricsQuerier) QueryPVCInfo(start, end time.Time) *source.Future[source.PVCInfoResult] {
  309. return queryCollector(c, start, end, metric.PVCInfoID, source.DecodePVCInfoResult)
  310. }
  311. func (c *collectorMetricsQuerier) QueryKMPVCInfo(start, end time.Time) *source.Future[source.PVCInfoResult] {
  312. return queryCollector(c, start, end, metric.KMPVCInfoID, source.DecodePVCInfoResult)
  313. }
  314. func (c *collectorMetricsQuerier) QueryKMLocalStorageUsedAvg(start, end time.Time) *source.Future[source.NodeUIDValueResult] {
  315. return queryCollector(c, start, end, metric.KMLocalStorageUsedAverageID, source.DecodeNodeUIDValueResult)
  316. }
  317. func (c *collectorMetricsQuerier) QueryKMLocalStorageUsedMax(start, end time.Time) *source.Future[source.NodeUIDValueResult] {
  318. return queryCollector(c, start, end, metric.KMLocalStorageUsedMaxID, source.DecodeNodeUIDValueResult)
  319. }
  320. func (c *collectorMetricsQuerier) QueryKMLocalStorageBytes(start, end time.Time) *source.Future[source.UIDValueResult] {
  321. return queryCollector(c, start, end, metric.KMLocalStorageBytesID, source.DecodeUIDValueResult)
  322. }
  323. func (c *collectorMetricsQuerier) QueryPVCUptime(start, end time.Time) *source.Future[source.UptimeResult] {
  324. return queryCollector(c, start, end, metric.PVCUptimeID, source.DecodeUptimeResult)
  325. }
  326. func (c *collectorMetricsQuerier) QueryPVBytes(start, end time.Time) *source.Future[source.PVBytesResult] {
  327. return queryCollector(c, start, end, metric.PVBytesID, source.DecodePVBytesResult)
  328. }
  329. func (c *collectorMetricsQuerier) QueryPVPricePerGiBHour(start, end time.Time) *source.Future[source.PVPricePerGiBHourResult] {
  330. return queryCollector(c, start, end, metric.PVPricePerGiBHourID, source.DecodePVPricePerGiBHourResult)
  331. }
  332. func (c *collectorMetricsQuerier) QueryPVInfo(start, end time.Time) *source.Future[source.PVInfoResult] {
  333. return queryCollector(c, start, end, metric.PVInfoID, source.DecodePVInfoResult)
  334. }
  335. func (c *collectorMetricsQuerier) QueryKMPVInfo(start, end time.Time) *source.Future[source.PVInfoResult] {
  336. return queryCollector(c, start, end, metric.KMPVInfoID, source.DecodePVInfoResult)
  337. }
  338. func (c *collectorMetricsQuerier) QueryPVCBytesUsedAverage(start, end time.Time) *source.Future[source.PVCUIDValueResult] {
  339. return queryCollector(c, start, end, metric.PVCBytesUsedAverageID, source.DecodePVCUIDValueResult)
  340. }
  341. func (c *collectorMetricsQuerier) QueryPVCBytesUsedMax(start, end time.Time) *source.Future[source.PVCUIDValueResult] {
  342. return queryCollector(c, start, end, metric.PVCBytesUsedMaxID, source.DecodePVCUIDValueResult)
  343. }
  344. func (c *collectorMetricsQuerier) QueryPVUptime(start, end time.Time) *source.Future[source.UptimeResult] {
  345. return queryCollector(c, start, end, metric.PVUptimeID, source.DecodeUptimeResult)
  346. }
  347. func (c *collectorMetricsQuerier) QueryNamespaceInfo(start, end time.Time) *source.Future[source.NamespaceInfoResult] {
  348. return queryCollector(c, start, end, metric.NamespaceInfoID, source.DecodeNamespaceInfoResult)
  349. }
  350. func (c *collectorMetricsQuerier) QueryNamespaceUptime(start, end time.Time) *source.Future[source.UptimeResult] {
  351. return queryCollector(c, start, end, metric.NamespaceUptimeID, source.DecodeUptimeResult)
  352. }
  353. func (c *collectorMetricsQuerier) QueryNetZoneGiB(start, end time.Time) *source.Future[source.NetZoneGiBResult] {
  354. return queryCollectorGiB(c, start, end, metric.NetZoneGiBID, source.DecodeNetZoneGiBResult)
  355. }
  356. func (c *collectorMetricsQuerier) QueryNetZonePricePerGiB(start, end time.Time) *source.Future[source.NetZonePricePerGiBResult] {
  357. return queryCollector(c, start, end, metric.NetZonePricePerGiBID, source.DecodeNetZonePricePerGiBResult)
  358. }
  359. func (c *collectorMetricsQuerier) QueryNetRegionGiB(start, end time.Time) *source.Future[source.NetRegionGiBResult] {
  360. return queryCollectorGiB(c, start, end, metric.NetRegionGiBID, source.DecodeNetRegionGiBResult)
  361. }
  362. func (c *collectorMetricsQuerier) QueryNetRegionPricePerGiB(start, end time.Time) *source.Future[source.NetRegionPricePerGiBResult] {
  363. return queryCollector(c, start, end, metric.NetRegionPricePerGiBID, source.DecodeNetRegionPricePerGiBResult)
  364. }
  365. func (c *collectorMetricsQuerier) QueryNetInternetGiB(start, end time.Time) *source.Future[source.NetInternetGiBResult] {
  366. return queryCollectorGiB(c, start, end, metric.NetInternetGiBID, source.DecodeNetInternetGiBResult)
  367. }
  368. func (c *collectorMetricsQuerier) QueryNetInternetPricePerGiB(start, end time.Time) *source.Future[source.NetInternetPricePerGiBResult] {
  369. return queryCollector(c, start, end, metric.NetInternetPricePerGiBID, source.DecodeNetInternetPricePerGiBResult)
  370. }
  371. func (c *collectorMetricsQuerier) QueryNetInternetServiceGiB(start, end time.Time) *source.Future[source.NetInternetServiceGiBResult] {
  372. return queryCollectorGiB(c, start, end, metric.NetInternetServiceGiBID, source.DecodeNetInternetServiceGiBResult)
  373. }
  374. func (c *collectorMetricsQuerier) QueryNetNatGatewayPricePerGiB(start, end time.Time) *source.Future[source.NetNatGatewayPricePerGiBResult] {
  375. return queryCollector(c, start, end, metric.NetNatGatewayPricePerGiBID, source.DecodeNetNatGatewayPricePerGiBResult)
  376. }
  377. func (c *collectorMetricsQuerier) QueryNetNatGatewayGiB(start, end time.Time) *source.Future[source.NetNatGatewayGiBResult] {
  378. return queryCollectorGiB(c, start, end, metric.NetNatGatewayGiBID, source.DecodeNetNatGatewayGiBResult)
  379. }
  380. func (c *collectorMetricsQuerier) QueryNetTransferBytes(start, end time.Time) *source.Future[source.NetTransferBytesResult] {
  381. return queryCollector(c, start, end, metric.NetTransferBytesID, source.DecodeNetTransferBytesResult)
  382. }
  383. func (c *collectorMetricsQuerier) QueryNetZoneIngressGiB(start, end time.Time) *source.Future[source.NetZoneIngressGiBResult] {
  384. return queryCollectorGiB(c, start, end, metric.NetZoneIngressGiBID, source.DecodeNetZoneIngressGiBResult)
  385. }
  386. func (c *collectorMetricsQuerier) QueryNetRegionIngressGiB(start, end time.Time) *source.Future[source.NetRegionIngressGiBResult] {
  387. return queryCollectorGiB(c, start, end, metric.NetRegionIngressGiBID, source.DecodeNetRegionIngressGiBResult)
  388. }
  389. func (c *collectorMetricsQuerier) QueryNetInternetIngressGiB(start, end time.Time) *source.Future[source.NetInternetIngressGiBResult] {
  390. return queryCollectorGiB(c, start, end, metric.NetInternetIngressGiBID, source.DecodeNetInternetIngressGiBResult)
  391. }
  392. func (c *collectorMetricsQuerier) QueryNetInternetServiceIngressGiB(start, end time.Time) *source.Future[source.NetInternetServiceIngressGiBResult] {
  393. return queryCollectorGiB(c, start, end, metric.NetInternetServiceIngressGiBID, source.DecodeNetInternetServiceIngressGiBResult)
  394. }
  395. func (c *collectorMetricsQuerier) QueryNetNatGatewayIngressPricePerGiB(start, end time.Time) *source.Future[source.NetNatGatewayPricePerGiBResult] {
  396. return queryCollector(c, start, end, metric.NetNatGatewayIngressPricePerGiBID, source.DecodeNetNatGatewayPricePerGiBResult)
  397. }
  398. func (c *collectorMetricsQuerier) QueryNetNatGatewayIngressGiB(start, end time.Time) *source.Future[source.NetNatGatewayIngressGiBResult] {
  399. return queryCollectorGiB(c, start, end, metric.NetNatGatewayIngressGiBID, source.DecodeNetNatGatewayIngressGiBResult)
  400. }
  401. func (c *collectorMetricsQuerier) QueryNetReceiveBytes(start, end time.Time) *source.Future[source.NetReceiveBytesResult] {
  402. return queryCollector(c, start, end, metric.NetReceiveBytesID, source.DecodeNetReceiveBytesResult)
  403. }
  404. func (c *collectorMetricsQuerier) QueryNamespaceAnnotations(start, end time.Time) *source.Future[source.NamespaceAnnotationsResult] {
  405. return queryCollector(c, start, end, metric.NamespaceAnnotationsID, source.DecodeNamespaceAnnotationsResult)
  406. }
  407. func (c *collectorMetricsQuerier) QueryPodAnnotations(start, end time.Time) *source.Future[source.PodAnnotationsResult] {
  408. return queryCollector(c, start, end, metric.PodAnnotationsID, source.DecodePodAnnotationsResult)
  409. }
  410. func (c *collectorMetricsQuerier) QueryNodeLabels(start, end time.Time) *source.Future[source.NodeLabelsResult] {
  411. return queryCollector(c, start, end, metric.NodeLabelsID, source.DecodeNodeLabelsResult)
  412. }
  413. func (c *collectorMetricsQuerier) QueryNamespaceLabels(start, end time.Time) *source.Future[source.NamespaceLabelsResult] {
  414. return queryCollector(c, start, end, metric.NamespaceLabelsID, source.DecodeNamespaceLabelsResult)
  415. }
  416. func (c *collectorMetricsQuerier) QueryPodLabels(start, end time.Time) *source.Future[source.PodLabelsResult] {
  417. return queryCollector(c, start, end, metric.PodLabelsID, source.DecodePodLabelsResult)
  418. }
  419. func (c *collectorMetricsQuerier) QueryServiceInfo(start, end time.Time) *source.Future[source.ServiceInfoResult] {
  420. return queryCollector(c, start, end, metric.ServiceInfoID, source.DecodeServiceInfoResult)
  421. }
  422. func (c *collectorMetricsQuerier) QueryServiceUptime(start, end time.Time) *source.Future[source.UptimeResult] {
  423. return queryCollector(c, start, end, metric.ServiceUptimeID, source.DecodeUptimeResult)
  424. }
  425. func (c *collectorMetricsQuerier) QueryServiceSelectorLabels(start, end time.Time) *source.Future[source.ServiceLabelsResult] {
  426. return queryCollector(c, start, end, metric.ServiceLabelsID, source.DecodeServiceLabelsResult)
  427. }
  428. func (c *collectorMetricsQuerier) QueryDeploymentInfo(start, end time.Time) *source.Future[source.DeploymentInfoResult] {
  429. return queryCollector(c, start, end, metric.DeploymentInfoID, source.DecodeDeploymentInfoResult)
  430. }
  431. func (c *collectorMetricsQuerier) QueryDeploymentUptime(start, end time.Time) *source.Future[source.UptimeResult] {
  432. return queryCollector(c, start, end, metric.DeploymentUptimeID, source.DecodeUptimeResult)
  433. }
  434. func (c *collectorMetricsQuerier) QueryDeploymentLabels(start, end time.Time) *source.Future[source.LabelsResult] {
  435. return queryCollector(c, start, end, metric.DeploymentLabelsID, source.DecodeLabelsResult)
  436. }
  437. func (c *collectorMetricsQuerier) QueryDeploymentAnnotations(start, end time.Time) *source.Future[source.AnnotationsResult] {
  438. return queryCollector(c, start, end, metric.DeploymentAnnotationsID, source.DecodeAnnotationsResult)
  439. }
  440. func (c *collectorMetricsQuerier) QueryDeploymentMatchLabels(start, end time.Time) *source.Future[source.DeploymentLabelsResult] {
  441. return queryCollector(c, start, end, metric.DeploymentMatchLabelsID, source.DecodeDeploymentLabelsResult)
  442. }
  443. func (c *collectorMetricsQuerier) QueryStatefulSetInfo(start, end time.Time) *source.Future[source.StatefulSetInfoResult] {
  444. return queryCollector(c, start, end, metric.StatefulSetInfoID, source.DecodeStatefulSetInfoResult)
  445. }
  446. func (c *collectorMetricsQuerier) QueryStatefulSetUptime(start, end time.Time) *source.Future[source.UptimeResult] {
  447. return queryCollector(c, start, end, metric.StatefulSetUptimeID, source.DecodeUptimeResult)
  448. }
  449. func (c *collectorMetricsQuerier) QueryStatefulSetLabels(start, end time.Time) *source.Future[source.LabelsResult] {
  450. return queryCollector(c, start, end, metric.StatefulSetLabelsID, source.DecodeLabelsResult)
  451. }
  452. func (c *collectorMetricsQuerier) QueryStatefulSetAnnotations(start, end time.Time) *source.Future[source.AnnotationsResult] {
  453. return queryCollector(c, start, end, metric.StatefulSetAnnotationsID, source.DecodeAnnotationsResult)
  454. }
  455. func (c *collectorMetricsQuerier) QueryStatefulSetMatchLabels(start, end time.Time) *source.Future[source.StatefulSetLabelsResult] {
  456. return queryCollector(c, start, end, metric.StatefulSetMatchLabelsID, source.DecodeStatefulSetLabelsResult)
  457. }
  458. func (c *collectorMetricsQuerier) QueryDaemonSetInfo(start, end time.Time) *source.Future[source.DaemonSetInfoResult] {
  459. return queryCollector(c, start, end, metric.DaemonSetInfoID, source.DecodeDaemonSetInfoResult)
  460. }
  461. func (c *collectorMetricsQuerier) QueryDaemonSetUptime(start, end time.Time) *source.Future[source.UptimeResult] {
  462. return queryCollector(c, start, end, metric.DaemonSetUptimeID, source.DecodeUptimeResult)
  463. }
  464. func (c *collectorMetricsQuerier) QueryDaemonSetLabels(start, end time.Time) *source.Future[source.LabelsResult] {
  465. return queryCollector(c, start, end, metric.DaemonSetLabelsID, source.DecodeLabelsResult)
  466. }
  467. func (c *collectorMetricsQuerier) QueryDaemonSetAnnotations(start, end time.Time) *source.Future[source.AnnotationsResult] {
  468. return queryCollector(c, start, end, metric.DaemonSetAnnotationsID, source.DecodeAnnotationsResult)
  469. }
  470. func (c *collectorMetricsQuerier) QueryJobInfo(start, end time.Time) *source.Future[source.JobInfoResult] {
  471. return queryCollector(c, start, end, metric.JobInfoID, source.DecodeJobInfoResult)
  472. }
  473. func (c *collectorMetricsQuerier) QueryJobUptime(start, end time.Time) *source.Future[source.UptimeResult] {
  474. return queryCollector(c, start, end, metric.JobUptimeID, source.DecodeUptimeResult)
  475. }
  476. func (c *collectorMetricsQuerier) QueryJobLabels(start, end time.Time) *source.Future[source.LabelsResult] {
  477. return queryCollector(c, start, end, metric.JobLabelsID, source.DecodeLabelsResult)
  478. }
  479. func (c *collectorMetricsQuerier) QueryJobAnnotations(start, end time.Time) *source.Future[source.AnnotationsResult] {
  480. return queryCollector(c, start, end, metric.JobAnnotationsID, source.DecodeAnnotationsResult)
  481. }
  482. func (c *collectorMetricsQuerier) QueryCronJobInfo(start, end time.Time) *source.Future[source.CronJobInfoResult] {
  483. return queryCollector(c, start, end, metric.CronJobInfoID, source.DecodeCronJobInfoResult)
  484. }
  485. func (c *collectorMetricsQuerier) QueryCronJobUptime(start, end time.Time) *source.Future[source.UptimeResult] {
  486. return queryCollector(c, start, end, metric.CronJobUptimeID, source.DecodeUptimeResult)
  487. }
  488. func (c *collectorMetricsQuerier) QueryCronJobLabels(start, end time.Time) *source.Future[source.LabelsResult] {
  489. return queryCollector(c, start, end, metric.CronJobLabelsID, source.DecodeLabelsResult)
  490. }
  491. func (c *collectorMetricsQuerier) QueryCronJobAnnotations(start, end time.Time) *source.Future[source.AnnotationsResult] {
  492. return queryCollector(c, start, end, metric.CronJobAnnotationsID, source.DecodeAnnotationsResult)
  493. }
  494. func (c *collectorMetricsQuerier) QueryReplicaSetInfo(start, end time.Time) *source.Future[source.ReplicaSetInfoResult] {
  495. return queryCollector(c, start, end, metric.ReplicaSetInfoID, source.DecodeReplicaSetInfoResult)
  496. }
  497. func (c *collectorMetricsQuerier) QueryReplicaSetUptime(start, end time.Time) *source.Future[source.UptimeResult] {
  498. return queryCollector(c, start, end, metric.ReplicaSetUptimeID, source.DecodeUptimeResult)
  499. }
  500. func (c *collectorMetricsQuerier) QueryReplicaSetLabels(start, end time.Time) *source.Future[source.LabelsResult] {
  501. return queryCollector(c, start, end, metric.ReplicaSetLabelsID, source.DecodeLabelsResult)
  502. }
  503. func (c *collectorMetricsQuerier) QueryReplicaSetAnnotations(start, end time.Time) *source.Future[source.AnnotationsResult] {
  504. return queryCollector(c, start, end, metric.ReplicaSetAnnotationsID, source.DecodeAnnotationsResult)
  505. }
  506. func (c *collectorMetricsQuerier) QueryReplicaSetOwners(start, end time.Time) *source.Future[source.OwnerResult] {
  507. return queryCollector(c, start, end, metric.ReplicaSetOwnerID, source.DecodeOwnerResult)
  508. }
  509. func (c *collectorMetricsQuerier) QueryPodsWithDaemonSetOwner(start, end time.Time) *source.Future[source.PodsWithDaemonSetOwnerResult] {
  510. return queryCollector(c, start, end, metric.PodsWithDaemonSetOwnerID, source.DecodePodsWithDaemonSetOwnerResult)
  511. }
  512. func (c *collectorMetricsQuerier) QueryPodsWithJobOwner(start, end time.Time) *source.Future[source.PodsWithJobOwnerResult] {
  513. return queryCollector(c, start, end, metric.PodsWithJobOwnerID, source.DecodePodsWithJobOwnerResult)
  514. }
  515. func (c *collectorMetricsQuerier) QueryPodsWithReplicaSetOwner(start, end time.Time) *source.Future[source.PodsWithReplicaSetOwnerResult] {
  516. return queryCollector(c, start, end, metric.PodsWithReplicaSetOwnerID, source.DecodePodsWithReplicaSetOwnerResult)
  517. }
  518. func (c *collectorMetricsQuerier) QueryReplicaSetsWithoutOwners(start, end time.Time) *source.Future[source.ReplicaSetsWithoutOwnersResult] {
  519. return queryCollector(c, start, end, metric.ReplicaSetsWithoutOwnersID, source.DecodeReplicaSetsWithoutOwnersResult)
  520. }
  521. func (c *collectorMetricsQuerier) QueryReplicaSetsWithRollout(start, end time.Time) *source.Future[source.ReplicaSetsWithRolloutResult] {
  522. return queryCollector(c, start, end, metric.ReplicaSetsWithRolloutID, source.DecodeReplicaSetsWithRolloutResult)
  523. }
  524. func (c *collectorMetricsQuerier) QueryResourceQuotaInfo(start, end time.Time) *source.Future[source.ResourceQuotaInfoResult] {
  525. return queryCollector(c, start, end, metric.ResourceQuotaInfoID, source.DecodeResourceQuotaInfoResult)
  526. }
  527. func (c *collectorMetricsQuerier) QueryResourceQuotaUptime(start, end time.Time) *source.Future[source.UptimeResult] {
  528. return queryCollector(c, start, end, metric.ResourceQuotaUptimeID, source.DecodeUptimeResult)
  529. }
  530. func (c *collectorMetricsQuerier) QueryResourceQuotaSpecCPURequestAverage(start, end time.Time) *source.Future[source.ResourceResult] {
  531. return queryCollector(c, start, end, metric.ResourceQuotaSpecCPURequestAverageID, source.DecodeResourceResult)
  532. }
  533. func (c *collectorMetricsQuerier) QueryResourceQuotaSpecCPURequestMax(start, end time.Time) *source.Future[source.ResourceResult] {
  534. return queryCollector(c, start, end, metric.ResourceQuotaSpecCPURequestMaxID, source.DecodeResourceResult)
  535. }
  536. func (c *collectorMetricsQuerier) QueryResourceQuotaSpecRAMRequestAverage(start, end time.Time) *source.Future[source.ResourceResult] {
  537. return queryCollector(c, start, end, metric.ResourceQuotaSpecRAMRequestAverageID, source.DecodeResourceResult)
  538. }
  539. func (c *collectorMetricsQuerier) QueryResourceQuotaSpecRAMRequestMax(start, end time.Time) *source.Future[source.ResourceResult] {
  540. return queryCollector(c, start, end, metric.ResourceQuotaSpecRAMRequestMaxID, source.DecodeResourceResult)
  541. }
  542. func (c *collectorMetricsQuerier) QueryResourceQuotaSpecCPULimitAverage(start, end time.Time) *source.Future[source.ResourceResult] {
  543. return queryCollector(c, start, end, metric.ResourceQuotaSpecCPULimitAverageID, source.DecodeResourceResult)
  544. }
  545. func (c *collectorMetricsQuerier) QueryResourceQuotaSpecCPULimitMax(start, end time.Time) *source.Future[source.ResourceResult] {
  546. return queryCollector(c, start, end, metric.ResourceQuotaSpecCPULimitMaxID, source.DecodeResourceResult)
  547. }
  548. func (c *collectorMetricsQuerier) QueryResourceQuotaSpecRAMLimitAverage(start, end time.Time) *source.Future[source.ResourceResult] {
  549. return queryCollector(c, start, end, metric.ResourceQuotaSpecRAMLimitAverageID, source.DecodeResourceResult)
  550. }
  551. func (c *collectorMetricsQuerier) QueryResourceQuotaSpecRAMLimitMax(start, end time.Time) *source.Future[source.ResourceResult] {
  552. return queryCollector(c, start, end, metric.ResourceQuotaSpecRAMLimitMaxID, source.DecodeResourceResult)
  553. }
  554. func (c *collectorMetricsQuerier) QueryResourceQuotaStatusUsedCPURequestAverage(start, end time.Time) *source.Future[source.ResourceResult] {
  555. return queryCollector(c, start, end, metric.ResourceQuotaStatusUsedCPURequestAverageID, source.DecodeResourceResult)
  556. }
  557. func (c *collectorMetricsQuerier) QueryResourceQuotaStatusUsedCPURequestMax(start, end time.Time) *source.Future[source.ResourceResult] {
  558. return queryCollector(c, start, end, metric.ResourceQuotaStatusUsedCPURequestMaxID, source.DecodeResourceResult)
  559. }
  560. func (c *collectorMetricsQuerier) QueryResourceQuotaStatusUsedRAMRequestAverage(start, end time.Time) *source.Future[source.ResourceResult] {
  561. return queryCollector(c, start, end, metric.ResourceQuotaStatusUsedRAMRequestAverageID, source.DecodeResourceResult)
  562. }
  563. func (c *collectorMetricsQuerier) QueryResourceQuotaStatusUsedRAMRequestMax(start, end time.Time) *source.Future[source.ResourceResult] {
  564. return queryCollector(c, start, end, metric.ResourceQuotaStatusUsedRAMRequestMaxID, source.DecodeResourceResult)
  565. }
  566. func (c *collectorMetricsQuerier) QueryResourceQuotaStatusUsedCPULimitAverage(start, end time.Time) *source.Future[source.ResourceResult] {
  567. return queryCollector(c, start, end, metric.ResourceQuotaStatusUsedCPULimitAverageID, source.DecodeResourceResult)
  568. }
  569. func (c *collectorMetricsQuerier) QueryResourceQuotaStatusUsedCPULimitMax(start, end time.Time) *source.Future[source.ResourceResult] {
  570. return queryCollector(c, start, end, metric.ResourceQuotaStatusUsedCPULimitMaxID, source.DecodeResourceResult)
  571. }
  572. func (c *collectorMetricsQuerier) QueryResourceQuotaStatusUsedRAMLimitAverage(start, end time.Time) *source.Future[source.ResourceResult] {
  573. return queryCollector(c, start, end, metric.ResourceQuotaStatusUsedRAMLimitAverageID, source.DecodeResourceResult)
  574. }
  575. func (c *collectorMetricsQuerier) QueryResourceQuotaStatusUsedRAMLimitMax(start, end time.Time) *source.Future[source.ResourceResult] {
  576. return queryCollector(c, start, end, metric.ResourceQuotaStatusUsedRAMLimitMaxID, source.DecodeResourceResult)
  577. }
  578. func (c *collectorMetricsQuerier) QueryDataCoverage(limitDays int) (time.Time, time.Time, error) {
  579. return c.collectorProvider.GetDailyDataCoverage(limitDays)
  580. }
  581. // Inference cost methods - not supported by collector source (only available via Prometheus)
  582. func (c *collectorMetricsQuerier) QueryInferencePromptTokens(start, end time.Time) *source.Future[source.InferenceTokensResult] {
  583. ch := make(source.QueryResultsChan, 1)
  584. ch <- &source.QueryResults{
  585. Query: "QueryInferencePromptTokens",
  586. Error: fmt.Errorf("inference metrics not supported by collector source"),
  587. }
  588. decoder := func(result *source.QueryResult) *source.InferenceTokensResult {
  589. return &source.InferenceTokensResult{Values: make(map[string]float64)}
  590. }
  591. return source.NewFuture(decoder, ch)
  592. }
  593. func (c *collectorMetricsQuerier) QueryInferenceGenerationTokens(start, end time.Time) *source.Future[source.InferenceTokensResult] {
  594. ch := make(source.QueryResultsChan, 1)
  595. ch <- &source.QueryResults{
  596. Query: "QueryInferenceGenerationTokens",
  597. Error: fmt.Errorf("inference metrics not supported by collector source"),
  598. }
  599. decoder := func(result *source.QueryResult) *source.InferenceTokensResult {
  600. return &source.InferenceTokensResult{Values: make(map[string]float64)}
  601. }
  602. return source.NewFuture(decoder, ch)
  603. }
  604. func (c *collectorMetricsQuerier) QueryInferenceInputProcessingTime(start, end time.Time) *source.Future[source.InferenceProcessingTimeResult] {
  605. ch := make(source.QueryResultsChan, 1)
  606. ch <- &source.QueryResults{
  607. Query: "QueryInferenceInputProcessingTime",
  608. Error: fmt.Errorf("inference metrics not supported by collector source"),
  609. }
  610. decoder := func(result *source.QueryResult) *source.InferenceProcessingTimeResult {
  611. return &source.InferenceProcessingTimeResult{Values: make(map[string]float64)}
  612. }
  613. return source.NewFuture(decoder, ch)
  614. }
  615. func (c *collectorMetricsQuerier) QueryInferenceOutputProcessingTime(start, end time.Time) *source.Future[source.InferenceProcessingTimeResult] {
  616. ch := make(source.QueryResultsChan, 1)
  617. ch <- &source.QueryResults{
  618. Query: "QueryInferenceOutputProcessingTime",
  619. Error: fmt.Errorf("inference metrics not supported by collector source"),
  620. }
  621. decoder := func(result *source.QueryResult) *source.InferenceProcessingTimeResult {
  622. return &source.InferenceProcessingTimeResult{Values: make(map[string]float64)}
  623. }
  624. return source.NewFuture(decoder, ch)
  625. }
  626. func (c *collectorMetricsQuerier) QueryInferenceCachedTokens(start, end time.Time) *source.Future[source.InferenceTokensResult] {
  627. ch := make(source.QueryResultsChan, 1)
  628. ch <- &source.QueryResults{
  629. Query: "QueryInferenceCachedTokens",
  630. Error: fmt.Errorf("inference metrics not supported by collector source"),
  631. }
  632. decoder := func(result *source.QueryResult) *source.InferenceTokensResult {
  633. return &source.InferenceTokensResult{Values: make(map[string]float64)}
  634. }
  635. return source.NewFuture(decoder, ch)
  636. }
  637. func (c *collectorMetricsQuerier) QueryInferenceCacheConfig(t time.Time) *source.Future[source.InferenceCacheConfigResult] {
  638. ch := make(source.QueryResultsChan, 1)
  639. ch <- &source.QueryResults{
  640. Query: "QueryInferenceCacheConfig",
  641. Error: fmt.Errorf("inference metrics not supported by collector source"),
  642. }
  643. decoder := func(result *source.QueryResult) *source.InferenceCacheConfigResult {
  644. return &source.InferenceCacheConfigResult{Configs: make(map[string]*source.InferenceCacheConfig)}
  645. }
  646. return source.NewFuture(decoder, ch)
  647. }