修复BUG(服务器监控): 新增服务器监控功能

pull/21/head
李强 2021-04-08 23:26:30 +08:00
parent 33ebc44001
commit 864d675370
16 changed files with 167 additions and 0 deletions

View File

@ -51,6 +51,7 @@ INSTALLED_APPS = [
'apps.vadmin.op_drf',
'apps.vadmin.system',
'apps.vadmin.celery',
'apps.vadmin.monitor',
]
MIDDLEWARE = [

View File

@ -0,0 +1,6 @@
from django.apps import AppConfig
class MonitorConfig(AppConfig):
name = 'vadmin.monitor'
verbose_name = "系统监控"

View File

@ -0,0 +1,23 @@
import django_filters
from .models import Server, Monitor
class ServerFilter(django_filters.rest_framework.FilterSet):
"""
服务器信息 简单过滤器
"""
class Meta:
model = Server
fields = '__all__'
class MonitorFilter(django_filters.rest_framework.FilterSet):
"""
服务器监控信息 简单过滤器
"""
class Meta:
model = Monitor
fields = '__all__'

View File

@ -0,0 +1,3 @@
from ..models.monitor import Monitor
from ..models.server import Server
from ..models.sys_files import SysFiles

View File

@ -0,0 +1,21 @@
from django.db.models import CharField, ForeignKey, CASCADE
from ...op_drf.models import CoreModel
class Monitor(CoreModel):
cpu_num = CharField(max_length=8, verbose_name='CPU核数')
cpu_free = CharField(max_length=8, verbose_name='CPU当前空闲率')
cpu_sys = CharField(max_length=8, verbose_name='CPU已使用率')
mem_num = CharField(max_length=32, verbose_name='内存总数(KB)')
mem_free = CharField(max_length=32, verbose_name='内存剩余大小(KB)')
mem_sys = CharField(max_length=32, verbose_name='内存已使用大小(KB)')
seconds = CharField(max_length=32, verbose_name='运行已时间(秒)')
server = ForeignKey(to='Server', on_delete=CASCADE, verbose_name="关联服务器信息", db_constraint=False)
class Meta:
verbose_name = '服务器监控信息'
verbose_name_plural = verbose_name
def __str__(self):
return f"{self.server and self.server.name and self.server.ip}监控信息"

View File

@ -0,0 +1,17 @@
from django.db.models import CharField
from ...op_drf.models import CoreModel
class Server(CoreModel):
name = CharField(max_length=256, verbose_name='服务器名称', null=True, blank=True)
ip = CharField(max_length=32, verbose_name="ip地址")
os = CharField(max_length=32, verbose_name="操作系统")
remark = CharField(max_length=256, verbose_name="备注", null=True, blank=True)
class Meta:
verbose_name = '服务器信息'
verbose_name_plural = verbose_name
def __str__(self):
return f"{self.name and self.ip}"

View File

@ -0,0 +1,19 @@
from django.db.models import CharField, ForeignKey, CASCADE
from ...op_drf.models import CoreModel
class SysFiles(CoreModel):
dir_name = CharField(max_length=32, verbose_name='磁盘路径')
sys_type_name = CharField(max_length=32, verbose_name='系统文件类型')
type_name = CharField(max_length=32, verbose_name='盘符类型')
total = CharField(max_length=32, verbose_name='磁盘总大小(KB)')
mem_free = CharField(max_length=32, verbose_name='已使用大小(KB)')
monitor = ForeignKey(to='Monitor', on_delete=CASCADE, verbose_name="关联服务器监控信息", db_constraint=False)
class Meta:
verbose_name = '系统磁盘'
verbose_name_plural = verbose_name
def __str__(self):
return f"{self.creator and self.creator.name}"

View File

@ -0,0 +1,29 @@
from .models import Server, Monitor
from ..op_drf.serializers import CustomModelSerializer
# ================================================= #
# ************** 服务器信息 序列化器 ************** #
# ================================================= #
class ServerSerializer(CustomModelSerializer):
"""
服务器信息 简单序列化器
"""
class Meta:
model = Server
fields = '__all__'
# ================================================= #
# ************** 服务器监控信息 序列化器 ************** #
# ================================================= #
class MonitorSerializer(CustomModelSerializer):
"""
服务器监控信息 简单序列化器
"""
class Meta:
model = Monitor
fields = '__all__'

View File

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

View File

@ -0,0 +1,12 @@
from rest_framework.routers import DefaultRouter
from .views import ServerModelViewSet, MonitorModelViewSet
router = DefaultRouter()
router.register(r'server', ServerModelViewSet)
router.register(r'monitor', MonitorModelViewSet)
urlpatterns = [
]
urlpatterns += router.urls

View File

@ -0,0 +1,32 @@
from .filters import ServerFilter, MonitorFilter
from .models import Server, Monitor
from .serializers import ServerSerializer, MonitorSerializer
from ..op_drf.viewsets import CustomModelViewSet
from ..permission.permissions import CommonPermission
class ServerModelViewSet(CustomModelViewSet):
"""
服务器信息 模型的CRUD视图
"""
queryset = Server.objects.all()
serializer_class = ServerSerializer
# extra_filter_backends = [DataLevelPermissionsFilter]
filter_class = ServerFilter
update_extra_permission_classes = (CommonPermission,)
destroy_extra_permission_classes = (CommonPermission,)
create_extra_permission_classes = (CommonPermission,)
ordering = '-create_datetime' # 默认排序
class MonitorModelViewSet(CustomModelViewSet):
"""
服务器监控信息 模型的CRUD视图
"""
queryset = Monitor.objects.all()
serializer_class = MonitorSerializer
# extra_filter_backends = [DataLevelPermissionsFilter]
filter_class = MonitorFilter
update_extra_permission_classes = (CommonPermission,)
destroy_extra_permission_classes = (CommonPermission,)
create_extra_permission_classes = (CommonPermission,)
ordering = '-create_datetime' # 默认排序

View File

@ -54,5 +54,6 @@ urlpatterns = [
re_path(r'^permission/', include('apps.vadmin.permission.urls')),
re_path(r'^system/', include('apps.vadmin.system.urls')),
re_path(r'^celery/', include('apps.vadmin.celery.urls')),
re_path(r'^monitor/', include('apps.vadmin.monitor.urls')),
]