From 842650572621c8819c4cc8d73b846711689b93cb Mon Sep 17 00:00:00 2001 From: Sebastian Widmer Date: Fri, 2 Dec 2022 16:57:53 +0100 Subject: [PATCH] PoC: Fix memory query on unrelated node label change --- pkg/db/seeds/appuio_cloud_memory.promql | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkg/db/seeds/appuio_cloud_memory.promql b/pkg/db/seeds/appuio_cloud_memory.promql index dc0787b..524c652 100644 --- a/pkg/db/seeds/appuio_cloud_memory.promql +++ b/pkg/db/seeds/appuio_cloud_memory.promql @@ -17,12 +17,12 @@ sum_over_time( # Select used memory if higher. ( sum by(cluster_id, namespace, label_appuio_io_node_class) (container_memory_working_set_bytes{image!=""} - * on(node) group_left(label_appuio_io_node_class) (kube_node_labels{label_appuio_io_node_class!=""} or on(node) kube_node_labels{label_appuio_io_node_class=""})) + * on(node) group_left(label_appuio_io_node_class) (min by(node, label_appuio_io_node_class) (kube_node_labels{label_appuio_io_node_class!=""} or on(node) kube_node_labels{label_appuio_io_node_class=""}))) # IMPORTANT: one clause must use equal. If used grater and lesser than, equal values will be dropped. >= sum by(cluster_id, namespace, label_appuio_io_node_class) (kube_pod_container_resource_requests{resource="memory"} * on(uid, cluster_id, pod, namespace) group_left kube_pod_status_phase{phase="Running"} - * on(node) group_left(label_appuio_io_node_class) (kube_node_labels{label_appuio_io_node_class!=""} or on(node) kube_node_labels{label_appuio_io_node_class=""})) + * on(node) group_left(label_appuio_io_node_class) (min by(node, label_appuio_io_node_class) (kube_node_labels{label_appuio_io_node_class!=""} or on(node) kube_node_labels{label_appuio_io_node_class=""}))) ) or # Select reserved memory if higher. @@ -30,10 +30,10 @@ sum_over_time( # IMPORTANT: The desired time series must always be first. sum by(cluster_id, namespace, label_appuio_io_node_class) (kube_pod_container_resource_requests{resource="memory"} * on(uid, cluster_id, pod, namespace) group_left kube_pod_status_phase{phase="Running"} - * on(node) group_left(label_appuio_io_node_class) (kube_node_labels{label_appuio_io_node_class!=""} or on(node) kube_node_labels{label_appuio_io_node_class=""})) + * on(node) group_left(label_appuio_io_node_class) (min by(node, label_appuio_io_node_class) (kube_node_labels{label_appuio_io_node_class!=""} or on(node) kube_node_labels{label_appuio_io_node_class=""}))) > sum by(cluster_id, namespace, label_appuio_io_node_class) (container_memory_working_set_bytes{image!=""} - * on(node) group_left(label_appuio_io_node_class) (kube_node_labels{label_appuio_io_node_class!=""} or on(node) kube_node_labels{label_appuio_io_node_class=""})) + * on(node) group_left(label_appuio_io_node_class) (min by(node, label_appuio_io_node_class) (kube_node_labels{label_appuio_io_node_class!=""} or on(node) kube_node_labels{label_appuio_io_node_class=""}))) ) ) # Add CPU requests in violation to the ratio provided by the platform. @@ -41,7 +41,7 @@ sum_over_time( # Convert CPU request to their memory equivalent. sum by(cluster_id, namespace, label_appuio_io_node_class) ( kube_pod_container_resource_requests{resource="cpu"} * on(uid, cluster_id, pod, namespace) group_left kube_pod_status_phase{phase="Running"} - * on(node) group_left(label_appuio_io_node_class) (kube_node_labels{label_appuio_io_node_class!=""} or on(node) kube_node_labels{label_appuio_io_node_class=""}) + * on(node) group_left(label_appuio_io_node_class) (min by(node, label_appuio_io_node_class) (kube_node_labels{label_appuio_io_node_class!=""} or on(node) kube_node_labels{label_appuio_io_node_class=""})) # Build that ratio from static values * on(cluster_id) group_left()( # Build a time series of ratio for Cloudscale LPG 2 (4096 MiB/core) @@ -52,7 +52,7 @@ sum_over_time( ) # Subtract memory request - sum by(cluster_id, namespace, label_appuio_io_node_class) (kube_pod_container_resource_requests{resource="memory"} * on(uid, cluster_id, pod, namespace) group_left kube_pod_status_phase{phase="Running"} - * on(node) group_left(label_appuio_io_node_class) (kube_node_labels{label_appuio_io_node_class!=""} or on(node) kube_node_labels{label_appuio_io_node_class=""}) + * on(node) group_left(label_appuio_io_node_class) (min by(node, label_appuio_io_node_class) (kube_node_labels{label_appuio_io_node_class!=""} or on(node) kube_node_labels{label_appuio_io_node_class=""})) # Only values above zero are in violation. ), 0) )