feat(metrics): add instance_metric and instance_nic_metric models
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -3,6 +3,7 @@ from .auth import Role, user_servers, User, ActiveSession, LoginAttempt, Blocked
|
||||
from .proxmox import OSTemplateGroup, OSTemplate, ProxmoxServer, VMInstance, VMSnapshotArchive
|
||||
from .ipam import IPAMNetwork, IPAMPool, IPAMAllocation, IPAMHistory
|
||||
from .tasks import TaskQueue, ProxmoxTask, DeployTask
|
||||
from .metrics import InstanceMetric, InstanceNicMetric
|
||||
from .settings import PanelSettings, SecuritySetting, Workspace, WorkspaceServer, WorkspaceUser
|
||||
from .misc import Notification, NotificationPreference, BackupJob, AuditLog
|
||||
|
||||
@@ -12,6 +13,7 @@ __all__ = [
|
||||
'OSTemplateGroup', 'OSTemplate', 'ProxmoxServer', 'VMInstance', 'VMSnapshotArchive',
|
||||
'IPAMNetwork', 'IPAMPool', 'IPAMAllocation', 'IPAMHistory',
|
||||
'TaskQueue', 'ProxmoxTask', 'DeployTask',
|
||||
'InstanceMetric', 'InstanceNicMetric',
|
||||
'PanelSettings', 'SecuritySetting', 'Workspace', 'WorkspaceServer', 'WorkspaceUser',
|
||||
'Notification', 'NotificationPreference', 'BackupJob', 'AuditLog'
|
||||
]
|
||||
|
||||
39
backend/app/models/metrics.py
Normal file
39
backend/app/models/metrics.py
Normal file
@@ -0,0 +1,39 @@
|
||||
from sqlalchemy import Float
|
||||
from .base import Base, Column, Integer, BigInteger, String, DateTime, Index, func
|
||||
|
||||
|
||||
class InstanceMetric(Base):
|
||||
__tablename__ = "instance_metric"
|
||||
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
server_id = Column(Integer, nullable=False)
|
||||
vmid = Column(Integer, nullable=False)
|
||||
vm_type = Column(String(10), nullable=True)
|
||||
ts = Column(DateTime(timezone=True), nullable=False, server_default=func.now())
|
||||
cpu = Column(Float, nullable=True)
|
||||
mem = Column(BigInteger, nullable=True)
|
||||
maxmem = Column(BigInteger, nullable=True)
|
||||
disk_used = Column(BigInteger, nullable=True)
|
||||
disk_total = Column(BigInteger, nullable=True)
|
||||
netin_rate = Column(Float, nullable=True)
|
||||
netout_rate = Column(Float, nullable=True)
|
||||
diskread_rate = Column(Float, nullable=True)
|
||||
diskwrite_rate = Column(Float, nullable=True)
|
||||
iops_read = Column(Float, nullable=True)
|
||||
iops_write = Column(Float, nullable=True)
|
||||
|
||||
__table_args__ = (Index("ix_instance_metric_lookup", "server_id", "vmid", "ts"),)
|
||||
|
||||
|
||||
class InstanceNicMetric(Base):
|
||||
__tablename__ = "instance_nic_metric"
|
||||
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
server_id = Column(Integer, nullable=False)
|
||||
vmid = Column(Integer, nullable=False)
|
||||
ts = Column(DateTime(timezone=True), nullable=False, server_default=func.now())
|
||||
dev = Column(String(64), nullable=False)
|
||||
in_rate = Column(Float, nullable=True)
|
||||
out_rate = Column(Float, nullable=True)
|
||||
|
||||
__table_args__ = (Index("ix_instance_nic_metric_lookup", "server_id", "vmid", "ts"),)
|
||||
Reference in New Issue
Block a user