Перейти к содержанию

System Metrics

Сбор метрик системы (CPU, RAM, диск, сеть) через psutil.

Установка

uv add viai-kit-monitor-system

Использование

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

class NetworkMetrics(TypedDict):
    bytes_sent: int  # Отправлено байт
    bytes_recv: int  # Получено байт

Интеграция с 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 — кроссплатформенный мониторинг системы