From faa5c0c22b4534f0a55575b32e4b4f42064d04ec Mon Sep 17 00:00:00 2001 From: Arnob Kumar Saha Date: Tue, 22 Jul 2025 20:07:25 +0600 Subject: [PATCH 1/2] Fix pvc usage calulation Signed-off-by: Arnob Kumar Saha --- client/resource.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/client/resource.go b/client/resource.go index 0eef8e25..f66dcd59 100644 --- a/client/resource.go +++ b/client/resource.go @@ -48,7 +48,6 @@ func GetPodResourceUsage(pc promv1.API, obj metav1.ObjectMeta) core.ResourceList ) ) by (pod)`, obj.Namespace, obj.Name, obj.Namespace, obj.Name) promMemoryQuery := fmt.Sprintf(`sum(container_memory_working_set_bytes{namespace="%s", pod="%s", container!="", image!=""})`, obj.Namespace, obj.Name) - promStorageQuery := fmt.Sprintf(`avg(container_blkio_device_usage_total{namespace="%s", pod="%s"})`, obj.Namespace, obj.Name) if res, err := getPromQueryResult(pc, promCPUQuery); err == nil { cpu := float64(0) @@ -80,6 +79,12 @@ func GetPodResourceUsage(pc promv1.API, obj metav1.ObjectMeta) core.ResourceList klog.Infoln("failed to execute prometheus memory query") } + return resUsage +} + +func GetPVCUsage(pc promv1.API, obj metav1.ObjectMeta) resource.Quantity { + promStorageQuery := fmt.Sprintf(`kubelet_volume_stats_used_bytes{namespace="%s", persistentvolumeclaim="%s"}`, obj.Namespace, obj.Name) + var quan resource.Quantity if res, err := getPromQueryResult(pc, promStorageQuery); err == nil { storage := float64(0) for _, v := range res { @@ -88,14 +93,13 @@ func GetPodResourceUsage(pc promv1.API, obj metav1.ObjectMeta) core.ResourceList storageQuantity, err := resource.ParseQuantity(convertBytesToSize(storage)) if err != nil { klog.Errorf("failed to parse memory quantity, reason: %v", err) - return resUsage + return quan } - resUsage[core.ResourceStorage] = storageQuantity + return storageQuantity } else { klog.Infoln("failed to execute prometheus storage query") } - - return resUsage + return quan } func getPromQueryResult(pc promv1.API, promQuery string) (map[string]float64, error) { From ed586e5e7cdd4ae4f1e7e2b69e9699a72eefac74 Mon Sep 17 00:00:00 2001 From: Arnob Kumar Saha Date: Wed, 23 Jul 2025 12:47:15 +0600 Subject: [PATCH 2/2] Rename Signed-off-by: Arnob Kumar Saha --- client/resource.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/client/resource.go b/client/resource.go index f66dcd59..406f00fe 100644 --- a/client/resource.go +++ b/client/resource.go @@ -32,7 +32,7 @@ import ( "k8s.io/klog/v2" ) -func GetPodResourceUsage(pc promv1.API, obj metav1.ObjectMeta) core.ResourceList { +func GetPodResourceUsage(pc promv1.API, podMeta metav1.ObjectMeta) core.ResourceList { resUsage := core.ResourceList{} // Previous way: sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{namespace="%s", pod="%s", container!=""}) @@ -46,8 +46,8 @@ func GetPodResourceUsage(pc promv1.API, obj metav1.ObjectMeta) core.ResourceList kube_pod_info{node!="",namespace="%s", pod="%s"} ) ) - ) by (pod)`, obj.Namespace, obj.Name, obj.Namespace, obj.Name) - promMemoryQuery := fmt.Sprintf(`sum(container_memory_working_set_bytes{namespace="%s", pod="%s", container!="", image!=""})`, obj.Namespace, obj.Name) + ) by (pod)`, podMeta.Namespace, podMeta.Name, podMeta.Namespace, podMeta.Name) + promMemoryQuery := fmt.Sprintf(`sum(container_memory_working_set_bytes{namespace="%s", pod="%s", container!="", image!=""})`, podMeta.Namespace, podMeta.Name) if res, err := getPromQueryResult(pc, promCPUQuery); err == nil { cpu := float64(0) @@ -82,8 +82,8 @@ func GetPodResourceUsage(pc promv1.API, obj metav1.ObjectMeta) core.ResourceList return resUsage } -func GetPVCUsage(pc promv1.API, obj metav1.ObjectMeta) resource.Quantity { - promStorageQuery := fmt.Sprintf(`kubelet_volume_stats_used_bytes{namespace="%s", persistentvolumeclaim="%s"}`, obj.Namespace, obj.Name) +func GetPVCUsage(pc promv1.API, pvcMeta metav1.ObjectMeta) resource.Quantity { + promStorageQuery := fmt.Sprintf(`kubelet_volume_stats_used_bytes{namespace="%s", persistentvolumeclaim="%s"}`, pvcMeta.Namespace, pvcMeta.Name) var quan resource.Quantity if res, err := getPromQueryResult(pc, promStorageQuery); err == nil { storage := float64(0)