Browse Source

Added MySQL debug

bugfixes
gau1991 10 years ago
parent
commit
de8d0f6c16
  1. 44
      ee/cli/plugins/debug.py

44
ee/cli/plugins/debug.py

@ -3,6 +3,7 @@
from cement.core.controller import CementBaseController, expose from cement.core.controller import CementBaseController, expose
from cement.core import handler, hook from cement.core import handler, hook
from ee.core.shellexec import EEShellExec from ee.core.shellexec import EEShellExec
from ee.core.mysql import EEMysql
def debug_plugin_hook(app): def debug_plugin_hook(app):
@ -35,6 +36,9 @@ class EEDebugController(CementBaseController):
dict(help='Debug Nginx rewrite rules', action='store_true')), dict(help='Debug Nginx rewrite rules', action='store_true')),
(['-i', '--interactive'], (['-i', '--interactive'],
dict(help='Interactive debug', action='store_true')), dict(help='Interactive debug', action='store_true')),
(['--import-slow-log-interval'],
dict(help='Import MySQL slow log to Anemometer',
action='store', dest='interval')),
] ]
@expose(hide=True) @expose(hide=True)
@ -128,9 +132,45 @@ class EEDebugController(CementBaseController):
@expose(hide=True) @expose(hide=True)
def debug_mysql(self): def debug_mysql(self):
if self.start: if self.start:
print("Start MySQL debug") if not EEShellExec.cmd_exec(self, "mysql -e \"show variables like"
" \'slow_query_log\';\" | "
"grep ON"):
print("Setting up MySQL slow log")
EEMysql.execute(self, "set global slow_query_log = "
"\'ON\';")
EEMysql.execute(self, "set global slow_query_log_file = "
"\'/var/log/mysql/mysql-slow.log\';")
EEMysql.execute(self, "set global long_query_time = 2;")
EEMysql.execute(self, "set global log_queries_not_using"
"_indexes = \'ON\';")
if self.app.pargs.interval:
try:
cron_time = int(self.app.pargs.interval)
except Exception as e:
cron_time = 5
EEShellExec.cmd_exec(self, "/bin/bash -c \"crontab -l 2> "
"/dev/null | {{ cat; echo -e"
" \\\"#EasyEngine start MySQL slow"
" log \\n*/{0} * * * * "
"/usr/local/sbin/ee import-slow-log\\"
"n#EasyEngine end MySQL slow log\\\";"
" }} | crontab -\"".format(cron_time))
else:
print("MySQL slow log is allready enabled")
else: else:
print("Stop MySQL debug") if EEShellExec.cmd_exec(self, "mysql -e \"show variables like \'"
"slow_query_log\';\" | grep ON"):
print("Disabling MySQL slow log")
EEMysql.execute(self, "set global slow_query_log = \'OFF\';")
EEMysql.execute(self, "set global slow_query_log_file = \'"
"/var/log/mysql/mysql-slow.log\';")
EEMysql.execute(self, "set global long_query_time = 10;")
EEMysql.execute(self, "set global log_queries_not_using_index"
"es = \'OFF\';")
EEShellExec.cmd_exec(self, "crontab -l | sed \'/#EasyEngine "
"start/,/#EasyEngine end/d\' | crontab -")
else:
print("MySQL slow log already disabled")
@expose(hide=True) @expose(hide=True)
def debug_wp(self): def debug_wp(self):

Loading…
Cancel
Save