summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoravi robusta <avi@robusta.dev>2023-07-04 13:55:07 +0300
committeravi robusta <avi@robusta.dev>2023-07-04 13:55:07 +0300
commitfc2f288bcb96546a9d1ca5e4d0622c28a38bcc9c (patch)
treec07cd2a2fa65d062ae94e943139b662ab54687ce
parenta144cc8ea711f534258d1d28b542a7737a6bdab7 (diff)
return query for graphs
-rw-r--r--robusta_krr/core/integrations/prometheus/metrics/base_metric.py16
-rw-r--r--robusta_krr/core/integrations/prometheus/metrics/memory_metric.py7
2 files changed, 21 insertions, 2 deletions
diff --git a/robusta_krr/core/integrations/prometheus/metrics/base_metric.py b/robusta_krr/core/integrations/prometheus/metrics/base_metric.py
index e748565..8bf263c 100644
--- a/robusta_krr/core/integrations/prometheus/metrics/base_metric.py
+++ b/robusta_krr/core/integrations/prometheus/metrics/base_metric.py
@@ -72,6 +72,19 @@ class BaseMetricLoader(Configurable, abc.ABC):
pass
+ def get_graph_query(self, object: K8sObjectData, resolution: Optional[str]) -> str:
+ """
+ This method should be implemented by all subclasses to provide a query string in the metadata to produce relevant graphs.
+
+ Args:
+ object (K8sObjectData): The object for which metrics need to be fetched.
+ resolution (Optional[str]): a string for configurable resolution to the query.
+
+ Returns:
+ str: The query string.
+ """
+ return self.get_query(object, resolution)
+
def _step_to_string(self, step: datetime.timedelta) -> str:
"""
Converts step in datetime.timedelta format to a string format used by Prometheus.
@@ -145,6 +158,8 @@ class BaseMetricLoader(Configurable, abc.ABC):
step=self._step_to_string(step),
)
result = await self.query_prometheus(metric=metric, query_type=query_type)
+ # adding the query in the results for a graph
+ metric.query = self.get_graph_query(object, resolution)
if result == []:
self.warning(f"{service_name} returned no {self.__class__.__name__} metrics for {object}")
@@ -207,6 +222,7 @@ def bind_metric(resource: str) -> Callable[[type[Self]], type[Self]]:
return decorator
+# This is a temporary solutions, metric loaders will be moved to strategy in the future
def override_metric(strategy: str, resource: str) -> Callable[[type[Self]], type[Self]]:
"""
A decorator that overrides the bound metric on a specific strategy.
diff --git a/robusta_krr/core/integrations/prometheus/metrics/memory_metric.py b/robusta_krr/core/integrations/prometheus/metrics/memory_metric.py
index d333f34..a8a4521 100644
--- a/robusta_krr/core/integrations/prometheus/metrics/memory_metric.py
+++ b/robusta_krr/core/integrations/prometheus/metrics/memory_metric.py
@@ -23,9 +23,9 @@ class MemoryMetricLoader(BaseFilteredMetricLoader):
def get_query_type(self) -> QueryType:
return QueryType.QueryRange
-
+# This is a temporary solutions, metric loaders will be moved to strategy in the future
@override_metric("simple", ResourceType.Memory)
-class MemoryMetricLoader(BaseFilteredMetricLoader):
+class MemoryMetricLoader(MemoryMetricLoader):
"""
A class that overrides the memory metric on the simple strategy.
"""
@@ -46,3 +46,6 @@ class MemoryMetricLoader(BaseFilteredMetricLoader):
def get_query_type(self) -> QueryType:
return QueryType.Query
+
+ def get_graph_query(self, object: K8sObjectData, resolution: Optional[str]) -> str:
+ return super().get_query(object, resolution)