使用 pt-killer 自动 kill 掉慢查询语句

2019-11-25  本文已影响0人  awker

percona-toolkit 安装

# yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
# yum install percona-toolkit

pt-killer 使用示例

# pt-kill --no-version-check --host=10.0.0.1 --port=3306 --user=root --password=xxxxxx --busy-time=15 --ignore-self --interval 2 --print

# pt-kill --no-version-check --host=10.0.0.1 --port=3306 --user=root --password=xxxxxx --busy-time=15 --ignore-self --interval 2 --kill

# pt-kill --no-version-check --host=10.0.0.1 --port=3306 --user=root --password=xxxxxx --busy-time=15 --ignore-self --interval 2 --daemonize --log=/data/percona-toolkit/pt-kill.log --kill

# pt-kill --no-version-check --host=10.0.0.1 --port=3306 --user=root --ask-pass --busy-time=15 --ignore-self --interval 2 --daemonize --log=/data/percona-toolkit/pt-kill.log --match-command Query --victims all --print --kill

参数说明:

监控 /data/percona-toolkit/pt-kill.log 并发送邮件告警

# cat pt-kill-sendmail.py 
# coding: utf-8
import tailer
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import smtplib


def sendmailx(log):
    def _format_addr(s):
        name, addr = parseaddr(s)
        return formataddr((Header(name, 'utf-8').encode(), addr))

    from_addr = 'foobar@qq.com'
    password = 'xxxxxx'
    to_addr = ['foo@qq.com', 'bar@163.com']
    smtp_server = 'smtp.qq.com'

    msg = MIMEText(log, 'plain', 'utf-8')
    msg['From'] = _format_addr('foobar <%s>' % from_addr)
    msg['To'] = ", ".join(to_addr)
    msg['Subject'] = Header('慢查询 pt-kill 日志,请关注', 'utf-8').encode()

    # server = smtplib.SMTP_SSL(smtp_server, 465)
    server = smtplib.SMTP(smtp_server, 587)
    server.set_debuglevel(0)
    server.starttls()
    server.login(from_addr, password)
    server.sendmail(from_addr, to_addr, msg.as_string())
    server.quit()


if __name__ == '__main__':
    for line in tailer.follow(open('/data/percona-toolkit/pt-kill.log')):
        sendmailx(line)

// 运行脚本
# nohup python /data/percona-toolkit/pt-kill-sendmail.py > /tmp/pt-kill-sendmail.log 2>&1 &

结果参考:


参考文档:https://www.percona.com/doc/percona-toolkit/LATEST/pt-kill.html

上一篇 下一篇

猜你喜欢

热点阅读