feat: add swap usage query

This commit is contained in:
dettlaff 2024-09-18 15:17:11 +04:00 committed by Inex Code
parent 95a025d993
commit 389ec2c81c
2 changed files with 53 additions and 0 deletions

View file

@ -38,6 +38,13 @@ class MemoryMonitoring:
return MonitoringQueries.memory_usage_overall(self.start, self.end, self.step) return MonitoringQueries.memory_usage_overall(self.start, self.end, self.step)
@strawberry.field
def swap_usage_overall(self) -> MonitoringValuesResult:
if Prometheus().get_status() != ServiceStatus.ACTIVE:
return MonitoringQueryError(error="Prometheus is not running")
return MonitoringQueries.swap_usage_overall(self.start, self.end, self.step)
@strawberry.field @strawberry.field
def average_usage_by_service(self) -> MonitoringMetricsResult: def average_usage_by_service(self) -> MonitoringMetricsResult:
if Prometheus().get_status() != ServiceStatus.ACTIVE: if Prometheus().get_status() != ServiceStatus.ACTIVE:

View file

@ -264,6 +264,52 @@ class MonitoringQueries:
) )
) )
@staticmethod
def swap_usage_overall(
start: Optional[datetime] = None,
end: Optional[datetime] = None,
step: int = 60, # seconds
) -> MonitoringValuesResult:
"""
Get swap memory usage.
Args:
start (datetime, optional): The start time.
Defaults to 20 minutes ago if not provided.
end (datetime, optional): The end time.
Defaults to current time if not provided.
step (int): Interval in seconds for querying swap memory usage data.
"""
if start is None:
start = datetime.now() - timedelta(minutes=20)
if end is None:
end = datetime.now()
start_timestamp = int(start.timestamp())
end_timestamp = int(end.timestamp())
query = (
"100 - (100 * (node_memory_SwapFree_bytes / node_memory_SwapTotal_bytes))"
)
data = MonitoringQueries._send_range_query(
query, start_timestamp, end_timestamp, step, result_type="matrix"
)
if isinstance(data, MonitoringQueryError):
return data
return MonitoringValues(
values=list(
map(
MonitoringQueries._prometheus_value_to_monitoring_value,
data["result"][0]["values"],
)
)
)
@staticmethod @staticmethod
def memory_usage_max_by_slice( def memory_usage_max_by_slice(
start: Optional[datetime] = None, start: Optional[datetime] = None,