|
|
@@ -73,6 +73,7 @@ type Accesses struct {
|
|
|
CPUAllocationRecorder *prometheus.GaugeVec
|
|
|
GPUAllocationRecorder *prometheus.GaugeVec
|
|
|
PVAllocationRecorder *prometheus.GaugeVec
|
|
|
+ ClusterManagementCostRecorder *prometheus.GaugeVec
|
|
|
NetworkZoneEgressRecorder prometheus.Gauge
|
|
|
NetworkRegionEgressRecorder prometheus.Gauge
|
|
|
NetworkInternetEgressRecorder prometheus.Gauge
|
|
|
@@ -689,6 +690,12 @@ func (a *Accesses) recordPrices() {
|
|
|
|
|
|
cfg, _ := a.Cloud.GetConfig()
|
|
|
|
|
|
+ provisioner, clusterManagementCost, err := a.Cloud.ClusterManagementPricing()
|
|
|
+ if err != nil {
|
|
|
+ klog.V(1).Infof("Error getting cluster management cost %s", err.Error())
|
|
|
+ }
|
|
|
+ a.ClusterManagementCostRecorder.WithLabelValues(provisioner).Set(clusterManagementCost)
|
|
|
+
|
|
|
// Record network pricing at global scope
|
|
|
networkCosts, err := a.Cloud.NetworkPricing()
|
|
|
if err != nil {
|
|
|
@@ -1129,6 +1136,10 @@ func Initialize(additionalConfigWatchers ...ConfigWatchers) {
|
|
|
Name: "kubecost_network_internet_egress_cost",
|
|
|
Help: "kubecost_network_internet_egress_cost Total cost per GB of internet egress.",
|
|
|
})
|
|
|
+ ClusterManagementCostRecorder := prometheus.NewGaugeVec(prometheus.GaugeOpts{
|
|
|
+ Name: "kubecost_cluster_management_cost",
|
|
|
+ Help: "kubecost_cluster_management_cost Hourly cost paid as a cluster management fee.",
|
|
|
+ }, []string{"provisioner_name"})
|
|
|
|
|
|
prometheus.MustRegister(cpuGv)
|
|
|
prometheus.MustRegister(ramGv)
|
|
|
@@ -1140,6 +1151,7 @@ func Initialize(additionalConfigWatchers ...ConfigWatchers) {
|
|
|
prometheus.MustRegister(PVAllocation)
|
|
|
prometheus.MustRegister(GPUAllocation)
|
|
|
prometheus.MustRegister(NetworkZoneEgressRecorder, NetworkRegionEgressRecorder, NetworkInternetEgressRecorder)
|
|
|
+ prometheus.MustRegister(ClusterManagementCostRecorder)
|
|
|
prometheus.MustRegister(ServiceCollector{
|
|
|
KubeClientSet: kubeClientset,
|
|
|
})
|
|
|
@@ -1170,6 +1182,7 @@ func Initialize(additionalConfigWatchers ...ConfigWatchers) {
|
|
|
NetworkRegionEgressRecorder: NetworkRegionEgressRecorder,
|
|
|
NetworkInternetEgressRecorder: NetworkInternetEgressRecorder,
|
|
|
PersistentVolumePriceRecorder: pvGv,
|
|
|
+ ClusterManagementCostRecorder: ClusterManagementCostRecorder,
|
|
|
Model: NewCostModel(k8sCache),
|
|
|
OutOfClusterCache: outOfClusterCache,
|
|
|
}
|