Percona PT-kill重構版(PHP)

/**

  • Percona PT-kill重構版(PHP)

  • https://github.com/hcymysql/pt-kill


  • UPDATE:

  • Modified by: hcymysql 2018/11/27

  • 1、增加慢SQL郵件報警功能

  • 2、增加慢SQL微信報警功能


  • 環境準備:

  • shell> yum install -y php-process php php-mysql


*/


概述 原生Percona版 PT-kill(Perl)工具只是單純的KILL掉正在運行中的慢SQL,而不能作爲一個監控工具使用,例如缺少郵件報警或者微信報警功能,固需要將其重構。


重構版 PT-kill(PHP)從information_schema.PROCESSLIST表中捕獲正在運行中的SELECT|ALTER等DML/DDL消耗資源過多的查詢,過濾它們,然後殺死它們(可選擇不殺)且發郵件/微信報警給DBA和相關開發知悉,避免因慢SQL執行時間過長對數據庫造成一定程度的傷害。(注:慢SQL執行完才記錄到slow.log裏,執行過程中不記錄。)


Usage:

Options:

-u  username

-p  password

-h  host ip

-P  port

-B  busytime time seconds 設置慢SQL執行時間觸發報警

-I  interval time seconds 設置守護進程下間隔監測時間

--kill 如果想殺掉慢查詢,加上該選項。

--match-info 匹配殺掉SELECT|INSERT|UPDATE語句

--match-user 匹配殺掉的用戶

--daemon 1開啓後臺守護進程,0關閉後臺守護進程

--mail 開啓發送郵件報警

--weixin 開啓發送微信報警

--help  Help


Example :

前臺運行

shell> php pt-kill.php -u admin -p 123456 -h 10.10.159.31 -P 3306 -B 10  --match-info='select|alter' --match-user='dev' --kill --mail --weixin


後臺運行

shell> php pt-kill.php -u admin -p 123456 -h 10.10.159.31 -P 3306 -B 10  -I 15 --match-info='select|alter' --match-user='dev' --kill --mail --weixin --daemon 1


關閉後臺運行

shell> php pt-kill.php --daemon 0


以上是工具的使用方法和參數選項。 這裏說下比較重要的參數:

1、--kill 如果想殺掉慢查詢,那麼在後面添加該選項;


2、--match-info 可以單獨使用,也可以和--match-user結合一起使用;


3、--daemon 1 是開啓後臺守護進程,如果不添加該選擇,可以用系統的crontab代替。 該選項要和-I 10(秒)配合一起使用,即每休眠10秒監控一次。0爲關閉後臺守護進程。


4、--mail 爲開啓發送郵件報警,需先設置smtp_config.php,改成你自己的郵箱賬號信息

smtp_config.php

<?php

    $content = nl2br(file_get_contents(dirname(__FILE__).'/kill.txt'));
    require_once "Smtp.class.php";

    //******************** 配置信息 ********************************
    $smtpserver = "smtp.126.com";//SMTP服務器
    $smtpserverport = 25;//SMTP服務器端口
    $smtpusermail = "[email protected]";//SMTP服務器的用戶郵箱
    $smtpemailto = '[email protected]';//發送給誰
    $smtpuser = "[email protected]";//SMTP服務器的用戶帳號,注:部分郵箱只需@前面的用戶名
    $smtppass = "123456";//SMTP服務器的授權碼
    $mailtitle = "警告!出現卡頓慢SQL,請及時優化處理!";//郵件主題
    $mailcontent = "<h1>".$content."</h1>";//郵件內容
    $mailtype = "HTML";//郵件格式(HTML/TXT),TXT爲文本郵件
    //************************ 配置信息 ****************************

?>


5、--weixin 爲開啓發送微信報警,需要先安裝下simplejson-3.8.2.tar.gz

shell> tar zxvf simplejson-3.8.2.tar.gz

shell> cd simplejson-3.8.2

shell> python setup.py build

shell> python setup.py install

然後編輯pt-kill.php腳本 找到 $status1 = system("/usr/bin/python  wechat.py  'hcymysql' {$row['DB']}庫出現卡頓慢SQL! '{$content1}'"); 將其'hcymysql'我的微信號換成你自己的即可。

微信企業號設置 移步https://www.cnblogs.com/linuxprobe/p/5717776.html 看此教程配置。


6、會在工具目錄下生成kill.txt文件保存慢SQL。

shell> cat kill.txt

2018-11-27 16:41:22

用戶名:root

來源IP:localhost

數據庫名:hcy

執行時間:18

SQL語句:select sleep(60)


7、默認只殺連接中的慢SQL,保留會話連接,如果想把連接也殺掉,去掉QUERY

修改pt-kill.php

//$kill_sql = "KILL QUERY {$row['ID']}";

$kill_sql = "KILL {$row['ID']}";

具體演示請看“pt_kill演示錄像.avi”



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章