| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- package source
- import (
- "time"
- "github.com/julienschmidt/httprouter"
- "github.com/opencost/opencost/core/pkg/clusters"
- "github.com/opencost/opencost/core/pkg/diagnostics"
- )
- type MetricsQuerier interface {
- // Cluster Disks
- QueryPVActiveMinutes(start, end time.Time) *Future[PVActiveMinutesResult]
- QueryPVUsedAverage(start, end time.Time) *Future[PVUsedAvgResult]
- QueryPVUsedMax(start, end time.Time) *Future[PVUsedMaxResult]
- // Local Cluster Disks
- QueryLocalStorageActiveMinutes(start, end time.Time) *Future[LocalStorageActiveMinutesResult]
- QueryLocalStorageCost(start, end time.Time) *Future[LocalStorageCostResult]
- QueryLocalStorageUsedCost(start, end time.Time) *Future[LocalStorageUsedCostResult]
- QueryLocalStorageUsedAvg(start, end time.Time) *Future[LocalStorageUsedAvgResult]
- QueryLocalStorageUsedMax(start, end time.Time) *Future[LocalStorageUsedMaxResult]
- QueryLocalStorageBytes(start, end time.Time) *Future[LocalStorageBytesResult]
- // Nodes
- QueryNodeActiveMinutes(start, end time.Time) *Future[NodeActiveMinutesResult]
- QueryNodeCPUCoresCapacity(start, end time.Time) *Future[NodeCPUCoresCapacityResult]
- QueryNodeCPUCoresAllocatable(start, end time.Time) *Future[NodeCPUCoresAllocatableResult]
- QueryNodeRAMBytesCapacity(start, end time.Time) *Future[NodeRAMBytesCapacityResult]
- QueryNodeRAMBytesAllocatable(start, end time.Time) *Future[NodeRAMBytesAllocatableResult]
- QueryNodeGPUCount(start, end time.Time) *Future[NodeGPUCountResult]
- QueryNodeCPUModeTotal(start, end time.Time) *Future[NodeCPUModeTotalResult]
- QueryNodeIsSpot(start, end time.Time) *Future[NodeIsSpotResult]
- QueryNodeRAMSystemPercent(start, end time.Time) *Future[NodeRAMSystemPercentResult]
- QueryNodeRAMUserPercent(start, end time.Time) *Future[NodeRAMUserPercentResult]
- // Load Balancers
- QueryLBActiveMinutes(start, end time.Time) *Future[LBActiveMinutesResult]
- QueryLBPricePerHr(start, end time.Time) *Future[LBPricePerHrResult]
- // Cluster Management
- QueryClusterManagementDuration(start, end time.Time) *Future[ClusterManagementDurationResult]
- QueryClusterManagementPricePerHr(start, end time.Time) *Future[ClusterManagementPricePerHrResult]
- // Pods
- QueryPods(start, end time.Time) *Future[PodsResult]
- QueryPodsUID(start, end time.Time) *Future[PodsResult]
- // RAM
- QueryRAMBytesAllocated(start, end time.Time) *Future[RAMBytesAllocatedResult]
- QueryRAMRequests(start, end time.Time) *Future[RAMRequestsResult]
- QueryRAMUsageAvg(start, end time.Time) *Future[RAMUsageAvgResult]
- QueryRAMUsageMax(start, end time.Time) *Future[RAMUsageMaxResult]
- QueryNodeRAMPricePerGiBHr(start, end time.Time) *Future[NodeRAMPricePerGiBHrResult]
- // CPU
- QueryCPUCoresAllocated(start, end time.Time) *Future[CPUCoresAllocatedResult]
- QueryCPURequests(start, end time.Time) *Future[CPURequestsResult]
- QueryCPUUsageAvg(start, end time.Time) *Future[CPUUsageAvgResult]
- QueryCPUUsageMax(start, end time.Time) *Future[CPUUsageMaxResult]
- QueryNodeCPUPricePerHr(start, end time.Time) *Future[NodeCPUPricePerHrResult]
- // GPU
- QueryGPUsAllocated(start, end time.Time) *Future[GPUsAllocatedResult]
- QueryGPUsRequested(start, end time.Time) *Future[GPUsRequestedResult]
- QueryGPUsUsageAvg(start, end time.Time) *Future[GPUsUsageAvgResult]
- QueryGPUsUsageMax(start, end time.Time) *Future[GPUsUsageMaxResult]
- QueryNodeGPUPricePerHr(start, end time.Time) *Future[NodeGPUPricePerHrResult]
- QueryGPUInfo(start, end time.Time) *Future[GPUInfoResult]
- QueryIsGPUShared(start, end time.Time) *Future[IsGPUSharedResult]
- // PVC
- QueryPodPVCAllocation(start, end time.Time) *Future[PodPVCAllocationResult]
- QueryPVCBytesRequested(start, end time.Time) *Future[PVCBytesRequestedResult]
- QueryPVCInfo(start, end time.Time) *Future[PVCInfoResult]
- // PV
- QueryPVBytes(start, end time.Time) *Future[PVBytesResult]
- QueryPVPricePerGiBHour(start, end time.Time) *Future[PVPricePerGiBHourResult]
- QueryPVInfo(start, end time.Time) *Future[PVInfoResult]
- // Network Egress
- QueryNetZoneGiB(start, end time.Time) *Future[NetZoneGiBResult]
- QueryNetZonePricePerGiB(start, end time.Time) *Future[NetZonePricePerGiBResult]
- QueryNetRegionGiB(start, end time.Time) *Future[NetRegionGiBResult]
- QueryNetRegionPricePerGiB(start, end time.Time) *Future[NetRegionPricePerGiBResult]
- QueryNetInternetGiB(start, end time.Time) *Future[NetInternetGiBResult]
- QueryNetInternetPricePerGiB(start, end time.Time) *Future[NetInternetPricePerGiBResult]
- QueryNetInternetServiceGiB(start, end time.Time) *Future[NetInternetServiceGiBResult]
- QueryNetTransferBytes(start, end time.Time) *Future[NetTransferBytesResult]
- // Network Ingress
- QueryNetZoneIngressGiB(start, end time.Time) *Future[NetZoneIngressGiBResult]
- QueryNetRegionIngressGiB(start, end time.Time) *Future[NetRegionIngressGiBResult]
- QueryNetInternetIngressGiB(start, end time.Time) *Future[NetInternetIngressGiBResult]
- QueryNetInternetServiceIngressGiB(start, end time.Time) *Future[NetInternetServiceIngressGiBResult]
- QueryNetReceiveBytes(start, end time.Time) *Future[NetReceiveBytesResult]
- // Annotations
- QueryNamespaceAnnotations(start, end time.Time) *Future[NamespaceAnnotationsResult]
- QueryPodAnnotations(start, end time.Time) *Future[PodAnnotationsResult]
- // Labels
- QueryNodeLabels(start, end time.Time) *Future[NodeLabelsResult]
- QueryNamespaceLabels(start, end time.Time) *Future[NamespaceLabelsResult]
- QueryPodLabels(start, end time.Time) *Future[PodLabelsResult]
- QueryServiceLabels(start, end time.Time) *Future[ServiceLabelsResult]
- QueryDeploymentLabels(start, end time.Time) *Future[DeploymentLabelsResult]
- QueryStatefulSetLabels(start, end time.Time) *Future[StatefulSetLabelsResult]
- QueryDaemonSetLabels(start, end time.Time) *Future[DaemonSetLabelsResult]
- QueryJobLabels(start, end time.Time) *Future[JobLabelsResult]
- // ReplicaSet -> Controller mapping
- QueryPodsWithReplicaSetOwner(start, end time.Time) *Future[PodsWithReplicaSetOwnerResult]
- QueryReplicaSetsWithoutOwners(start, end time.Time) *Future[ReplicaSetsWithoutOwnersResult]
- QueryReplicaSetsWithRollout(start, end time.Time) *Future[ReplicaSetsWithRolloutResult]
- // Data Coverage Query
- QueryDataCoverage(limitDays int) (time.Time, time.Time, error)
- }
- type OpenCostDataSource interface {
- // RegisterEndPoints registers any custom endpoints that can be used for diagnostics or debug purposes.
- RegisterEndPoints(router *httprouter.Router)
- // RegisterDiagnostics registers any custom data source diagnostics with the `DiagnosticService` that can
- // be used to report externally.
- RegisterDiagnostics(diagService diagnostics.DiagnosticService)
- // Metrics returns a MetricsQuerier that can be used to query historical metrics data from the data source.
- Metrics() MetricsQuerier
- // ClusterMap returns a mapping of cluster identifier to ClusterInfo for all known clusters (local only for
- // single cluster deployments).
- ClusterMap() clusters.ClusterMap
- // ClusterInfo returns the ClusterInfoProvider for the local cluster.
- ClusterInfo() clusters.ClusterInfoProvider
- BatchDuration() time.Duration
- Resolution() time.Duration
- }
|