From dd793a4eca33847d4e894e223c6671b12b3425a0 Mon Sep 17 00:00:00 2001 From: ibuler Date: Mon, 26 Oct 2020 14:13:20 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/audits/tasks.py | 36 ++++++++++++++++++++++++------------ apps/common/utils/django.py | 8 ++++++++ apps/jumpserver/conf.py | 8 +++++--- apps/ops/tasks.py | 8 ++++---- apps/ops/utils.py | 1 - 5 files changed, 41 insertions(+), 20 deletions(-) diff --git a/apps/audits/tasks.py b/apps/audits/tasks.py index d928e6e87..0091d250b 100644 --- a/apps/audits/tasks.py +++ b/apps/audits/tasks.py @@ -2,32 +2,44 @@ # import datetime from django.utils import timezone -from django.conf import settings from celery import shared_task -from ops.celery.decorator import register_as_period_task +from ops.celery.decorator import ( + register_as_period_task, after_app_shutdown_clean_periodic +) from .models import UserLoginLog, OperateLog +from common.utils import get_log_keep_day -@register_as_period_task(interval=3600*24) @shared_task +@after_app_shutdown_clean_periodic def clean_login_log_period(): now = timezone.now() - try: - days = int(settings.LOGIN_LOG_KEEP_DAYS) - except ValueError: - days = 9999 + days = get_log_keep_day('LOGIN_LOG_KEEP_DAYS') expired_day = now - datetime.timedelta(days=days) UserLoginLog.objects.filter(datetime__lt=expired_day).delete() -@register_as_period_task(interval=3600*24) @shared_task +@after_app_shutdown_clean_periodic def clean_operation_log_period(): now = timezone.now() - try: - days = int(settings.LOGIN_LOG_KEEP_DAYS) - except ValueError: - days = 9999 + days = get_log_keep_day('OPERATE_LOG_KEEP_DAYS') expired_day = now - datetime.timedelta(days=days) OperateLog.objects.filter(datetime__lt=expired_day).delete() + + +@shared_task +def clean_ftp_log_period(): + now = timezone.now() + days = get_log_keep_day('FTP_LOG_KEEP_DAYS') + expired_day = now - datetime.timedelta(days=days) + OperateLog.objects.filter(datetime__lt=expired_day).delete() + + +@register_as_period_task(interval=3600*24) +@shared_task +def clean_audits_log_period(): + clean_audits_log_period() + clean_operation_log_period() + clean_ftp_log_period() diff --git a/apps/common/utils/django.py b/apps/common/utils/django.py index b2a919401..8f6809d3e 100644 --- a/apps/common/utils/django.py +++ b/apps/common/utils/django.py @@ -48,3 +48,11 @@ def union_queryset(*args, base_queryset=None): base_queryset = args[0].model.objects queryset = base_queryset.filter(id__in=queryset_id) return queryset + + +def get_log_keep_day(s, defaults=200): + try: + days = int(getattr(settings, s)) + except ValueError: + days = defaults + return days diff --git a/apps/jumpserver/conf.py b/apps/jumpserver/conf.py index 57c5bed89..381dc5beb 100644 --- a/apps/jumpserver/conf.py +++ b/apps/jumpserver/conf.py @@ -224,7 +224,7 @@ class Config(dict): 'TERMINAL_HEARTBEAT_INTERVAL': 20, 'TERMINAL_ASSET_LIST_SORT_BY': 'hostname', 'TERMINAL_ASSET_LIST_PAGE_SIZE': 'auto', - 'TERMINAL_SESSION_KEEP_DURATION': 9999, + 'TERMINAL_SESSION_KEEP_DURATION': 200, 'TERMINAL_HOST_KEY': '', 'TERMINAL_TELNET_REGEX': '', 'TERMINAL_COMMAND_STORAGE': {}, @@ -248,8 +248,10 @@ class Config(dict): 'HTTP_BIND_HOST': '0.0.0.0', 'HTTP_LISTEN_PORT': 8080, 'WS_LISTEN_PORT': 8070, - 'LOGIN_LOG_KEEP_DAYS': 9999, - 'TASK_LOG_KEEP_DAYS': 10, + 'LOGIN_LOG_KEEP_DAYS': 200, + 'TASK_LOG_KEEP_DAYS': 90, + 'OPERATE_LOG_KEEP_DAYS': 200, + 'FTP_LOG_KEEP_DAYS': 200, 'ASSETS_PERM_CACHE_TIME': 3600 * 24, 'SECURITY_MFA_VERIFY_TTL': 3600, 'ASSETS_PERM_CACHE_ENABLE': HAS_XPACK, diff --git a/apps/ops/tasks.py b/apps/ops/tasks.py index 3419c8976..8a5512f30 100644 --- a/apps/ops/tasks.py +++ b/apps/ops/tasks.py @@ -9,7 +9,7 @@ from celery.exceptions import SoftTimeLimitExceeded from django.utils import timezone from django.utils.translation import ugettext_lazy as _ -from common.utils import get_logger, get_object_or_none, get_disk_usage +from common.utils import get_logger, get_object_or_none, get_disk_usage, get_log_keep_day from orgs.utils import tmp_to_root_org, tmp_to_org from .celery.decorator import ( register_as_period_task, after_app_shutdown_clean_periodic, @@ -83,10 +83,10 @@ def clean_tasks_adhoc_period(): @after_app_shutdown_clean_periodic @register_as_period_task(interval=3600*24, description=_("Clean celery log period")) def clean_celery_tasks_period(): - expire_days = settings.TASK_LOG_KEEP_DAYS logger.debug("Start clean celery task history") - one_month_ago = timezone.now() - timezone.timedelta(days=expire_days) - tasks = CeleryTask.objects.filter(date_start__lt=one_month_ago) + expire_days = get_log_keep_day('TASK_LOG_KEEP_DAYS') + days_ago = timezone.now() - timezone.timedelta(days=expire_days) + tasks = CeleryTask.objects.filter(date_start__lt=days_ago) tasks.delete() tasks = CeleryTask.objects.filter(date_start__isnull=True) tasks.delete() diff --git a/apps/ops/utils.py b/apps/ops/utils.py index 83501a6cb..e4fa85812 100644 --- a/apps/ops/utils.py +++ b/apps/ops/utils.py @@ -75,4 +75,3 @@ def send_server_performance_mail(path, usage, usages): send_mail_async(subject, message, recipient_list, html_message=message) -