Merge pull request #105 from jumpserver/hot_fix_log

hot_fix(kill invalid connection) 紧急修复超时异常连接

修改日志参数
修改处理间隔,每10分钟处理一次
修改处理策略 ssh: 1小时不操作,就kill掉 web: 超过1天,就设置完成
pull/1109/head
ibuler 2016-02-29 18:18:57 +08:00
commit a401440004
2 changed files with 12 additions and 12 deletions

View File

@ -15,6 +15,7 @@ from struct import unpack
from subprocess import Popen from subprocess import Popen
from sys import platform, prefix, stderr from sys import platform, prefix, stderr
from tempfile import NamedTemporaryFile from tempfile import NamedTemporaryFile
from jumpserver.api import logger
from jinja2 import FileSystemLoader, Template from jinja2 import FileSystemLoader, Template
from jinja2.environment import Environment from jinja2.environment import Environment
@ -80,27 +81,26 @@ def renderTemplate(script_path, time_file_path, dimensions=(24, 80), templatenam
def kill_invalid_connection(): def kill_invalid_connection():
long_time_logs = []
unfinished_logs = Log.objects.filter(is_finished=False) unfinished_logs = Log.objects.filter(is_finished=False)
now = datetime.datetime.now() now = datetime.datetime.now()
now_timestamp = int(time.mktime(now.timetuple())) now_timestamp = int(time.mktime(now.timetuple()))
for log in unfinished_logs:
if (now - log.start_time).days > 1:
long_time_logs.append(log)
for log in long_time_logs: for log in unfinished_logs:
try: try:
log_file_mtime = int(os.stat(log.log_path).st_mtime) log_file_mtime = int(os.stat('%s.log' % log.log_path).st_mtime)
except OSError: except OSError:
log_file_mtime = 0 log_file_mtime = 0
if (now_timestamp - log_file_mtime) > 3600: if (now_timestamp - log_file_mtime) > 3600:
if log.login_type == 'ssh':
try: try:
os.kill(int(log.pid), 9) os.kill(int(log.pid), 9)
except OSError: except OSError:
pass pass
elif (now - log.start_time).days < 1:
continue
log.is_finished = True log.is_finished = True
log.end_time = now log.end_time = now
log.save() log.save()
logger.warn('kill log %s' % log.log_path)

View File

@ -153,5 +153,5 @@ BOOTSTRAP_COLUMN_COUNT = 10
CRONJOBS = [ CRONJOBS = [
('0 1 * * *', 'jasset.asset_api.asset_ansible_update_all'), ('0 1 * * *', 'jasset.asset_api.asset_ansible_update_all'),
('1 * * * *', 'jlog.log_api.kill_invalid_connection'), ('*/10 * * * *', 'jlog.log_api.kill_invalid_connection'),
] ]