diff options
| author | avi robusta <avi@robusta.dev> | 2023-07-04 13:55:07 +0300 |
|---|---|---|
| committer | avi robusta <avi@robusta.dev> | 2023-07-04 13:55:07 +0300 |
| commit | fc2f288bcb96546a9d1ca5e4d0622c28a38bcc9c (patch) | |
| tree | c07cd2a2fa65d062ae94e943139b662ab54687ce | |
| parent | a144cc8ea711f534258d1d28b542a7737a6bdab7 (diff) | |
return query for graphs
| -rw-r--r-- | robusta_krr/core/integrations/prometheus/metrics/base_metric.py | 16 | ||||
| -rw-r--r-- | robusta_krr/core/integrations/prometheus/metrics/memory_metric.py | 7 |
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) |
