From 864d67537097fd7b433507e8878c671830cf0dba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BC=BA?= <1206709430@qq.com> Date: Thu, 8 Apr 2021 23:26:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DBUG(=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=99=A8=E7=9B=91=E6=8E=A7):=20=E6=96=B0=E5=A2=9E=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8=E7=9B=91=E6=8E=A7=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dvadmin-backend/application/settings.py | 1 + .../apps/vadmin/monitor/__init__.py | 0 dvadmin-backend/apps/vadmin/monitor/admin.py | 0 dvadmin-backend/apps/vadmin/monitor/apps.py | 6 ++++ .../apps/vadmin/monitor/filters.py | 23 +++++++++++++ .../vadmin/monitor/migrations/__init__.py | 0 .../apps/vadmin/monitor/models/__init__.py | 3 ++ .../apps/vadmin/monitor/models/monitor.py | 21 ++++++++++++ .../apps/vadmin/monitor/models/server.py | 17 ++++++++++ .../apps/vadmin/monitor/models/sys_files.py | 19 +++++++++++ .../apps/vadmin/monitor/serializers.py | 29 +++++++++++++++++ dvadmin-backend/apps/vadmin/monitor/tasks.py | 0 dvadmin-backend/apps/vadmin/monitor/tests.py | 3 ++ dvadmin-backend/apps/vadmin/monitor/urls.py | 12 +++++++ dvadmin-backend/apps/vadmin/monitor/views.py | 32 +++++++++++++++++++ dvadmin-backend/apps/vadmin/urls.py | 1 + 16 files changed, 167 insertions(+) create mode 100644 dvadmin-backend/apps/vadmin/monitor/__init__.py create mode 100644 dvadmin-backend/apps/vadmin/monitor/admin.py create mode 100644 dvadmin-backend/apps/vadmin/monitor/apps.py create mode 100644 dvadmin-backend/apps/vadmin/monitor/filters.py create mode 100644 dvadmin-backend/apps/vadmin/monitor/migrations/__init__.py create mode 100644 dvadmin-backend/apps/vadmin/monitor/models/__init__.py create mode 100644 dvadmin-backend/apps/vadmin/monitor/models/monitor.py create mode 100644 dvadmin-backend/apps/vadmin/monitor/models/server.py create mode 100644 dvadmin-backend/apps/vadmin/monitor/models/sys_files.py create mode 100644 dvadmin-backend/apps/vadmin/monitor/serializers.py create mode 100644 dvadmin-backend/apps/vadmin/monitor/tasks.py create mode 100644 dvadmin-backend/apps/vadmin/monitor/tests.py create mode 100644 dvadmin-backend/apps/vadmin/monitor/urls.py create mode 100644 dvadmin-backend/apps/vadmin/monitor/views.py 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')), ]