dba+工具:PT-kill重构版,慢SQL报警及扼杀利器
/**
* 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,改成你自己的邮箱账号信息
5、--weixin 为开启发送微信报警,需要先安装下simplejson-3.8.2.tar.gz
然后编辑pt-kill.php脚本,找到
$status1 = system("/usr/bin/python wechat.py 'hcymysql' {$row['DB']}库出现卡顿慢SQL! '{$content1}'");
将其'hcymysql'我的微信号换成你自己的即可。
● 微信企业号设置移步 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']}";

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
springcloud(六):熔断监控Turbine
在复杂的分布式系统中,相同服务的节点经常需要部署上百甚至上千个,很多时候,运维人员希望能够把相同服务的节点状态以一个整体集群的形式展现出来,这样可以更好的把握整个系统的状态。 为此,Netflix提供了一个开源项目(Turbine)来提供把多个hystrix.stream的内容聚合为一个数据源供Dashboard展示。愿意了解源码的朋友直接求求交流分享技术:二一四七七七五六三三 1、添加依赖 <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-turbine</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-netflix-turb...
- 下一篇
JavaScript右下角信息提示插件Notyf
在线演示 本地下载
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装