您好,登錄后才能下訂單哦!
/**
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 = "chunyang_he@126.com";//SMTP服務器的用戶郵箱
$smtpemailto = 'chunyang_he@126.com';//發送給誰
$smtpuser = "chunyang_he@126.com";//SMTP服務器的用戶帳號,注:部分郵箱只需@前面的用戶名
$smtppass = "123456";//SMTP服務器的授權碼
$mailtitle = "警告!出現卡頓慢SQL,請及時優化處理!";//郵件主題
$mailcontent = "<h2>".$content."</h2>";//郵件內容
$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”
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。