System Metrics¶
Сбор метрик системы (CPU, RAM, диск, сеть) через psutil.
Установка¶
Использование¶
from viai_kit.monitor.system import get_system_metrics
metrics = get_system_metrics()
# CPU
print(f"CPU Usage: {metrics['cpu']['percent']}%")
print(f"Cores: {metrics['cpu']['count']} physical, {metrics['cpu']['count_logical']} logical")
print(f"Load Average: {metrics['cpu']['load_avg']}")
# Memory
mem = metrics['memory']
print(f"RAM: {mem['used'] / 1024**3:.1f} / {mem['total'] / 1024**3:.1f} GB ({mem['percent']}%)")
# Disk
disk = metrics['disk']
print(f"Disk: {disk['used'] / 1024**3:.1f} / {disk['total'] / 1024**3:.1f} GB ({disk['percent']}%)")
# Network
net = metrics['network']
print(f"Network: sent {net['bytes_sent'] / 1024**2:.1f} MB, recv {net['bytes_recv'] / 1024**2:.1f} MB")
Структура ответа¶
SystemMetrics¶
class SystemMetrics(TypedDict):
hostname: str
uptime_seconds: float
cpu: CpuMetrics
memory: MemoryMetrics
disk: DiskMetrics
network: NetworkMetrics
CpuMetrics¶
class CpuMetrics(TypedDict):
percent: float # Загрузка CPU в процентах
count: int # Количество физических ядер
count_logical: int # Количество логических ядер
load_avg: list[float] # Load average [1min, 5min, 15min]
MemoryMetrics¶
class MemoryMetrics(TypedDict):
total: int # Всего RAM в байтах
used: int # Использовано в байтах
available: int # Доступно в байтах
percent: float # Использовано в процентах
DiskMetrics¶
class DiskMetrics(TypedDict):
total: int # Всего места в байтах
used: int # Использовано в байтах
free: int # Свободно в байтах
percent: float # Использовано в процентах
NetworkMetrics¶
Интеграция с FastAPI¶
from fastapi import FastAPI
from viai_kit.monitor.system import get_system_metrics
app = FastAPI()
@app.get("/api/metrics")
def metrics():
return get_system_metrics()
Зависимости¶
psutil>=5.9.0— кроссплатформенный мониторинг системы