mirror of
https://git.selfprivacy.org/SelfPrivacy/selfprivacy-rest-api.git
synced 2024-11-26 14:01:30 +00:00
62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
import strawberry
|
|
from typing import Optional
|
|
from datetime import datetime
|
|
from selfprivacy_api.models.services import ServiceStatus
|
|
from selfprivacy_api.services.prometheus import Prometheus
|
|
from selfprivacy_api.utils.monitoring import (
|
|
MonitoringQueries,
|
|
MonitoringQueryError,
|
|
MonitoringResponse,
|
|
)
|
|
|
|
|
|
@strawberry.type
|
|
class Monitoring:
|
|
@strawberry.field
|
|
def disk_usage(
|
|
self,
|
|
start: Optional[datetime] = None,
|
|
end: Optional[datetime] = None,
|
|
step: int = 60,
|
|
) -> MonitoringResponse:
|
|
if Prometheus().get_status() != ServiceStatus.ACTIVE:
|
|
return MonitoringQueryError(error="Prometheus is not running")
|
|
|
|
return MonitoringQueries.disk_usage(start, end, step)
|
|
|
|
@strawberry.field
|
|
def memory_usage(
|
|
self,
|
|
start: Optional[datetime] = None,
|
|
end: Optional[datetime] = None,
|
|
step: int = 60,
|
|
) -> MonitoringResponse:
|
|
if Prometheus().get_status() != ServiceStatus.ACTIVE:
|
|
return MonitoringQueryError(error="Prometheus is not running")
|
|
|
|
return MonitoringQueries.memory_usage(start, end, step)
|
|
|
|
@strawberry.field
|
|
def cpu_usage(
|
|
self,
|
|
start: Optional[datetime] = None,
|
|
end: Optional[datetime] = None,
|
|
step: int = 60,
|
|
) -> MonitoringResponse:
|
|
if Prometheus().get_status() != ServiceStatus.ACTIVE:
|
|
return MonitoringQueryError(error="Prometheus is not running")
|
|
|
|
return MonitoringQueries.cpu_usage(start, end, step)
|
|
|
|
@strawberry.field
|
|
def network_usage(
|
|
self,
|
|
start: Optional[datetime] = None,
|
|
end: Optional[datetime] = None,
|
|
step: int = 60,
|
|
) -> MonitoringResponse:
|
|
if Prometheus().get_status() != ServiceStatus.ACTIVE:
|
|
return MonitoringQueryError(error="Prometheus is not running")
|
|
|
|
return MonitoringQueries.cpu_usage(start, end, step)
|