| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- """
- Host metrics model for storing system monitoring data.
- """
- from datetime import datetime
- from sqlalchemy import BigInteger, DateTime, Float, Integer, String
- from sqlalchemy.orm import Mapped, mapped_column
- from app.core.database import Base
- class HostMetrics(Base):
- """Host system metrics (CPU, RAM, Load, Disk, Network)."""
- __tablename__ = "host_metrics"
- id: Mapped[int] = mapped_column(primary_key=True)
- timestamp: Mapped[datetime] = mapped_column(DateTime(timezone=True), index=True)
- # CPU
- cpu_percent: Mapped[float] = mapped_column(Float, nullable=False)
- cpu_count: Mapped[int] = mapped_column(Integer, nullable=False)
- # Memory
- memory_total: Mapped[int] = mapped_column(BigInteger, nullable=False) # bytes
- memory_used: Mapped[int] = mapped_column(BigInteger, nullable=False)
- memory_percent: Mapped[float] = mapped_column(Float, nullable=False)
- # Load Average
- load_1: Mapped[float] = mapped_column(Float, nullable=False)
- load_5: Mapped[float] = mapped_column(Float, nullable=False)
- load_15: Mapped[float] = mapped_column(Float, nullable=False)
- # Disk I/O
- disk_read_bytes: Mapped[int] = mapped_column(BigInteger, nullable=False)
- disk_write_bytes: Mapped[int] = mapped_column(BigInteger, nullable=False)
- disk_usage_percent: Mapped[float] = mapped_column(Float, nullable=False)
- # Network
- net_sent_bytes: Mapped[int] = mapped_column(BigInteger, nullable=False)
- net_recv_bytes: Mapped[int] = mapped_column(BigInteger, nullable=False)
|