automated_task_monitor/monitor/models.py
2025-02-18 19:40:58 +08:00

46 lines
1.9 KiB
Python

from django.db import models
class BaseProcessMonitor(models.Model):
"""进程监控基类"""
pid = models.IntegerField(verbose_name="进程ID")
process_name = models.CharField(max_length=255, verbose_name="进程名称")
log_path = models.CharField(max_length=255, verbose_name="日志路径")
is_active = models.BooleanField(default=True, verbose_name="是否活跃")
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")
status = models.IntegerField(default=1, verbose_name="进程状态", help_text="1:运行中, 0:已停止")
# 基本资源信息
cpu_usage = models.FloatField(default=0, verbose_name="CPU使用率(%)")
memory_usage = models.FloatField(default=0, verbose_name="内存使用量(GB)")
gpu_usage = models.FloatField(default=0, verbose_name="GPU使用率(%)")
gpu_memory = models.FloatField(default=0, verbose_name="GPU显存使用量(MB)")
virtual_memory = models.FloatField(default=0, verbose_name="虚拟内存使用量(GB)")
class Meta:
abstract = True
class HighCPUProcess(BaseProcessMonitor):
"""高CPU使用进程监控"""
cpu_cores = models.IntegerField(default=0, verbose_name="使用的CPU核心数")
class Meta:
verbose_name = "高CPU进程"
verbose_name_plural = "高CPU进程"
class HighGPUProcess(BaseProcessMonitor):
"""高GPU使用进程监控"""
gpu_index = models.IntegerField(default=0, verbose_name="GPU设备索引")
class Meta:
verbose_name = "高GPU进程"
verbose_name_plural = "高GPU进程"
class HighMemoryProcess(BaseProcessMonitor):
"""高内存使用进程监控"""
swap_usage = models.FloatField(default=0, verbose_name="交换空间使用量(GB)")
class Meta:
verbose_name = "高内存进程"
verbose_name_plural = "高内存进程"