feat: 添加celery监控信息

This commit is contained in:
caoqianming 2024-03-13 17:39:45 +08:00
parent 718f594a4b
commit 0af253fb0b
3 changed files with 26 additions and 2 deletions

View File

@ -1,9 +1,11 @@
import psutil import psutil
import redis
from apps.monitor.models import AuditLog from apps.monitor.models import AuditLog
from apps.system.models import User from apps.system.models import User
from datetime import datetime from datetime import datetime
from apps.utils.tools import compare_values from apps.utils.tools import compare_values
from apps.utils.models import get_model_info from apps.utils.models import get_model_info
from server.celery import celery_control, celery_inspect
def delete_auditlog(model, instance_id): def delete_auditlog(model, instance_id):
@ -98,3 +100,11 @@ class ServerService:
@classmethod @classmethod
def get_full(cls): def get_full(cls):
return {'cpu': cls.get_cpu_dict(), 'memory': cls.get_memory_dict(), 'disk': cls.get_disk_dict()} return {'cpu': cls.get_cpu_dict(), 'memory': cls.get_memory_dict(), 'disk': cls.get_disk_dict()}
class CeleryMonitor:
@classmethod
def get_stats(cls):
return {
'stat': celery_inspect.stats(),
}

View File

@ -1,5 +1,5 @@
from django.urls import path from django.urls import path
from .views import DrfRequestLogViewSet, ServerInfoView, LogView, LogDetailView, index, room, video, DbBackupView, AuditlogViewSet from .views import DrfRequestLogViewSet, ServerInfoView, LogView, LogDetailView, index, room, video, DbBackupView, AuditlogViewSet, CeleryInfoView
API_BASE_URL = 'api/monitor/' API_BASE_URL = 'api/monitor/'
HTML_BASE_URL = 'monitor/' HTML_BASE_URL = 'monitor/'
@ -13,6 +13,7 @@ urlpatterns = [
path(API_BASE_URL + 'log/<str:name>/', LogDetailView.as_view()), path(API_BASE_URL + 'log/<str:name>/', LogDetailView.as_view()),
path(API_BASE_URL + 'dbbackup/', DbBackupView.as_view()), path(API_BASE_URL + 'dbbackup/', DbBackupView.as_view()),
path(API_BASE_URL + 'server/', ServerInfoView.as_view()), path(API_BASE_URL + 'server/', ServerInfoView.as_view()),
path(API_BASE_URL + 'celery/', CeleryInfoView.as_view()),
path(API_BASE_URL + 'request_log/', path(API_BASE_URL + 'request_log/',
DrfRequestLogViewSet.as_view({'get': 'list'}), name='requestlog_view'), DrfRequestLogViewSet.as_view({'get': 'list'}), name='requestlog_view'),
path(API_BASE_URL + 'auditlog/', path(API_BASE_URL + 'auditlog/',

View File

@ -16,8 +16,9 @@ from apps.monitor.filters import DrfLogFilterSet
from apps.monitor.models import DrfRequestLog, AuditLog from apps.monitor.models import DrfRequestLog, AuditLog
from apps.monitor.errors import LOG_NOT_FONED from apps.monitor.errors import LOG_NOT_FONED
from apps.monitor.services import ServerService from apps.monitor.services import ServerService, CeleryMonitor
from apps.utils.viewsets import CustomGenericViewSet from apps.utils.viewsets import CustomGenericViewSet
# Create your views here. # Create your views here.
@ -35,6 +36,18 @@ def video(request):
return render(request, 'monitor/video.html') return render(request, 'monitor/video.html')
class CeleryInfoView(APIView):
permission_classes = [IsAuthenticated]
def get(self, request, *args, **kwargs):
"""
获取服务器当前状态
cpu/内存/硬盘
"""
return Response(CeleryMonitor.get_stats())
class ServerInfoView(APIView): class ServerInfoView(APIView):
permission_classes = [IsAuthenticated] permission_classes = [IsAuthenticated]