File: //usr/lib/python2.7/site-packages/lap/mysql_slow_query.py
import MySQLdb
import yaml
import warnings
def perfdata(in_use):
return "in_use=%s" % (in_use)
def run(params):
conn = None
try:
f = params.get("defaults-file", "/etc/check_mk/mysql.cfg")
conn = MySQLdb.connect(read_default_file=f)
cursor = conn.cursor()
# get slow queries
slow_query = cursor.execute("select db,time,info from information_schema.processlist where user not in (substring_index(current_user(), '@', 1), 'event_scheduler') and time > 30 and state != '' and command not in ('Delayed insert')")
if slow_query > 0:
message = 'WARNING: {0} slow_queries in progress: <br>'.format(slow_query)
for db , time, info in cursor:
message += '<p>Database: {0} - Time: {1} - Query: {2} '.format(db, time, info.split('\n'))
return [1, message, perfdata(slow_query)]
else:
return [0, 'OK: No slow_query in progress'.format(slow_query), perfdata(slow_query)]
except Exception, e:
return [1, 'WARNING: {0}'.format(str(e))]
finally:
try:
if conn:
conn.close()
except:
# finally clause, don't bother about errors here
pass
def __run__(params):
with warnings.catch_warnings():
warnings.simplefilter("ignore")
return run(params)