diff --git a/dvadmin-backend/apps/system/urls.py b/dvadmin-backend/apps/system/urls.py index a090de9..5c9f9a9 100644 --- a/dvadmin-backend/apps/system/urls.py +++ b/dvadmin-backend/apps/system/urls.py @@ -2,7 +2,7 @@ from django.urls import re_path from rest_framework.routers import DefaultRouter from apps.system.views import DictDataModelViewSet, DictDetailsModelViewSet, \ - ConfigSettingsModelViewSet, SaveFileModelViewSet, MessagePushModelViewSet + ConfigSettingsModelViewSet, SaveFileModelViewSet, MessagePushModelViewSet, SystemInfoApiView router = DefaultRouter() router.register(r'dict/type', DictDataModelViewSet) @@ -25,5 +25,7 @@ urlpatterns = [ re_path('message/receive/', MessagePushModelViewSet.as_view({"get": "get_received_messages"})), # 消息通知导出 re_path('message/export/', MessagePushModelViewSet.as_view({'get': 'export',})), + + re_path('sys/info/', SystemInfoApiView.as_view()) ] urlpatterns += router.urls diff --git a/dvadmin-backend/apps/system/views.py b/dvadmin-backend/apps/system/views.py index c4657ab..ee1c72f 100644 --- a/dvadmin-backend/apps/system/views.py +++ b/dvadmin-backend/apps/system/views.py @@ -1,4 +1,5 @@ from rest_framework.request import Request +from rest_framework.views import APIView from apps.op_drf.filters import DataLevelPermissionsFilter from apps.op_drf.viewsets import CustomModelViewSet @@ -11,6 +12,7 @@ from apps.system.serializers import DictDataSerializer, DictDataCreateUpdateSeri MessagePushSerializer, MessagePushCreateUpdateSerializer, ExportMessagePushSerializer from utils.export_excel import export_excel_save_model from utils.response import SuccessResponse +from utils.system_info_utils import get_memory_used_percent, get_cpu_used_percent, get_disk_used_percent class DictDataModelViewSet(CustomModelViewSet): @@ -186,7 +188,6 @@ class MessagePushModelViewSet(CustomModelViewSet): """ 获取用户未读消息数量 """ - pass def export(self, request: Request, *args, **kwargs): @@ -197,6 +198,23 @@ class MessagePushModelViewSet(CustomModelViewSet): :param kwargs: :return: """ - field_data = ['消息序号', '标题', '内容', '消息类型', '是否审核', '消息状态','通知接收消息用户', '创建者', '修改者', '修改时间', '创建时间'] + field_data = ['消息序号', '标题', '内容', '消息类型', '是否审核', '消息状态', '通知接收消息用户', '创建者', '修改者', '修改时间', '创建时间'] data = ExportMessagePushSerializer(MessagePush.objects.all(), many=True).data return SuccessResponse(export_excel_save_model(request, field_data, data, '导出岗位数据.xls')) + + +class SystemInfoApiView(APIView): + """ + 系统服务监控视图 + """ + def get(self, request, *args, **kwargs): + # 获取内存使用率 + memory_used_percent = get_memory_used_percent() + # 获取cpu使用率 + cpu_used_percent = get_cpu_used_percent() + # 获取硬盘使用率 + disk_used_percent = get_disk_used_percent() + return SuccessResponse(data={"memory_used_percent": memory_used_percent, + "cpu_used_percent": cpu_used_percent, + "disk_used_percent": disk_used_percent + }) diff --git a/dvadmin-backend/utils/system_info_utils.py b/dvadmin-backend/utils/system_info_utils.py new file mode 100644 index 0000000..69f34c9 --- /dev/null +++ b/dvadmin-backend/utils/system_info_utils.py @@ -0,0 +1,37 @@ +""" +封装系服务监控相关函数 +""" +import psutil as psutil + + +def get_cpu_used_percent(): + """ + 获取CPU运行情况 + :return: + """ + try: + return float(psutil.cpu_percent(0.1)) + except: + pass + + +def get_memory_used_percent(): + try: + memory_info = psutil.virtual_memory() + return float(memory_info.percent) + except: + pass + + +def get_disk_used_percent(): + print(psutil.disk_partitions()) + try: + return float(psutil.disk_usage("/").percent) + except: + pass + + + + +if __name__ == '__main__': + get_cpu_used_percent()