pt-stalk
pt-stalk:官方地址
说明
用途:当MySQL发生故障时收集
语法:
pt-stalk [OPTIONS]
pt-stalk等待触发条件发生,然后收集数据来帮助诊断问题。该工具被设计为作为具有根特权的守护进程运行,这样您就可以诊断不能直接观察到的间歇性问题。还可以使用它来执行自定义命令,或者在不等待触发器发生的情况下根据需要收集数据。
对于偶尔发生的间接性的性能问题,可以通过自定义脚本出发收集动作。如:定义一个脚本,只有在CPU使用率超过60%时,才收集信息。具体
具体例子
如下:通过脚本获取CPU使用率,然后和--threshold
指定的阈值50%比较,如果超过阈值则收集信息。
脚本内容:
pt_cpu.sh
function trg_plugin(){
a=$(sar 1 1 | grep -i "Average:"| awk '{print $8}');echo 100 - $a |bc
}
pt-stalk命令:
[root@BigData ~]# pt-stalk --daemonize --dest=/tmp/log/pt-stalk --user=root --password=123 --port=3306 --function=/tmp/pt_cpu.sh --variable highcpu --cycles=3 --interval=1 --threshold 50 --sleep=60 --log=/var/log/pt-stalk.log
2019_08_01_10_55_57 PID file /var/run/pt-stalk.pid already exists and its PID (15741)
pt-stalk会在后台运行,当CPU使用率达到50%则会自动收集信息,用于性能分析。收集的文件存储在--dest
指定的目录下:/tmp/log/pt-stalk。
常用的选项:
-
--collect
:默认启用,收集信息。除非指定--no-collect
否则都会自动收集相关信息。 -
--config
:指定pt-stalk的配置文件。将配置信息写入文件,而不需要在命令行中指定。如果指定该参数,则必须是第一的位置。 -
--cycles
:--variable
指定的值必须大于--threshold
指定值的次数,才会触发收集信息。默认:5 -
--daemonize
:后台运行 -
--defaults-file
:指定MySQL的配置文件 -
--dest
:收集信息产生文件的存放目录。默认:/var/lib/pt-stalk。 -
--disk-bytes-free
:指定磁盘可用空间不小于该大小才能收集信息,默认:100M。单位:k,M,G和T。 -
--disk-pct-free
:和--disk-bytes-free
意思一样,只是剩余的百分比。 -
--function
:指定自定义脚本文件,作为触发条件收集信息。默认是监控SHOW GLOBAL STATUS
命令。然后将结果传递给--variable
参数,和--threshold
参数值比较。
- status
通过监控SHOW GLOBAL STATUS
的参数值,--variable
参数指定的监控的具体是哪个参数,默认:Threads_running。 - processlist
通过监控SHOW FULL PROCESSLIST
命令的结果,--variable
参数指定列的值和--match
指定值相匹配的次数,如:State列,匹配值:statistics。
--function processlist \
--variable State \
--match statistics \
--threshold 10
- 自定义脚本
统计InnoDB出现的等待次数。
trg_plugin() {
mysql $EXT_ARGV -e "SHOW ENGINE INNODB STATUS" \
| grep -c "has waited at"
}
-
--iterations
:收集次数,默认:永久。 -
--match
:匹配SHOW PROCESSLIST
中列值。 -
--notify-by-email
:发送收集信息到指定的EMAIL中。