diff options
| author | LeaveMyYard <zhukovpavel2001@gmail.com> | 2023-09-04 17:00:32 +0300 |
|---|---|---|
| committer | LeaveMyYard <zhukovpavel2001@gmail.com> | 2023-09-04 17:00:32 +0300 |
| commit | a9d281dbbaf06c5bae67f738b91fe12e8d5b3189 (patch) | |
| tree | bae5f23a1ff4ddc720e0ef7e96a9ce904e4bb2e7 | |
| parent | 3d0b3bcfec2a1c08d33cec308124364f607158b8 (diff) | |
Aggregate in case of node change
| -rw-r--r-- | robusta_krr/core/integrations/prometheus/metrics/cpu.py | 52 | ||||
| -rw-r--r-- | robusta_krr/core/integrations/prometheus/metrics/memory.py | 30 | ||||
| -rw-r--r-- | robusta_krr/strategies/simple.py | 2 |
3 files changed, 49 insertions, 35 deletions
diff --git a/robusta_krr/core/integrations/prometheus/metrics/cpu.py b/robusta_krr/core/integrations/prometheus/metrics/cpu.py index b9c281d..e61a986 100644 --- a/robusta_krr/core/integrations/prometheus/metrics/cpu.py +++ b/robusta_krr/core/integrations/prometheus/metrics/cpu.py @@ -8,14 +8,16 @@ class CPULoader(QueryRangeMetric, FilterJobsMixin, BatchedRequestMixin): pods_selector = "|".join(pod.name for pod in object.pods) cluster_label = self.get_prometheus_cluster_label() return f""" - rate( - container_cpu_usage_seconds_total{{ - namespace="{object.namespace}", - pod=~"{pods_selector}", - container="{object.container}" - {cluster_label} - }}[{step}] - ) + sum( + rate( + container_cpu_usage_seconds_total{{ + namespace="{object.namespace}", + pod=~"{pods_selector}", + container="{object.container}" + {cluster_label} + }}[{step}] + ) + ) by (container, pod, job) """ @@ -27,14 +29,17 @@ def PercentileCPULoader(percentile: float) -> type[QueryMetric]: return f""" quantile_over_time( {round(percentile / 100, 2)}, - rate( - container_cpu_usage_seconds_total{{ - namespace="{object.namespace}", - pod=~"{pods_selector}", - container="{object.container}" - {cluster_label} - }}[{step}] - )[{duration}:{step}] + sum( + rate( + container_cpu_usage_seconds_total{{ + namespace="{object.namespace}", + pod=~"{pods_selector}", + container="{object.container}" + {cluster_label} + }}[{step}] + ) + ) by (container, pod, job) + [{duration}:{step}] ) """ @@ -47,11 +52,14 @@ class CPUAmountLoader(QueryMetric, FilterJobsMixin, BatchedRequestMixin): cluster_label = self.get_prometheus_cluster_label() return f""" count_over_time( - container_cpu_usage_seconds_total{{ - namespace="{object.namespace}", - pod=~"{pods_selector}", - container="{object.container}" - {cluster_label} - }}[{duration}] + sum( + container_cpu_usage_seconds_total{{ + namespace="{object.namespace}", + pod=~"{pods_selector}", + container="{object.container}" + {cluster_label} + }} + ) by (container, pod, job) + [{duration}:{step}] ) """ diff --git a/robusta_krr/core/integrations/prometheus/metrics/memory.py b/robusta_krr/core/integrations/prometheus/metrics/memory.py index 21843b9..dc75f91 100644 --- a/robusta_krr/core/integrations/prometheus/metrics/memory.py +++ b/robusta_krr/core/integrations/prometheus/metrics/memory.py @@ -25,12 +25,15 @@ class MaxMemoryLoader(QueryMetric, FilterJobsMixin, BatchedRequestMixin): cluster_label = self.get_prometheus_cluster_label() return f""" max_over_time( - container_memory_working_set_bytes{{ - namespace="{object.namespace}", - pod=~"{pods_selector}", - container="{object.container}" - {cluster_label} - }}[{duration}:{step}] + sum( + container_memory_working_set_bytes{{ + namespace="{object.namespace}", + pod=~"{pods_selector}", + container="{object.container}" + {cluster_label} + }} + ) by (container, pod, job) + [{duration}:{step}] ) """ @@ -41,11 +44,14 @@ class MemoryAmountLoader(QueryMetric, FilterJobsMixin, BatchedRequestMixin): cluster_label = self.get_prometheus_cluster_label() return f""" count_over_time( - container_memory_working_set_bytes{{ - namespace="{object.namespace}", - pod=~"{pods_selector}", - container="{object.container}" - {cluster_label} - }}[{duration}:{step}] + sum( + container_memory_working_set_bytes{{ + namespace="{object.namespace}", + pod=~"{pods_selector}", + container="{object.container}" + {cluster_label} + }} + ) by (container, pod, job) + [{duration}:{step}] ) """ diff --git a/robusta_krr/strategies/simple.py b/robusta_krr/strategies/simple.py index 93efb5f..465a6f8 100644 --- a/robusta_krr/strategies/simple.py +++ b/robusta_krr/strategies/simple.py @@ -88,7 +88,7 @@ class SimpleStrategy(BaseStrategy[SimpleStrategySettings]): if object_data.hpa is not None and object_data.hpa.target_cpu_utilization_percentage is not None: return ResourceRecommendation.undefined(info="HPA detected") - cpu_usage = self.settings.calculate_cpu_proposal(data) + cpu_usage = self.settings.calculate_cpu_proposal(filtered_data) return ResourceRecommendation(request=cpu_usage, limit=None) def __calculate_memory_proposal( |
