automated_task_monitor/monitor/models.py

76 lines
3.5 KiB
Python
Raw Normal View History

2025-02-18 19:40:58 +08:00
from django.db import models
from django.utils import timezone
2025-02-18 19:40:58 +08:00
class BaseProcessMonitor(models.Model):
"""基础进程监控模型"""
pid = models.IntegerField(verbose_name='进程ID')
process_name = models.CharField(max_length=255, verbose_name='进程名称')
is_active = models.BooleanField(default=True, verbose_name='是否活跃')
status = models.IntegerField(default=1, verbose_name='进程状态') # 1: 运行中, 0: 已终止
created_at = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
updated_at = models.DateTimeField(auto_now=True, verbose_name='更新时间')
log_file = models.CharField(max_length=255, null=True, blank=True, verbose_name='日志文件路径')
2025-02-18 19:40:58 +08:00
class Meta:
abstract = True
class HighCPUProcess(BaseProcessMonitor):
"""CPU高占用进程监控"""
cpu_usage = models.FloatField(default=0, verbose_name='CPU使用率')
cpu_cores = models.IntegerField(default=0, verbose_name='CPU核心数')
2025-02-18 19:40:58 +08:00
class Meta:
verbose_name = 'CPU高占用进程'
verbose_name_plural = verbose_name
2025-02-18 19:40:58 +08:00
class HighGPUProcess(BaseProcessMonitor):
"""GPU高占用进程监控"""
gpu_usage = models.FloatField(default=0, verbose_name='GPU使用率')
gpu_memory = models.FloatField(default=0, verbose_name='GPU显存使用量(MB)')
gpu_index = models.IntegerField(default=0, verbose_name='GPU设备索引')
2025-02-18 19:40:58 +08:00
class Meta:
verbose_name = 'GPU高占用进程'
verbose_name_plural = verbose_name
2025-02-18 19:40:58 +08:00
class HighMemoryProcess(BaseProcessMonitor):
"""内存高占用进程监控"""
memory_usage = models.FloatField(default=0, verbose_name='内存使用量(GB)')
memory_percent = models.FloatField(default=0, verbose_name='内存使用率')
virtual_memory = models.FloatField(default=0, verbose_name='虚拟内存使用量(GB)')
swap_usage = models.FloatField(default=0, verbose_name='交换内存使用量(GB)')
2025-02-18 19:40:58 +08:00
class Meta:
verbose_name = '内存高占用进程'
verbose_name_plural = verbose_name
class AllResourceProcess(models.Model):
"""所有资源统计"""
pid = models.IntegerField('进程ID')
process_name = models.CharField('进程名称', max_length=100)
# CPU 相关
cpu_usage = models.FloatField('CPU使用率', default=0)
cpu_user_time = models.FloatField('用户态CPU时间', default=0)
cpu_system_time = models.FloatField('系统态CPU时间', default=0)
# 内存相关
memory_usage = models.FloatField('内存使用量(MB)', default=0)
memory_percent = models.FloatField('内存使用率', default=0)
virtual_memory = models.FloatField('虚拟内存(MB)', default=0)
# GPU 相关
gpu_usage = models.FloatField('GPU使用率', default=0)
gpu_memory = models.FloatField('GPU内存使用量(MB)', default=0)
# 网络相关
net_io_sent = models.FloatField('网络发送量(MB)', default=0)
net_io_recv = models.FloatField('网络接收量(MB)', default=0)
# 状态相关
is_active = models.BooleanField('是否活跃', default=True)
status = models.IntegerField('状态', default=1) # 1:运行中, 0:已终止
log_file = models.CharField('日志文件路径', max_length=255, null=True)
created_at = models.DateTimeField('创建时间', auto_now_add=True)
updated_at = models.DateTimeField('更新时间', auto_now=True)
class Meta:
db_table = 'all_resource_process'
verbose_name = '全资源监控'
verbose_name_plural = verbose_name