diff --git a/dvadmin-backend/application/settings.py b/dvadmin-backend/application/settings.py index 4b385f0..7132864 100644 --- a/dvadmin-backend/application/settings.py +++ b/dvadmin-backend/application/settings.py @@ -51,6 +51,7 @@ INSTALLED_APPS = [ 'apps.vadmin.op_drf', 'apps.vadmin.system', 'apps.vadmin.celery', + 'apps.vadmin.monitor', ] MIDDLEWARE = [ diff --git a/dvadmin-backend/apps/vadmin/monitor/__init__.py b/dvadmin-backend/apps/vadmin/monitor/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/dvadmin-backend/apps/vadmin/monitor/admin.py b/dvadmin-backend/apps/vadmin/monitor/admin.py new file mode 100644 index 0000000..e69de29 diff --git a/dvadmin-backend/apps/vadmin/monitor/apps.py b/dvadmin-backend/apps/vadmin/monitor/apps.py new file mode 100644 index 0000000..13ee922 --- /dev/null +++ b/dvadmin-backend/apps/vadmin/monitor/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class MonitorConfig(AppConfig): + name = 'vadmin.monitor' + verbose_name = "系统监控" diff --git a/dvadmin-backend/apps/vadmin/monitor/filters.py b/dvadmin-backend/apps/vadmin/monitor/filters.py new file mode 100644 index 0000000..e80748e --- /dev/null +++ b/dvadmin-backend/apps/vadmin/monitor/filters.py @@ -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__' diff --git a/dvadmin-backend/apps/vadmin/monitor/migrations/__init__.py b/dvadmin-backend/apps/vadmin/monitor/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/dvadmin-backend/apps/vadmin/monitor/models/__init__.py b/dvadmin-backend/apps/vadmin/monitor/models/__init__.py new file mode 100644 index 0000000..0f0d1f8 --- /dev/null +++ b/dvadmin-backend/apps/vadmin/monitor/models/__init__.py @@ -0,0 +1,3 @@ +from ..models.monitor import Monitor +from ..models.server import Server +from ..models.sys_files import SysFiles diff --git a/dvadmin-backend/apps/vadmin/monitor/models/monitor.py b/dvadmin-backend/apps/vadmin/monitor/models/monitor.py new file mode 100644 index 0000000..5a883d6 --- /dev/null +++ b/dvadmin-backend/apps/vadmin/monitor/models/monitor.py @@ -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}监控信息" diff --git a/dvadmin-backend/apps/vadmin/monitor/models/server.py b/dvadmin-backend/apps/vadmin/monitor/models/server.py new file mode 100644 index 0000000..aebc802 --- /dev/null +++ b/dvadmin-backend/apps/vadmin/monitor/models/server.py @@ -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}" diff --git a/dvadmin-backend/apps/vadmin/monitor/models/sys_files.py b/dvadmin-backend/apps/vadmin/monitor/models/sys_files.py new file mode 100644 index 0000000..6a11ed1 --- /dev/null +++ b/dvadmin-backend/apps/vadmin/monitor/models/sys_files.py @@ -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}" diff --git a/dvadmin-backend/apps/vadmin/monitor/serializers.py b/dvadmin-backend/apps/vadmin/monitor/serializers.py new file mode 100644 index 0000000..3a7e0bd --- /dev/null +++ b/dvadmin-backend/apps/vadmin/monitor/serializers.py @@ -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__' diff --git a/dvadmin-backend/apps/vadmin/monitor/tasks.py b/dvadmin-backend/apps/vadmin/monitor/tasks.py new file mode 100644 index 0000000..e69de29 diff --git a/dvadmin-backend/apps/vadmin/monitor/tests.py b/dvadmin-backend/apps/vadmin/monitor/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/dvadmin-backend/apps/vadmin/monitor/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/dvadmin-backend/apps/vadmin/monitor/urls.py b/dvadmin-backend/apps/vadmin/monitor/urls.py new file mode 100644 index 0000000..b1c0b78 --- /dev/null +++ b/dvadmin-backend/apps/vadmin/monitor/urls.py @@ -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 diff --git a/dvadmin-backend/apps/vadmin/monitor/views.py b/dvadmin-backend/apps/vadmin/monitor/views.py new file mode 100644 index 0000000..e4cec1c --- /dev/null +++ b/dvadmin-backend/apps/vadmin/monitor/views.py @@ -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' # 默认排序 diff --git a/dvadmin-backend/apps/vadmin/urls.py b/dvadmin-backend/apps/vadmin/urls.py index cf4051d..e1354f6 100644 --- a/dvadmin-backend/apps/vadmin/urls.py +++ b/dvadmin-backend/apps/vadmin/urls.py @@ -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')), ]