96 lines
4.4 KiB
Python
96 lines
4.4 KiB
Python
from django.db import models
|
|
from django.utils import timezone
|
|
|
|
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='日志文件路径')
|
|
|
|
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核心数')
|
|
|
|
class Meta:
|
|
verbose_name = 'CPU高占用进程'
|
|
verbose_name_plural = verbose_name
|
|
|
|
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设备索引')
|
|
|
|
class Meta:
|
|
verbose_name = 'GPU高占用进程'
|
|
verbose_name_plural = verbose_name
|
|
|
|
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)')
|
|
|
|
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
|
|
|
|
class TiktokUserVideos(models.Model):
|
|
"""TikTok用户视频信息"""
|
|
sec_user_id = models.CharField(max_length=255, unique=True)
|
|
nickname = models.CharField(max_length=255)
|
|
signature = models.TextField(blank=True, null=True)
|
|
follower_count = models.IntegerField(default=0)
|
|
total_favorited = models.IntegerField(default=0)
|
|
avatar_url = models.TextField(blank=True, null=True)
|
|
videos_folder = models.CharField(max_length=255)
|
|
video_paths = models.TextField(blank=True, null=True)
|
|
create_time = models.DateTimeField(auto_now_add=True)
|
|
update_time = models.DateTimeField(auto_now=True)
|
|
|
|
class Meta:
|
|
verbose_name = 'TikTok用户视频'
|
|
verbose_name_plural = 'TikTok用户视频'
|
|
|
|
def __str__(self):
|
|
return f"{self.nickname} ({self.sec_user_id})"
|
|
|