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 redis
from apps.monitor.models import AuditLog
from apps.system.models import User
from datetime import datetime
from apps.utils.tools import compare_values
from apps.utils.models import get_model_info
from server.celery import celery_control, celery_inspect
def delete_auditlog(model, instance_id):
@ -98,3 +100,11 @@ class ServerService:
@classmethod
def get_full(cls):
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 .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/'
HTML_BASE_URL = 'monitor/'
@ -13,6 +13,7 @@ urlpatterns = [
path(API_BASE_URL + 'log/<str:name>/', LogDetailView.as_view()),
path(API_BASE_URL + 'dbbackup/', DbBackupView.as_view()),
path(API_BASE_URL + 'server/', ServerInfoView.as_view()),
path(API_BASE_URL + 'celery/', CeleryInfoView.as_view()),
path(API_BASE_URL + 'request_log/',
DrfRequestLogViewSet.as_view({'get': 'list'}), name='requestlog_view'),
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.errors import LOG_NOT_FONED
from apps.monitor.services import ServerService
from apps.monitor.services import ServerService, CeleryMonitor
from apps.utils.viewsets import CustomGenericViewSet
# Create your views here.
@ -35,6 +36,18 @@ def video(request):
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):
permission_classes = [IsAuthenticated]