/** Percona PT-kill重構版(PHP) 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 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”
<?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爲文本郵件
//************************ 配置信息 ****************************
?>
Percona PT-kill重構版(PHP)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.